<?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>72752</bug_id>
          
          <creation_ts>2011-11-18 13:15:28 -0800</creation_ts>
          <short_desc>[Chromium] Upload textures in parallel with painting contents</short_desc>
          <delta_ts>2013-04-08 14:42:25 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71388</dependson>
          <blocked>72192</blocked>
    
    <blocked>73279</blocked>
    
    <blocked>74113</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>epenner</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505997</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 13:15:28 -0800</bug_when>
    <thetext>Start uploading texture resources as soon as enough contents has been painted for one texture to be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506035</commentid>
    <comment_count>1</comment_count>
      <attachid>115869</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 13:51:14 -0800</bug_when>
    <thetext>Created attachment 115869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506117</commentid>
    <comment_count>2</comment_count>
      <attachid>115886</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 15:19:11 -0800</bug_when>
    <thetext>Created attachment 115886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506608</commentid>
    <comment_count>3</comment_count>
      <attachid>116005</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-20 16:07:16 -0800</bug_when>
    <thetext>Created attachment 116005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511225</commentid>
    <comment_count>4</comment_count>
      <attachid>117073</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-29 16:58:14 -0800</bug_when>
    <thetext>Created attachment 117073
Patch

With changes from https://bugs.webkit.org/show_bug.cgi?id=72192 folded into this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511867</commentid>
    <comment_count>5</comment_count>
      <attachid>117218</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-30 10:32:17 -0800</bug_when>
    <thetext>Created attachment 117218
Patch

Add a few comments about thread restrictions to LayerTextureUpdater::Texture functions and remove unnecessary semi-colon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513762</commentid>
    <comment_count>6</comment_count>
      <attachid>117624</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-02 08:03:26 -0800</bug_when>
    <thetext>Created attachment 117624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513764</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 08:05:54 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513777</commentid>
    <comment_count>8</comment_count>
      <attachid>117624</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-02 08:18:30 -0800</bug_when>
    <thetext>Comment on attachment 117624
Patch

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

A few drive by comments.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:299
&gt; +    CCProxy::implThread()-&gt;postTask(createCCThreadTask(this, &amp;CCThreadProxy::updateTextureOnImplThread, AllowCrossThreadAccess(entry)));

AllowCrossThreadAccess is an out for when there is no other lifetime management possible and requires really careful thought.

It looks like entry should be a OwnPtr and this call should do a .release() on it instead of using AllowCrossThreadAccess.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:439
&gt; +void CCThreadProxy::updateTextureOnImplThread(UpdateEntry* entry)

entry should be a PassOwnPtr.

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:1019
&gt; +        explicit ContentLayerTextureUpdater(ContentLayerChromiumWithUpdateTracking *layer) : m_layer(layer) { }

* in wrong place.

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:1024
&gt; +    static PassRefPtr&lt;ContentLayerChromiumWithUpdateTracking&gt; create(CCLayerDelegate *delegate, bool needPrepareRect)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513885</commentid>
    <comment_count>9</comment_count>
      <attachid>117646</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-02 10:08:54 -0800</bug_when>
    <thetext>Created attachment 117646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513912</commentid>
    <comment_count>10</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-02 10:38:10 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 117624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117624&amp;action=review
&gt; 
&gt; A few drive by comments.

Thanks! I updated the patch based on your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515436</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-05 15:11:18 -0800</bug_when>
    <thetext>I&apos;m not sure why this patch is marked as blocking https://bugs.webkit.org/show_bug.cgi?id=71869. https://bugs.webkit.org/show_bug.cgi?id=71869 seems like it would work fine without this, right? Given my druthers, with my overloaded reviewer hat on, I&apos;d rather spend time getting that patch figured out and landed first since it&apos;s conceptually much simpler and will provide us a much bigger bang for our buck in the short term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515946</commentid>
    <comment_count>12</comment_count>
      <attachid>118058</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-06 09:04:00 -0800</bug_when>
    <thetext>Created attachment 118058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515948</commentid>
    <comment_count>13</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-06 09:05:07 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I&apos;m not sure why this patch is marked as blocking https://bugs.webkit.org/show_bug.cgi?id=71869. https://bugs.webkit.org/show_bug.cgi?id=71869 seems like it would work fine without this, right? Given my druthers, with my overloaded reviewer hat on, I&apos;d rather spend time getting that patch figured out and landed first since it&apos;s conceptually much simpler and will provide us a much bigger bang for our buck in the short term.

I updated 71869 to no longer depend on this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516629</commentid>
    <comment_count>14</comment_count>
      <attachid>118207</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-07 07:26:47 -0800</bug_when>
    <thetext>Created attachment 118207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516631</commentid>
    <comment_count>15</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-07 07:31:28 -0800</bug_when>
    <thetext>*** Bug 72192 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517188</commentid>
    <comment_count>16</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-07 22:09:51 -0800</bug_when>
    <thetext>I likely won&apos;t review this, but this patch is super huge.

In general it is better to do small focused patch rather than try to do everything in one patch.

For example, I was trying to locate one piece of this earlier (where it did threading) and it was pretty hard. Hopefully folks that you work with can give you advice on making smaller patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517499</commentid>
    <comment_count>17</comment_count>
      <attachid>118412</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-08 10:02:35 -0800</bug_when>
    <thetext>Created attachment 118412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517509</commentid>
    <comment_count>18</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-08 10:09:04 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; I likely won&apos;t review this, but this patch is super huge.
&gt; 
&gt; In general it is better to do small focused patch rather than try to do everything in one patch.
&gt; 
&gt; For example, I was trying to locate one piece of this earlier (where it did threading) and it was pretty hard. Hopefully folks that you work with can give you advice on making smaller patches.

I&apos;m not happy with the size of this patch either. It was previously two patches. One re-factoring patch and one that adds the feature described by the title of this bug. I was asked to merge these into one patch to avoid landing just a re-factoring patch that doesn&apos;t provide any direct benefit. I&apos;d prefer to land the re-factoring changes first but will leave this up to jamesr to decide.

I&apos;m working on moving the scheduler changes into a follow up patch. That will make this patch a bit smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517649</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-08 12:03:39 -0800</bug_when>
    <thetext>One good goal is that a patch should be the smallest amount of testable code. A smaller patch that does not do anything is not generally an improvement.  That said since this patch is about 150kb I haven&apos;t attempted to review it yet.

My understanding is that https://bugs.webkit.org/show_bug.cgi?id=72672 is required before this patch for correctness, so I&apos;m a bit surprised to see the bugzilla dependency order the other way around. I was not planning to look at this patch at all until the atomicity issue was addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517663</commentid>
    <comment_count>20</comment_count>
      <attachid>118442</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-08 12:12:34 -0800</bug_when>
    <thetext>Created attachment 118442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517683</commentid>
    <comment_count>21</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-08 12:27:37 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; One good goal is that a patch should be the smallest amount of testable code. A smaller patch that does not do anything is not generally an improvement.  That said since this patch is about 150kb I haven&apos;t attempted to review it yet.
&gt; 
&gt; My understanding is that https://bugs.webkit.org/show_bug.cgi?id=72672 is required before this patch for correctness, so I&apos;m a bit surprised to see the bugzilla dependency order the other way around. I was not planning to look at this patch at all until the atomicity issue was addressed.

72672 is not required. 72672 is required for this to be enabled in the threaded compositor. To make this patch smaller, I just moved everything related to the threaded compositor use case over to this bug: https://bugs.webkit.org/show_bug.cgi?id=74113

72672 was previously enabling parallel uploads for the threaded compositor but that&apos;s all in 74113 now.

This patch only makes it possible to do texture uploads in parallel with painting for the single threaded compositor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518324</commentid>
    <comment_count>22</comment_count>
      <attachid>118593</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-09 10:19:00 -0800</bug_when>
    <thetext>Created attachment 118593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518921</commentid>
    <comment_count>23</comment_count>
      <attachid>118710</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-11 13:14:53 -0800</bug_when>
    <thetext>Created attachment 118710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518944</commentid>
    <comment_count>24</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-11 16:37:35 -0800</bug_when>
    <thetext>Latest patch moves all the resource initialization changes required for threaded parallel paint/upload to a separate patch as that&apos;s no longer required since I moved threaded support to a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527669</commentid>
    <comment_count>25</comment_count>
      <attachid>120668</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-28 07:29:56 -0800</bug_when>
    <thetext>Created attachment 120668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529777</commentid>
    <comment_count>26</comment_count>
      <attachid>121160</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-04 14:51:52 -0800</bug_when>
    <thetext>Created attachment 121160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535565</commentid>
    <comment_count>27</comment_count>
      <attachid>122406</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-13 03:31:18 -0800</bug_when>
    <thetext>Created attachment 122406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535583</commentid>
    <comment_count>28</comment_count>
      <attachid>122406</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 04:22:55 -0800</bug_when>
    <thetext>Comment on attachment 122406
Patch

Attachment 122406 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11189012

New failing tests:
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/lost-compositor-context-twice.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540177</commentid>
    <comment_count>29</comment_count>
      <attachid>123459</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-21 15:23:44 -0800</bug_when>
    <thetext>Created attachment 123459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540187</commentid>
    <comment_count>30</comment_count>
      <attachid>123459</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-21 15:59:07 -0800</bug_when>
    <thetext>Comment on attachment 123459
Patch

Attachment 123459 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11323075

New failing tests:
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/lost-compositor-context-twice.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540545</commentid>
    <comment_count>31</comment_count>
      <attachid>123557</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-23 07:58:48 -0800</bug_when>
    <thetext>Created attachment 123557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544031</commentid>
    <comment_count>32</comment_count>
      <attachid>124307</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 06:47:34 -0800</bug_when>
    <thetext>Created attachment 124307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544032</commentid>
    <comment_count>33</comment_count>
      <attachid>124307</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-27 06:48:05 -0800</bug_when>
    <thetext>Comment on attachment 124307
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544059</commentid>
    <comment_count>34</comment_count>
      <attachid>124307</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 07:25:48 -0800</bug_when>
    <thetext>Comment on attachment 124307
Patch

Attachment 124307 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11350762

New failing tests:
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/lost-compositor-context-twice.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545598</commentid>
    <comment_count>35</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-30 16:41:00 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 124307 [details])
&gt; Attachment 124307 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11350762
&gt; 
&gt; New failing tests:
&gt; platform/chromium/compositing/lost-compositor-context-permanently.html
&gt; platform/chromium/compositing/lost-compositor-context.html
&gt; platform/chromium/compositing/webgl-loses-compositor-context.html
&gt; platform/chromium/compositing/lost-compositor-context-twice.html
&gt; platform/chromium/compositing/lost-compositor-context-with-rendersurface.html

Are you looking into these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545612</commentid>
    <comment_count>36</comment_count>
      <attachid>124307</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-30 17:01:51 -0800</bug_when>
    <thetext>Comment on attachment 124307
Patch

A few high level points (I don&apos;t plan to look terribly closely at the exact details until incremental uploading is up and running since IMO that&apos;s much more important):

1.) I&apos;m pretty sure we can&apos;t afford the thread kick in the middle of painting on mobile, the context switching is too expensive. At some hardware class above that the extra parallelism starts to become a win even with the extra scheduler overhead, but I&apos;m not sure exactly where that is.  This has two implications:
 a.) We can&apos;t write any code that *depends* on this happening. All code has to work with either parallel uploads or without it.
 b.) We need a way to control parallel uploading. It can be as simple as #ifdefs in the right place, or a setting somewhere, but it needs to be clearly marked.

2.) I don&apos;t think we need yet another visitor abstraction here. If we want layers to do something special at paint time just add the call that they need to make at the right place. I&apos;m also not sure why we need a separate prepareToUpdate() pass from the paint pass, but perhaps that&apos;ll be clear when looking at the details.

In general this patch seems to have a lot of spurious renames and code changes (like changing from &quot;contentsTextureManager()-&gt;&quot; to &quot;m_contentsTextureManager-&gt;&quot;) that make the diff a lot larger and harder to read than it has to be. Please try to cut these down since the patch is already too large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546251</commentid>
    <comment_count>37</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-31 11:06:15 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 124307 [details])
&gt; A few high level points (I don&apos;t plan to look terribly closely at the exact details until incremental uploading is up and running since IMO that&apos;s much more important):
&gt; 
&gt; 1.) I&apos;m pretty sure we can&apos;t afford the thread kick in the middle of painting on mobile, the context switching is too expensive. At some hardware class above that the extra parallelism starts to become a win even with the extra scheduler overhead, but I&apos;m not sure exactly where that is.  This has two implications:
&gt;  a.) We can&apos;t write any code that *depends* on this happening. All code has to work with either parallel uploads or without it.
&gt;  b.) We need a way to control parallel uploading. It can be as simple as #ifdefs in the right place, or a setting somewhere, but it needs to be clearly marked.

I agree. The current delayTextureUpdates setting exists for this purpose. The impl thread will wait with all texture updates until beginFrameComplete is called when this is set. The texture updates are still posted to the impl thread as soon as available. That could easily be changed but I assumed that this isn&apos;t a problem. If it is, then that seems like something that should be solved separately.

&gt; 
&gt; 2.) I don&apos;t think we need yet another visitor abstraction here. If we want layers to do something special at paint time just add the call that they need to make at the right place. I&apos;m also not sure why we need a separate prepareToUpdate() pass from the paint pass, but perhaps that&apos;ll be clear when looking at the details.

The patch makes it possible to start uploading a soon as one tile has been painted. Some re-factoring is necessary to be able to do that and the separate prepareToUpdate pass has to do with that. We can discuss the best way to do this when you&apos;ve had time to look at the details.

&gt; 
&gt; In general this patch seems to have a lot of spurious renames and code changes (like changing from &quot;contentsTextureManager()-&gt;&quot; to &quot;m_contentsTextureManager-&gt;&quot;) that make the diff a lot larger and harder to read than it has to be. Please try to cut these down since the patch is already too large.

The only unnecessary renames in this patch should be the ones that fix the contentsTextureManager vs m_contentsTextureManager inconsistency. I&apos;m happy to move those into a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546254</commentid>
    <comment_count>38</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-31 11:07:23 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (From update of attachment 124307 [details] [details])
&gt; &gt; Attachment 124307 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/11350762
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; platform/chromium/compositing/lost-compositor-context-permanently.html
&gt; &gt; platform/chromium/compositing/lost-compositor-context.html
&gt; &gt; platform/chromium/compositing/webgl-loses-compositor-context.html
&gt; &gt; platform/chromium/compositing/lost-compositor-context-twice.html
&gt; &gt; platform/chromium/compositing/lost-compositor-context-with-rendersurface.html
&gt; 
&gt; Are you looking into these?

I will do that, asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547401</commentid>
    <comment_count>39</comment_count>
      <attachid>125025</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-01 15:04:25 -0800</bug_when>
    <thetext>Created attachment 125025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550305</commentid>
    <comment_count>40</comment_count>
      <attachid>125710</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-06 14:44:48 -0800</bug_when>
    <thetext>Created attachment 125710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550339</commentid>
    <comment_count>41</comment_count>
      <attachid>125710</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 15:18:45 -0800</bug_when>
    <thetext>Comment on attachment 125710
Patch

Attachment 125710 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11427757

New failing tests:
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/lost-compositor-context-twice.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551596</commentid>
    <comment_count>42</comment_count>
      <attachid>125962</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-07 17:28:35 -0800</bug_when>
    <thetext>Created attachment 125962
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551700</commentid>
    <comment_count>43</comment_count>
      <attachid>125962</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 19:05:32 -0800</bug_when>
    <thetext>Comment on attachment 125962
Patch

Attachment 125962 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11461239

New failing tests:
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
compositing/masks/masked-ancestor.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/lost-compositor-context-twice.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554690</commentid>
    <comment_count>44</comment_count>
      <attachid>126645</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-11 14:00:30 -0800</bug_when>
    <thetext>Created attachment 126645
Patch

Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554704</commentid>
    <comment_count>45</comment_count>
      <attachid>126645</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 14:52:38 -0800</bug_when>
    <thetext>Comment on attachment 126645
Patch

Attachment 126645 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11509211

New failing tests:
platform/chromium/compositing/lost-compositor-context-with-video.html
platform/chromium/compositing/lost-compositor-context.html
platform/chromium/compositing/webgl-loses-compositor-context.html
platform/chromium/compositing/lost-compositor-context-with-rendersurface.html
platform/chromium/compositing/lost-compositor-context-permanently.html
platform/chromium/compositing/lost-compositor-context-twice.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567095</commentid>
    <comment_count>46</comment_count>
      <attachid>129331</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-02-28 14:25:45 -0800</bug_when>
    <thetext>Created attachment 129331
Patch

Rebase and fix layout test crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567102</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 14:28:29 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org, abarth@webkit.org or jamesr@chromium.org before submitting because this patch contains changes to the Chromium platform API.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115869</attachid>
            <date>2011-11-18 13:51:14 -0800</date>
            <delta_ts>2011-11-18 15:19:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>parallel-paint-upload.diff</filename>
            <type>text/plain</type>
            <size>28568</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ5ZGQwNjAzY2ZjOGQ4YWZmNTE0YzU1MWVlMTFmYWVlMzA3YmQyYTYKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgTm92IDE4IDEz
OjM3OjUzIDIwMTEgLTA4MDAKCiAgICBbQ2hyb21pdW1dIFVwbG9hZCB0ZXh0dXJlcyBpbiBwYXJh
bGxlbCB3aXRoIHBhaW50aW5nIGNvbnRlbnRzLgogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcyNzUyCiAgICAKICAgIFNvdXJjZS9XZWJDb3JlOgogICAgCiAgICBT
dGFydCB1cGxvYWRpbmcgdGV4dHVyZSByZXNvdXJjZXMgYXMgc29vbiBhcyBlbm91Z2ggY29udGVu
dHMgaGFzIGJlZW4KICAgIHBhaW50ZWQgZm9yIG9uZSB0ZXh0dXJlIHRvIGJlIHVwZGF0ZWQuCiAg
ICAKICAgIE5vIG5ldyB0ZXN0cy4KICAgIAogICAgU291cmNlL1dlYktpdC9jaHJvbWl1bToKICAg
IAogICAgVHJhY2sgY2hhbmdlcyB0byBzY2hlZHVsZXIuCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3Bw
CmluZGV4IGJjMGVlNzguLmVmNDY2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTc0
LDYgKzc0LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkKICAg
ICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjp1cGRh
dGVSZXNvdXJjZVBlbmRpbmcoKQoreworICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZVJlc291cmNl
UGVuZGluZygpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NT
Y2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2No
ZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKQEAgLTEwMiw3ICsxMDgsNyBA
QCB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKCkKIHsKICAgICBpZiAobV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZykgewogICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
ID0gZmFsc2U7Ci0gICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOworICAgICAgICBt
X3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01v
cmVSZXNvdXJjZVVwZGF0ZXMoKSk7CiAgICAgfQogICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxl
cjo6YmVnaW5GcmFtZSIsIHRoaXMsIDApOwogCkBAIC0xMjYsNyArMTMyLDcgQEAgdm9pZCBDQ1Nj
aGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICBjYXNlIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAgICAgICAgICBtX2NsaWVu
dC0+c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVM6CisgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CiAgICAgICAgICAgICBtX2NsaWVudC0+c2NoZWR1bGVk
QWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpOwogICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NCwxMCArMTUw
LDEwIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAg
ICAgLy8gcGVuZGluZywgdGhlbiB0ZWxsIHRoZSBzdGF0ZSBtYWNoaW5lIHRoYXQgdGhlCiAgICAg
ICAgIC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuICBJZiBtb3JlIGFyZSBw
ZW5kaW5nLCB0aGVuIHdlCiAgICAgICAgIC8vIHdpbGwgYWNrIHRoZSB1cGRhdGUgYXQgdGhlIG5l
eHQgZHJhdy4KLSAgICAgICAgaWYgKGFjdGlvbiA9PSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUworICAgICAgICBpZiAoYWN0aW9uID09
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTCiAg
ICAgICAgICAgICAmJiAhbV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkgewogICAg
ICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAg
ICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2Up
OworICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGZhbHNlKTsKICAgICAgICAgfQogCiAgICAgfSB3aGlsZSAoYWN0aW9uICE9IENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCAwYmUz
NzE3Li42NTY3MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVi
bGljOgogICAgIC8vIEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBlbnN1cmVzIHRoZSBkcmF3IHdp
bGwgZGVmaW5pdGVseSBoYXBwZW4gZXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUuCiAgICAgdm9p
ZCBzZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogCisgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVBlbmRp
bmcoKTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgdm9pZCBzZXRNYXhG
cmFtZXNQZW5kaW5nKGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5jcHAKaW5kZXggNmYzZDhiNy4uZDkxZWFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtMzUsNyArMzUsOSBAQCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV9uZWVkc0NvbW1p
dChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAg
LCBtX2luc2lkZVZTeW5jKGZhbHNlKQotICAgICwgbV92aXNpYmxlKGZhbHNlKSB7IH0KKyAgICAs
IG1fdmlzaWJsZShmYWxzZSkKKyAgICAsIG1fdXBkYXRlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkK
KyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAog
ewpAQCAtNTYsOCArNTgsOCBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKCkgY29uc3QKICAgICBjYXNlIENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAg
ICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpCi0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUzsKKyAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYm
IG1fdXBkYXRlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKICAgICBj
YXNlIENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ6CkBAIC04MCwxMSArODIsMTMgQEAgdm9p
ZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKIAog
ICAgIGNhc2UgQUNUSU9OX0JFR0lOX0ZSQU1FOgogICAgICAgICBBU1NFUlQobV92aXNpYmxlKTsK
KyAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZVJlc291cmNlc1BlbmRpbmcpOwogICAgICAgICBtX2Nv
bW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOwogICAgICAgICBtX25l
ZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJhbWVDb21wbGV0ZSA9IGZhbHNlOwogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVM6CisgICAgY2FzZSBBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOgogICAgICAgICBBU1NF
UlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAg
ICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEzMywxOCArMTM3LDMyIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNl
dE5lZWRzQ29tbWl0KCkKICAgICBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsKIH0KIAordm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlUmVzb3VyY2VQZW5kaW5nKCkKK3sKKyAgICBBU1NF
UlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MKKyAgICAg
ICAgICAgfHwgbV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
KTsKKyAgICBBU1NFUlQoIW1fZnJhbWVDb21wbGV0ZSk7CisgICAgbV91cGRhdGVSZXNvdXJjZXNQ
ZW5kaW5nID0gdHJ1ZTsKKyAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5H
X1JFU09VUkNFUzsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5GcmFt
ZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVf
RlJBTUVfSU5fUFJPR1JFU1MpOworICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9T
VEFURV9GUkFNRV9JTl9QUk9HUkVTUworICAgICAgICAgICB8fCBtX2NvbW1pdFN0YXRlID09IENP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIG1fZnJhbWVDb21wbGV0ZSA9IHRy
dWU7CiAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM7
CisgICAgaWYgKCFtX3VwZGF0ZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgIG1fY29tbWl0U3Rh
dGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCi12b2lkIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpiZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQ
ZW5kaW5nKQordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUg
PT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgQVNTRVJUKG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcpOwogICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcg
PSBmYWxzZTsKLSAgICBpZiAoIW1vcmVQZW5kaW5nKQorICAgIG1fdXBkYXRlUmVzb3VyY2VzUGVu
ZGluZyA9IG1vcmVQZW5kaW5nOworICAgIGlmICghbW9yZVBlbmRpbmcgJiYgbV9mcmFtZUNvbXBs
ZXRlKQogICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1J
VDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXgg
MTllZDIxZC4uZDlhZWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEFjdGlvbiB7CiAgICAg
ICAgIEFDVElPTl9OT05FLAogICAgICAgICBBQ1RJT05fQkVHSU5fRlJBTUUsCi0gICAgICAgIEFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsCisgICAgICAgIEFDVElPTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMsCiAgICAgICAgIEFDVElPTl9DT01NSVQsCiAgICAgICAgIEFDVElPTl9E
UkFXLAogICAgIH07CkBAIC04NywxNCArODcsMTcgQEAgcHVibGljOgogICAgIC8vIHRocmVhZCB0
byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEluZGljYXRlcyB0
aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2UgdGhhdCBuZWVkIHVwZGF0aW5nIGlzIHBlbmRpbmcuCisg
ICAgdm9pZCB1cGRhdGVSZXNvdXJjZVBlbmRpbmcoKTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5
IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBm
cm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFu
ZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2lu
LgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4K
ICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkg
aW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMK
ICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0
ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUg
bV9jb21taXRTdGF0ZTsKQEAgLTEwNSw2ICsxMDgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwogICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKICAg
ICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1fdXBkYXRlUmVzb3VyY2VzUGVuZGluZzsKKyAg
ICBib29sIG1fZnJhbWVDb21wbGV0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggOTMyMWU5MC4uNmRkOTk4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJUcmFj
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTY3JvbGxDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwpAQCAt
MTU4LDcgKzE1OSw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogICAg
IHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0gICAgICAgIHdoaWxlIChtX3RleHR1cmVV
cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KKwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJU
cmVlSG9zdEltcGwuZ2V0KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNp
YmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CkBA
IC0yMTQsNyArMjE1LDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKIAogdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7Ci0gICAgbV90ZXh0dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgIFRSQUNFX0VWRU5UKCJDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRh
dGUiLCB0aGlzLCAwKTsKKyAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiAvLyBDYWxsZWQgYnkg
dGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2Vz
IHRoZSBzY2hlZHVsaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4
IDZkOWExM2EuLjk1YmVlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
QEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJjYy9DQ0NvbXBsZXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
Ci0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODQsOCArODMsNiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91
bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05l
d2x5Q29tbWl0dGVkRnJhbWU7Ci0KLSAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0
ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVi
dWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAppbmRleCBhOTEzYzM2Li4xNjRjYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApA
QCAtNDM4LDYgKzQzOCw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1w
bFRocmVhZChVcGRhdGVFbnRyeSogZW50cnkpCiAKICAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRy
eS0+bV9kZXN0UmVjdCk7CiAKKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+dXBkYXRlUmVz
b3VyY2VQZW5kaW5nKCk7CisKICAgICBkZWxldGUgZW50cnk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LmNwcAppbmRleCA2MjZhYTQ1Li44MGEwY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CkBAIC02Myw2ICs2MywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gYjsg
fQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldFVwZGF0ZVJlc291
cmNlc1BlbmRpbmcoYm9vbCBiKSB7IG1fdXBkYXRlUmVzb3VyY2VzUGVuZGluZyA9IGI7IH0KKyAg
ICBib29sIHVwZGF0ZVJlc291cmNlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZVJl
c291cmNlc1BlbmRpbmc7IH0KKworICAgIHZvaWQgc2V0RnJhbWVDb21wbGV0ZShib29sIGIpIHsg
bV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJvb2wgZnJhbWVDb21wbGV0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsKIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKQEAgLTIzMCwxNSAr
MjM2LDE3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19O
b1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxz
ZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0VXBkYXRlUmVzb3VyY2VzUGVu
ZGluZyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8g
VmVyaWZ5IHdlIGJlZ2luIHVwZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAg
ICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0
ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVnaW4g
YW4gdXBkYXRlLgotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7CiAKICAgICAvLyBWZXJpZnkgd2UgZG9uJ3QgZG8gYW55dGhpbmcsIGJvdGggZm9yIHZzeW5j
IGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwpAQCAtMjQ3
LDcgKzI1NSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRl
c19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8g
RW5kIHVwZGF0ZSB3aXRoIG5vIG1vcmUgdXBkYXRlcyBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2lu
VXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNl
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CkBAIC0yNTksMTUgKzI2NywxNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZV
cGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRV
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOworICAgIHN0
YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhlIHVwZGF0ZSBi
ZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUuc2V0SW5zaWRl
VlN5bmMoZmFsc2UpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMo
dHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNF
Uywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFuIHVwZGF0ZS4KLSAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogCiAgICAgLy8gVmVy
aWZ5IHdlIGRvIG5vdGhpbmcsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgc3Rh
dGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwpAQCAtMjc2LDE4ICsyODYsMTggQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09m
VXBkYXRlcykKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBt
b3JlIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
dHJ1ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAg
ICAgLy8gVmVyaWZ5IHdlIHVwZGF0ZSBtb3JlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5j
LgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBC
ZWdpbiBhbm90aGVyIHVwZGF0ZSwgd2hpbGUgaW5zaWRlIHZzeW5jLiBBbmQsIGl0IHVwZGF0aW5n
LgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShmYWxzZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgY29tbWl0LCBpbmRlcGVuZGVudCBv
ZiB2c3luYy4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CkBAIC0zMDMsMTAgKzMx
MywxMyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0
aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVl
KTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisgICAgc3RhdGUuc2V0VXBkYXRlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICBz
dGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOworCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgotICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAKICAgICAvLyBFbnN1cmUgd2UgZHJhdyBvbiB0
aGUgbmV4dCB2c3luYyBldmVuIHRob3VnaCBhbiB1cGRhdGUgaXMgaW4tcHJvZ3Jlc3MuCiAgICAg
c3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CkBAIC0zMjAsMTkgKzMzMywxOSBAQCBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3Vu
ZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CiAKICAgICAvLyBG
aW5pc2ggdXBkYXRlIGJ1dCBsZWF2ZSBtb3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAgIHN0YXRl
LmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0
ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHJlZ2Fy
ZGxlc3Mgb2YgdnN5bmMsIHdlIHVwZGF0ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuc2V0SW5zaWRl
VlN5bmMoZmFsc2UpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMo
dHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNF
Uywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRlLiBG
aW5pc2ggaXQgaW1tZWRpYXRlbHkuIEluc2lkZSB0aGUgdnN5bmMuCiAgICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmModHJ1ZSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7Ci0gICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgY29tbWl0IHJl
Z2FyZGxlc3Mgb2YgdnN5bmMgc3RhdGUKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7
CkBAIC0zNTIsNiArMzY1LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUu
bmV4dEFjdGlvbigpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAKKyAg
ICAvLyBSZWNlaXZlIHJlc291cmNlIHRoYXQgbmVlZCB1cGRhdGUuCisgICAgc3RhdGUudXBkYXRl
UmVzb3VyY2VQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsK
KwogICAgIC8vIE5vdywgd2hpbGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhl
ciBjb21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX1RS
VUUoc3RhdGUubmVlZHNDb21taXQoKSk7CkBAIC0zNTksMTAgKzM3NiwxMCBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAg
IC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7Ci0gICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFs
c2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9f
Q09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIEV4cGVjdCB0byBjb21taXQg
cmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0ZS4KQEAgLTM5NywxNCArNDE0LDE4IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogICAgIEVYUEVDVF9GQUxT
RShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2
ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS51cGRhdGVSZXNvdXJjZVBlbmRpbmcoKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVy
IHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAg
ICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKLSAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0
U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Q09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC00NDcsMTQgKzQ2OCwxOCBAQCBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1
ZXN0SW5iZXR3ZWVuKQogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnVwZGF0ZVJlc291
cmNlUGVuZGluZygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAg
ICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRl
IGJlZ2FuIGFuZCBmaW5pc2hlZAotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAg
LTUwMywxNCArNTI4LDE4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICAvLyBCZWNvbWUgaW52aXNpYmxlCiAgICAgc3Rh
dGUuc2V0VmlzaWJsZShmYWxzZSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0
YXRlLnVwZGF0ZVJlc291cmNlUGVuZGluZygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0
U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVk
CiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1
bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkCi0gICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsK
KyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFj
dGlvbigpKTsKIApAQCAtNTMwLDQgKzU1OSw2NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0K
IAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlVXBkYXRl
cykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVl
KTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4g
dGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAg
c3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01N
SVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0Tm9SZXNvdXJjZVBlbmRpbmcpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRl
OworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQg
c2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9Q
Uk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5l
ZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNl
LgorICAgIHN0YXRlLnVwZGF0ZVJlc291cmNlUGVuZGluZygpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0
ZSBiZWdhbiBhbmQgZmluaXNoZWQuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1
bGVyIGFub3RoZXIgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisKKyAgICAv
LyBObyBwZW5kaW5nIHJlc291cmNlcyB0byB1cGRhdGUuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAg
IC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAgc3RhdGUuYmVn
aW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBjMWY2ZGMyLi44YTg4YzcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC03Niwx
MiArNzYsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXQpCiAgICAgY2xp
ZW50LnJlc2V0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBz
ZXQgdG8gZmFsc2UsCi0gICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3Jl
UmVzb3VyY2VzLCB0aGVuCi0gICAgLy8gY29tbWl0CisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRl
IHNob3VsZCBjb21taXQgaW1tZWRpYXRlbHkKICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBF
Q1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0
aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVu
dC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkp
OwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4KQEAgLTEx
MiwxMiArMTEwLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJC
ZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAgIC8vIFNp
bmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIg
Y29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0
ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5vdGhlciBm
cmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0LCB0
aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlv
bigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQu
YWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsK
ICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4g
YmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTEzNiw0ICsxMzIsNDIgQEAgVEVTVChDQ1NjaGVkdWxl
clRlc3QsIFJlcXVlc3RSZWRyYXdXaXRoVHdvRnJhbWVzUGVuZGluZykKIHsKIH0KIAorVEVTVChD
Q1NjaGVkdWxlclRlc3QsIFVwZGF0ZVJlc291cmNlcykKK3sKKyAgICBGYWtlQ0NTY2hlZHVsZXJD
bGllbnQgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNlID0g
YWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3duUHRyPENDU2NoZWR1bGVy
PiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBD
Q0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBzY2hlZHVsZXItPnNldFZp
c2libGUodHJ1ZSk7CisKKyAgICAvLyBTZXROZWVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZy
YW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMSwg
Y2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAg
ICAvLyBOb3cgc2V0TmVlZHNDb21taXQgYWdhaW4uIENhbGxpbmcgaGVyZSBtZWFucyB3ZSBuZWVk
IGEgc2Vjb25kIGZyYW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKworICAg
IC8vIFVwZGF0ZSBwZW5kaW5nIHJlc291cmNlcy4KKyAgICBzY2hlZHVsZXItPnVwZGF0ZVJlc291
cmNlUGVuZGluZygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGll
bnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFNpbmNlLCBoYXNN
b3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlz
CisgICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCwgdGhlbiBi
ZWdpbiBhbm90aGVyIGZyYW1lLgorICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7
CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50
LnJlc2V0KCk7CisKKyAgICAvLyBUaWNrIHNob3VsZCBkcmF3IGJ1dCB0aGVuIGJlZ2luIGFub3Ro
ZXIgZnJhbWUuCisgICAgdGltZVNvdXJjZS0+dGljaygpOworICAgIEVYUEVDVF9FUSgyLCBjbGll
bnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRB
Y3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgY2xpZW50LnJlc2V0KCk7
Cit9CisKKwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115886</attachid>
            <date>2011-11-18 15:19:11 -0800</date>
            <delta_ts>2011-11-20 16:07:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Upload-textures-in-parallel-with-painting-contents.patch</filename>
            <type>text/plain</type>
            <size>29195</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">RnJvbSAxMjU1OTg4YzQ5NWJkZTZiNTNjNzI2M2RiNjBkZjcwODAyZjcyMzIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4K
RGF0ZTogRnJpLCAxOCBOb3YgMjAxMSAxMzozNzo1MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFVw
bG9hZCB0ZXh0dXJlcyBpbiBwYXJhbGxlbCB3aXRoIHBhaW50aW5nIGNvbnRlbnRzLgogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCgpTb3VyY2UvV2ViQ29yZToK
ClN0YXJ0IHVwbG9hZGluZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250
ZW50cyBoYXMgYmVlbgpwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgoKTm8g
bmV3IHRlc3RzLgoKU291cmNlL1dlYktpdC9jaHJvbWl1bToKClRyYWNrIGNoYW5nZXMgdG8gc2No
ZWR1bGVyLgotLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5jcHAgIHwgICAxNCArKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5oICAgIHwgICAgMSArCiAuLi4vY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuY3BwICAgICAgICB8ICAgMzIgKysrKy0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5oIHwgICAxMSArLQogLi4uL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwICAgfCAgICA2ICstCiAuLi4vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oICAgICB8ICAgIDMgLQogLi4uL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwICAgICAgICAgfCAgICAyICsKIC4uLi9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIHwgIDE1MiArKysrKysr
KysrKysrKysrLS0tLQogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwICAgfCAgIDU0ICsrKysrKy0tCiA5IGZpbGVzIGNoYW5nZWQsIDIxNSBpbnNlcnRpb25z
KCspLCA2MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKaW5kZXggYmMwZWU3
OC4uZWY0NjYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcApAQCAtNzQsNiArNzQsMTIgQEAg
dm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHNGb3JjZWRSZWRyYXcoKQogICAgIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zKCk7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6OnVwZGF0ZVJlc291cmNlUGVu
ZGluZygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlUmVzb3VyY2VQZW5kaW5nKCk7Cisg
ICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6YmVn
aW5GcmFtZUNvbXBsZXRlKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2lu
RnJhbWVDb21wbGV0ZSIsIHRoaXMsIDApOwpAQCAtMTAyLDcgKzEwOCw3IEBAIHZvaWQgQ0NTY2hl
ZHVsZXI6OmJlZ2luRnJhbWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAg
ICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9j
bGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5l
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBk
YXRlcygpKTsKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1l
IiwgdGhpcywgMCk7CiAKQEAgLTEyNiw3ICsxMzIsNyBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9j
ZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgICAgIGNhc2UgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRToKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRB
Y3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoK
KyAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JF
X1JFU09VUkNFUzoKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzKCk7CiAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ0LDEwICsxNTAsMTAgQEAgdm9pZCBD
Q1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAvLyBwZW5kaW5n
LCB0aGVuIHRlbGwgdGhlIHN0YXRlIG1hY2hpbmUgdGhhdCB0aGUKICAgICAgICAgLy8gYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzIGNvbXBsZXRlZC4gIElmIG1vcmUgYXJlIHBlbmRpbmcsIHRoZW4g
d2UKICAgICAgICAgLy8gd2lsbCBhY2sgdGhlIHVwZGF0ZSBhdCB0aGUgbmV4dCBkcmF3LgotICAg
ICAgICBpZiAoYWN0aW9uID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTCisgICAgICAgIGlmIChhY3Rpb24gPT0gQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMKICAgICAgICAgICAgICYm
ICFtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKSB7CiAgICAgICAgICAgICBtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICBtX3N0YXRlTWFj
aGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgICAgICAg
ICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAg
ICAgICB9CiAKICAgICB9IHdoaWxlIChhY3Rpb24gIT0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4IDBiZTM3MTcuLjY1NjcwNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8g
QXMgc2V0TmVlZHNSZWRyYXcoKSwgYnV0IGVuc3VyZXMgdGhlIGRyYXcgd2lsbCBkZWZpbml0ZWx5
IGhhcHBlbiBldmVuIGlmIHdlIGFyZSBub3QgdmlzaWJsZS4KICAgICB2b2lkIHNldE5lZWRzRm9y
Y2VkUmVkcmF3KCk7CiAKKyAgICB2b2lkIHVwZGF0ZVJlc291cmNlUGVuZGluZygpOwogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmco
aW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRl
eCA2ZjNkOGI3Li5kOTFlYWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuY3BwCkBAIC0zNSw3ICszNSw5IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQogICAg
ICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRlVlN5
bmMoZmFsc2UpCi0gICAgLCBtX3Zpc2libGUoZmFsc2UpIHsgfQorICAgICwgbV92aXNpYmxlKGZh
bHNlKQorICAgICwgbV91cGRhdGVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKQorICAgICwgbV9mcmFt
ZUNvbXBsZXRlKGZhbHNlKSB7IH0KIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CkBAIC01Niw4ICs1
OCw4IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5H
X1JFU09VUkNFUzoKICAgICAgICAgaWYgKHNob3VsZERyYXcpCiAgICAgICAgICAgICByZXR1cm4g
QUNUSU9OX0RSQVc7Ci0gICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykK
LSAgICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwor
ICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgJiYgbV91cGRhdGVSZXNv
dXJjZXNQZW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVM7CiAgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NU
QVRFX1JFQURZX1RPX0NPTU1JVDoKQEAgLTgwLDExICs4MiwxMyBAQCB2b2lkIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJ
T05fQkVHSU5fRlJBTUU6CiAgICAgICAgIEFTU0VSVChtX3Zpc2libGUpOworICAgICAgICBBU1NF
UlQoIW1fdXBkYXRlUmVzb3VyY2VzUGVuZGluZyk7CiAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBD
T01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CiAgICAgICAgIG1fbmVlZHNDb21taXQgPSBm
YWxzZTsKKyAgICAgICAgbV9mcmFtZUNvbXBsZXRlID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsK
IAotICAgIGNhc2UgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICBjYXNl
IEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CiAgICAgICAgIEFTU0VSVChtX2NvbW1pdFN0
YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgICAgICBtX3VwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMzLDE4
ICsxMzcsMzIgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0TmVlZHNDb21taXQo
KQogICAgIG1fbmVlZHNDb21taXQgPSB0cnVlOwogfQogCit2b2lkIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjp1cGRhdGVSZXNvdXJjZVBlbmRpbmcoKQoreworICAgIEFTU0VSVChtX2NvbW1pdFN0
YXRlID09IENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUworICAgICAgICAgICB8fCBtX2Nv
bW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIEFTU0VS
VCghbV9mcmFtZUNvbXBsZXRlKTsKKyAgICBtX3VwZGF0ZVJlc291cmNlc1BlbmRpbmcgPSB0cnVl
OworICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOwor
fQorCiB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpbkZyYW1lQ29tcGxldGUoKQog
ewotICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9H
UkVTUyk7CisgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lO
X1BST0dSRVNTCisgICAgICAgICAgIHx8IG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUyk7CisgICAgbV9mcmFtZUNvbXBsZXRlID0gdHJ1ZTsKICAgICBtX2Nv
bW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBpZiAoIW1f
dXBkYXRlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9T
VEFURV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpCit2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9v
bCBtb3JlUGVuZGluZykKIHsKICAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAgICBBU1NFUlQobV91cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyk7CiAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAg
IGlmICghbW9yZVBlbmRpbmcpCisgICAgbV91cGRhdGVSZXNvdXJjZXNQZW5kaW5nID0gbW9yZVBl
bmRpbmc7CisgICAgaWYgKCFtb3JlUGVuZGluZyAmJiBtX2ZyYW1lQ29tcGxldGUpCiAgICAgICAg
IG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAppbmRleCAxOWVkMjFkLi5kOWFl
YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHVibGljOgogICAgIGVudW0gQWN0aW9uIHsKICAgICAgICAgQUNUSU9OX05P
TkUsCiAgICAgICAgIEFDVElPTl9CRUdJTl9GUkFNRSwKLSAgICAgICAgQUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUywKKyAgICAgICAgQUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNF
UywKICAgICAgICAgQUNUSU9OX0NPTU1JVCwKICAgICAgICAgQUNUSU9OX0RSQVcsCiAgICAgfTsK
QEAgLTg3LDE0ICs4NywxNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhyZWFkIHRvIG1haW4uCiAgICAg
dm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgY29tcG9zaXRv
ciByZXNvdXJjZSB0aGF0IG5lZWQgdXBkYXRpbmcgaXMgcGVuZGluZy4KKyAgICB2b2lkIHVwZGF0
ZVJlc291cmNlUGVuZGluZygpOworCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2Ug
dG8gcmVjZWl2aW5nIGFuIEFDVElPTl9CRUdJTl9GUkFNRQogICAgIC8vIGZyb20gbmV4dFN0YXRl
LiBJbmRpY2F0ZXMgdGhhdCBhbGwgcGFpbnRpbmcgaXMgY29tcGxldGUgYW5kIHRoYXQKLSAgICAv
LyB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNlcyBjYW4gYmVnaW4uCisgICAgLy8gb25s
eSB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNlcyBpcyBsZWZ0LgogICAgIHZvaWQgYmVn
aW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0
byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUwogICAgIC8vIGZyb20g
bmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lmaWMgdXBkYXRlIHJlcXVlc3QgY29t
cGxldGVkLgotICAgIHZvaWQgYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBt
b3JlUGVuZGluZyk7CisgICAgdm9pZCB1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBt
b3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAgICBDb21taXRTdGF0ZSBtX2NvbW1pdFN0YXRl
OwpAQCAtMTA1LDYgKzEwOCw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc7CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJvb2wgbV92aXNp
YmxlOworICAgIGJvb2wgbV91cGRhdGVSZXNvdXJjZXNQZW5kaW5nOworICAgIGJvb2wgbV9mcmFt
ZUNvbXBsZXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cAppbmRleCA5MzIxZTkwLi42ZGQ5OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xNTgsNyArMTU5LDcg
QEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAgewogICAgICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+YmVnaW5Db21taXQoKTsKLSAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRl
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQorCiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRy
ZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1p
dE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKQEAgLTIxNCw3ICsyMTUs
OCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogCiB2b2lkIENDU2luZ2xlVGhy
ZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAg
ICBtX3RleHR1cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CisgICAgVFJBQ0VfRVZFTlQoIkNDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMsIDAp
OworICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNj
aGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggNmQ5YTEzYS4uOTVi
ZWUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNyArMjgs
NiBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKLSNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04NCw4ICs4Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dyYXBo
aWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3VsZEZhaWw7IC8vIFVz
ZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRG
cmFtZTsKLQotICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8v
IEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0
IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDY3NDFj
MjQuLmUxMDk4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC00NTEsNiArNDUx
LDggQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0
ZUVudHJ5KiBlbnRyeSkKIAogICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuYXBwZW5k
KGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0
KTsKIAorICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT51cGRhdGVSZXNvdXJjZVBlbmRpbmco
KTsKKwogICAgIGRlbGV0ZSBlbnRyeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4
IDYyNmFhNDUuLjgwYTBjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTYzLDYgKzYz
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmco
Ym9vbCBiKSB7IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBiOyB9CiAgICAgYm9vbCB1
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc7IH0KKworICAgIHZvaWQgc2V0VXBkYXRlUmVzb3VyY2VzUGVuZGluZyhi
b29sIGIpIHsgbV91cGRhdGVSZXNvdXJjZXNQZW5kaW5nID0gYjsgfQorICAgIGJvb2wgdXBkYXRl
UmVzb3VyY2VzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlUmVzb3VyY2VzUGVuZGlu
ZzsgfQorCisgICAgdm9pZCBzZXRGcmFtZUNvbXBsZXRlKGJvb2wgYikgeyBtX2ZyYW1lQ29tcGxl
dGUgPSBiOyB9CisgICAgYm9vbCBmcmFtZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUNvbXBsZXRlOyB9CiB9OwogCiBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQpAQCAtMjMwLDE1ICsyMzYsMTcgQEAgVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJv
dW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0
ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0Vmlz
aWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRVcGRhdGVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOwor
ICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgYmVn
aW4gdXBkYXRlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRlLnNldElu
c2lkZVZTeW5jKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnNldEluc2lkZVZT
eW5jKHRydWUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBhbiB1cGRhdGUuCi0g
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKIAogICAgIC8v
IFZlcmlmeSB3ZSBkb24ndCBkbyBhbnl0aGluZywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3lu
Yy4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CkBAIC0yNDcsNyArMjU1LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09u
ZVJvdW5kT2ZVcGRhdGVzKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdp
dGggbm8gbW9yZSB1cGRhdGVzIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShmYWxzZSk7CiAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFj
dGlvbigpKTsKIH0KQEAgLTI1OSwxNSArMjY3LDE3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0
YXRlLnNldFVwZGF0ZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVD
b21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBm
b3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKLSAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgotICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAKICAgICAvLyBWZXJpZnkgd2UgZG8gbm90
aGluZywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5zZXRJbnNpZGVW
U3luYyhmYWxzZSk7CkBAIC0yNzYsMTggKzI4NiwxOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CiAKICAgICAvLyBBY2sgdGhlIHVwZGF0ZSB3aXRoIG1vcmUgcGVuZGluZy4K
LSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBz
dGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkg
d2UgdXBkYXRlIG1vcmUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUu
c2V0SW5zaWRlVlN5bmMoZmFsc2UpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlv
bigpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmModHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JF
X1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlZ2luIGFub3RoZXIg
dXBkYXRlLCB3aGlsZSBpbnNpZGUgdnN5bmMuIEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3RhdGUu
c2V0SW5zaWRlVlN5bmModHJ1ZSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JF
U09VUkNFUyk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsK
IAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBjb21taXQsIGluZGVwZW5kZW50IG9mIHZzeW5jLgogICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKQEAgLTMwMywxMCArMzEzLDEzIEBAIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJv
dW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRl
LnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNp
YmxlKHRydWUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBz
dGF0ZS5zZXRVcGRhdGVSZXNvdXJjZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1l
Q29tcGxldGUodHJ1ZSk7CisKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAg
ICAvLyBCZWdpbiBhbiB1cGRhdGUuCi0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTKTsKIAogICAgIC8vIEVuc3VyZSB3ZSBkcmF3IG9uIHRoZSBuZXh0IHZzeW5j
IGV2ZW4gdGhvdWdoIGFuIHVwZGF0ZSBpcyBpbi1wcm9ncmVzcy4KICAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYyh0cnVlKTsKQEAgLTMyMCwxOSArMzMzLDE5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQog
ICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKIAogICAgIC8vIEZpbmlzaCB1cGRhdGUg
YnV0IGxlYXZlIG1vcmUgcmVzb3VyY2VzIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3lu
Yywgd2UgdXBkYXRlIHNvbWUgbW9yZS4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKLSAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gYW5vdGhlciB1cGRhdGUuIEZpbmlzaCBpdCBpbW1l
ZGlhdGVseS4gSW5zaWRlIHRoZSB2c3luYy4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVl
KTsKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBjb21taXQgcmVnYXJkbGVzcyBvZiB2
c3luYyBzdGF0ZQogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKQEAgLTM1Miw2ICsz
NjUsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0Nv
bW1pdElzTm90TG9zdCkKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZS
QU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAorICAgIC8vIFJlY2VpdmUg
cmVzb3VyY2UgdGhhdCBuZWVkIHVwZGF0ZS4KKyAgICBzdGF0ZS51cGRhdGVSZXNvdXJjZVBlbmRp
bmcoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gTm93
LCB3aGlsZSB0aGUgZnJhbWUgaXMgaW4gcHJvZ3Jlc3MsIHNldCBhbm90aGVyIGNvbW1pdC4KICAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICBFWFBFQ1RfVFJVRShzdGF0ZS5uZWVk
c0NvbW1pdCgpKTsKQEAgLTM1OSwxMCArMzc2LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgLy8gTGV0IHRoZSBm
cmFtZSBmaW5pc2guCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAg
ICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3Rh
dGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGNvbW1pdCByZWdhcmRsZXNzIG9m
IHZzeW5jIHN0YXRlLgpAQCAtMzk3LDE0ICs0MTQsMTggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRz
Q29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgor
ICAgIHN0YXRlLnVwZGF0ZVJlc291cmNlUGVuZGluZygpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAotICAgIHN0YXRlLnVwZGF0
ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CiAKQEAgLTQ0NywxNCArNDY4LDE4IEBAIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4p
CiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAorICAg
IC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUudXBkYXRlUmVzb3VyY2VQZW5kaW5nKCk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBE
QVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhl
IHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBs
ZXRlKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZp
bmlzaGVkCi0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAg
c3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTAzLDE0ICs1Mjgs
MTggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxl
TWlkQ29tbWl0KQogICAgIC8vIEJlY29tZSBpbnZpc2libGUKICAgICBzdGF0ZS5zZXRWaXNpYmxl
KGZhbHNlKTsKIAorICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUudXBkYXRlUmVz
b3VyY2VQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwog
ICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQKICAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0
ZSBiZWdhbiBhbmQgZmluaXNoZWQKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZ
X1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBA
IC01MzAsNCArNTU5LDY1IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCitURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vUmVzb3VyY2VVcGRhdGVzKQoreworICAgIFN0
YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8g
U3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9GUkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVD
VF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8g
VGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZy
YW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4
dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RO
b1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUu
c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0Lgor
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
CisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUu
dXBkYXRlUmVzb3VyY2VQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBm
aW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZShmYWxzZSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgYW5vdGhlciB1
cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUu
dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKworICAgIC8vIE5vIHBlbmRpbmcg
cmVzb3VyY2VzIHRvIHVwZGF0ZS4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUg
c2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Nj
aGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clRlc3QuY3BwCmluZGV4IGMxZjZkYzIuLjhhODhjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTc2LDEyICs3NiwxMCBAQCBU
RVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAgICBjbGllbnQucmVzZXQoKTsK
IAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwK
LSAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRo
ZW4KLSAgICAvLyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1p
dCBpbW1lZGlhdGVseQogICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAg
RVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAg
IEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7
CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50
LnJlc2V0KCk7CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3LgpAQCAtMTEyLDEyICsxMTAsMTAg
QEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAg
ICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gU2luY2UsIGhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBjb21taXQgaXMKLSAg
ICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJlc291cmNl
cywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBhbm90aGVyIGZyYW1lLgorICAgIC8v
IG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQsIHRoZW4gYmVnaW4gYW5v
dGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAgIEVY
UEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKLSAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkpOwor
ICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEo
InNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIGNsaWVudC5y
ZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBiZWdpbiBhbm90aGVy
IGZyYW1lLgpAQCAtMTM2LDQgKzEzMiw0MiBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVz
dFJlZHJhd1dpdGhUd29GcmFtZXNQZW5kaW5nKQogewogfQogCitURVNUKENDU2NoZWR1bGVyVGVz
dCwgVXBkYXRlUmVzb3VyY2VzKQoreworICAgIEZha2VDQ1NjaGVkdWxlckNsaWVudCBjbGllbnQ7
CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3VyY2UgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hlZHVsZXI+IHNjaGVkdWxlciA9
IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIobmV3IENDRnJhbWVSYXRlQ29u
dHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIHNjaGVkdWxlci0+c2V0VmlzaWJsZSh0cnVlKTsK
KworICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3VsZCBiZWdpbiB0aGUgZnJhbWUuCisgICAgc2No
ZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0
aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBj
bGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIE5vdyBzZXRO
ZWVkc0NvbW1pdCBhZ2Fpbi4gQ2FsbGluZyBoZXJlIG1lYW5zIHdlIG5lZWQgYSBzZWNvbmQgZnJh
bWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworCisgICAgLy8gVXBkYXRlIHBl
bmRpbmcgcmVzb3VyY2VzLgorICAgIHNjaGVkdWxlci0+dXBkYXRlUmVzb3VyY2VQZW5kaW5nKCk7
CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkp
OworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBjb21taXQgaXMKKyAgICAvLyBuZWVk
ZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0LCB0aGVuIGJlZ2luIGFub3RoZXIg
ZnJhbWUuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRB
Y3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKwor
ICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAg
ICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25z
KCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGll
bnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKK30KKworCiB9Ci0t
IAoxLjcuMy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116005</attachid>
            <date>2011-11-20 16:07:16 -0800</date>
            <delta_ts>2011-11-29 16:58:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>parallel-paint-upload.diff</filename>
            <type>text/plain</type>
            <size>30220</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNjgwYjQ4MC4uYjZmY2Y3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTczLDcgKzczLDggQEAgc3RydWN0IENDU2V0dGlu
Z3MgewogICAgICAgICAgICAgLCBlbmFibGVDb21wb3NpdG9yVGhyZWFkKGZhbHNlKQogICAgICAg
ICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlKGZhbHNlKQotICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKSB7IH0KKyAgICAg
ICAgICAgICwgcmVmcmVzaFJhdGUoMCkKKyAgICAgICAgICAgICwgZGVsYXlUZXh0dXJlVXBkYXRl
cyhmYWxzZSkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNv
bXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTgxLDYgKzgyLDcgQEAgc3RydWN0IENDU2V0dGluZ3Mgewog
ICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7
CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOworICAgIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlczsK
IH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2Fw
YWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIu
Y3BwCmluZGV4IGJjMGVlNzguLjBjNzQzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAg
LTc0LDYgKzc0LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRzRm9yY2VkUmVkcmF3KCkK
ICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjpz
ZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkKK3sKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRSZXNv
dXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKK30K
Kwogdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKIHsKICAgICBUUkFDRV9F
VkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSIsIHRoaXMsIDApOwpAQCAtMTAy
LDcgKzEwOCw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQogewogICAgIGlmICht
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7
CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2Ns
aWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQo
IkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAKQEAgLTExMSw2ICsxMTcsMTQg
QEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0
SW5zaWRlVlN5bmMoZmFsc2UpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjp1cGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoKQoreworICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKTsKKyAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CisgICAgbV9z
dGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzKCkpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisK
IHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAvLyBF
YXJseSBvdXQgc28gd2UgZG9uJ3Qgc3BhbSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zLgpAQCAtMTI3LDYgKzE0MSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6
OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVs
ZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
UzoKKyAgICAgICAgICAgIEFTU0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygp
KTsKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKCk7CiAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3LDcgKzE2Miw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6
OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgaWYgKGFjdGlvbiA9PSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUwogICAg
ICAgICAgICAgJiYgIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKICAgICAg
ICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAg
IG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsK
KyAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgICAgIH0KIAogICAgIH0gd2hpbGUgKGFjdGlvbiAhPSBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggMGJlMzcx
Ny4uMGUzNTFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC02NywxMSArNjcsMTIgQEAgcHVi
bGljOgogICAgIC8vIEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBlbnN1cmVzIHRoZSBkcmF3IHdp
bGwgZGVmaW5pdGVseSBoYXBwZW4gZXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUuCiAgICAgdm9p
ZCBzZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogCisgICAgdm9pZCBzZXRSZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKCk7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKLQogICAgIHZvaWQgc2V0
TWF4RnJhbWVzUGVuZGluZyhpbnQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgp
OwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOworICAgIHZvaWQgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKCk7CiAKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0KICAgICBib29sIHJlZHJhd1Bl
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA2ZjNk
OGI3Li4yYmJlZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuY3BwCkBAIC0zNSw3ICszNSw5IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQogICAgICwgbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFs
c2UpCi0gICAgLCBtX3Zpc2libGUoZmFsc2UpIHsgfQorICAgICwgbV92aXNpYmxlKGZhbHNlKQor
ICAgICwgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKGZhbHNlKQorICAgICwgbV9mcmFtZUNvbXBs
ZXRlKGZhbHNlKSB7IH0KIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CkBAIC00OCwxNSArNTAsMTAg
QEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZS
QU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKLSAgICBjYXNlIENPTU1JVF9TVEFU
RV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAgaWYgKHNob3VsZERyYXcpCi0gICAgICAgICAg
ICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKLQogICAg
IGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYgKHNob3Vs
ZERyYXcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIGlmICghbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nICYmIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZykKICAgICAgICAgICAgIHJl
dHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwogICAgICAgICByZXR1cm4g
QUNUSU9OX05PTkU7CiAKQEAgLTgwLDggKzc3LDEwIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAKICAgICBjYXNlIEFDVElPTl9CRUdJ
Tl9GUkFNRToKICAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7Ci0gICAgICAgIG1fY29tbWl0U3Rh
dGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CisgICAgICAgIEFTU0VSVCghbV9y
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKTsKKyAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM7CiAgICAgICAgIG1fbmVlZHNDb21taXQgPSBmYWxzZTsK
KyAgICAgICAgbV9mcmFtZUNvbXBsZXRlID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKIAogICAg
IGNhc2UgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKQEAgLTEzMywxOCArMTMy
LDI2IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzQ29tbWl0KCkKICAg
ICBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9yZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nID0gdHJ1ZTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5G
cmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1MpOwotICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTOworICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIG1fZnJhbWVDb21wbGV0ZSA9IHRydWU7Cisg
ICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYmICFtX3Jlc291cmNlVXBkYXRl
c1BlbmRpbmcpCisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9f
Q09NTUlUOwogfQogCi12b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQordm9pZCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcp
CiB7CiAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUyk7CiAgICAgQVNTRVJUKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpOwogICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICBpZiAoIW1vcmVQZW5k
aW5nKQorICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IG1vcmVQZW5kaW5nOworICAgIGlm
ICghbW9yZVBlbmRpbmcgJiYgbV9mcmFtZUNvbXBsZXRlKQogICAgICAgICBtX2NvbW1pdFN0YXRl
ID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggMTllZDIxZC4uM2NhZGE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC00NSw3ICs0NSw2IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gQ29tbWl0U3RhdGUgewogICAgICAgICBDT01NSVRfU1RBVEVfSURM
RSwKLSAgICAgICAgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgICAgICBDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgICAgICBDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlULAogICAgICAgICBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywK
QEAgLTg3LDE0ICs4NiwxNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhyZWFkIHRvIG1haW4uCiAgICAg
dm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgY29tcG9zaXRv
ciByZXNvdXJjZXMgdGhhdCBuZWVkIHVwZGF0aW5nIGFyZSBwZW5kaW5nLgorICAgIHZvaWQgc2V0
UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVz
cG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9CRUdJTl9GUkFNRQogICAgIC8vIGZyb20gbmV4
dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCBhbGwgcGFpbnRpbmcgaXMgY29tcGxldGUgYW5kIHRoYXQK
LSAgICAvLyB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNlcyBjYW4gYmVnaW4uCisgICAg
Ly8gb25seSB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNlcyBpcyBsZWZ0LgogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNw
b25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUwogICAgIC8v
IGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lmaWMgdXBkYXRlIHJlcXVl
c3QgY29tcGxldGVkLgotICAgIHZvaWQgYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
Ym9vbCBtb3JlUGVuZGluZyk7CisgICAgdm9pZCB1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
Ym9vbCBtb3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAgICBDb21taXRTdGF0ZSBtX2NvbW1p
dFN0YXRlOwpAQCAtMTA1LDYgKzEwNyw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc7CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJvb2wg
bV92aXNpYmxlOworICAgIGJvb2wgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOworICAgIGJvb2wg
bV9mcmFtZUNvbXBsZXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcAppbmRleCA5MzIxZTkwLi5mNjBjY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcApAQCAtMjE0LDcgKzIxNCwxMCBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnN0b3AoKQogCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICBtX3RleHR1cmVVcGRhdGVyLmFwcGVu
ZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIGVsc2UK
KyAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0
KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kg
c2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1
bGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMGI3NzMwYS4uYThiNDFmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQ0Nyw2ICs0NDcsOSBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoVXBkYXRlRW50cnkqIGVudHJ5
KQogCiAgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5hcHBlbmQoZW50cnktPm1fdGV4
dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOwogCisgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisg
ICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KCk7CisKICAgICBkZWxldGUgZW50cnk7CiB9CiAKQEAgLTQ2Myw2ICs0NjYsMTAgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAorICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5n
cygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMKKyAgICAgICAgJiYgaGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKQorICAgICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVz
UGVuZGluZygpOworCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAppbmRleCAxMjM2YjMyLi5hN2ZhMzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKQEAgLTEzMyw2ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IH5XZWJTZXR0aW5ncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKaW5kZXggMjQyYWVkMi4uMWQ3MWUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MSw2ICs1MSw4IEBAIFdl
YlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAs
IG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShm
YWxzZSkKICAgICAsIG1fdXNlVGhyZWFkZWRDb21wb3NpdG9yKGZhbHNlKQorICAgICwgbV9kZWxh
eVRleHR1cmVVcGRhdGVzKGZhbHNlKQorCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAg
LTQ2Niw0ICs0NjgsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VmlzdWFsV29yZE1vdmVt
ZW50RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0VmlzdWFsV29yZE1v
dmVtZW50RW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldERl
bGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCBlbmFibGVkKQoreworICAgIG1fZGVsYXlUZXh0dXJlVXBk
YXRlcyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmYTM0YWE4Li5kZWJmMGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAt
MTI1LDYgKzEyNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xs
QW5pbWF0b3IoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVu
dEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMo
Ym9vbCk7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpT
ZXR0aW5ncyogbV9zZXR0aW5nczsKQEAgLTEzMiw2ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwog
ICAgIGJvb2wgbV91c2VUaHJlYWRlZENvbXBvc2l0b3I7CisgICAgYm9vbCBtX2RlbGF5VGV4dHVy
ZVVwZGF0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBiZjNmNDQ5Li43M2Q5MmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yODQ1LDYgKzI4NDUs
OCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAgICAgICAgIGlmICghY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSkKICAgICAg
ICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBkZWZhdWx0UmVmcmVzaFJhdGU7CiAKKyAg
ICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlU
ZXh0dXJlVXBkYXRlcygpOworCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0g
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRl
cjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVI
b3N0OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CiAgICAgICAgIGlmIChtX2xheWVyVHJlZUhv
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCA2MjZhYTQ1Li5jNDg3N2VmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSB7CiAKIGNv
bnN0IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSBhbGxDb21taXRTdGF0ZXNb
XSA9IHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsCi0g
ICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
UywKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUywKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZ
X1RPX0NPTU1JVCwKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1dB
SVRJTkdfRk9SX0ZJUlNUX0RSQVcKQEAgLTYzLDYgKzYyLDEyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoYm9vbCBiKSB7IG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcgPSBiOyB9CiAgICAgYm9vbCB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7IH0KKworICAg
IHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyhib29sIGIpIHsgbV9yZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nID0gYjsgfQorICAgIGJvb2wgcmVzb3VyY2VVcGRhdGVzUGVuZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZzsgfQorCisgICAgdm9pZCBzZXRGcmFt
ZUNvbXBsZXRlKGJvb2wgYikgeyBtX2ZyYW1lQ29tcGxldGUgPSBiOyB9CisgICAgYm9vbCBmcmFt
ZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUNvbXBsZXRlOyB9CiB9OwogCiBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlm
TmVlZGVkKQpAQCAtOTcsNyArMTAyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKICAgICAgICAgU3RhdGVNYWNo
aW5lIHN0YXRlOwogICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
KTsKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUu
bmVlZHNDb21taXQoKSk7CiAgICAgfQogfQpAQCAtMjMwLDYgKzIzNSw4IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBk
YXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVwZGF0
ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3lu
YyhmYWxzZSk7CkBAIC0yNDcsNyArMjU0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVzIHBlbmRpbmcu
Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAg
IHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmMoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KQEAgLTI1OSw2ICsyNjYs
OCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRy
YXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsK
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3Rh
dGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5n
KHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJp
ZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAg
c3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwpAQCAtMjc2LDcgKzI4NSw3IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNP
ZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEFjayB0aGUgdXBkYXRlIHdpdGgg
bW9yZSBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAog
ICAgIC8vIFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3lu
Yy4KICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxzZSk7CkBAIC0yODcsNyArMjk2LDcgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3
b1JvdW5kc09mVXBkYXRlcykKICAgICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZSwgd2hpbGUgaW5z
aWRlIHZzeW5jLiBBbmQsIGl0IHVwZGF0aW5nLgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRy
dWUpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBjb21taXQsIGluZGVwZW5k
ZW50IG9mIHZzeW5jLgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKQEAgLTMwMyw2
ICszMTIsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNf
V2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0
cnVlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CisKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBhbiB1cGRh
dGUuCkBAIC0zMjAsNyArMzMyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0
SW5zaWRlVlN5bmMoZmFsc2UpOwogCiAgICAgLy8gRmluaXNoIHVwZGF0ZSBidXQgbGVhdmUgbW9y
ZSByZXNvdXJjZXMgcGVuZGluZy4KLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZSh0cnVlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1
ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhhdCByZWdhcmRsZXNzIG9mIHZzeW5jLCB3ZSB1cGRhdGUg
c29tZSBtb3JlLgogICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKQEAgLTMzMiw3ICsz
NDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0
aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVl
KTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMo
ZmFsc2UpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNl
KTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAg
Ly8gVmVyaWZ5IHdlIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCiAgICAgc3RhdGUu
c2V0SW5zaWRlVlN5bmMoZmFsc2UpOwpAQCAtMzUwLDcgKzM2MiwxMSBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8v
IEJlZ2luIHRoZSBmcmFtZS4KICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRh
dGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRT
dGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8g
UmVjZWl2ZSByZXNvdXJjZSB0aGF0IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKIAogICAgIC8vIE5vdywgd2hpbGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5v
dGhlciBjb21taXQuCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC0zNjIsNyAr
Mzc4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0Nv
bW1pdElzTm90TG9zdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJ
Tl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKIAogICAgIC8vIEV4cGVjdCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0
ZS4KQEAgLTM5MywxMCArNDA5LDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwot
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1F
X0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5z
ZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlz
aGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CkBAIC00MDQsNyArNDI0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVs
ZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
Uyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwor
ICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlU
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTQzOSw3ICs0
NTksNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdp
dGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0Nv
bW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC00NDcsNiArNDY3LDEwIEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJ
bmJldHdlZW4pCiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIAorICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRh
dGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
CiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0
ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwpAQCAtNDU0LDcgKzQ3OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxs
IHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVB
RFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAK
QEAgLTQ5NiwxMyArNTIwLDE3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZSB3aGls
ZSB2aXNpYmxlLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxT
RShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVjb21l
IGludmlzaWJsZQogICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOwogCisgICAgLy8gUmVjZWl2
ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBz
Y2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTUxMCw3ICs1Mzgs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVN
aWRDb21taXQpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBh
bmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTUzMCw0ICs1NTgsNjUgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9S
ZXNvdXJjZVVwZGF0ZXMpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBm
aW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0
ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0
YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZS
QU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBS
ZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFRlbGwg
dGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUyk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVl
KTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBiZWdhbiBhbmQg
ZmluaXNoZWQuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5nIHJlc291cmNl
cyB0byB1cGRhdGUuCisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxl
ciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNw
cAppbmRleCBjMWY2ZGMyLi4xYjJiYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCkBAIC03NiwxMiArNzYsMTAgQEAgVEVTVChDQ1Nj
aGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAv
LyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAgLy8g
YmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0gICAg
Ly8gY29tbWl0CisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQgaW1tZWRp
YXRlbHkuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1Rf
RVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNU
X1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hl
ZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVzZXQo
KTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcuCkBAIC0xMTIsMTIgKzExMCwxMCBAQCBURVNU
KENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkKICAgICBzY2hl
ZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNl
VXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcwotICAgIC8vIG5l
ZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVu
IGNvbW1pdCwgdGhlbgotICAgIC8vIGJlZ2luIGFub3RoZXIgZnJhbWUuCisgICAgLy8gbmVlZGVk
LCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbiBhbm90aGVyIGZy
YW1lLgogICAgIHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VR
KDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAgIEVYUEVDVF9T
VFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgRVhQ
RUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1
bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7
CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3IGJ1dCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUu
CkBAIC0xMzYsNCArMTMyLDUyIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0UmVkcmF3
V2l0aFR3b0ZyYW1lc1BlbmRpbmcpCiB7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBVcGRh
dGVSZXNvdXJjZXMpCit7CisgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAgICBS
ZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NU
aW1lU291cmNlKCkpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hl
ZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVy
KHRpbWVTb3VyY2UpKSk7CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAg
Ly8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXIt
PnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkp
OworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5h
Y3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gTm93IHNldE5lZWRzQ29t
bWl0IGFnYWluLiBDYWxsaW5nIGhlcmUgbWVhbnMgd2UgbmVlZCBhIHNlY29uZCBmcmFtZS4KKyAg
ICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBVcGRhdGUgcGVuZGluZyBy
ZXNvdXJjZXMuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7Cisg
ICAgc2NoZWR1bGVyLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VR
KDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gQ2xpZW50IGZpbmlzaGVkIHVwZGF0ZSBidXQgaGF2ZSBub3QgeWV0
IHRvbGQgc2NoZWR1bGVyLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKGZh
bHNlKTsKKworICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgbm90IGNvbW1pdCwgYXMg
YW4gdXBkYXRlIGlzIHBlbmRpbmcuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8g
ZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcworICAgIC8vIG5lZWRlZCwgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKCkgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbgorICAgIC8vIGFub3Ro
ZXIgZnJhbWUuCisgICAgc2NoZWR1bGVyLT51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsK
KyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhl
ciBmcmFtZS4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
K30KKworCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117073</attachid>
            <date>2011-11-29 16:58:14 -0800</date>
            <delta_ts>2011-11-30 10:32:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>parallel-paint-upload.diff</filename>
            <type>text/plain</type>
            <size>124411</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZGQ5MzE5MS4uMDc5MDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkwLDEz
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3Jt
Q2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVy
KCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRl
ci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwot
Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IDk3NTUyMmMuLjJlOTFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFs
IGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDQ0OTQ1ODYuLjM5ZDJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVy
Q2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29sIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgICYmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkgfHwgIWRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAgdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHQKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRl
clRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9z
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2Li5lODZh
NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFj
Y2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGlj
IENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRl
clRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1
YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA1ZmE2Nzg1Li5jNjFlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtMzYsNiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9v
bCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQor
eworICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBt
X3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRl
cikKIHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtY29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMy4uODg2ZDEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZh
cy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07
CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7
CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWMzNmEyZC4uMDBkMzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hy
b21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRp
b24oKTsKIApAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4uYzVl
OWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCBmMmQ3ZTJkLi45ZWVmYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAgICAg
fkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2FudmFz
KiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2LDEy
IEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1IGNh
bnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0KCk7
CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNl
CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJl
IFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAg
IEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2Nl
bGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7
CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52
YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBz
byB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAg
ICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAv
LyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgot
ICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmlu
aXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xp
cFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2Yg
Y29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJl
Y3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNs
YXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSAr
IGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNo
IFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0
aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAwNmI2MmQx
Li5hOGZmODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBA
CiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2Ns
YXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCBkYTE4MzhiLi5iYTlhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQ5LDE5ICs0OSwzNCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
ICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsK
IApAQCAtODUsMTUgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFn
ZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
LQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1h
Z2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2Ug
dGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBj
bGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlv
bigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNl
dFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3Qs
IGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAg
LTE2OCw3ICsxODEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1h
Z2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFz
QWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
CiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1ZmU0ZjI2Li5mNmVi
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzEzZGZiMi4u
ZGRkMzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0x
NjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkg
bmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCBiZjc1Y2YyLi45MTk5YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMTggQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4
cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3Qo
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxh
eWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcgKzgyLDcgQEAgcHVibGljOgogICAgIC8v
IFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVk
IHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0Lngg
aXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuY3BwCmluZGV4IDViYmZmNmEuLmM3NGM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5j
cHAKQEAgLTgwLDExICs4MCwxNiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQog
ICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKLXZv
aWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSht
X3Rva2VuKSk7CiAgICAgaWYgKCFtX3RleHR1cmVJZCkKICAgICAgICAgbV90ZXh0dXJlSWQgPSBt
X3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKK30K
Kwordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBhbGxvY2F0ZVRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaAppbmRleCA0ZDQzODA5Li5kNzNjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU1
LDYgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQ
cm90ZWN0ZWQobV90b2tlbik7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDUzN2UxMzcuLjU1YTFkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCwxMyArNDgsMTMg
QEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50
c1NjYWxlKQogewogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRp
bmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250
ZXh0LnNldERlZmVycmVkKHRydWUpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRl
eHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQs
IGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludChncmFwaGljc0NvbnRleHQs
IGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCA0NDBmOGIwLi5hZWZiZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1Nj
YWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpOwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhiMjA2MzguLjkyNTJj
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTcyLDEwICsxNzIsMTAg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRh
OjpCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIKICAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0Rh
dGE6OmNyZWF0ZShtX3RpbGVTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiB9CiAKLXZvaWQgVGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIm
IGhhbmRsZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8g
Z2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFs
aWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBk
YXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tp
cHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51
bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwpAQCAtMjE1LDExICsyMTUsOSBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIENDVGV4dHVyZQogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRl
c3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAg
Q1JBU0goKTsKIAotICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogICAgIH0KLQotICAg
IG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0
KG1fcGFpbnRSZWN0KSk7CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdP
cHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikKQEAgLTM5MCwxNSArMzg4LDkgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKIAogICAg
IG1fcGFpbnRSZWN0ID0gbV90aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVjdChkaXJ0eUxheWVy
UmVjdCk7Ci0gICAgaWYgKGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9wYWlu
dFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsaW5nIHByZXBh
cmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0
aGUgc2lkZQotICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNh
dXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4K
LSAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3Jh
cGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFi
IGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0
aGUgcGFpbnQgY29tcGxldGVzLgotICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90
ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRv
VXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3Jk
ZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpKTsKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRv
VGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0
b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAg
Zm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewpAQCAtNDIzLDEzICs0MTUsMjUg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkKICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKIAogICAgICAg
ICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChz
b3VyY2VSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAg
fQogICAgIH0KIH0KIAordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVx
dWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9w
YWludFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBh
aW50Q29udGVudHMoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUg
dGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBj
YXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQu
CisgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdy
YXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3Jh
YiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwg
dGhlIHBhaW50IGNvbXBsZXRlcy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJv
dGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29u
dGVudHMobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRl
clRleGVscygpLCBjb250ZW50c1NjYWxlKCkpOworCisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRS
ZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKK30KKwor
CiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaAppbmRleCAzNjNkYTYxLi5lNTI4NTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxl
ZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1
YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwogCiAgICAgdmlydHVh
bCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKQEAgLTczLDggKzczLDEwIEBA
IHByb3RlY3RlZDoKIAogICAgIC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5
IHJlcGFpbnRlZCBkdXJpbmcgdXBkYXRlKCkuCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCk7Ci0gICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1
cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICAvLyBQ
cmVwYXJlIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0
LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsK
KyAgICAvLyBQYWludCBjb250ZW50cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50
ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRp
bGVUZXh0dXJlcygpOwogCkBAIC05MSw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgVXBkYXRhYmxl
VGlsZSogdGlsZUF0KGludCwgaW50KSBjb25zdDsKICAgICBVcGRhdGFibGVUaWxlKiBjcmVhdGVU
aWxlKGludCwgaW50KTsKIAotICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJl
cGFyZVRvVXBkYXRlKCkgYW5kIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBU
ZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENv
bnRlbnRzKCkuCiAgICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3Rh
dGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCku
IFRoaXMgcmVwcmVzZW50cyB0aGUgYXJlYQogICAgIC8vIG9mIHRoZSBsYXllciB0aGF0IGlzIGFj
dHVhbGx5IHJlLXBhaW50ZWQgYnkgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggMTlhOTkzYi4uZDBmNTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC00MCwxMSArNDAsNjEgQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJWaWRlb0ZyYW1lUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVmlkZW9MYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4gdGV4dHVyZSkKKyAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV9tYXBwZWRC
dWZmZXIoMCkKK3sKK30KKworVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVw
ZGF0ZXJUZXh0dXJlKCkKK3sKKyAgICBBU1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKK30KKwordm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykK
K3sKKyAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKworICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJP
TUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53
aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBtX3RleHR1cmUtPmZvcm1hdCgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09O
TFkpKTsKKworICAgIGlmICghbV9tYXBwZWRCdWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoZGltZW5zaW9ucywgbV90ZXh0
dXJlLT5mb3JtYXQoKSk7CisgICAgICAgIG1fYnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgdWlu
dDhfdFtidWZmZXJTaXplXSk7CisgICAgfQorCisgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjpkYXRhUmVjdChjb25zdCB2b2lkKiBkYXRhKQoreworICAgIHNpemVfdCBi
dWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZS0+c2l6
ZSgpLCBtX3RleHR1cmUtPmZvcm1hdCgpKTsKKworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikKKyAg
ICAgICAgbWVtY3B5KG1fbWFwcGVkQnVmZmVyLCBkYXRhLCBidWZmZXJTaXplKTsKKyAgICBlbHNl
CisgICAgICAgIG1lbWNweShtX2J1ZmZlci5nZXQoKSwgZGF0YSwgYnVmZmVyU2l6ZSk7Cit9CisK
K3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZS0+
dGV4dHVyZUlkKCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBpZiAobV9tYXBwZWRC
dWZmZXIpIHsKKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0
aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7
CisgICAgICAgIEdMQyhjb250ZXh0LCBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJP
TUlVTShtX21hcHBlZEJ1ZmZlcikpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IDA7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gbV90ZXh0dXJlLT5zaXplKCk7
CisgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lv
bnMuaGVpZ2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFLCBtX2J1ZmZlci5nZXQoKSkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOwor
ICAgIH0KK30KKwogUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3Zp
ZGVyKiBwcm92aWRlcikKIHsKQEAgLTU4LDYgKzEwOCw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
VmlkZW9MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIFZpZGVvRnJhbWVQ
cm92CiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICwgbV9wbGFuZXMoMCkKICAgICAs
IG1fbmF0aXZlVGV4dHVyZUlkKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CiB9CiAKQEAgLTc1LDE3
ICsxMjYsMTkgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQog
ewogICAgIExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fdGV4dHVyZXNbaV0ubV90
ZXh0dXJlLmNsZWFyKCk7CisgICAgICAgIG1fdGV4dHVyZXNbaV0uY2xlYXIoKTsKIH0KIAotdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CisgICAgbV9mcmFtZSA9
IDA7CisKICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYm
IHRleHR1cmVzVmFsaWQoKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxh
bmUgPCBtX3BsYW5lczsgcGxhbmUrKykgewotICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRl
eCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgICAgIE1hbmFn
ZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwogICAgICAgICAg
ICAgaWYgKCF0ZXgtPnJlc2VydmUodGV4LT5zaXplKCksIHRleC0+Zm9ybWF0KCkpKSB7CiAgICAg
ICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTIzLDggKzE3NiwxMCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5
IGFyZSBub3QgYWxsb2NhdGVkIGFscmVhZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJl
cyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlmIChmcmFtZS0+
cGxhbmVzKCkgPiBNYXhQbGFuZXMpCisgICAgICAgIENSQVNIKCk7CisKKyAgICAvLyBSZXNlcnZl
IHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IHJlc2VydmVkIGFscmVhZHkuCiAg
ICAgYm9vbCB0ZXh0dXJlc1Jlc2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1lLCB0ZXh0dXJl
Rm9ybWF0KTsKICAgICBpZiAoIXRleHR1cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAgbV9za2lwc0Ry
YXcgPSB0cnVlOwpAQCAtMTMyLDIxICsxODcsMzQgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06
OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4K
LSAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBs
YW5lKyspIHsKLSAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwot
ICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotICAgICAgICBBU1NFUlQoZnJhbWUt
PnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkp
OwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCksIHRl
eHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7Ci0gICAgfQotCisgICAgbV9mcmFtZSA9IGZyYW1l
OwogICAgIG1fcGxhbmVzID0gZnJhbWUtPnBsYW5lcygpOwotICAgIEFTU0VSVChtX3BsYW5lcyA8
PSBNYXhQbGFuZXMpOwogCiAgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgYm91bmRzKCkpOwogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgVmlkZW9M
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgaWYgKCFtX2ZyYW1l
KQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJh
bWUpOworICAgIC8vIENvcHkgcGxhbmVzIHRvIG1hcHBlZCBidWZmZXJzLgorICAgIGZvciAodW5z
aWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKQorICAg
ICAgICBtX3RleHR1cmVzW3BsYW5lXS0+ZGF0YVJlY3QobV9mcmFtZS0+ZGF0YShwbGFuZSkpOwor
CisgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOworfQorCit2b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7
IHBsYW5lKyspIHsKKyAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIG1fdGV4dHVyZXNb
cGxhbmVdLT52aXNpYmxlU2l6ZSgpKTsKKyAgICAgICAgaGFuZGxlci5oYW5kbGUobV90ZXh0dXJl
c1twbGFuZV0uZ2V0KCksIHJlY3QsIHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0xheWVy
Q2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTU3LDEx
ICsyMjUsMTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllckltcGwqIGxheWVyKQogICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyhtX3NraXBzRHJh
dyk7CiAgICAgdmlkZW9MYXllci0+c2V0RnJhbWVGb3JtYXQobV9mcmFtZUZvcm1hdCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbmVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFt
X3RleHR1cmVzW2ldLm1fdGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0pIHsK
ICAgICAgICAgICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90
ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVy
ZS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUpOworICAgICAgICB2aWRlb0xh
eWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+dGV4dHVyZUlkKCks
IG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLT52aXNpYmxl
U2l6ZSgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFuZXM7IGkgPCBNYXhQ
bGFuZXM7ICsraSkKICAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCAwLCBJbnRTaXpl
KCksIEludFNpemUoKSk7CkBAIC0xNzIsMTAgKzI0MCw4IEBAIHZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKICAg
ICBpZiAoaG9zdCAmJiBsYXllclRyZWVIb3N0KCkgIT0gaG9zdCkgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpIHsKLSAgICAgICAgICAgIG1fdGV4dHVy
ZXNbaV0ubV92aXNpYmxlU2l6ZSA9IEludFNpemUoKTsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNb
aV0ubV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1
cmVNYW5hZ2VyKCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBNYXhQbGFuZXM7ICsraSkKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0gPSBVcGRhdGVyVGV4
dHVyZTo6Y3JlYXRlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJl
TWFuYWdlcigpKSk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9z
dChob3N0KTsKQEAgLTE5OSw4ICsyNjUsMTAgQEAgR0MzRGVudW0gVmlkZW9MYXllckNocm9taXVt
OjpkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnIKIAog
Ym9vbCBWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1cmVzVmFsaWQoKQogeworICAgIEFTU0VSVChs
YXllclRyZWVIb3N0KCkpOworCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwg
bV9wbGFuZXM7IHBsYW5lKyspIHsKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4
dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRl
eCA9IG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgIGlmICghdGV4LT5pc1Zh
bGlkKHRleC0+c2l6ZSgpLCB0ZXgtPmZvcm1hdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0yMTcsMTkgKzI4NSwyMCBAQCBib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0Rlbgog
CiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBw
bGFuZSsrKSB7CiAgICAgICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGZyYW1lLT5y
ZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxh
bmVdKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCkpOwogCiAg
ICAgICAgIC8vIElmIHRoZSByZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFyZ2Ugb2YgYSB0
ZXh0dXJlLCByZXR1cm4gZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0
IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KICAgICAgICAgaWYgKHJlcXVpcmVk
VGV4dHVyZVNpemUuaXNaZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4
VGV4dHVyZVNpemUgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVT
aXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJl
c1twbGFuZV0ubV90ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGlmIChtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFRleHR1
cmVTaXplKQotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IGNv
bXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwgcGxhbmUpOworICAgICAgICBpZiAobV90ZXh0dXJlc1tw
bGFuZV0tPnRleHR1cmUoKS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpIHsKKyAgICAg
ICAgICAgIEludFNpemUgdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBs
YW5lKTsKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5zZXRWaXNpYmxlU2l6ZSh2aXNp
YmxlU2l6ZSk7CisgICAgICAgIH0KIAotICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1
cmUtPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CisgICAgICAg
IG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCktPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6
ZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTksMjgg
KzMyOCw2IEBAIEludFNpemUgVmlkZW9MYXllckNocm9taXVtOjpjb21wdXRlVmlzaWJsZVNpemUo
Y29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNp
YmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdAot
ewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwot
Ci0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7
Ci0KLSAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7Ci0g
ICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKLQotICAg
IHZvaWQqIG1lbSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKS0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMu
aGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVu
c2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKTsKLSAgICBpZiAobWVtKSB7Ci0gICAgICAgIG1l
bWNweShtZW0sIGRhdGEsIGRpbWVuc2lvbnMud2lkdGgoKSAqIGRpbWVuc2lvbnMuaGVpZ2h0KCkp
OwotICAgICAgICBHTEMoY29udGV4dCwgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0q
Pihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSht
ZW0pKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBJZiBtYXBUZXhTdWJJbWFnZTJEQ0hST01J
VU0gZmFpbHMsIHRoZW4gZG8gdGhlIHNsb3dlciB0ZXhTdWJJbWFnZTJECi0gICAgICAgIC8vIHVw
bG9hZC4gVGhpcyBkb2VzIHR3aWNlIHRoZSBjb3BpZXMgYXMgbWFwVGV4U3ViSW1hZ2UyRENIUk9N
SVVNLCBvbmUKLSAgICAgICAgLy8gaW4gdGhlIGNvbW1hbmQgYnVmZmVyIGFuZCBhbm90aGVyIHRv
IHRoZSB0ZXh0dXJlLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2Uy
RChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0
aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFLCBkYXRhKSk7Ci0gICAgfQotfQotCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
cmVsZWFzZVByb3ZpZGVyKCkKIHsKICAgICBtX3Byb3ZpZGVyID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmgKaW5kZXggNTE2YzhkMy4uN2VlZjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNo
cm9taXVtLmgKQEAgLTQzLDYgKzQzLDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5
ZXIgdGhhdCBjb250YWlucyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xheWVyQ2hyb21p
dW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRl
eHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGlj
OgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFBhc3NP
d25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUodGV4dHVyZSkpOworICAgICAgICB9CisK
KyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAg
ICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKKyAgICAgICAgdm9pZCBkYXRhUmVjdChjb25zdCB2b2lkKik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIHZvaWQgc2V0
VmlzaWJsZVNpemUoSW50U2l6ZSYgc2l6ZSkgeyBtX3Zpc2libGVTaXplID0gc2l6ZTsgfQorICAg
ICAgICBJbnRTaXplJiB2aXNpYmxlU2l6ZSgpIHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpOworCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gbV90ZXh0dXJlOworICAgICAgICBJbnRTaXplIG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVp
bnQ4X3QqIG1fbWFwcGVkQnVmZmVyOworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1
ZmZlcjsKKyAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVt
PiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAs
NyArNzcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+
IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxl
YXNlUHJvdmlkZXIoKTsKQEAgLTYzLDE4ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVy
ZSB7Ci0gICAgICAgIEludFNpemUgbV92aXNpYmxlU2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiBtX3RleHR1cmU7Ci0gICAgfTsKLQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShD
Q0xheWVyRGVsZWdhdGUqLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNE
ZW51bSBkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwog
ICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hy
b21pdW0qLCB1bnNpZ25lZCBwbGFuZSk7CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAg
Ym9vbCByZXNlcnZlVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0g
dGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmUmLCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAg
ICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAKQEAgLTgzLDEyICsxMDYsMTQgQEAgcHJp
dmF0ZToKICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIG1fcHJvdmlkZXI7CiAKICAgICBlbnVtIHsg
TWF4UGxhbmVzID0gMyB9OwotICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOworICAg
IE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2ln
bmVkIG1fcGxhbmVzOwogCiAgICAgdW5zaWduZWQgbV9uYXRpdmVUZXh0dXJlSWQ7CiAgICAgSW50
U2l6ZSBtX25hdGl2ZVRleHR1cmVTaXplOwogICAgIEludFNpemUgbV9uYXRpdmVUZXh0dXJlVmlz
aWJsZVNpemU7CisKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCAyNzZmM2M5Li43ZmU0M2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0u
aCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAg
OiBtX2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0
ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7
Cit9CisKIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06
OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVs
ZWdhdGUpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRh
dGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0
dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcg
QEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIChjb250ZXh0KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12
b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2Vi
R0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAg
ICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRs
ZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsK
K30KKwogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52
YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVk
IHx8ICFsYXllclJlbmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKaW5kZXggNjM3NGI5ZS4uNTRiMjdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVy
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEyICs0Niwz
MCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBj
b250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJs
aWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1
cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5
ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVy
VGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21p
dW0qIG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAgIHZpcnR1YWwgfldl
YkdMTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2
aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1
bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAsOCBAQCBwcml2YXRlOgog
ICAgIC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhlIERyYXdpbmdC
dWZmZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHTExheWVy
Q2hyb21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOworCisgICAgT3du
UHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYWJkZjE2Mi4uNmVlN2YwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNCwxMSArMzQsNTggQEAKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDQ0xheWVyVHJlZUhv
c3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9y
ZXNvdXJjZXMoMCkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVy
Ojp+TmVlZFJlc291cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpO
ZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQor
ICAgICAgICBtX3Jlc291cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNv
dXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhv
c3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sK
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+
bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4
dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVI
b3N0OjpQYWludEhhbmRsZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1f
cHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFp
bnRIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6
aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUt
PnBhaW50Q29udGVudHNSZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0
dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVI
b3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVu
dCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVl
SG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50
LCBzZXR0aW5ncykpOwpAQCAtMjk5LDcgKzM0Niw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
b21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5
LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
KCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMDcsMTIg
KzM1NCwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAo
dmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVM
YXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVy
U3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAg
LTMyMSwyNCArMzY4LDc3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50
KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlw
UmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25l
IHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1f
dXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsK
KyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVk
IGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBl
bmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7
Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBs
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwg
dGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJT
dXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1
cmVTaXplKTsKKyAgICB9CisKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5k
ZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxh
eWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRl
TGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0
b3JSZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJl
c291cmNlcygpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29t
cG9zaXRvclJlc291cmNlcyIsIHRoaXMsIDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIg
aGFuZGxlcihjb250ZXh0LCBhbGxvY2F0b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoaGFuZGxlcik7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkK
K3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmll
d3BvcnRTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRl
bnRzKHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVu
dHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVy
VHJlZUhvc3Q6OnBhaW50Q29udGVudHMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVy
SW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAt
LWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBk
YXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisKKyAgICAgICAgUGFpbnRIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7
CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAg
IH0KK30KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOwordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KQoreworICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBj
b25kaXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5n
IHRoZSByZW5kZXIgc3VyZmFjZSBsYXllciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJl
cGxpY2FzIGhvd2V2ZXIsIHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAg
ICBpZiAobGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAh
bGF5ZXItPmRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0
LmFwcGVuZChsYXllcik7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRS
ZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIp
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVM
aXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBs
YXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAg
ICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdp
bGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM0NywzMyAr
NDQ3LDMzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVy
LT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJl
bmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFw
cGVuZFZpc2libGVMYXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVM
aXN0KTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJT
dXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAog
ICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJl
cGxpY2FMYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJs
ZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FM
YXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1h
c2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAg
ICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxp
c3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRM
YXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYg
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBm
b3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7
IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNl
SW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VV
cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgp
IHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3Vy
ZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJm
YWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJl
bmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5kTWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRlTGlzdCk7
CiAKICAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5s
YXllckxpc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJ
bmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewpAQCAtMzg5LDQ5ICs0ODks
MjkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIEFTU0VSVChsYXllci0+
b3BhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1wdHko
KSk7CiAKLSAgICAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAg
ICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKGxheWVyLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJ
bmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3Vy
ZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9
IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwotICAgICAgICBBU1NFUlQocmVu
ZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSk7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tM
YXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0g
ICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAg
ICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAg
ICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVy
KCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVy
U3VyZmFjZS0+bGF5ZXJMaXN0KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9
IDA7IGxheWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAg
ICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgp
OwotCi0gICAgICAgICAgICBpZiAoQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNl
Q29udHJpYnV0ZXNUb1RhcmdldDxMYXllckNocm9taXVtPihsYXllciwgcmVuZGVyU3VyZmFjZUxh
eWVyLT5pZCgpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAg
IH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0g
MTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21p
dW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAg
IGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChz
aXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUo
KTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3Vw
ZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVh
cigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwg
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAg
ICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJm
YWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRh
dGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Nj
cm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA1
NmQyYjZjLi4yOGNkNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyAr
NDUsNiBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEND
TGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVB
bGxvY2F0b3I7CkBAIC03Niw3ICs3NSw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAg
ICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxh
eWVyVHJlZShmYWxzZSkKICAgICAgICAgICAgICwgdXNlRGFtYWdlVHJhY2tlcihmYWxzZSkKLSAg
ICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkgeyB9CisgICAgICAgICAgICAsIHJlZnJlc2hSYXRl
KDApCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAg
Ym9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBA
IC04Niw2ICs4Niw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHNob3dQbGF0Zm9y
bUxheWVyVHJlZTsKICAgICBib29sIHVzZURhbWFnZVRyYWNrZXI7CiAgICAgZG91YmxlIHJlZnJl
c2hSYXRlOworICAgIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVz
IGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8g
dGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMTgzLDkgKzE4NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxh
eWVycygpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAgYm9vbCBuZWVkc0NvbXBv
c2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgcGFpbnRDb250
ZW50cygpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0
UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRl
cihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMTk1LDEyICsxOTksNTAgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgorICAgIGNsYXNzIE5lZWRSZXNvdXJj
ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVi
bGljOgorICAgICAgICBOZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisgICAgICAgIHZpcnR1YWwgfk5l
ZWRSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAgaW50IHJlc291cmNlcygpIHsgcmV0dXJu
IG1fcmVzb3VyY2VzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9yZXNvdXJjZXM7
CisgICAgfTsKKworICAgIGNsYXNzIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBQcmVwYXJl
UmVzb3VyY2VIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgICAgICB2aXJ0dWFsIH5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICAgICAgVGV4dHVy
ZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgfTsKKworICAgIGNsYXNzIFBhaW50SGFuZGxl
ciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFBhaW50SGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflBhaW50SGFu
ZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIENDUHJveHkqIG1fcHJveHk7CisgICAg
fTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IExheWVyTGlz
dDsKIAotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwotICAg
IHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSop
OworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3Qm
KTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNo
cm9taXVtKiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVM
YXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0
JiB1cGRhdGVMaXN0KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsK
KyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBwYWlu
dENvbnRlbnRzKExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgp
OwogCiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMTYsNyArMjU4LDggQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKLSAgICBMYXll
ckxpc3QgbV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VVcGRhdGVM
aXN0OworICAgIExheWVyTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3Mg
bV9zZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGE2MjMwZWEuLjFjNTMxN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9oCiAKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTc4LDYgKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94
eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3Jl
IGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29rcwogI2lmbmRlZiBOREVC
VUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNw
cAppbmRleCA1MDFhMDBjLi5jODk1YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC02
OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJlZHJhdygpCiAg
ICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlcjo6c2V0
UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0UmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisK
IHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKQEAgLTk2LDcg
KzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQogewogICAgIGlmIChtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7Cisg
ICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVu
dC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQoIkND
U2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAKQEAgLTEwNSw2ICsxMTEsMTQgQEAg
dm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVh
dmVWU3luYygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29t
cGxldGUoKQoreworICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKKyAg
ICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CisgICAgbV9zdGF0ZU1hY2hp
bmUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NT
Y2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAvLyBFYXJseSBvdXQg
c28gd2UgZG9uJ3Qgc3BhbSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zLgpAQCAtMTI1LDYgKzEzOSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NT
Y2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25C
ZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAg
ICAgICAgIEFTU0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2Vz
LCBidXQgdGhlcmUgYXJlIG5vCkBAIC0xMzIsNyArMTQ3LDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgICAgIC8vIGJlZ2luVXBkYXRl
TW9yZVJlc291cmNlcyBjb21wbGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRpbmcsCiAgICAgICAgICAg
ICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRoZSBuZXh0IGRyYXcuCiAg
ICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4IDk1ZTk5NWYuLjgyODIyODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXIuaApAQCAtNjYsMTEgKzY2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBBcyBzZXROZWVk
c1JlZHJhdygpLCBidXQgZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2
ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXco
KTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwogICAgIHZvaWQgYmVn
aW5GcmFtZUNvbXBsZXRlKCk7Ci0KICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsK
ICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKICAgICB2b2lkIGRpZFN3YXBCdWZm
ZXJzQWJvcnQoKTsKKyAgICB2b2lkIHVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOwogCiAg
ICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29t
bWl0UGVuZGluZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggYmRmOGVkYS4uMjkzYTM3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtMzcsNyArMzcsOSBA
QCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAg
ICwgbV9uZWVkc0NvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQotICAgICwgbV92aXNpYmxlKGZh
bHNlKSB7IH0KKyAgICAsIG1fdmlzaWJsZShmYWxzZSkKKyAgICAsIG1fcmVzb3VyY2VVcGRhdGVz
UGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9CiAKIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRB
Y3Rpb24oKSBjb25zdAogewpAQCAtNTEsMTUgKzUzLDEwIEBAIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAog
ICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFD
VElPTl9OT05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6Ci0g
ICAgICAgIGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwot
ICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAgICAgICAgcmV0
dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcpCisgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiBtX3Jlc291
cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCkBAIC04Myw4
ICs4MCwxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rp
b24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAgICAgIEFTU0VS
VChtX3Zpc2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0ZSQU1F
X0lOX1BST0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyk7
CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
OwogICAgICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJhbWVDb21wbGV0
ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xNDQsMTggKzE0MywyNiBAQCB2b2lkIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7
CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNlVXBkYXRlc1Bl
bmRpbmcoKQoreworICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IHRydWU7Cit9CisKIHZv
aWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAg
QVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsK
LSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAg
ICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
KTsKKyAgICBtX2ZyYW1lQ29tcGxldGUgPSB0cnVlOworICAgIGlmICghbV91cGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyAmJiAhbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAgICAgICBtX2Nv
bW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAotdm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9v
bCBtb3JlUGVuZGluZykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VSVChtX2NvbW1p
dFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIEFTU0VSVCht
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jlc291cmNlVXBk
YXRlc1BlbmRpbmcgPSBtb3JlUGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5nICYmIG1fZnJh
bWVDb21wbGV0ZSkKICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9U
T19DT01NSVQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5o
CmluZGV4IDVhMjdiZDIuLjBkOWViMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENvbW1p
dFN0YXRlIHsKICAgICAgICAgQ09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENPTU1JVF9TVEFU
RV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAgICAgICAgQ09N
TUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCkBAIC04OSwxNCArODgsMTcgQEAgcHVi
bGljOgogICAgIC8vIHRocmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsK
IAorICAgIC8vIEluZGljYXRlcyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRoYXQgbmVlZCB1
cGRhdGluZyBhcmUgcGVuZGluZy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmco
KTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBB
Q1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQg
YWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2YgY29t
cG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2YgY29t
cG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgp
OwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFD
VElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNh
dGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2b2lk
IGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOworICAg
IHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKQEAgLTEwOSw2ICsxMTEs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwog
ICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKICAgICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1f
cmVzb3VyY2VVcGRhdGVzUGVuZGluZzsKKyAgICBib29sIG1fZnJhbWVDb21wbGV0ZTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMyYS4u
OTI3MzM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0
NywxNSArMTQ3LDE5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRl
KCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVz
b3VyY2VzCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2Vz
KCkpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29u
dGVudHMoKTsKKwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmJlZ2luQ29tbWl0KCk7Ci0KKyAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRl
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0
KCkpOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCB1cGRhdGVyKTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5z
ZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CiAKQEAgLTIwOCw2ICsyMTIsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9w
KCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAo
bV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CisgICAgZWxzZQorICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQg
YnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBk
b2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJ
bW1lZGlhdGVseSgpCiB7CkBAIC0yNzIsNyArMjg0LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVh
ZCgpKTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXll
clRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZWRhYjYxZi4uNmQ5YTEzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
IAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2
aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9n
cmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAv
LyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0
dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9Owog
CiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRz
LCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA4NzQ1YzRlLi5hNjFjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
CisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0
dXJlLmgiCkBAIC0zNywxMSArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAg
ICwgbV9lbnRyeUluZGV4KDApCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkK
IHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NU
ZXh0dXJlVXBkYXRlcigpCkBAIC02NiwyMyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVy
OjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90
IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsK
LSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0g
ICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAg
ICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVu
dHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQorICAgIHdoaWxlIChj
b3VudC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMu
bGFzdCgpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgZW50
cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZUxhc3QoKTsKKyAgICB9CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2Vz
cywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xl
YXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5Li5hYjY1OWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBUZXh0dXJl
QWxsb2NhdG9yOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBDQ1Rl
eHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyKCk7
CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4ICs0OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xl
YXIoKTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxs
b2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKICAgICAgICAg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgsOCArNTUsNiBA
QCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsKIAotICAgIFRl
eHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAg
ICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IDhlNzc0MjUuLmFiODBhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC0yODUsNiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAg
ICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisgICAgVXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3
IFVwZGF0ZUVudHJ5OworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5
LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVz
dFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcyhlbnRyeSkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5
OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRl
cmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzczLDcgKzM4NywxNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3Vi
bGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVl
c3RlZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlh
bGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJB
Q0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50
IGNvbXBsZXRpb247CisgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJj
ZXNPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7Cisg
ICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cGFpbnRDb250ZW50cygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNh
bGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAv
LyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBh
Z2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAtMzk3LDEzICs0MjEsNDQgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29t
bWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFk
UHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFy
ZUZyYW1lUmVzb3VyY2VzT25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0
aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7
CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1
cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NF
UlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJ
bXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBk
ZWxldGUgZW50cnk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VS
ZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwt
PnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgbV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKworICAgIGRlbGV0ZSBlbnRy
eTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwog
ICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFk
KTsKLSAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7
CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNp
Z25hbCgpOwogICAgICAgICByZXR1cm47CkBAIC00MTEsMzYgKzQ2NiwzMiBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQg
PSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9w
dFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1Rl
eHR1cmVBbGxvY2F0b3IoKSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNl
dHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcworICAgICAgICAmJiBoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkpCisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRSZXNvdXJjZVVw
ZGF0ZXNQZW5kaW5nKCk7CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFt
ZUNvbXBsZXRlKCk7CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBk
YXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpOwogfQogCiB2b2lkIENDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkKTsKICAgICBzdGF0aWMgY29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5Owot
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fdGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
VXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNs
ZWFyKCk7CiAKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMWRmMzc0Ni4uYWJhMzQ0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYyLDYgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJz
Q29tcGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTc4LDYgKzgwLDEyIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAg
IHN0cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIG1fdGV4dHVyZTsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIElu
dFJlY3QgbV9kZXN0UmVjdDsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFk
CiAgICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2
b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwpAQCAtOTIsNiArMTAwLDggQEAgcHJpdmF0ZToK
ICAgICB9OwogICAgIFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVB
bmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5k
Q29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNr
KiopOworICAgIHZvaWQgcHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50Kik7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVu
dHJ5Kik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFj
a1JlcXVlc3QqKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCopOwpAQCAtMTI3LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRvIGNvbXBs
ZXRlLgogICAgIENDQ29tcGxldGlvbkV2ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZDsKLSAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQ7CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3Vs
ZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9v
bCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKKworICAgIEND
VGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDQ2NDM2M2Iu
LmY2NTdjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aApAQCAtMTM0LDYgKzEzNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxl
U2Nyb2xsQW5pbWF0b3IoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhpZTc2V2Vi
U29ja2V0UHJvdG9jb2xFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlz
dWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERl
bGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1
cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApp
bmRleCA2ZmM0NjI4Li5iOWI1ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUxLDYgKzUxLDggQEAgV2ViU2V0dGluZ3NJbXBsOjpX
ZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG93RlBTQ291bnRl
cihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwgbV91
c2VUaHJlYWRlZENvbXBvc2l0b3IoZmFsc2UpCisgICAgLCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMo
ZmFsc2UpCisKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtNDcxLDQgKzQ3Myw5IEBA
IHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGVu
YWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRl
cyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDQ2OTg0NDMuLmNiNzIwYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMjYsNiArMTI2LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sKTsKKyAgICB2aXJ0
dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlUZXh0
dXJlVXBkYXRlczsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRp
bmdzOwpAQCAtMTMzLDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dGUFNDb3Vu
dGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgYm9vbCBtX3VzZVRo
cmVhZGVkQ29tcG9zaXRvcjsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IGE4ZmMxYTYuLjU2YmM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI4NTQsNiArMjg1NCw4IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAg
ICAgICAgaWYgKCFjY1NldHRpbmdzLnJlZnJlc2hSYXRlKQogICAgICAgICAgICAgY2NTZXR0aW5n
cy5yZWZyZXNoUmF0ZSA9IGRlZmF1bHRSZWZyZXNoUmF0ZTsKIAorICAgICAgICBjY1NldHRpbmdz
LmRlbGF5VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRleHR1cmVVcGRhdGVzKCk7
CisKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykp
OwogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlz
LCBjY1NldHRpbmdzKTsKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggNGE0MTc5Ni4uOTMwNWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
ICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIK
ICNpbmNsdWRlICJNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKQEAgLTkwNCw2ICs5MDUsMTQg
QEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkK
ICAgICBydW5UZXN0KHRydWUpOwogfQogCitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1Ymxp
YyBDQ0xheWVyRGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlm
eVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xhc3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRl
bGVnYXRlIDogcHVibGljIENDTGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9wYWNp
dHlDaGFuZ2VMYXllckRlbGVnYXRlKENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05Mjcs
MzcgKzkzNiwxMTYgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmcgOiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7IH0K
KyAgICBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAg
ICAgIFRleHR1cmUoQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQ
YXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgIDogbV90
ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1
cmVVcGRhdGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgp
OyB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigp
LT5uZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RS
ZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIt
PmxheWVyKCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0
ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxh
eWVyKCktPnBhaW50Q29udGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+dXBk
YXRlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAg
ICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgICAgIENvbnRlbnRM
YXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgICAgICB9OworCisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUo
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyKGxheWVyKSk7CisgICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7
IHJldHVybiBtX3BhaW50Q29udGVudHNDb3VudDsgfQotICAgIHZvaWQgcmVzZXRQYWludENvbnRl
bnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50ID0gMDsgfQorICAgICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShU
ZXh0dXJlTWFuYWdlciogbWFuYWdlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikp
KTsKKyAgICAgICAgfQogCi0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRhdGVD
b3VudDsgfQotICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7
IH0KKyAgICAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgICAgIHZpcnR1YWwgU2FtcGxlZFRleGVs
Rm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSAvKiB0ZXh0dXJlRm9ybWF0ICovKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0UkdCQTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXpl
JiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVu
dHNTY2FsZSAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXllci0+cGFpbnRDb250ZW50
cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKSA6IG1fbGF5ZXIobGF5ZXIpIHsgfQorCisg
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVyOwor
ICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcoZGVsZWdhdGUsIG5lZWRQcmVwYXJlUmVjdCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0
dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKQogICAgIHsKLSAgICAgICAgQ29udGVu
dExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRl
cik7Ci0gICAgICAgIG1fdXBkYXRlQ291bnQrKzsKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlciA9IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CiAg
ICAgfQorICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyLmdldCgpOyB9CisKKyAg
ICB2b2lkIHBhaW50Q29udGVudHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAgICBp
bnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0K
KworICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisgICAg
aW50IHByZXBhcmVSZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKwor
ICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoKSB7IG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCsr
OyB9CisgICAgaW50IHBhaW50Q29udGVudHNSZWN0Q291bnQoKSB7IHJldHVybiBtX3BhaW50Q29u
dGVudHNSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBkYXRlUmVjdCgpIHsgbV91cGRhdGVSZWN0
Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7IHJldHVybiBtX3VwZGF0ZVJl
Y3RDb3VudDsgfQorCisgICAgaW50IG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIG1fbmVlZFBy
ZXBhcmVSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkKKyAgICBleHBs
aWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdh
dGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICAgICAgOiBDb250ZW50TGF5
ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX25lZWRQcmVwYXJlUmVjdChuZWVkUHJl
cGFyZVJlY3QpCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBt
X3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAgICAg
ICwgbV9wYWludENvbnRlbnRzUmVjdENvdW50KDApCisgICAgICAgICwgbV91cGRhdGVSZWN0Q291
bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIH0K
IAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjsKKyAgICBib29sIG1fbmVlZFByZXBhcmVSZWN0OwogICAgIGludCBtX3Bh
aW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsKKyAgICBpbnQgbV9wcmVw
YXJlUmVjdENvdW50OworICAgIGludCBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7CisgICAgaW50
IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVyaW5n
IHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJlaW5n
IHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTk2NSw3ICsxMDUzLDcgQEAgY2xhc3MgQ0NMYXll
clRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7
CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UoKQogICAgICAg
ICA6IG1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSh0aGlzKQotICAgICAgICAsIG1fdXBkYXRl
Q2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRl
KCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUpKQorICAgICAgICAsIG1fdXBkYXRlQ2hlY2tM
YXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rl
c3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUsIHRydWUpKQogICAgIHsKICAgICB9CiAKQEAgLTk4NCwx
MyArMTA3MiwxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAg
ICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgb25jZS4KKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UuCiAgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBh
aW50Q29udGVudHNDb3VudCgpKTsKIAotICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQg
b2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1f
dXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAg
ICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENv
bnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8v
IGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91
cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBt
X3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSk7CisKKyAgICAgICAg
Ly8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAg
IC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBF
Q1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCisgICAg
ICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0xMDAzLDQgKzEwOTYsNDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUp
OwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gbmVlZFBy
ZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1By
ZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAgIEND
TGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0KCkKKyAgICAgICAgOiBtX3VwZGF0ZUNoZWNr
TGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9k
ZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5U
ZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fdXBk
YXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQoSW50
U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQo
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKEND
TGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICAgICAgLy8gcGFpbnRDb250
ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgx
LCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKworICAgICAgICAv
LyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICAgICAgRVhQ
RUNUX0VRKDAsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAg
ICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAg
ICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAg
IEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwK
KyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOwor
ICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRh
dGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVS
ZWN0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiB9IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IGYzNDY5NzcuLmRiYzM3ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIHsKIAog
Y29uc3QgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0YXRlIGFsbENvbW1pdFN0YXRl
c1tdID0gewogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfSURMRSwK
LSAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dS
RVNTLAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdf
UkVTT1VSQ0VTLAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVB
RFlfVE9fQ09NTUlULAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
V0FJVElOR19GT1JfRklSU1RfRFJBVwpAQCAtNjMsNiArNjIsMTIgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhib29sIGIpIHsgbV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZyA9IGI7IH0KICAgICBib29sIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsgfQorCisg
ICAgdm9pZCBzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKGJvb2wgYikgeyBtX3Jlc291cmNlVXBk
YXRlc1BlbmRpbmcgPSBiOyB9CisgICAgYm9vbCByZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldEZy
YW1lQ29tcGxldGUoYm9vbCBiKSB7IG1fZnJhbWVDb21wbGV0ZSA9IGI7IH0KKyAgICBib29sIGZy
YW1lQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQ29tcGxldGU7IH0KIH07CiAKIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1l
SWZOZWVkZWQpCkBAIC05Nyw3ICsxMDIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBTdGF0ZU1h
Y2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0
ZS5uZWVkc0NvbW1pdCgpKTsKICAgICB9CiB9CkBAIC0yNTEsNiArMjU2LDggQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZV
cGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRV
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0
cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0
YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgYmVnaW4gdXBk
YXRlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKQEAgLTI2Nyw3ICsyNzQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEVuZCB1cGRhdGUgd2l0aCBubyBtb3JlIHVwZGF0ZXMg
cGVuZGluZy4KLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQpAQCAtMjc5LDYgKzI4
Niw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1Jl
ZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2Up
OwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBz
dGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRp
bmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZl
cmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAg
ICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CkBAIC0yOTUsNyArMzA0LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBk
YXRlcykKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3Jl
IHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1
ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAg
Ly8gVmVyaWZ5IHdlIHVwZGF0ZSBtb3JlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgog
ICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTMwNSw3ICszMTQsNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZV
cGRhdGVzKQogCiAgICAgLy8gQmVnaW4gYW5vdGhlciB1cGRhdGUsIHdoaWxlIGluc2lkZSB2c3lu
Yy4gQW5kLCBpdCB1cGRhdGluZy4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2Ug
Y29tbWl0LCBpbmRlcGVuZGVudCBvZiB2c3luYy4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7
CkBAIC0zMjEsNiArMzMwLDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVl
ZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmco
ZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3Vy
Y2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUp
OworCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVn
aW4gYW4gdXBkYXRlLgpAQCAtMzM4LDcgKzM1MCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAg
IHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIEZpbmlzaCB1cGRhdGUgYnV0IGxlYXZl
IG1vcmUgcmVzb3VyY2VzIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3luYywgd2UgdXBk
YXRlIHNvbWUgbW9yZS4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTIsNyArMzY0
LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhS
ZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAg
IHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
VVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7Ci0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRl
LnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBWZXJpZnkgd2Ug
Y29tbWl0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMgc3RhdGUKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5j
KCk7CkBAIC0zNzAsNyArMzgyLDExIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRB
Y3Rpb24oKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlIHRo
YXQgbmVlZCB1cGRhdGUuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gTm93LCB3
aGlsZSB0aGUgZnJhbWUgaXMgaW4gcHJvZ3Jlc3MsIHNldCBhbm90aGVyIGNvbW1pdC4KICAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTM4Miw3ICszOTgsNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0
ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUyk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9O
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gRXhw
ZWN0IHRvIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlLgpAQCAtNDEzLDEwICs0Mjks
MTQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAK
ICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAK
KyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1Bl
bmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAg
IC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVn
aW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsK
QEAgLTQyNCw3ICs0NDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dEZ1bGxDeWNsZSkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2Fu
IGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdp
blVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1J
VCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNDU5LDcgKzQ3OSw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJl
dHdlZW4pCiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JF
U1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKQEAgLTQ2Nyw2ICs0ODcsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2
ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFU
SU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBz
Y2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0
ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC00NzQsNyArNDk4
LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRo
Q29tbWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUg
dXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAg
ICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3Rh
dGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTE2LDEzICs1NDAsMTcg
QEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlk
Q29tbWl0KQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lIHdoaWxlIHZpc2libGUuCiAgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
RlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0
KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWNvbWUgaW52aXNpYmxlCiAgICAgc3Rh
dGUuc2V0VmlzaWJsZShmYWxzZSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0
YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUg
ZmluaXNoZWQKICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNTMwLDcgKzU1OCw3IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8v
IFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZh
bHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIApAQCAtNTUwLDQgKzU3OCw2NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAorVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlVXBkYXRlcykKK3sK
KyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKwor
ICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29t
bWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZy
YW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisK
KyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgorICAgIHN0YXRl
LmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdE5vUmVzb3VyY2VQZW5kaW5nKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAg
ICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBj
b21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHND
b21taXQoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisg
ICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1
cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElO
R19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAg
c3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworCisgICAgLy8gVGVsbCB0
aGUgc2NoZWR1bGVyIGFub3RoZXIgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRl
KGZhbHNlKTsKKworICAgIC8vIE5vIHBlbmRpbmcgcmVzb3VyY2VzIHRvIHVwZGF0ZS4KKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0
QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hl
ZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IGI1OGVkMmMuLmYz
MmIwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
VGVzdC5jcHAKQEAgLTc2LDEyICs3NiwxMCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVz
dENvbW1pdCkKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVz
b3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwKLSAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUg
c2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4KLSAgICAvLyBjb21taXQKKyAgICAvLyBi
ZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCBpbW1lZGlhdGVseS4KICAgICBzY2hlZHVs
ZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0
aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNv
dXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFj
dGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIs
IGNsaWVudC5hY3Rpb24oMCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBz
aG91bGQgZHJhdy4KQEAgLTExMiwxMiArMTEwLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBS
ZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21t
aXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBm
YWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29t
cGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0aGVuCi0gICAg
Ly8gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0
ZSBzaG91bGQgY29tbWl0LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVy
LT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlv
bnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51
bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBj
bGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRpY2sgc2hv
dWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTIzMyw0ICsyMjksNTIg
QEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIEVY
UEVDVF9GQUxTRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK1RFU1QoQ0NTY2hl
ZHVsZXJUZXN0LCBVcGRhdGVSZXNvdXJjZXMpCit7CisgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50
IGNsaWVudDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0
UmVmKG5ldyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2No
ZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFt
ZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxl
KHRydWUpOworCisgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4K
KyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8g
Tm93IHNldE5lZWRzQ29tbWl0IGFnYWluLiBDYWxsaW5nIGhlcmUgbWVhbnMgd2UgbmVlZCBhIHNl
Y29uZCBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBV
cGRhdGUgcGVuZGluZyByZXNvdXJjZXMuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXModHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7
CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJF
USgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkp
OworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gQ2xpZW50IGZpbmlzaGVkIHVwZGF0ZSBi
dXQgaGF2ZSBub3QgeWV0IHRvbGQgc2NoZWR1bGVyLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVz
b3VyY2VVcGRhdGVzKGZhbHNlKTsKKworICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQg
bm90IGNvbW1pdCwgYXMgYW4gdXBkYXRlIGlzIHBlbmRpbmcuCisgICAgc2NoZWR1bGVyLT5iZWdp
bkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bUFjdGlvbnMoKSk7
CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBk
YXRlcyBpcyBzZXQgdG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcworICAgIC8vIG5lZWRl
ZCwgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCkgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdp
bgorICAgIC8vIGFub3RoZXIgZnJhbWUuCisgICAgc2NoZWR1bGVyLT51cGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDAp
KTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRo
ZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQ
RUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1
bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBj
bGllbnQucmVzZXQoKTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBhOTE4ZjdkLi4xOGYw
M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJUaWxlZExh
eWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNs
dWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0ND
VGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zOCwyMCAr
MzgsMjMgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CitjbGFzcyBGYWtl
SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0Rl
bnVtKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWdu
ZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFJlY3QmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KLSAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgp
IHsgfQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
IDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
LCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRl
eHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJ
bnRSZWN0JikgeyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1
cmU+IG1fdGV4dHVyZTsKICAgICB9OwogCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7
IH0KQEAgLTYwLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBt
YW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3Jl
YXRlKG1hbmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkg
eyByZXR1cm4gQm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVs
Rm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVs
Rm9ybWF0UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQp
IHsgfQogfTsKIAogY2xhc3MgRmFrZUNDVGlsZWRMYXllckltcGwgOiBwdWJsaWMgQ0NUaWxlZExh
eWVySW1wbCB7CkBAIC05OCw2ICsxMDEsMTEgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIFRleHR1
cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFn
ZXI7IH0KIAogcHJpdmF0ZToKQEAgLTExOSwxMyArMTI3LDEzIEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwg
PSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1
cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAv
LyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4g
cGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
KyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxk
IGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTM4LDcgKzE0Niw4IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRo
ZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRs
ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAg
ICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0
aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117218</attachid>
            <date>2011-11-30 10:32:17 -0800</date>
            <delta_ts>2011-12-02 08:03:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>parallel-paint-upload.diff</filename>
            <type>text/plain</type>
            <size>124795</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZGQ5MzE5MS4uMDc5MDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkwLDEz
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3Jt
Q2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVy
KCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRl
ci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwot
Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IDk3NTUyMmMuLjJlOTFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFs
IGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDQ0OTQ1ODYuLjM5ZDJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVy
Q2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29sIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgICYmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkgfHwgIWRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAgdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHQKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRl
clRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9z
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2Li5lODZh
NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFj
Y2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGlj
IENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRl
clRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1
YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA1ZmE2Nzg1Li5jNjFlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtMzYsNiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9v
bCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQor
eworICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBt
X3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRl
cikKIHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtY29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMy4uODg2ZDEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZh
cy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07
CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7
CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWMzNmEyZC4uMDBkMzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hy
b21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRp
b24oKTsKIApAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4uYzVl
OWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCBmMmQ3ZTJkLi45ZWVmYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAgICAg
fkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2FudmFz
KiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2LDEy
IEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1IGNh
bnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0KCk7
CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNl
CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJl
IFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAg
IEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2Nl
bGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7
CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52
YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBz
byB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAg
ICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAv
LyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgot
ICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmlu
aXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xp
cFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2Yg
Y29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJl
Y3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNs
YXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSAr
IGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNo
IFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0
aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAwNmI2MmQx
Li5hOGZmODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBA
CiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2Ns
YXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCBkYTE4MzhiLi5iYTlhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQ5LDE5ICs0OSwzNCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
ICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsK
IApAQCAtODUsMTUgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFn
ZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
LQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1h
Z2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2Ug
dGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBj
bGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlv
bigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNl
dFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3Qs
IGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAg
LTE2OCw3ICsxODEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1h
Z2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFz
QWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
CiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1ZmU0ZjI2Li5mNmVi
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzEzZGZiMi4u
ZGRkMzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0x
NjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkg
bmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCBiZjc1Y2YyLi4yMjZiYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMjMgQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4
cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiAwOyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgLy8gcHJlcGFyZVJlY3QoKSB3aWxsIG9ubHkg
YmUgY2FsbGVkIGlmIHRoaXMgcmV0dXJucyB0cnVlLgorICAgICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIHN5
bmNocm9ub3VzbHkgb24gdGhlIGltcGwgdGhyZWFkIHdpdGggc2FmZSBhY2Nlc3MgdG8gbWFpbiB0
aHJlYWQgcmVzb3VyY2VzLgorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNl
UmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICAvLyBU
aGlzIHJ1bnMgb24gdGhlIG1haW4gdGhyZWFkIGFmdGVyIGNhbGxzIHRvIG5lZWRQcmVwYXJlUmVj
dCgpIGFuZCBwcmVwYXJlUmVjdCgpIGJ1dCBiZWZvcmUgdXBkYXRlUmVjdCgpLgorICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLykgeyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBhc3luY2hyb25vdXNseSBvbiB0aGUgaW1w
bCB0aHJlYWQuIEFjY2VzcyB0byBtYWluIHRocmVhZCByZXNvdXJjZXMgaXMgdW5zYWZlLgorICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgfTsK
KworICAgIGNsYXNzIEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGFu
ZGxlcigpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0
ZXIoKSB7IH0KQEAgLTc4LDcgKzg3LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNw
ZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8v
IElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVj
NC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250
ZW50c1NjYWxlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJ
bnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pIHsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4
IDViYmZmNmEuLmM3NGM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTgwLDExICs4
MCwxNiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQogICAgIG1fdGV4dHVyZU1h
bmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1
cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsK
ICAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CiAgICAg
aWYgKCFtX3RleHR1cmVJZCkKICAgICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVNYW5hZ2Vy
LT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKK30KKwordm9pZCBNYW5hZ2Vk
VGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBhbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxs
b2NhdG9yKTsKICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAppbmRleCA0ZDQz
ODA5Li5kNzNjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tl
bik7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDUz
N2UxMzcuLjU1YTFkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2Nh
bGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXpl
ICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAg
IFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qu
d2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEg
cGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVk
KHRydWUpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29u
dGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBj
b250ZW50c1NjYWxlKTsKKyAgICBwYWludChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBj
b250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCA0NDBmOGIwLi5hZWZiZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
OwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDhiMjA2MzguLjkyNTJjZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTcyLDEwICsxNzIsMTAgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9w
dGlvbiBib3JkZXIKICAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShtX3Rp
bGVTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7CiAg
ICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYs
IHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRh
dGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5
KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVx
dWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9w
YWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tOwpAQCAtMjE1LDExICsyMTUsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZQogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgp
ID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAg
ICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CisgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9
IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7
CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0
aW9uIHRpbGluZ09wdGlvbikKQEAgLTM5MCwxNSArMzg4LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBt
X3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0g
bV90aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVjdChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYg
KGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNh
bGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8v
IGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJl
bmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVy
LCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVu
dGlsIHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJl
bmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxl
dGVzLgotICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVw
ZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRS
ZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29u
dGVudHNTY2FsZSgpKTsKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMobV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAo
aW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxl
ZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewpAQCAtNDIzLDEzICs0MTUsMjUgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkK
ICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKIAogICAgICAgICAgICAgdGlsZS0+bV91
cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGlsZS0+dGV4
dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAor
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVj
dC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBj
YWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAv
LyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVy
ZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZl
ciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1
bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVy
ZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBs
ZXRlcy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVV
cGRhdGVyKCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJl
Y3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250
ZW50c1NjYWxlKCkpOworCisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNv
bnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKK30KKworCiB9CiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApp
bmRleCAzNjNkYTYxLi5lNTI4NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0o
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKQEAgLTczLDggKzczLDEwIEBAIHByb3RlY3RlZDoKIAog
ICAgIC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJp
bmcgdXBkYXRlKCkuCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCk7Ci0gICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMg
dGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0
ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgogICAgIHZvaWQgcHJl
cGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICAvLyBQYWludCBj
b250ZW50cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29u
dGVudFJlY3QuCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwog
CkBAIC05MSw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGlu
dCwgaW50KSBjb25zdDsKICAgICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50KTsK
IAotICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkg
YW5kIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUg
aGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAg
SW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVu
IHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVwcmVzZW50
cyB0aGUgYXJlYQogICAgIC8vIG9mIHRoZSBsYXllciB0aGF0IGlzIGFjdHVhbGx5IHJlLXBhaW50
ZWQgYnkgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTlhOTkz
Yi4uZDBmNTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MCwxMSAr
NDAsNjEgQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKICNpbmNsdWRlICJWaWRl
b0ZyYW1lUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgotI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6VXBkYXRlclRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
KyAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV9tYXBwZWRCdWZmZXIoMCkKK3sKK30K
KworVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkK
K3sKKyAgICBBU1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OlVwZGF0ZXJUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBJbnRTaXpl
IGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKworICAgIEV4dGVuc2lvbnMzRENocm9t
aXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNp
b25zLmhlaWdodCgpLCBtX3RleHR1cmUtPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKworICAgIGlm
ICghbV9tYXBwZWRCdWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJl
TWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoZGltZW5zaW9ucywgbV90ZXh0dXJlLT5mb3JtYXQoKSk7
CisgICAgICAgIG1fYnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFtidWZmZXJTaXpl
XSk7CisgICAgfQorCisgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxs
b2NhdG9yKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpk
YXRhUmVjdChjb25zdCB2b2lkKiBkYXRhKQoreworICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4
dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZS0+c2l6ZSgpLCBtX3RleHR1cmUt
PmZvcm1hdCgpKTsKKworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikKKyAgICAgICAgbWVtY3B5KG1f
bWFwcGVkQnVmZmVyLCBkYXRhLCBidWZmZXJTaXplKTsKKyAgICBlbHNlCisgICAgICAgIG1lbWNw
eShtX2J1ZmZlci5nZXQoKSwgZGF0YSwgYnVmZmVyU2l6ZSk7Cit9CisKK3ZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOwor
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBpZiAobV9tYXBwZWRCdWZmZXIpIHsKKyAgICAg
ICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNp
b25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAgIEdMQyhj
b250ZXh0LCBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtX21hcHBlZEJ1
ZmZlcikpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgSW50U2l6ZSBkaW1lbnNpb25zID0gbV90ZXh0dXJlLT5zaXplKCk7CisgICAgICAgIEdMQyhj
b250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIG1f
dGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBtX2J1
ZmZlci5nZXQoKSkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIH0KK30KKwogUGFz
c1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEND
TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikK
IHsKQEAgLTU4LDYgKzEwOCw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9t
aXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIFZpZGVvRnJhbWVQcm92CiAgICAgLCBtX3By
b3ZpZGVyKHByb3ZpZGVyKQogICAgICwgbV9wbGFuZXMoMCkKICAgICAsIG1fbmF0aXZlVGV4dHVy
ZUlkKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CiB9CiAKQEAgLTc1LDE3ICsxMjYsMTkgQEAgdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogewogICAgIExheWVyQ2hy
b21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
TWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNsZWFyKCk7
CisgICAgICAgIG1fdGV4dHVyZXNbaV0uY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CisgICAgbV9mcmFtZSA9IDA7CisKICAgICBpZiAo
IW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIHRleHR1cmVzVmFsaWQo
KSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsg
cGxhbmUrKykgewotICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNb
cGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXgg
PSBtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwogICAgICAgICAgICAgaWYgKCF0ZXgtPnJl
c2VydmUodGV4LT5zaXplKCksIHRleC0+Zm9ybWF0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9z
a2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzLDggKzE3Niwx
MCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBub3QgYWxsb2Nh
dGVkIGFscmVhZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJlcyB0aGF0IGFyZSB0aGUg
d3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlmIChmcmFtZS0+cGxhbmVzKCkgPiBNYXhQ
bGFuZXMpCisgICAgICAgIENSQVNIKCk7CisKKyAgICAvLyBSZXNlcnZlIHRleHR1cmVzIGZvciBw
bGFuZXMgaWYgdGhleSBhcmUgbm90IHJlc2VydmVkIGFscmVhZHkuCiAgICAgYm9vbCB0ZXh0dXJl
c1Jlc2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1lLCB0ZXh0dXJlRm9ybWF0KTsKICAgICBp
ZiAoIXRleHR1cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwpAQCAt
MTMyLDIxICsxODcsMzQgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KLSAgICBmb3IgKHVuc2ln
bmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAg
ICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwotICAgICAgICBBU1NFUlQo
dGV4dHVyZS5tX3RleHR1cmUpOwotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVy
ZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRh
dGVUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5k
YXRhKHBsYW5lKSk7Ci0gICAgfQotCisgICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIG1fcGxhbmVz
ID0gZnJhbWUtPnBsYW5lcygpOwotICAgIEFTU0VSVChtX3BsYW5lcyA8PSBNYXhQbGFuZXMpOwog
CiAgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm91bmRzKCkpOwog
ICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOworICAgIC8vIENv
cHkgcGxhbmVzIHRvIG1hcHBlZCBidWZmZXJzLgorICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAw
OyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKQorICAgICAgICBtX3RleHR1cmVz
W3BsYW5lXS0+ZGF0YVJlY3QobV9mcmFtZS0+ZGF0YShwbGFuZSkpOworCisgICAgbV9wcm92aWRl
ci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
JiBoYW5kbGVyKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKKyAg
ICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIG1fdGV4dHVyZXNbcGxhbmVdLT52aXNpYmxl
U2l6ZSgpKTsKKyAgICAgICAgaGFuZGxlci5oYW5kbGUobV90ZXh0dXJlc1twbGFuZV0uZ2V0KCks
IHJlY3QsIHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTU3LDExICsyMjUsMTEgQEAgdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyhtX3NraXBzRHJhdyk7CiAgICAgdmlkZW9M
YXllci0+c2V0RnJhbWVGb3JtYXQobV9mcmFtZUZvcm1hdCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcGxhbmVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ldLm1f
dGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0pIHsKICAgICAgICAgICAgIHZp
ZGVvTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90ZXh0dXJlc1tpXS5tX3Rl
eHR1cmUtPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS0+c2l6ZSgpLCBtX3Rl
eHR1cmVzW2ldLm1fdmlzaWJsZVNpemUpOworICAgICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJl
KGksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0t
PnRleHR1cmUoKS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLT52aXNpYmxlU2l6ZSgpKTsKICAgICB9
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFuZXM7IGkgPCBNYXhQbGFuZXM7ICsraSkKICAg
ICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCAwLCBJbnRTaXplKCksIEludFNpemUoKSk7
CkBAIC0xNzIsMTAgKzI0MCw4IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpzZXRM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKICAgICBpZiAoaG9zdCAmJiBs
YXllclRyZWVIb3N0KCkgIT0gaG9zdCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgTWF4UGxhbmVzOyArK2kpIHsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV92aXNpYmxl
U2l6ZSA9IEludFNpemUoKTsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlID0g
TWFuYWdlZFRleHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwot
ICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsr
aSkKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0gPSBVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKE1h
bmFnZWRUZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7CiAg
ICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChob3N0KTsKQEAgLTE5
OSw4ICsyNjUsMTAgQEAgR0MzRGVudW0gVmlkZW9MYXllckNocm9taXVtOjpkZXRlcm1pbmVUZXh0
dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnIKIAogYm9vbCBWaWRlb0xheWVy
Q2hyb21pdW06OnRleHR1cmVzVmFsaWQoKQogeworICAgIEFTU0VSVChsYXllclRyZWVIb3N0KCkp
OworCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5l
KyspIHsKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1f
dGV4dHVyZS5nZXQoKTsKKyAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNb
cGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgIGlmICghdGV4LT5pc1ZhbGlkKHRleC0+c2l6ZSgp
LCB0ZXgtPmZvcm1hdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0y
MTcsMTkgKzI4NSwyMCBAQCBib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVz
KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0RlbgogCiAgICAgZm9yICh1bnNp
Z25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CiAgICAg
ICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVT
aXplKHBsYW5lKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdKTsKKyAgICAgICAg
QVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCkpOwogCiAgICAgICAgIC8vIElmIHRo
ZSByZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFyZ2Ugb2YgYSB0ZXh0dXJlLCByZXR1cm4g
ZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5
ZXJzIGFyZSBpbXBsZW1lbnRlZC4KICAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUuaXNa
ZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUgfHwg
cmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0
dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX3RleHR1cmVz
W3BsYW5lXS5tX3RleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFRleHR1cmVTaXplKQotICAgICAg
ICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6
ZShmcmFtZSwgcGxhbmUpOworICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUo
KS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpIHsKKyAgICAgICAgICAgIEludFNpemUg
dmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKKyAgICAgICAg
ICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5zZXRWaXNpYmxlU2l6ZSh2aXNpYmxlU2l6ZSk7CisgICAg
ICAgIH0KIAotICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnJlc2VydmUocmVx
dWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxh
bmVdLT50ZXh0dXJlKCktPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1h
dCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTksMjggKzMyOCw2IEBAIEludFNp
emUgVmlkZW9MYXllckNocm9taXVtOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFt
ZUNocm9taXVtKiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2li
bGVIZWlnaHQpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBU
ZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdAotewotICAgIEFTU0VSVChj
b250ZXh0KTsKLSAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotCi0gICAgdGV4dHVyZS5t
X3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KLSAgICBHQzNEZW51
bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7Ci0gICAgSW50U2l6ZSBkaW1l
bnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKLQotICAgIHZvaWQqIG1lbSA9IHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
KS0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1h
dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVt
OjpXUklURV9PTkxZKTsKLSAgICBpZiAobWVtKSB7Ci0gICAgICAgIG1lbWNweShtZW0sIGRhdGEs
IGRpbWVuc2lvbnMud2lkdGgoKSAqIGRpbWVuc2lvbnMuaGVpZ2h0KCkpOwotICAgICAgICBHTEMo
Y29udGV4dCwgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkpLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtZW0pKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBJZiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0gZmFpbHMsIHRoZW4g
ZG8gdGhlIHNsb3dlciB0ZXhTdWJJbWFnZTJECi0gICAgICAgIC8vIHVwbG9hZC4gVGhpcyBkb2Vz
IHR3aWNlIHRoZSBjb3BpZXMgYXMgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBvbmUKLSAgICAg
ICAgLy8gaW4gdGhlIGNvbW1hbmQgYnVmZmVyIGFuZCBhbm90aGVyIHRvIHRoZSB0ZXh0dXJlLgot
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25z
LmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBkYXRh
KSk7Ci0gICAgfQotfQotCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVsZWFzZVByb3ZpZGVy
KCkKIHsKICAgICBtX3Byb3ZpZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5k
ZXggNTE2YzhkMy4uN2VlZjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQz
LDYgKzQzLDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlu
cyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFBhc3NPd25QdHI8TWFuYWdlZFRl
eHR1cmU+IHRleHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVXBkYXRlclRleHR1cmUodGV4dHVyZSkpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVh
bCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBi
b29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAg
ICAgdm9pZCBkYXRhUmVjdChjb25zdCB2b2lkKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIHZvaWQgc2V0VmlzaWJsZVNpemUoSW50
U2l6ZSYgc2l6ZSkgeyBtX3Zpc2libGVTaXplID0gc2l6ZTsgfQorICAgICAgICBJbnRTaXplJiB2
aXNpYmxlU2l6ZSgpIHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
IHRleHR1cmUpOworCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwor
ICAgICAgICBJbnRTaXplIG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVk
QnVmZmVyOworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICB9Owog
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlKiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzcsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJ
bXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsK
QEAgLTYzLDE4ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBS
ZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0gICAgICAgIElu
dFNpemUgbV92aXNpYmxlU2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3Rl
eHR1cmU7Ci0gICAgfTsKLQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUq
LCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVU
ZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0YXRpYyBJbnRT
aXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25l
ZCBwbGFuZSk7CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAgYm9vbCByZXNlcnZlVGV4
dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIFRleHR1cmUmLCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0RnJh
bWVQYXJhbWV0ZXJzKCk7CiAKQEAgLTgzLDEyICsxMDYsMTQgQEAgcHJpdmF0ZToKICAgICBWaWRl
b0ZyYW1lUHJvdmlkZXIqIG1fcHJvdmlkZXI7CiAKICAgICBlbnVtIHsgTWF4UGxhbmVzID0gMyB9
OwotICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOworICAgIE93blB0cjxVcGRhdGVy
VGV4dHVyZT4gbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2lnbmVkIG1fcGxhbmVzOwog
CiAgICAgdW5zaWduZWQgbV9uYXRpdmVUZXh0dXJlSWQ7CiAgICAgSW50U2l6ZSBtX25hdGl2ZVRl
eHR1cmVTaXplOwogICAgIEludFNpemUgbV9uYXRpdmVUZXh0dXJlVmlzaWJsZVNpemU7CisKKyAg
ICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcAppbmRleCAyNzZmM2M5Li43ZmU0M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0
ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVy
KQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRl
eHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1f
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQ
dHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVy
RGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXll
ckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBt
X3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAg
ICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0
dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJHTExh
eWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkg
JiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIo
KSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVu
ZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNv
bnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
OTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lk
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBk
YXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogYm9vbCBXZWJH
TExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRl
cmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmgKaW5kZXggNjM3NGI5ZS4uNTRiMjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgK
QEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBXZWJH
TExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2Vi
R0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRl
eHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0
dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExh
eWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7Cisg
ICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRl
KENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1
bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgY29u
dGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1h
Z2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAsOCBAQCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJl
bmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBo
b2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAg
RHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0
dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggYWJkZjE2Mi4uNmVlN2YwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCkBAIC0zNCwxMSArMzQsNTggQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHku
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJj
ZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sK
K30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNl
SGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5k
bGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8p
Cit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291
cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlBy
ZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9h
bGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNv
dXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0
KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3Is
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRs
ZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7
Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sK
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNS
ZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJl
ZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVl
SG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpA
QCAtMjk5LDcgKzM0Niw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAg
IHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9z
aXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAo
IXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMDcsMTIgKzM1NCwxMiBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVy
KCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIp
CiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhp
cywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
IiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAg
ICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTMyMSwyNCArMzY4LDc3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6
ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAv
LyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBj
YWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUg
cGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXpl
KCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFz
c2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8g
cHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdp
dmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAm
JiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVM
aXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290
UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5k
ZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBk
YXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNp
YmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxp
c3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICB9
CisKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1f
bGF5ZXJVcGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBk
YXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4
XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9
Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKQor
eworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJlc291cmNlcygpOworfQor
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNl
cyIsIHRoaXMsIDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcihjb250ZXh0
LCBhbGxvY2F0b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7Cit9
CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJv
b3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigp
KTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1
bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
Q29udGVudHMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVy
VXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllcklu
ZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisKKyAg
ICAgICAgUGFpbnRIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVy
LT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KK30KIAotICAgIHBh
aW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFw
cGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVM
aXN0KQoreworICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNob3Vs
ZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5kZXIgc3Vy
ZmFjZSBsYXllciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2ZXIs
IHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAgICBpZiAobGF5ZXItPmJv
dW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdzQ29u
dGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0LmFwcGVuZChsYXllcik7
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8v
IE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24g
cmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwg
d2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50
byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM0NywzMyArNDQ3LDMzIEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXll
ckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJU
cmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXll
ci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xh
eWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXll
cihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAK
ICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNh
TGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFp
bnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FM
YXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJl
ZUhvc3QodGhpcyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tM
YXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJs
ZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9
CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNv
bnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNl
SW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+
PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3Vy
ZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwor
ICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUo
KSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5
ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rb
c3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5k
ZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmRy
YXdPcGFjaXR5KCkpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVl
SG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
cmVuZGVyU3VyZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgY29u
c3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlz
dC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewpAQCAtMzg5LDQ5ICs0ODksMjkgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIEFTU0VSVChsYXllci0+b3BhY2l0eSgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSk7CiAKLSAgICAgICAg
ICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlz
aWJsZUxheWVyKGxheWVyLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyJiBoYW5kbGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IG1fdXBkYXRl
TGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0g
ICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IG1fdXBkYXRlTGlzdFtz
dXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRl
clN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAg
QVNTRVJUKHJlbmRlclN1cmZhY2UpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJh
d09wYWNpdHkoKSk7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCkpCi0gICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgIGlmIChyZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRl
eHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVuZGVyU3VyZmFj
ZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgcmVu
ZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXgg
PCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotCi0gICAgICAgICAg
ICBpZiAoQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1Rh
cmdldDxMYXllckNocm9taXVtPihsYXllciwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGlu
dCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+
PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9s
YXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5mb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUlu
ZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5k
ZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9y
IChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21p
dW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgp
OwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVy
LT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7
CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0
JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA1NmQyYjZjLi4yOGNkNTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBH
ckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdElt
cGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC03
Niw3ICs3NSw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgc2hvd0ZQU0Nv
dW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkK
ICAgICAgICAgICAgICwgdXNlRGFtYWdlVHJhY2tlcihmYWxzZSkKLSAgICAgICAgICAgICwgcmVm
cmVzaFJhdGUoMCkgeyB9CisgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCisgICAgICAgICAg
ICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRl
UGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04Niw2ICs4Niw3IEBA
IHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAg
ICBib29sIHVzZURhbWFnZVRyYWNrZXI7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOworICAgIGJv
b2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9u
IGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVl
SG9zdApAQCAtMTgzLDkgKzE4NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVl
bEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMo
KTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwogCi0gICAg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0
dXJlVXBkYXRlciYpOworICAgIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRl
eHQzRCopOwpAQCAtMTk1LDEyICsxOTksNTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOwogCiBwcml2YXRlOgorICAgIGNsYXNzIE5lZWRSZXNvdXJjZUhhbmRsZXIgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBO
ZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisgICAgICAgIHZpcnR1YWwgfk5lZWRSZXNvdXJjZUhhbmRs
ZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CisKKyAgICAgICAgaW50IHJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9yZXNvdXJjZXM7CisgICAgfTsKKworICAg
IGNsYXNzIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVy
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgICAgICB2aXJ0dWFs
IH5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9h
bGxvY2F0b3I7CisgICAgfTsKKworICAgIGNsYXNzIFBhaW50SGFuZGxlciA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBhaW50SGFu
ZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflBhaW50SGFuZGxlcigpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IExheWVyTGlzdDsKIAotICAgIHZvaWQg
cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwotICAgIHZvaWQgcGFpbnRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgYXBw
ZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmKTsKKyAgICB2b2lkIGFw
cGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJM
aXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsK
IAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHByZXBh
cmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKExheWVy
Q2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1f
Y29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMTYsNyArMjU4LDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKLSAgICBMYXllckxpc3QgbV91cGRhdGVM
aXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0OworICAgIExheWVy
TGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oCmluZGV4IGE2MjMwZWEuLjFjNTMxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9oCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTc4LDYgKzc5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0g
MDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBw
cm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29rcwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMg
Ym9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA1MDFhMDBj
Li5jODk1YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2
b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMoKTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVz
UGVuZGluZygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGlu
ZygpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVs
ZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVy
OjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQg
Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxz
ZTsKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVN
YWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291
cmNlVXBkYXRlcygpKTsKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdp
bkZyYW1lIiwgdGhpcywgMCk7CiAKQEAgLTEwNSw2ICsxMTEsMTQgQEAgdm9pZCBDQ1NjaGVkdWxl
cjo6YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3luYygpOwogfQog
Cit2b2lkIENDU2NoZWR1bGVyOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKQoreworICAg
IEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKKyAgICBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CisgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOworICAg
IHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAvLyBFYXJseSBvdXQgc28gd2UgZG9uJ3Qgc3Bh
bSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zLgpAQCAt
MTI1LDYgKzEzOSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25z
KCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAgICAgICAgIEFTU0VSVCht
X2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAgICAgICAgIG1fY2xpZW50
LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKICAgICAgICAgICAgICAgICAv
LyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJl
IG5vCkBAIC0xMzIsNyArMTQ3LDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKQogICAgICAgICAgICAgICAgIC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBj
b21wbGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRpbmcsCiAgICAgICAgICAgICAgICAgLy8gdGhlbiB3
ZSB3aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRoZSBuZXh0IGRyYXcuCiAgICAgICAgICAgICAgICAg
bV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1f
c3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV91cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlci5oCmluZGV4IDk1ZTk5NWYuLjgyODIyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAt
NjYsMTEgKzY2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQg
ZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYgd2UgYXJlIG5v
dCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIAorICAgIHZvaWQg
c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRl
KCk7Ci0KICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsKICAgICB2b2lkIGRpZFN3
YXBCdWZmZXJzQ29tcGxldGUoKTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQWJvcnQoKTsKKyAg
ICB2b2lkIHVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOwogCiAgICAgYm9vbCBjb21taXRQ
ZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9
CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUu
cmVkcmF3UGVuZGluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5jcHAKaW5kZXggYmRmOGVkYS4uMjkzYTM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtMzcsNyArMzcsOSBAQCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV9uZWVkc0NvbW1p
dChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAg
LCBtX2luc2lkZVZTeW5jKGZhbHNlKQotICAgICwgbV92aXNpYmxlKGZhbHNlKSB7IH0KKyAgICAs
IG1fdmlzaWJsZShmYWxzZSkKKyAgICAsIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyhmYWxzZSkK
KyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAog
ewpAQCAtNTEsMTUgKzUzLDEwIEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAgICAgICAgcmV0
dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCi0g
ICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAgIGlmIChzaG91
bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICByZXR1cm4g
QUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM6
CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFX
OwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgIGlm
ICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiBtX3Jlc291cmNlVXBkYXRlc1BlbmRp
bmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNF
UzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCkBAIC04Myw4ICs4MCwxMCBAQCB2b2lk
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogCiAg
ICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAgICAgIEFTU0VSVChtX3Zpc2libGUpOwot
ICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOwor
ICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyk7CisgICAgICAgIG1fY29t
bWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOwogICAgICAgICBtX25l
ZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJhbWVDb21wbGV0ZSA9IGZhbHNlOwogICAg
ICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVM6CkBAIC0xNDQsMTggKzE0MywyNiBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpz
ZXROZWVkc0NvbW1pdCgpCiAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKQoreworICAg
IG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IHRydWU7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0
U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0
YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBBU1NFUlQobV9jb21t
aXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKKyAgICBtX2ZyYW1l
Q29tcGxldGUgPSB0cnVlOworICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAm
JiAhbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09N
TUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZykK
K3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShib29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1J
VF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7
Ci0gICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBt
b3JlUGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5nICYmIG1fZnJhbWVDb21wbGV0ZSkKICAg
ICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDVhMjdiZDIu
LjBkOWViMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApA
QCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENvbW1pdFN0YXRlIHsKICAgICAg
ICAgQ09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9H
UkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywKICAgICAgICAg
Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAgICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJ
TkdfRk9SX0ZJUlNUX0RSQVcsCkBAIC04OSwxNCArODgsMTcgQEAgcHVibGljOgogICAgIC8vIHRo
cmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEluZGlj
YXRlcyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRoYXQgbmVlZCB1cGRhdGluZyBhcmUgcGVu
ZGluZy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKwogICAgIC8vIENh
bGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fQkVHSU5fRlJB
TUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgYWxsIHBhaW50aW5nIGlz
IGNvbXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJj
ZXMgY2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJj
ZXMgaXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgLy8gQ2Fs
bCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNw
ZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2b2lkIGJlZ2luVXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOworICAgIHZvaWQgdXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
Q29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwogICAgIGJvb2wgbV9pbnNp
ZGVWU3luYzsKICAgICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1fcmVzb3VyY2VVcGRhdGVz
UGVuZGluZzsKKyAgICBib29sIG1fZnJhbWVDb21wbGV0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMyYS4uOTI3MzM3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0NywxNSArMTQ3LDE5IEBA
IHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3VyY2VzCisgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpCisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMoKTsKKwogICAg
IC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7
Ci0KKyAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2lu
Q29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAg
ICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5
ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hD
b21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTIwOCw2
ICsyMTIsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVy
VHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0
SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX3RleHR1cmVV
cGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgZWxzZQor
ICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBz
Y2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVs
aW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7
CkBAIC0yNzIsNyArMjg0LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5l
ZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVw
YXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgKaW5kZXggZWRhYjYxZi4uNmQ5YTEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNjL0NDQ29t
cGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2lu
Y2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5
ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25T
d2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRM
b3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0
ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAg
ICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGlu
IHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0
aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlLi5h
NjFjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2Mv
Q0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zNywx
MSArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4
KDApCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkKIHsKLSAgICBBU1NFUlQo
bV9hbGxvY2F0b3IpOwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigp
CkBAIC02NiwyMyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRl
cygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWlu
KG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9l
bnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVu
dHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3Rl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVj
dCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQorICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAg
ICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOworICAgICAg
ICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgZW50cnkubV9zb3VyY2VSZWN0
LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAg
ICB9CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4K
LSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNp
emUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1f
ZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5Li5hYjY1OWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBj
bGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVy
ZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CkBAIC00OSw4ICs0OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHBy
aXZhdGU6CiAgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKICAgICAgICAgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgsOCArNTUsNiBAQCBwcml2YXRlOgogICAg
ICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3Iq
IG1fYWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0
ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4
IDhlNzc0MjUuLmFiODBhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yODUs
NiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRh
dGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCht
X3N0YXJ0ZWQpOworCisgICAgVXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVudHJ5Owor
ICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3Qg
PSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBD
Q1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAm
Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcyhlbnRyeSkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5k
ZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAg
VFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVh
ZCIsIHRoaXMsIDApOwpAQCAtMzczLDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRp
bQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwog
Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhv
c3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHND
b21wb3NpdG9yUmVzb3VyY2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9y
IHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9j
YXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Cisg
ICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQs
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBsZXRp
b24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygp
OwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwg
d2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVl
IG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXRO
ZWVkc0NvbW1pdApAQCAtMzk3LDEzICs0MjEsNDQgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0K
ICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1i
ZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnByZXBhcmVG
cmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikK
K3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2Vz
T25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlm
ICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNv
bXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBjb21wbGV0
aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25J
bXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29t
cGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50cnk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
LmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9k
ZXN0UmVjdCk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVs
YXlUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKworICAgIGRlbGV0ZSBlbnRyeTsKK30KKwogdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9j
b21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxUaHJl
YWQoKSk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQo
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAg
ICByZXR1cm47CkBAIC00MTEsMzYgKzQ2NiwzMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgog
CiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwog
Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0
dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlU
ZXh0dXJlVXBkYXRlcworICAgICAgICAmJiBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpCisgICAg
ICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7
CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9
CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC5oYXNNb3JlVXBkYXRlcygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7
Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAgICBz
dGF0aWMgY29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5OwotICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1l
KTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0
aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
OwotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01v
cmVVcGRhdGVzKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5o
YXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xl
YXIoKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAKIAogICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmgKaW5kZXggMWRmMzc0Ni4uYWJhMzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNs
dWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKyNpbmNsdWRl
ICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxU
aHJlYWQoKTsKQEAgLTc4LDYgKzgwLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAgIHN0cnVjdCBVcGRhdGVF
bnRyeSB7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsK
KyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJlY3QgbV9kZXN0UmVj
dDsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCiAgICAgdm9pZCBiZWdp
bkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1l
LCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1pdEFu
ZERyYXdGcmFtZSgpOwpAQCAtOTIsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBh
c3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25J
bXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21D
Q1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNrKiopOworICAgIHZvaWQg
cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Cisg
ICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5Kik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAg
ICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwpAQCAtMTI3LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNldCB3aGVuIHRoZSBt
YWluIHRocmVhZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRvIGNvbXBsZXRlLgogICAgIENDQ29t
cGxldGlvbkV2ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKLSAgICBP
d25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQ7CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1p
dEFuZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlz
TmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKKworICAgIENDVGV4dHVyZVVwZGF0ZXIg
bV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDQ2NDM2M2IuLmY2NTdjMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTM0LDYgKzEz
NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3Io
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xF
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50
RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0
ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29u
c3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA2ZmM0NjI4Li5i
OWI1ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKQEAgLTUxLDYgKzUxLDggQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwo
U2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAs
IG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwgbV91c2VUaHJlYWRlZENvbXBv
c2l0b3IoZmFsc2UpCisgICAgLCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpCisKIHsKICAg
ICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtNDcxLDQgKzQ3Myw5IEBAIHZvaWQgV2ViU2V0dGlu
Z3NJbXBsOjpzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBt
X3NldHRpbmdzLT5zZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGVuYWJsZWQpOwogfQogCit2
b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJsZWQp
Cit7CisgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCmluZGV4IDQ2OTg0NDMuLmNiNzIwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMjYsNiArMTI2LDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlU
ZXh0dXJlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsgfQog
CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpAQCAtMTMzLDYg
KzEzNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJvb2wg
bV9zaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgYm9vbCBtX3VzZVRocmVhZGVkQ29tcG9zaXRv
cjsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IGE4ZmMxYTYuLjU2YmM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTI4NTQsNiArMjg1NCw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgaWYgKCFjY1Nl
dHRpbmdzLnJlZnJlc2hSYXRlKQogICAgICAgICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9
IGRlZmF1bHRSZWZyZXNoUmF0ZTsKIAorICAgICAgICBjY1NldHRpbmdzLmRlbGF5VGV4dHVyZVVw
ZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRleHR1cmVVcGRhdGVzKCk7CisKICAgICAgICAgbV9u
b25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0
ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsK
ICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNGE0MTc5Ni4uOTMw
NWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlICJMYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJNb2Nr
V2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKQEAgLTkwNCw2ICs5MDUsMTQgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRy
dWUpOwogfQogCitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdh
dGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgp
IHsgfQorfTsKKwogY2xhc3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGlj
IENDTGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRl
bGVnYXRlKENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05MjcsMzcgKzkzNiwxMTYgQEAg
cHJpdmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcg
OiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NM
YXllckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7IH0KKyAgICBjbGFzcyBDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRleHR1cmUoQ29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUp
CisgICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRU
ZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAg
ICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5uZWVkUHJlcGFyZVJl
Y3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnByZXBh
cmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnBhaW50Q29u
dGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+dXBkYXRlUmVjdCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgICAgIENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKGxheWVyKSk7Cisg
ICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3BhaW50
Q29udGVudHNDb3VudDsgfQotICAgIHZvaWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1f
cGFpbnRDb250ZW50c0NvdW50ID0gMDsgfQorICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciog
bWFuYWdlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0
dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKKyAgICAgICAgfQog
Ci0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQotICAgIHZv
aWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KKyAgICAgICAgdmly
dHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0
ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzSWZEaXJ0eSgpCisgICAgICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSAvKiB0ZXh0dXJlRm9ybWF0ICovKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdC
QTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAq
LywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9sYXllci0+cGFpbnRDb250ZW50cygpOworICAgICAgICB9
CisKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVy
KCkgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQg
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcgKmxheWVyKSA6IG1fbGF5ZXIobGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4g
Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0KQog
ICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUs
IG5lZWRQcmVwYXJlUmVjdCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyKQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25z
dCBDQ0xheWVyVHJlZUhvc3QqKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06
OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1f
dXBkYXRlQ291bnQrKzsKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CiAgICAgfQorICAgIHZpcnR1
YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyLmdldCgpOyB9CisKKyAgICB2b2lkIHBhaW50Q29u
dGVudHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250ZW50
c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KKworICAgIHZvaWQgcHJl
cGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisgICAgaW50IHByZXBhcmVSZWN0
Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgcGFpbnRD
b250ZW50c1JlY3QoKSB7IG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCsrOyB9CisgICAgaW50IHBh
aW50Q29udGVudHNSZWN0Q291bnQoKSB7IHJldHVybiBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7
IH0KKworICAgIHZvaWQgdXBkYXRlUmVjdCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAg
IGludCB1cGRhdGVSZWN0Q291bnQoKSB7IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCisg
ICAgaW50IG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIG1fbmVlZFByZXBhcmVSZWN0OyB9CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkKKyAgICBleHBsaWNpdCBDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlLCBi
b29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxl
Z2F0ZSkKKyAgICAgICAgLCBtX25lZWRQcmVwYXJlUmVjdChuZWVkUHJlcGFyZVJlY3QpCiAgICAg
ICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDAp
CisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAgICAgICwgbV9wYWludENvbnRl
bnRzUmVjdENvdW50KDApCisgICAgICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAg
ICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsK
KyAgICBib29sIG1fbmVlZFByZXBhcmVSZWN0OwogICAgIGludCBtX3BhaW50Q29udGVudHNDb3Vu
dDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsKKyAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50Owor
ICAgIGludCBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7CisgICAgaW50IG1fdXBkYXRlUmVjdENv
dW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBu
b3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5n
IGNvbW1pdC4KQEAgLTk2NSw3ICsxMDUzLDcgQEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE9w
YWNpdHlDaGFuZ2UgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAgICAg
Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UoKQogICAgICAgICA6IG1fdGVzdE9wYWNp
dHlDaGFuZ2VEZWxlZ2F0ZSh0aGlzKQotICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5
Q2hhbmdlRGVsZWdhdGUpKQorICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdl
RGVsZWdhdGUsIHRydWUpKQogICAgIHsKICAgICB9CiAKQEAgLTk4NCwxMyArMTA3MiwxOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8v
IHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAg
ICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCiAg
ICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3Vu
dCgpKTsKIAotICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFp
bnRDb250ZW50c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXll
ci0+cGFpbnRDb250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNr
TGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1l
cyBhcyBwcmVwYXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVy
LT5wcmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5
ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgp
IHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0
aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVD
aGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBt
X3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0xMDAzLDQgKzEwOTYsNDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5
Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCisvLyBwcmVw
YXJlUmVjdCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gbmVlZFByZXBhcmVSZWN0KCkgcmV0
dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IDogcHVi
bGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRl
c3ROb1ByZXBhcmVSZWN0KCkKKyAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSwgZmFsc2Up
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fdXBkYXRlQ2hlY2tMYXllcik7
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsK
KworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqKQorICAgIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNr
TGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyBwcmVwYXJlUmVjdCgp
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fdXBk
YXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVS
ZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50
IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3Vw
ZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0cjxDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOwor
fTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LCBydW5NdWx0aVRo
cmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwCmluZGV4IGYzNDY5NzcuLmRiYzM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIHsKIAogY29uc3QgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0YXRlIGFsbENvbW1pdFN0YXRlc1tdID0gewogICAgIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfSURMRSwKLSAgICBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAg
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULAog
ICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklS
U1RfRFJBVwpAQCAtNjMsNiArNjIsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVcGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyhib29sIGIpIHsgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
ZyA9IGI7IH0KICAgICBib29sIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsgfQorCisgICAgdm9pZCBzZXRSZXNv
dXJjZVVwZGF0ZXNQZW5kaW5nKGJvb2wgYikgeyBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBi
OyB9CisgICAgYm9vbCByZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldEZyYW1lQ29tcGxldGUoYm9v
bCBiKSB7IG1fZnJhbWVDb21wbGV0ZSA9IGI7IH0KKyAgICBib29sIGZyYW1lQ29tcGxldGUoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lQ29tcGxldGU7IH0KIH07CiAKIFRFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCkBAIC05
Nyw3ICsxMDIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRB
Y3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAg
ICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9Q
Uk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgp
KTsKICAgICB9CiB9CkBAIC0yNTEsNiArMjU2LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29t
cGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgYmVnaW4gdXBkYXRlLCBib3RoIGZvciB2
c3luYyBhbmQgbm90IHZzeW5jLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigp
KTsKQEAgLTI2Nyw3ICsyNzQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
IAogICAgIC8vIEVuZCB1cGRhdGUgd2l0aCBubyBtb3JlIHVwZGF0ZXMgcGVuZGluZy4KLSAgICBz
dGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUu
dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZT
eW5jKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09N
TUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQpAQCAtMjc5LDYgKzI4Niw4IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNP
ZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxl
KHRydWUpOworICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAg
c3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRl
IGJlZ2lucywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5kaWRFbnRl
clZTeW5jKCk7CkBAIC0yOTUsNyArMzA0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3JlIHBlbmRpbmcuCi0gICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUu
dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIHVw
ZGF0ZSBtb3JlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRlLmRpZExl
YXZlVlN5bmMoKTsKQEAgLTMwNSw3ICszMTQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogCiAgICAg
Ly8gQmVnaW4gYW5vdGhlciB1cGRhdGUsIHdoaWxlIGluc2lkZSB2c3luYy4gQW5kLCBpdCB1cGRh
dGluZy4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgY29tbWl0LCBpbmRlcGVu
ZGVudCBvZiB2c3luYy4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zMjEsNiArMzMw
LDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhS
ZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7
CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGlu
Zyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOworCiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgpA
QCAtMzM4LDcgKzM1MCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZExlYXZl
VlN5bmMoKTsKIAogICAgIC8vIEZpbmlzaCB1cGRhdGUgYnV0IGxlYXZlIG1vcmUgcmVzb3VyY2Vz
IHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1
ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAg
Ly8gVmVyaWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3luYywgd2UgdXBkYXRlIHNvbWUgbW9yZS4K
ICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTIsNyArMzY0LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRP
ZlVwZGF0ZXMpCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7Ci0gICAgc3RhdGUuYmVnaW5VcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgY29tbWl0IHJlZ2FyZGxl
c3Mgb2YgdnN5bmMgc3RhdGUKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNzAsNyAr
MzgyLDExIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHND
b21taXRJc05vdExvc3QpCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5f
UFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlIHRoYXQgbmVlZCB1cGRhdGUu
CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gTm93LCB3aGlsZSB0aGUgZnJhbWUg
aXMgaW4gcHJvZ3Jlc3MsIHNldCBhbm90aGVyIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0Nv
bW1pdCh0cnVlKTsKQEAgLTM4Miw3ICszOTgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxz
ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19D
T01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGNvbW1pdCBy
ZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlLgpAQCAtNDEzLDEwICs0MjksMTQgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBCZWdpbiB0
aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZl
IHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNj
aGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTQyNCw3ICs0NDQs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAog
ICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAog
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFj
dGlvbigpKTsKIApAQCAtNDU5LDcgKzQ3OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAv
LyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1p
dFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTQ2
Nyw2ICs0ODcsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxs
Q3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBzdGF0ZS5zZXROZWVkc0NvbW1p
dCh0cnVlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAg
ICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZy
YW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC00NzQsNyArNDk4LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdElu
YmV0d2VlbikKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFu
ZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTE2LDEzICs1NDAsMTcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogCiAgICAg
Ly8gQmVnaW4gdGhlIGZyYW1lIHdoaWxlIHZpc2libGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JF
U1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKICAgICAvLyBCZWNvbWUgaW52aXNpYmxlCiAgICAgc3RhdGUuc2V0VmlzaWJsZShm
YWxzZSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKKwogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQKICAgICBz
dGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwpAQCAtNTMwLDcgKzU1OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVk
dWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7
CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01N
SVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTUwLDQg
KzU3OCw2NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZp
c2libGVNaWRDb21taXQpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jlc291cmNlVXBkYXRlcykKK3sKKyAgICBTdGF0ZU1hY2hp
bmUgc3RhdGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNs
ZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRl
LnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRo
ZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21w
bGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworfQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vUmVzb3Vy
Y2VQZW5kaW5nKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNp
YmxlKHRydWUpOworCisgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAv
LyBCZWdpbiB0aGUgZnJhbWUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVz
b3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5k
IGZpbmlzaGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIGFu
b3RoZXIgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKworICAg
IC8vIE5vIHBlbmRpbmcgcmVzb3VyY2VzIHRvIHVwZGF0ZS4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IGI1OGVkMmMuLmYzMmIwYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTc2
LDEyICs3NiwxMCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAgICBj
bGllbnQucmVzZXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlz
IHNldCB0byBmYWxzZSwKLSAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1v
cmVSZXNvdXJjZXMsIHRoZW4KLSAgICAvLyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxl
dGUgc2hvdWxkIGNvbW1pdCBpbW1lZGlhdGVseS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVD
b21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQu
YWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNs
aWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsK
KyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24o
MCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4KQEAg
LTExMiwxMiArMTEwLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0
ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAgIC8v
IFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3Ro
ZXIgY29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVw
ZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5vdGhl
ciBmcmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0
LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29t
cGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQ
RUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFj
dGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGll
bnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Cisg
ICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDAp
KTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRo
ZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTIzMyw0ICsyMjksNTIgQEAgVEVTVChDQ1NjaGVk
dWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRShzY2hl
ZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBVcGRh
dGVSZXNvdXJjZXMpCit7CisgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAgICBS
ZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NU
aW1lU291cmNlKCkpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hl
ZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVy
KHRpbWVTb3VyY2UpKSk7CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAg
Ly8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXIt
PnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkp
OworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5h
Y3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gTm93IHNldE5lZWRzQ29t
bWl0IGFnYWluLiBDYWxsaW5nIGhlcmUgbWVhbnMgd2UgbmVlZCBhIHNlY29uZCBmcmFtZS4KKyAg
ICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBVcGRhdGUgcGVuZGluZyBy
ZXNvdXJjZXMuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7Cisg
ICAgc2NoZWR1bGVyLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VR
KDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gQ2xpZW50IGZpbmlzaGVkIHVwZGF0ZSBidXQgaGF2ZSBub3QgeWV0
IHRvbGQgc2NoZWR1bGVyLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKGZh
bHNlKTsKKworICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgbm90IGNvbW1pdCwgYXMg
YW4gdXBkYXRlIGlzIHBlbmRpbmcuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJl
c2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8g
ZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcworICAgIC8vIG5lZWRlZCwgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKCkgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbgorICAgIC8vIGFub3Ro
ZXIgZnJhbWUuCisgICAgc2NoZWR1bGVyLT51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsK
KyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQu
cmVzZXQoKTsKKworICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhl
ciBmcmFtZS4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0Fu
ZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
K30KKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBhOTE4ZjdkLi4xOGYwM2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIK
IAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4
dHVyZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCi0jaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwu
aCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zOCwyMCArMzgsMjMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgRmFrZVRleHR1cmVBbGxvY2F0
b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CitjbGFzcyBGYWtlSGFuZGxlciA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHVu
c2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IHJldHVybiAw
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07
CiAKIGNsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXIgewogcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSh0ZXh0dXJlKSB7IH0KLSAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQorICAgICAgICBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRl
eHR1cmUpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVy
biBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisK
KyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsK
ICAgICB9OwogCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTYwLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7
IH0KICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gQm90dG9t
VXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFNpemUmLCBpbnQsIGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQogfTsKIAogY2xh
c3MgRmFrZUNDVGlsZWRMYXllckltcGwgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1wbCB7CkBAIC05
OCw2ICsxMDEsMTEgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShyZWN0KTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3Qg
SW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0
dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAogcHJpdmF0
ZToKQEAgLTExOSwxMyArMTI3LDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4
dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxv
Y2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxl
cyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTM4LDcgKzE0Niw4IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUg
b25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwor
ICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQg
b25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlk
YXRlZCBidXQgbm90IHBhaW50ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117624</attachid>
            <date>2011-12-02 08:03:26 -0800</date>
            <delta_ts>2011-12-02 10:08:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111202110325.patch</filename>
            <type>text/plain</type>
            <size>143904</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI3ZDU2OWRjNjJmNTg2
MGMyMTZiZmYwZWQ4YjdhZDQxMGVmMWE0Yi4uYjlmZDVmZmU3ZjE5MzU3ODA2NTFmOTBmN2U0NjJi
MDBmYWVlN2QxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAxMS0xMi0wMiAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMgYmVlbgor
ICAgICAgICBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorCisgICAgICAg
IFNwbGl0IGxheWVyIHVwZGF0ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMg
dHJhbnNmb3JtcworICAgICAgICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFp
bnRzIGxheWVyIGNvbnRlbnRzLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEg
Y29tcG9zaXRvciByZXNvdXJjZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2li
bGUgbGF5ZXIgYXJlYXMgaGF2ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5n
CisgICAgICAgIGhhcyBvY2N1cnJlZC4gTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyBpcyByZXBsYWNlZAorICAgICAgICBieSBMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlIHdoaWNoIGFsbG93cyB1cyB0byBpdGVyYXRlCisgICAgICAgIG92ZXIg
Y29tcG9zaXRvciByZXNvdXJjZXMgZm9yIHZhcmlvdXMgcHVycG9zZXMuCisKKyAgICAgICAgQWRk
IG5ldyB1bml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+
VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMy
RExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQ
cmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlcjo6RnJhbWVCdWZmZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlcjo6fkhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpV
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9M
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6ZGF0YVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRl
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0xheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9MYXllckNocm9taXVtOjp0ZXh0dXJlc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6Om5lZWRQcmVw
YXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpzZXRWaXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hy
b21pdW06OlVwZGF0ZXJUZXh0dXJlOjp2aXNpYmxlU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5V
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJD
aHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VI
YW5kbGVyOjpOZWVkUmVzb3VyY2VIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6fk5lZWRSZXNvdXJjZUhhbmRsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VI
YW5kbGVyOjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJjZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VI
YW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQYWlu
dEhhbmRsZXI6OlBhaW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OlBhaW50SGFuZGxlcjo6flBhaW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRp
bmdVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6
OnJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpzZXRSZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rp
b25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVU
aHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OmNvbW1pdElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2Vz
T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRl
eHR1cmVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0x
Mi0wMiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBTcGxpdCB2aWV3IHdvcmtzIHdlaXJkbHkgaW4gbmV0d29yayBwYW5lbCB3
aGVuIHJlc2l6aW5nLCBzaG93aW5nL2hpZGluZyBtYWluIGVsZW1lbnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDA4Yjg3ZDhkMWY5MjdiMGI5ZDMyYmYzNzc2N2Q2OTBiNjg3M2NlOTIu
LjQxYmFkOWUxOTI0M2QwM2Q2Zjk5Y2JhMGU2ZDI4M2Q0NWY1Yjc2NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTEtMTItMDIgIERhdmlkIFJldmVtYW4g
IDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVwbG9hZCB0ZXh0
dXJlcyBpbiBwYXJhbGxlbCB3aXRoIHBhaW50aW5nIGNvbnRlbnRzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3NTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ0NMYXllclRyZWVIb3N0VGVzdE5v
UHJlcGFyZVJlY3QgdGVzdC4gVHJhY2sgY2hhbmdlcyB0byBzY2hlZHVsZXIKKyAgICAgICAgYW5k
IHRleHR1cmUgdXBsb2Fkcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAg
ICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0
aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdz
SW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdz
SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OmRlbGF5VGV4dHVyZVVw
ZGF0ZXMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpNb2NrTGF5
ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVn
YXRlOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6cHJl
c2VydmVzM0QpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6bm90aWZ5U3luY1Jl
cXVpcmVkKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdURjo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyOjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRl
eGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c1JlY3RDb3Vu
dCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
Ojp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OnVwZGF0ZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAo
V1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0T3BhY2l0eUNoYW5nZTo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OkNDTGF5
ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdE5vUHJlcGFyZVJlY3Q6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6YWZ0ZXJUZXN0KToK
KyAgICAgICAgKFdURjo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5lOjpzZXRSZXNv
dXJjZVVwZGF0ZXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6cmVz
b3VyY2VVcGRhdGVzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnNl
dEZyYW1lQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5lOjpmcmFtZUNv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDU2No
ZWR1bGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgICog
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VIYW5k
bGVyOjpoYW5kbGUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpURVNUKToKKwogMjAxMS0xMi0wMiAg
U2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Nyb2xsaW5nIHN0YXRlZnVsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGRkOTMxOTEz
ZjcwOTc3NjI2MzVmZTY0MTlkMzg3NTFhZmY4NjE3OWQuLjA3OTA1YzE4OTcwNzQ4MDRiNTVkODEw
NjVlMGU2ZTBhMzk5NjUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUo
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpA
QCAtNDUsOSArNDUsMTEgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1
cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVy
ZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVy
ZUlkKCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCkBA
IC03Nyw3ICs3OSw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAgICAgICAgICAgICBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250
ZW50c1NjYWxlKQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBtX3RleFN1
YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAKQEAgLTg4LDE1ICs5MCwxMyBAQCB2
b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpUZXh0
T3B0aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZh
czo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJw
aXhlbFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9j
YW52YXMsIHRleHRPcHRpb24pOwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29u
dGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgcGFpbnQoKmNhbnZhc1Bh
aW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiB9CiAKLXZvaWQg
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdl
ZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgZm9ybWF0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsK
ICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKLQotICAg
IHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgIG1fdGV4U3ViSW1hZ2Uu
dXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QsIGZvcm1hdCwgY29udGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NzU1
MjJjYmFhYTM0MTQ3NTg1NmRiNmNiZWRhMzEyYzE0OWQ4N2JhLi4yZTkxZGJhMDRlMzBkODEwMjE2
YzY2Njk4ZmZhOWNlZGZmNGE2ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgTGF5ZXJQYWlu
dGVyQ2hyb21pdW07CiAvLyBBIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRl
cm5hbCBiaXRtYXAuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVi
bGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1
cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgp
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAg
LTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAg
dmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBp
bnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2b2lkIHVwZGF0ZVRl
eHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAg
ICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcAppbmRleCBiMGM0ZTA3Mzk0NmJhNWU1MWUzZGM2YTI1MzczNmEwZWNh
MzhjYWNjLi5lMDRmMThkMDA2MmY3ZTRhNjkzODRiYjg0YTEwMzkyMDNmM2ZlMGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDYgKzQ0LDIwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1f
bGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQor
eworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKK30KKwogUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQpKTsKQEAgLTUyLDYgKzY2LDcgQEAgUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDMKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNo
cm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogQ2FudmFzTGF5ZXJDaHJv
bWl1bSgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJl
KFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY1LDcgKzgwLDcgQEAg
Ym9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgICAg
ICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpKTsKIH0KIAotdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5IHx8
ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODUsNiArMTAwLDExIEBAIHZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAor
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhhbmRs
ZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSk7Cit9CisKIHZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpjb250ZW50Q2hhbmdlZCgpCiB7CiAgICAgaWYgKGxh
eWVyVHJlZUhvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggNDU3
YmQ1NjRkNzc4ZGFiOTRhYzk5MTEzZjgxZWJmZTc1ZGVmZGQ0Zi4uZTg2YTYxYTRlZWU0NTIwYWJh
Njg2YzQxOTNhNmY3OGYwZmM1MGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmgKQEAgLTQzLDE2ICs0MywzNiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIC8vIEEgbGF5
ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJETGF5
ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBj
bGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJl
PiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAg
ICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSopOworCisg
ICAgICAgIENhbnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7
CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CisgICAgdmlydHVhbCB2b2lk
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYp
OwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgQ2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAg
R3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVy
ZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRjNmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2
NmZjMDhmZS4uYzYxZWMzM2Q2N2U2NTM3MTJkMmI5MjExM2ZiNzliYWJmODM5YjVkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDYgKzM2LDI0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1f
dGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKK2Jvb2wgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sKKyAgICByZXR1cm4gIW1fdGV4dHVyZS0+dGV4
dHVyZUlkKCk7Cit9CisKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yKTsKK30KKwogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWlu
dGVyKQogICAgIDogbV9wYWludGVyKHBhaW50ZXIpCiB7CkBAIC00NSw3ICs2Myw3IEBAIENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6On5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0K
IAotdm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpCiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUoLWNvbnRlbnRSZWN0LngoKSwgLWNv
bnRlbnRSZWN0LnkoKSk7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGE4ZmVmZjM0MjJiMWI4NTMwYjhmNjg5ZmYyYzU2Njc2NjBiZWQ1Y2YuLjg4
NmQxMDEyZDhlNTMyNzljZTc0ZTUxYTEwMzQ5ZGI4MWE4OWZlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgi
CisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zOSwxMiArNDAsMjggQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIExheWVy
VGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBjYW52YXMuCiBjbGFzcyBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgor
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CisKKyAgICAgICAgdmly
dHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsg
fQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQ
YXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9OworCiAgICAgdmlydHVhbCB+Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRlbnRz
U2NhbGUpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDNhZWMzZWJmZjBmMTJhYzYxOGQ2OGZmMjYxNzBjYjI2MDc0ZDFmYmIuLjM4
ZTY0MzIwZWM5NGMwOGI3OGIyOWFiZWU4YmM1M2IyOTVlMzAxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpjbGVh
bnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKQEAg
LTEwOCw2ICsxMDgsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoKQogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ29udGVu
dExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBBU1NFUlQoZHJh
d3NDb250ZW50KCkpOworCisgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxh
eWVyUmVjdCgpOworICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWlu
dENvbnRlbnRzKGxheWVyUmVjdCk7Cit9CisKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRy
YXdzQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0
ZS0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI4MzRlNjc2YmQ2MzQ0NWFhNDUz
YjM2NWVlZTI4MDI0MGYzODA5YzEuLmM1ZTlmY2NlYmY0NzZlYjdkMDJiYzk4MjIxNzBiNjY1M2E1
MTNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDksNiArNDksNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwogCisgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKaW5kZXggZjJkN2UyZGRkYWE2ZmQ5OWZiZTYwM2MzYjhlMzczZTk5OGEzMzgzNS4u
OWVlZmI0NmI1ZTUyNGY3ZWUyMzU5ODM3ODUwNWI0ZjJlNGEyOWVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBGcmFtZUJ1ZmZl
cigpOwogICAgIH5GcmFtZUJ1ZmZlcigpOwogCi0gICAgU2tDYW52YXMqIGluaXRpYWxpemUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqKTsKKyAg
ICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJl
Kik7CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKQEAgLTY2
LDEyICs2NiwxMiBAQCBGcmFtZUJ1ZmZlcjo6fkZyYW1lQnVmZmVyKCkKICAgICAgICAgbV9jb250
ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7CiB9CiAKLVNrQ2FudmFzKiBGcmFtZUJ1ZmZl
cjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKK1NrQ2FudmFzKiBGcmFtZUJ1
ZmZlcjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUpCiB7CiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2ZibyA9IG1f
Y29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICB0ZXh0dXJl
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQsIGFsbG9jYXRvcik7CisgICAgY29udGV4
dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCB0ZXh0dXJlLT50ZXh0dXJlSWQoKSwgMCk7CiAKICAgICAvLyBDcmVhdGUgYSBz
a2lhIGdwdSBjYW52YXMuCiAgICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBtX2NvbnRleHQtPmdy
Q29udGV4dCgpOwpAQCAtOTYsNyArOTYsNyBAQCBTa0NhbnZhcyogRnJhbWVCdWZmZXI6OmluaXRp
YWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqCiB9IC8v
IG5hbWVzcGFjZQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6
IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4
dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CkBAIC0xMDUsOSArMTA1LDIzIEBAIEZy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRl
eHR1cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250
ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIC8v
IE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KKyAgICBjb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAvLyBOb3RpZnkgU0tJQSB0byBzeW5jIGl0cyBp
bnRlcm5hbCBHTCBzdGF0ZS4KKyAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+cmVzZXRDb250ZXh0
KCk7CisKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisKKyAgICAvLyBDcmVh
dGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCisgICAgRnJhbWVCdWZmZXIgYnVm
ZmVyOworICAgIFNrQ2FudmFzKiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250ZXh0LCB0
ZXh0dXJlKCkpOworCisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29u
dGV4dCwgY2FudmFzLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisKKyAgICAvLyBGbHVzaCBTS0lB
IGNvbnRleHQgc28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRl
eHR1cmUuCisgICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CiB9CiAKIFBhc3NSZWZQ
dHI8RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAtMTM1LDI2ICsxNDksMTQgQEAgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXAKICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQTsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgU2tDYW52YXMqIGNh
bnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
CiB7Ci0gICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0Lgot
ICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIC8vIE5vdGlmeSBTS0lBIHRv
IHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgotICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5y
ZXNldENvbnRleHQoKTsKLQotICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8g
ZHJhdyBvbi4KLSAgICBGcmFtZUJ1ZmZlciBidWZmZXI7Ci0gICAgU2tDYW52YXMqIGNhbnZhcyA9
IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7Ci0KICAgICBj
YW52YXMtPmNsaXBSZWN0KFNrUmVjdChkZXN0UmVjdCkpOwogICAgIC8vIFRyYW5zbGF0ZSB0aGUg
b3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2YgZGVzdFJlY3QuCiAgICAgLy8gTm90ZSB0
aGF0IGRlc3RSZWN0IGlzIGRlZmluZWQgcmVsYXRpdmUgdG8gc291cmNlUmVjdC4KICAgICBjYW52
YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNvdXJjZVJlY3QueCgpICsgZGVzdFJl
Y3QueCgpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0gc291cmNl
UmVjdC55KCkgKyBkZXN0UmVjdC55KCkpOwogICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7Ci0KLSAg
ICAvLyBGbHVzaCBTS0lBIGNvbnRleHQgc28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFw
cGVhcnMgb24gdGhlIHRleHR1cmUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5k
ZXggMDZiNjJkMTk5OWI1NjIzNTA0MWNjMGRiYjIyMjQ5MTA1MWY5NTllYi4uYThmZjg1ZmY1YmJl
NDc4YTJkNTg1ZGZhNjc1Y2VkMzhjYTA0OTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTMyLDE2ICszMiwxOCBAQAogCiAjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgogCitjbGFzcyBTa0NhbnZhczsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBw
dWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAg
Y2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAg
ICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBk
YXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU1LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25Pcmll
bnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBTa0NhbnZhcyosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNzBhZmRkMDgyYzQzZmMwMjg5Y2E5MDI5Yjk2NGE0ZDQ0
ZTM0NGU3My4uZjlkODY3NDU1OTFjNDA4YThiYTUyMThkMDE4NTY0NGQ1NGY4NWJjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC00OSwxOSArNDksMzQgQEAgcHVibGljOgog
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAg
ICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAg
ICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCiAgICAgICAgICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIo
dGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyBy
ZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVw
YXJlUmVjdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0
dXJlSWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVj
dCAqLykKICAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKKyAgICAgICAgICAgIG1fdGV4dHVyZS0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFs
bG9jYXRvcik7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh0ZXh0
dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAg
ICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBk
YXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAorICAgICAgICBPd25QdHI8TWFu
YWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
KiBtX3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAKQEAgLTg1LDE1ICsxMDAsMTMgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiB0aWxl
U2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykK
ICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRU
ZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hv
dWxkIG5ldmVyIGdvIG91dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAg
ICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0
aGUgaW1hZ2UuCiAgICAgICAgIEludFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0
OwpAQCAtMTAzLDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERlc3RSZWN0Lm1v
dmUoY2xpcHBlZFNvdXJjZVJlY3QubG9jYXRpb24oKSAtIHNvdXJjZVJlY3QubG9jYXRpb24oKSk7
CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNsaXBwZWRTb3VyY2VSZWN0LnNpemUo
KSk7CiAKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1h
Z2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZv
cm1hdCgpLCBjb250ZXh0KTsKKyAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5w
aXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3Qs
IGZvcm1hdCwgY29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCB1cGRhdGVGcm9tSW1hZ2UoTmF0
aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UpCkBAIC0xNjcsNyArMTgwLDcgQEAgdm9pZCBJbWFnZUxh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykKICAgICBzZXRPcGFxdWUo
IW1fY29udGVudHMtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogfQogCi12b2lkIEltYWdlTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBJbWFnZUxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmIChtX25lZWRzRGlzcGxheSkg
ewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5o
CmluZGV4IDVmZTRmMjY2NjhiZGNjM2UyOWYwNGNmZmNkYTg4MmE3M2MzMWUzMjcuLmY2ZWJjOGE3
ZThiOTA3MzE4Y2Y1MjA2YzRmYjRlODdmYWVhMWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVy
Q2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRz
U2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAppbmRleCAxNzVmYzJmOTA1OWEzMDgwMzdlMGVlODQ4YjlmYzEzMTI1MDll
OGRkLi5kNmMxZTQzN2E0MzY1Mzg5YjU5YWYyNjNlYmRmNzQ5OWFiN2UyNjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRp
bmcuaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKQEAgLTUzLDcgKzU0LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKIAogY2xhc3MgQ0NMYXllckRlbGVnYXRlIHsKQEAgLTE2MCw4ICsxNjAsOSBAQCBwdWJs
aWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0
dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJl
c2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRz
VGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzVjZjI5
YTg5ZTM4OWUyNzY3N2IxMTkyMDZlZjI5YTRlMzAxNDYuLjIyNmJjMjE4MWQzMTY0ODBkYjk5MGM2
MzA4MmQ1NTg4OWFjN2IxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTI5
LDcgKzI5LDYgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1
ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzgsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJ
bnRTaXplOworY2xhc3MgTWFuYWdlZFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwog
Y2xhc3MgVGV4dHVyZU1hbmFnZXI7CiAKQEAgLTQ4LDE0ICs0OCwyMyBAQCBwdWJsaWM6CiAgICAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdl
ZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8p
IHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgPSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4
dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0
dXJlKSB7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIDA7IH0KIAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4g
bV90ZXh0dXJlOworICAgICAgICAvLyBwcmVwYXJlUmVjdCgpIHdpbGwgb25seSBiZSBjYWxsZWQg
aWYgdGhpcyByZXR1cm5zIHRydWUuCisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJl
Y3QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICAvLyBUaGlzIHJ1bnMgc3luY2hyb25vdXNs
eSBvbiB0aGUgaW1wbCB0aHJlYWQgd2l0aCBzYWZlIGFjY2VzcyB0byBtYWluIHRocmVhZCByZXNv
dXJjZXMuCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykgeyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBv
biB0aGUgbWFpbiB0aHJlYWQgYWZ0ZXIgY2FsbHMgdG8gbmVlZFByZXBhcmVSZWN0KCkgYW5kIHBy
ZXBhcmVSZWN0KCkgYnV0IGJlZm9yZSB1cGRhdGVSZWN0KCkuCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0K
KyAgICAgICAgLy8gVGhpcyBydW5zIGFzeW5jaHJvbm91c2x5IG9uIHRoZSBpbXBsIHRocmVhZC4g
QWNjZXNzIHRvIG1haW4gdGhyZWFkIHJlc291cmNlcyBpcyB1bnNhZmUuCisgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKyAgICB9OworCisgICAgY2xh
c3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpA
QCAtNzgsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRo
ZSBjb21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZv
cm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVk
LgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGls
ZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUg
Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8q
IGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJv
cmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgeyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggNWJiZmY2YTQz
ZTViMDM4YjNiZjMzMjdmYmQzZDFlNTE0M2I3ZjFkZS4uYzc0Yzk3Y2Y0NmJkOGIwYzRmODJiMDFi
NmU2YjJjOTRkMzdmN2FkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtODAsMTEgKzgw
LDE2IEBAIHZvaWQgTWFuYWdlZFRleHR1cmU6OnVucmVzZXJ2ZSgpCiAgICAgbV90ZXh0dXJlTWFu
YWdlci0+dW5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4dHVy
ZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewog
ICAgIEFTU0VSVChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKICAgICBp
ZiAoIW1fdGV4dHVyZUlkKQogICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXIt
PmFsbG9jYXRlVGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOworfQorCit2b2lkIE1hbmFnZWRU
ZXh0dXJlOjpiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yKQoreworICAgIGFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxv
Y2F0b3IpOwogICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBtX3RleHR1cmVJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmluZGV4IDRkNDM4
MDk1OTUzNDBmNWQ3MzNkNTY3OTI5MWE5MjA2NGM3YjFhZTUuLmQ3M2M4NzQyZDc4NDBlMjI5MDE0
ZTAxYWZlZDI1NjZkN2M5OWJjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtNTUsNiArNTUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3Rl
ZChtX3Rva2VuKTsKICAgICB9CiAKKyAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggNTM3ZTEzN2U4ZDhlYzUxOGI5MzRhYTVjZDJkNzAwYzc0YjE5ZmU0Yi4uNTVhMWRiOGZi
NjAzZTZkMDQ5MDJhYWNmY2ZmZjg3MDllODk1ZWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDEzICs0OCwx
MyBAQCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywg
ZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRl
bnRzU2NhbGUpCiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29y
ZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxh
dGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNv
bnRleHQuc2V0RGVmZXJyZWQodHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29u
dGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4
dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIHBhaW50KGdyYXBoaWNzQ29udGV4
dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRp
bmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCmluZGV4IDQ0MGY4YjAzZWE0ZjI3MzlhOTc1NDM4NjdhYzdlYjE1NDAzMGQw
YzIuLmFlZmJmYzNmNmE0YTJhM2FhNzFhNWIxZmI0M2VkZWFmMWNiZjZkZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4p
OwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZh
cyopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTY4
ZDllM2U0YWNlNjUwMTBjODNkZGM5ZDg4NGNjYmE5MWIwMjVlMS4uNTJkMTc4MjFkZDQzOTI0Y2Ex
MTcxMzYyYWMwZGZjOTRiZGJiZWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CkBAIC0xNzIsMTAgKzE3MiwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGls
ZXIoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlcgogICAgIG1fdGls
ZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKG1fdGlsZVNpemUsIGJvcmRlclRleGVsT3B0
aW9uKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBj
YXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0
aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0Ry
YXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGls
ZXMoKSkKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1w
dHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CkBAIC0y
MTUsMTEgKzIxNSw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlCiAgICAgICAgICAgICBpZiAo
cGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQo
KSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICB1cGRhdGVyLmFwcGVu
ZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIGhh
bmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAg
ICAgICB9CiAgICAgfQotCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNv
bnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKIH0KIAogdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAt
Mzk1LDE1ICszOTMsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9
IGNvbnRlbnRSZWN0OwogCiAgICAgbV9wYWludFJlY3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0Nv
bnRlbnRSZWN0KGRpcnR5TGF5ZXJSZWN0KTsKLSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0
eSgpKQorICAgIGlmIChtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIENhbGxpbmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFp
bnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBj
b21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBk
YXRlciB0byBiZSBkZWxldGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1l
bW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVz
LAotICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1
cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXpl
KCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCkpOwogICAgIG1f
dGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhtX3JlcXVlc3RlZFVwZGF0ZVJlY3QsIGxl
ZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0
b207ICsraikgewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7
CkBAIC00MjgsMTMgKzQyMCwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgdGlsZS0+Y2xl
YXJEaXJ0eSgpOwogCiAgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0
OwotICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNv
dXJjZVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3sKKyAgICBpZiAo
bV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxl
ci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIENhbGxpbmcgcGFpbnRDb250ZW50cygpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBh
aW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQorICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcg
Y29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVw
ZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBt
ZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hl
cywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUg
dXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgorICAgIFJlZlB0cjxMYXll
clRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CisgICAgdGV4dHVy
ZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyhtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUo
KSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSk7CisKKyAgICBt
X3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdCht
X3BhaW50UmVjdCkpOworfQorCisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI4ZTdkMWQwYzU2OTY4MDBm
M2Q2MjEyNDA4ZGQ4ZDE4YmNlZGJlYzIuLmU0NzgxOGY2NDIwNjYxNzMxN2ZlOTVhMzMxOTE3Yzc3
Zjg0MGVjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBD
Q1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCopOwpAQCAtNzUsOCArNzUsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU2V0IGlu
dmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4K
ICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAg
ICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2Vj
dCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRo
YXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRl
ZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAg
ICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiAgICAg
dmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKQEAgLTkzLDcgKzk1
LDcgQEAgcHJpdmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0
OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0gICAgLy8gVGVt
cG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4g
cHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0IG1fcmVx
dWVzdGVkVXBkYXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBk
YXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCiAg
ICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlYzkzZjE2OGRhMTRlYTQxZTNj
MTZkZjZkN2M0OWJlZTQ1MTNlYWNlLi43YmVjN2MwYTE4MDAzZGM5MWUxZDRjYmFhZGRlOWQzYjJk
NDFmZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDExICs0MCw2
MSBAQAogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJh
bWVQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJl
OjpVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAg
IDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1ZmZlcigwKQoreworfQorCitW
aWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQorewor
ICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJl
Y3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIEludFNpemUgZGlt
ZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgpOworCisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0q
IGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9tYXBwZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMu
aGVpZ2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworCisgICAgaWYgKCFt
X21hcHBlZEJ1ZmZlcikgeworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5h
Z2VyOjptZW1vcnlVc2VCeXRlcyhkaW1lbnNpb25zLCBtX3RleHR1cmUtPmZvcm1hdCgpKTsKKyAg
ICAgICAgbV9idWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsK
KyAgICB9CisKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0
b3IpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmRhdGFS
ZWN0KGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJl
TWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVyZS0+Zm9y
bWF0KCkpOworCisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKQorICAgICAgICBtZW1jcHkobV9tYXBw
ZWRCdWZmZXIsIGRhdGEsIGJ1ZmZlclNpemUpOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KG1f
YnVmZmVyLmdldCgpLCBkYXRhLCBidWZmZXJTaXplKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBk
ZXN0UmVjdCAqLykKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAg
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4
dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBF
eHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMz
RENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgR0xDKGNvbnRl
eHQsIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1fbWFwcGVkQnVmZmVy
KSk7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBJ
bnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKyAgICAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQoKSwgbV90ZXh0
dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fYnVmZmVy
LmdldCgpKSk7CisgICAgICAgIG1fYnVmZmVyLmNsZWFyKCk7CisgICAgfQorfQorCiBQYXNzUmVm
UHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpA
QCAtNTgsNiArMTA4LDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0o
Q0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3YKICAgICAsIG1fcHJvdmlk
ZXIocHJvdmlkZXIpCiAgICAgLCBtX3BsYW5lcygwKQogICAgICwgbV9uYXRpdmVUZXh0dXJlSWQo
MCkKKyAgICAsIG1fZnJhbWUoMCkKIHsKIH0KIApAQCAtNzUsMTcgKzEyNiwxOSBAQCB2b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiB7CiAgICAgTGF5ZXJDaHJvbWl1
bTo6Y2xlYW51cFJlc291cmNlcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQ
bGFuZXM7ICsraSkKLSAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUuY2xlYXIoKTsKKyAg
ICAgICAgbV90ZXh0dXJlc1tpXS5jbGVhcigpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Q0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKKyAgICBtX2ZyYW1lID0gMDsKKwogICAgIGlmICghbV9k
ZWxlZ2F0ZSB8fCAhbV9wcm92aWRlciB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9uZWVkc0Rpc3BsYXkgJiYgdGV4dHVyZXNWYWxpZCgpKSB7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7
Ci0gICAgICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1twbGFuZV0ubV90
ZXh0dXJlLmdldCgpOworICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVy
ZXNbcGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgICAgICBpZiAoIXRleC0+cmVzZXJ2ZSh0ZXgt
PnNpemUoKSwgdGV4LT5mb3JtYXQoKSkpIHsKICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMsOCArMTc2LDEwIEBAIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBBbGxv
Y2F0ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYWxyZWFk
eSwgb3IKLSAgICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRoYXQgYXJlIHRoZSB3cm9uZyBzaXpl
IGZvciB0aGUgZnJhbWUuCisgICAgaWYgKGZyYW1lLT5wbGFuZXMoKSA+IE1heFBsYW5lcykKKyAg
ICAgICAgQ1JBU0goKTsKKworICAgIC8vIFJlc2VydmUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0
aGV5IGFyZSBub3QgcmVzZXJ2ZWQgYWxyZWFkeS4KICAgICBib29sIHRleHR1cmVzUmVzZXJ2ZWQg
PSByZXNlcnZlVGV4dHVyZXMoZnJhbWUsIHRleHR1cmVGb3JtYXQpOwogICAgIGlmICghdGV4dHVy
ZXNSZXNlcnZlZCkgewogICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CkBAIC0xMzIsMjEgKzE4
NywzNCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gVXBkYXRlIHRleHR1cmUgcGxhbmVzLgotICAgIGZvciAodW5zaWduZWQgcGxhbmUg
PSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewotICAgICAgICBUZXh0dXJl
JiB0ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07Ci0gICAgICAgIEFTU0VSVCh0ZXh0dXJlLm1f
dGV4dHVyZSk7Ci0gICAgICAgIEFTU0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFu
ZSkgPT0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKSk7Ci0gICAgICAgIHVwZGF0ZVRleHR1cmUo
Y29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJhbWUtPmRhdGEocGxhbmUp
KTsKLSAgICB9Ci0KKyAgICBtX2ZyYW1lID0gZnJhbWU7CiAgICAgbV9wbGFuZXMgPSBmcmFtZS0+
cGxhbmVzKCk7Ci0gICAgQVNTRVJUKG1fcGxhbmVzIDw9IE1heFBsYW5lcyk7CiAKICAgICBtX3Vw
ZGF0ZVJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBib3VuZHMoKSk7CiAgICAgbV9uZWVk
c0Rpc3BsYXkgPSBmYWxzZTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnBhaW50Q29u
dGVudHNJZkRpcnR5KCkKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CisgICAgLy8gQ29weSBwbGFu
ZXMgdG8gbWFwcGVkIGJ1ZmZlcnMuCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5l
IDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspCisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVd
LT5kYXRhUmVjdChtX2ZyYW1lLT5kYXRhKHBsYW5lKSk7CisKKyAgICBtX3Byb3ZpZGVyLT5wdXRD
dXJyZW50RnJhbWUobV9mcmFtZSk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRs
ZXIpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVu
c2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykgeworICAgICAgICBJ
bnRSZWN0IHJlY3QoSW50UG9pbnQoKSwgbV90ZXh0dXJlc1twbGFuZV0tPnZpc2libGVTaXplKCkp
OworICAgICAgICBoYW5kbGVyLmhhbmRsZShtX3RleHR1cmVzW3BsYW5lXS5nZXQoKSwgcmVjdCwg
cmVjdCk7CisgICAgfQogfQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCkBAIC0xNTcsMTEgKzIyNSwxMSBAQCB2b2lkIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAg
dmlkZW9MYXllci0+c2V0U2tpcHNEcmF3KG1fc2tpcHNEcmF3KTsKICAgICB2aWRlb0xheWVyLT5z
ZXRGcmFtZUZvcm1hdChtX2ZyYW1lRm9ybWF0KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9wbGFuZXM7ICsraSkgewotICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0ubV90ZXh0dXJl
KSB7CisgICAgICAgIGlmICghbV90ZXh0dXJlc1tpXSkgewogICAgICAgICAgICAgdmlkZW9MYXll
ci0+c2V0U2tpcHNEcmF3KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS0+
dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVyZXNb
aV0ubV92aXNpYmxlU2l6ZSk7CisgICAgICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90
ZXh0dXJlc1tpXS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgbV90ZXh0dXJlc1tpXS0+dGV4dHVy
ZSgpLT5zaXplKCksIG1fdGV4dHVyZXNbaV0tPnZpc2libGVTaXplKCkpOwogICAgIH0KICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5lczsgaSA8IE1heFBsYW5lczsgKytpKQogICAgICAgICB2
aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIDAsIEludFNpemUoKSwgSW50U2l6ZSgpKTsKQEAgLTE3
MiwxMCArMjQwLDggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqIGxheWVyKQogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnNldExheWVyVHJl
ZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewogICAgIGlmIChob3N0ICYmIGxheWVyVHJl
ZUhvc3QoKSAhPSBob3N0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQ
bGFuZXM7ICsraSkgewotICAgICAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3Zpc2libGVTaXplID0g
SW50U2l6ZSgpOwotICAgICAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUgPSBNYW5hZ2Vk
VGV4dHVyZTo6Y3JlYXRlKGhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7Ci0gICAgICAg
IH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBsYW5lczsgKytpKQorICAg
ICAgICAgICAgbV90ZXh0dXJlc1tpXSA9IFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUoTWFuYWdlZFRl
eHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpKTsKICAgICB9CiAK
ICAgICBMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KGhvc3QpOwpAQCAtMTk5LDggKzI2
NSwxMCBAQCBHQzNEZW51bSBWaWRlb0xheWVyQ2hyb21pdW06OmRldGVybWluZVRleHR1cmVGb3Jt
YXQoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcgogCiBib29sIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6dGV4dHVyZXNWYWxpZCgpCiB7CisgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CisKICAg
ICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykgewot
ICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJl
LmdldCgpOworICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1twbGFuZV0t
PnRleHR1cmUoKTsKICAgICAgICAgaWYgKCF0ZXgtPmlzVmFsaWQodGV4LT5zaXplKCksIHRleC0+
Zm9ybWF0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIxNywxOSAr
Mjg1LDIwIEBAIGJvb2wgVmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZlVGV4dHVyZXMoY29uc3Qg
VmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgR0MzRGVuCiAKICAgICBmb3IgKHVuc2lnbmVkIHBs
YW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKICAgICAgICAgSW50
U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplID0gZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxh
bmUpOworICAgICAgICBBU1NFUlQobV90ZXh0dXJlc1twbGFuZV0pOworICAgICAgICBBU1NFUlQo
bV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHJlbmRl
cmVyIGNhbm5vdCBoYW5kbGUgdGhpcyBsYXJnZSBvZiBhIHRleHR1cmUsIHJldHVybiBmYWxzZS4K
ICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJl
IGltcGxlbWVudGVkLgogICAgICAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZS5pc1plcm8oKSB8
fCByZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6ZSB8fCByZXF1aXJl
ZFRleHR1cmVTaXplLmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVd
Lm1fdGV4dHVyZS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpCi0gICAgICAgICAgICBt
X3RleHR1cmVzW3BsYW5lXS5tX3Zpc2libGVTaXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1l
LCBwbGFuZSk7CisgICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpLT5zaXpl
KCkgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkgeworICAgICAgICAgICAgSW50U2l6ZSB2aXNpYmxl
U2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwgcGxhbmUpOworICAgICAgICAgICAgbV90
ZXh0dXJlc1twbGFuZV0tPnNldFZpc2libGVTaXplKHZpc2libGVTaXplKTsKKyAgICAgICAgfQog
Ci0gICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+cmVzZXJ2ZShyZXF1aXJlZFRl
eHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0KTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0tPnRl
eHR1cmUoKS0+cmVzZXJ2ZShyZXF1aXJlZFRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0KTsKICAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1OSwyOCArMzI4LDYgQEAgSW50U2l6ZSBWaWRl
b0xheWVyQ2hyb21pdW06OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21p
dW0qIGZyYW1lLAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwgdmlzaWJsZUhlaWdo
dCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmUm
IHRleHR1cmUsIGNvbnN0IHZvaWQqIGRhdGEpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQp
OwotICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7Ci0KLSAgICB0ZXh0dXJlLm1fdGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQotICAgIEdDM0RlbnVtIGZvcm1h
dCA9IHRleHR1cmUubV90ZXh0dXJlLT5mb3JtYXQoKTsKLSAgICBJbnRTaXplIGRpbWVuc2lvbnMg
PSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpOwotCi0gICAgdm9pZCogbWVtID0gc3RhdGljX2Nh
c3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT5tYXBU
ZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAs
IDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQoKSwgZm9ybWF0LCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRF
X09OTFkpOwotICAgIGlmIChtZW0pIHsKLSAgICAgICAgbWVtY3B5KG1lbSwgZGF0YSwgZGltZW5z
aW9ucy53aWR0aCgpICogZGltZW5zaW9ucy5oZWlnaHQoKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0
LCBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKSktPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1lbSkpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIC8vIElmIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSBmYWlscywgdGhlbiBkbyB0aGUg
c2xvd2VyIHRleFN1YkltYWdlMkQKLSAgICAgICAgLy8gdXBsb2FkLiBUaGlzIGRvZXMgdHdpY2Ug
dGhlIGNvcGllcyBhcyBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIG9uZQotICAgICAgICAvLyBp
biB0aGUgY29tbWFuZCBidWZmZXIgYW5kIGFub3RoZXIgdG8gdGhlIHRleHR1cmUuCi0gICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0
KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRhdGEpKTsKLSAg
ICB9Ci19Ci0KIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpyZWxlYXNlUHJvdmlkZXIoKQogewog
ICAgIG1fcHJvdmlkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA1MTZj
OGQzODQ3YzJhZGI2NGM1YmJlZmI3Yzk5Y2FiNWY1YWZhYmEzLi4zNTFmOGY4ZDE1NjEzMTcyMGYz
ZTZiMzg0ZWIzNDJmODA3NGU1MDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAt
NDMsNiArNDMsMzMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciB0aGF0IGNvbnRh
aW5zIGEgVmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBM
YXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBVcGRhdGVyVGV4dHVyZSh0ZXh0dXJlKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFs
IGJvb2wgbmVlZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAg
ICAgICB2b2lkIGRhdGFSZWN0KGNvbnN0IHZvaWQqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAgdm9pZCBzZXRWaXNpYmxlU2l6ZShJ
bnRTaXplJiBzaXplKSB7IG1fdmlzaWJsZVNpemUgPSBzaXplOyB9CisgICAgICAgIEludFNpemUm
IHZpc2libGVTaXplKCkgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4pOworCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAg
ICBJbnRTaXplIG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVy
OworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICB9OwogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVn
YXRlKiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzcsOSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgp
OworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKQEAgLTYz
LDE4ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJj
ZXMoKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0gICAgICAgIEludFNpemUg
bV92aXNpYmxlU2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
Ci0gICAgfTsKLQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqLCBWaWRl
b0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVUZXh0dXJl
Rm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0YXRpYyBJbnRTaXplIGNv
bXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCBwbGFu
ZSk7CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMo
Y29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAg
dm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IFRleHR1cmUmLCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJh
bWV0ZXJzKCk7CiAKQEAgLTgzLDEyICsxMDYsMTQgQEAgcHJpdmF0ZToKICAgICBWaWRlb0ZyYW1l
UHJvdmlkZXIqIG1fcHJvdmlkZXI7CiAKICAgICBlbnVtIHsgTWF4UGxhbmVzID0gMyB9OwotICAg
IFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOworICAgIE93blB0cjxVcGRhdGVyVGV4dHVy
ZT4gbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2lnbmVkIG1fcGxhbmVzOwogCiAgICAg
dW5zaWduZWQgbV9uYXRpdmVUZXh0dXJlSWQ7CiAgICAgSW50U2l6ZSBtX25hdGl2ZVRleHR1cmVT
aXplOwogICAgIEludFNpemUgbV9uYXRpdmVUZXh0dXJlVmlzaWJsZVNpemU7CisKKyAgICBWaWRl
b0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCBkZWI4Yzk0NzQyMmExM2UxZjE3NDVkYWFmNDYzODBhODAzZmJkNjVkLi4z
ZjRiMDViNmE0OTcyYTRkNTZlN2ZlZDFiNGJhYzk3MjMyODQ5Nzg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxh
eWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRl
clRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAg
IG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NS
ZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xM
YXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJv
bWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAg
LCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQog
ICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJU
ZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJH
TExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0
KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCog
cmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJl
ckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtOTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2
b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1f
dXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogYm9vbCBX
ZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJl
bmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmgKaW5kZXggNjM3NGI5ZWY2YjExN2FkMjM1NWExZmFkYjY5ZGRiNDEwN2E2OTMxMC4uNTRi
MjdkNDc2NjU1MTFkNzAzZmU2NjZhYWIzZDVjMWJjYWJmNmRlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEyICs0NiwzMCBA
QCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250
YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMg
Q2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAg
ICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJD
aHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwg
flVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4
dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21pdW0q
IG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJv
bWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAgIHZpcnR1YWwgfldlYkdM
TGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAsOCBAQCBwcml2YXRlOgogICAg
IC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhlIERyYXdpbmdCdWZm
ZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHTExheWVyQ2hy
b21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOworCisgICAgT3duUHRy
PFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMTQ1YTc5OTgwMjdkMDVmZWQyODU4ZTU4ODdmNGI0OWU2
OTdiODQyZS4uY2M0ZGE5NTg4YzIyNDFkZGRmODNlNmNjMDA2ODFiNzk4OWRiMjUxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRl
ICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKQEAgLTQ4LDYgKzQ5LDUyIEBAIGJvb2wgQ0NMYXllclRy
ZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAgIHJldHVybiBudW1M
YXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJj
ZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sK
K30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNl
SGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5k
bGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8p
Cit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291
cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlBy
ZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9h
bGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNv
dXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0
KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3Is
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRs
ZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7
Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sK
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNS
ZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJl
ZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0
aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVl
SG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpA
QCAtMzEwLDcgKzM1Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAg
IHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9z
aXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAo
IXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMTgsMTIgKzM2NSwxMiBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCku
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVy
KCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIp
CiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhp
cywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
IiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAg
ICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTMzMiwyNCArMzc5LDc3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6
ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAv
LyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBj
YWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUg
cGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXpl
KCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFz
c2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8g
cHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdp
dmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAm
JiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVM
aXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290
UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5k
ZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBk
YXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNp
YmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxp
c3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICB9
CisKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1f
bGF5ZXJVcGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBk
YXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4
XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9
Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKQor
eworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJlc291cmNlcygpOworfQor
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNl
cyIsIHRoaXMsIDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcihjb250ZXh0
LCBhbGxvY2F0b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7Cit9
CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJv
b3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigp
KTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1
bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
Q29udGVudHMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVy
VXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllcklu
ZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisKKyAg
ICAgICAgUGFpbnRIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVy
LT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KK30KIAotICAgIHBh
aW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFw
cGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVM
aXN0KQoreworICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNob3Vs
ZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5kZXIgc3Vy
ZmFjZSBsYXllciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2ZXIs
IHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAgICBpZiAobGF5ZXItPmJv
dW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdzQ29u
dGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0LmFwcGVuZChsYXllcik7
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8v
IE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24g
cmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwg
d2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50
byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM1OCwzMyArNDU4LDMzIEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXll
ckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJU
cmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+
c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXll
ci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xh
eWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXll
cihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAK
ICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNh
TGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFp
bnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FM
YXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJl
ZUhvc3QodGhpcyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tM
YXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJs
ZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9
CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNv
bnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNl
SW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+
PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3Vy
ZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwor
ICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUo
KSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5
ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rb
c3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5k
ZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmRy
YXdPcGFjaXR5KCkpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVl
SG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
cmVuZGVyU3VyZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgY29u
c3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlz
dC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewpAQCAtNDAwLDQ5ICs1MDAsMjkgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIEFTU0VSVChsYXllci0+b3BhY2l0eSgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSk7CiAKLSAgICAgICAg
ICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlz
aWJsZUxheWVyKGxheWVyLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyJiBoYW5kbGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IG1fdXBkYXRl
TGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0g
ICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IG1fdXBkYXRlTGlzdFtz
dXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRl
clN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAg
QVNTRVJUKHJlbmRlclN1cmZhY2UpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJh
d09wYWNpdHkoKSk7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCkpCi0gICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgIGlmIChyZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRl
eHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVuZGVyU3VyZmFj
ZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgcmVu
ZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXgg
PCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotCi0gICAgICAgICAg
ICBpZiAoQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1Rh
cmdldDxMYXllckNocm9taXVtPihsYXllciwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpKSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGlu
dCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+
PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9s
YXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5mb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUlu
ZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5k
ZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9y
IChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21p
dW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgp
OwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVy
LT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7
CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0
JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA1MDkzMDEzMzgzYmZiMDM0
NGIxMGNiODQ0YWVjYTE3NzhiYWExZTllLi5jZGEwYmY0ZTFhMjg3ZDk2MzljNjMzYTc4OWM2YzFi
Zjg0ZWMzZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBA
QCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0
b3I7CkBAIC03NSw3ICs3NCw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwg
c2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJl
ZShmYWxzZSkKICAgICAgICAgICAgICwgdXNlRGFtYWdlVHJhY2tlcihmYWxzZSkKLSAgICAgICAg
ICAgICwgcmVmcmVzaFJhdGUoMCkgeyB9CisgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCisg
ICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBh
Y2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04NCw2
ICs4NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVy
VHJlZTsKICAgICBib29sIHVzZURhbWFnZVRyYWNrZXI7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRl
OworICAgIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9y
bWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIEND
TGF5ZXJUcmVlSG9zdApAQCAtMTg0LDkgKzE4NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycygp
OworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0b3JS
ZXNvdXJjZXMoKTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgcGFpbnRDb250ZW50cygp
OwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFu
ZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxp
bWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFw
aGljc0NvbnRleHQzRCopOwpAQCAtMTk2LDEyICsyMDAsNTAgQEAgcHJvdGVjdGVkOgogICAgIGJv
b2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgorICAgIGNsYXNzIE5lZWRSZXNvdXJjZUhhbmRs
ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgor
ICAgICAgICBOZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisgICAgICAgIHZpcnR1YWwgfk5lZWRSZXNv
dXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAgaW50IHJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVz
b3VyY2VzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9yZXNvdXJjZXM7CisgICAg
fTsKKworICAgIGNsYXNzIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBQcmVwYXJlUmVzb3Vy
Y2VIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgICAg
ICB2aXJ0dWFsIH5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICAgICAgVGV4dHVyZUFsbG9j
YXRvciogbV9hbGxvY2F0b3I7CisgICAgfTsKKworICAgIGNsYXNzIFBhaW50SGFuZGxlciA6IHB1
YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFBhaW50SGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflBhaW50SGFuZGxlcigp
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwog
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IExheWVyTGlzdDsKIAot
ICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwotICAgIHZvaWQg
cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSopOworICAg
IHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmKTsKKyAg
ICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
KiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMo
Y29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRh
dGVMaXN0KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBwYWludENvbnRl
bnRzKExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAg
ICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMTcsNyArMjU5LDggQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFRl
eHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKLSAgICBMYXllckxpc3Qg
bV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0Owor
ICAgIExheWVyTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3MgbV9zZXR0
aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGJiMzc4MDE0N2IxNmMyNmI3NWE3Y2NkMjJhYThiOGZl
ODRlNzZiYmQuLmVlZTZkMThjMWU4MDA4ZDgzZjk1M2NhYjQ1YmY0ZDQ0MTY5ZTQ4ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9oCiAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBw
cm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVm
b3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29rcwogI2lmbmRlZiBO
REVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
LmNwcAppbmRleCA1MDFhMDBjMmIwOWEwZGY5MGRjNjFkY2FmY2ZjYTdkN2M2NjdiMTg1Li5jODk1
YTUxNmQzZjYzY2Y0NzAxZDFmN2NiYjgzOTAzNThlZjgyNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNl
ZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAordm9pZCBDQ1Nj
aGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9zdGF0ZU1hY2hp
bmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rp
b25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAw
KTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQogewog
ICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9CiAgICAgVFJB
Q0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAKQEAgLTEwNSw2
ICsxMTEsMTQgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1h
Y2hpbmUuZGlkTGVhdmVWU3luYygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjp1cGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoKQoreworICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKTsKKyAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CisgICAg
bV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNN
b3JlUmVzb3VyY2VVcGRhdGVzKCkpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9
CisKIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAv
LyBFYXJseSBvdXQgc28gd2UgZG9uJ3Qgc3BhbSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHBy
b2Nlc3NTY2hlZHVsZWRBY3Rpb25zLgpAQCAtMTI1LDYgKzEzOSw3IEBAIHZvaWQgQ0NTY2hlZHVs
ZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hl
ZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09V
UkNFUzoKKyAgICAgICAgICAgIEFTU0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzKCk7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRh
dGVzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRh
dGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJlIG5vCkBAIC0xMzIsNyArMTQ3LDcgQEAgdm9pZCBD
Q1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgICAgIC8v
IGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRpbmcs
CiAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRoZSBu
ZXh0IGRyYXcuCiAgICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAg
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4IDk1ZTk5NWY0NTE4ZWQ2N2Nm
MzRmNGM3ODg4NzRmNjkyMmU3ZTI2ZGQuLjgyODIyODEyZTkwMWI5YWJjMzg2NDljNmYxYjRhYmFm
NzBkZWM3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjYsMTEgKzY2LDEyIEBAIHB1Ymxp
YzoKICAgICAvLyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQgZW5zdXJlcyB0aGUgZHJhdyB3aWxs
IGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQg
c2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVu
ZGluZygpOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0KICAgICB2b2lkIHNldE1h
eEZyYW1lc1BlbmRpbmcoaW50KTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsK
ICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQWJvcnQoKTsKKyAgICB2b2lkIHVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZSgpOwogCiAgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggYmRmOGVk
YTU1ZjE4OGIzYjE5NjdiN2MxNGU2ZjBlNWRlOTU4YmZjMC4uMjkzYTM3ZTM0OTRhNGE3ZjVhOTRm
YjRhZjljNDdmMTE0OGI5ODczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lLmNwcApAQCAtMzcsNyArMzcsOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV9uZWVkc0NvbW1pdChmYWxzZSkKICAg
ICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZT
eW5jKGZhbHNlKQotICAgICwgbV92aXNpYmxlKGZhbHNlKSB7IH0KKyAgICAsIG1fdmlzaWJsZShm
YWxzZSkKKyAgICAsIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJh
bWVDb21wbGV0ZShmYWxzZSkgeyB9CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24g
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewpAQCAtNTEsMTUg
KzUzLDEwIEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9C
RUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCi0gICAgY2FzZSBDT01N
SVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQotICAg
ICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7
Ci0KICAgICBjYXNlIENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlm
IChzaG91bGREcmF3KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBp
ZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgIGlmICghbV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyAmJiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAg
ICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAg
cmV0dXJuIEFDVElPTl9OT05FOwogCkBAIC04Myw4ICs4MCwxMCBAQCB2b2lkIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJ
T05fQkVHSU5fRlJBTUU6CiAgICAgICAgIEFTU0VSVChtX3Zpc2libGUpOwotICAgICAgICBtX2Nv
bW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOworICAgICAgICBBU1NF
UlQoIW1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyk7CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOwogICAgICAgICBtX25lZWRzQ29tbWl0ID0g
ZmFsc2U7CisgICAgICAgIG1fZnJhbWVDb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47
CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xNDQs
MTggKzE0MywyNiBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1p
dCgpCiAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKQoreworICAgIG1fcmVzb3VyY2VV
cGRhdGVzUGVuZGluZyA9IHRydWU7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09N
TUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKKyAgICBtX2ZyYW1lQ29tcGxldGUgPSB0
cnVlOworICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiAhbV9yZXNvdXJj
ZVVwZGF0ZXNQZW5kaW5nKQorICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JF
QURZX1RPX0NPTU1JVDsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZykKK3ZvaWQgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQ
ZW5kaW5nKQogewogICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMpOwogICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KTsKICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFt
b3JlUGVuZGluZykKKyAgICBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBtb3JlUGVuZGluZzsK
KyAgICBpZiAoIW1vcmVQZW5kaW5nICYmIG1fZnJhbWVDb21wbGV0ZSkKICAgICAgICAgbV9jb21t
aXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDVhMjdiZDI4Yjg4YTc0Y2I2OTRl
ZDNlNDU1MWQ0MzM3ZGQ2MWM1MzIuLjBkOWViMTUyN2NkNDIwYWQ0N2YyNzdlMzE0ZWY1NTc5YzEz
ZDA4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAt
NDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENvbW1pdFN0YXRlIHsKICAgICAgICAg
Q09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
UywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywKICAgICAgICAgQ09N
TUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAgICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdf
Rk9SX0ZJUlNUX0RSQVcsCkBAIC04OSwxNCArODgsMTcgQEAgcHVibGljOgogICAgIC8vIHRocmVh
ZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEluZGljYXRl
cyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRoYXQgbmVlZCB1cGRhdGluZyBhcmUgcGVuZGlu
Zy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKwogICAgIC8vIENhbGwg
dGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUK
ICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNv
bXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMg
Y2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMg
aXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0
aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNp
ZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29t
bWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwogICAgIGJvb2wgbV9pbnNpZGVW
U3luYzsKICAgICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1fcmVzb3VyY2VVcGRhdGVzUGVu
ZGluZzsKKyAgICBib29sIG1fZnJhbWVDb21wbGV0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMyYTcxNjY0YWY0M2NkNjRkMDE0ZDI4
Yjg0MjY1MDk1YjIwMy4uOTI3MzM3MGU1MjczMjk0NTIyODFjYTliOWM5YmFiZjU3NGY1M2I1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0NywxNSArMTQ3
LDE5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIHZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3VyY2VzCisg
ICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpCisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMoKTsK
KwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29t
bWl0KCk7Ci0KKyAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAg
ICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVy
KTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxl
KG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5m
aW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAg
LTIwOCw2ICsyMTIsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBt
X2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAobV9sYXllclRy
ZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX3Rl
eHR1cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAg
ZWxzZQorICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxl
Z2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBz
Y2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVs
eSgpCiB7CkBAIC0yNzIsNyArMjg0LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21t
aXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMGQ1YTRhMmQ4YTUxNmIxZDdiY2Y5OTFhOTllMWM3
ODc4OTk0M2VjNS4uNzgzYThkYjg1NzQwMTI4YTRkNjAwOWViNTgxODRlMzBjZDAxN2RiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJs
ZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
IAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2
aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9n
cmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAv
LyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0
dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9Owog
CiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRz
LCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3MmFiLi5hNjFjM2JiMzNm
NmUyOWNiZWZhYjczMDAyNTA4NWQxMjA3NTM2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBk
YXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1h
bmFnZWRUZXh0dXJlLmgiCkBAIC0zNywxMSArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0
ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2Nh
dG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVV
cGRhdGVyKCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQogCiBDQ1RleHR1cmVVcGRh
dGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02NiwyMyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1
cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0g
ICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMu
c2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUlu
ZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5k
ZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxv
Y2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQorICAg
IHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXpl
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBt
X2VudHJpZXMubGFzdCgpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29u
dGV4dCwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgbV9l
bnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQg
dG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNs
ZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJl
MjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTViYjMwLi5hYjY1OWVjZWVhZDZkY2NmNTZiZDgzMDhh
ODY0ZDgzNGQwZWM4ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMywx
MSArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsK
IHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBD
Q1RleHR1cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQg
YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4ICs0OCw2IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAgICAgc3RydWN0IFVwZGF0
ZUVudHJ5IHsKICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJl
OwpAQCAtNTgsOCArNTUsNiBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7
CiAgICAgfTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgIHNpemVf
dCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDhlNzc0MjVlNDQwYTRlZGNmMjlmMjY1
YWMzZTllZWZkYmUyMTVkODcuLmFiODBhYzhkNzFkN2E5ZmIyMzgwY2E4MTE1NzU1ZWI4OGQ4MzRk
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yODUsNiArMjg1LDIwIEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisg
ICAgVXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVudHJ5OworICAgIGVudHJ5LT5tX3Rl
eHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0Owor
ICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhy
ZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhlbnRyeSkp
KTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpA
QCAtMzczLDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21t
aXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0
ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1Vw
ZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1
aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7
CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOworICAg
IH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOwogCiAgICAgLy8gQmVm
b3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0
ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMg
c2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAt
Mzk3LDEzICs0MjEsNDQgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0
KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9s
YXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VO
dW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKK3sKKyAgICBUUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25PbkltcGxUaHJlYWQi
LCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVI
b3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJj
ZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsK
K30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0
ZUVudHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXll
clRyZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50cnk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmFwcGVuZChlbnRyeS0+
bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisKKyAg
ICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRl
cykKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1Bl
bmRpbmcoKTsKKworICAgIGRlbGV0ZSBlbnRyeTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQobV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBs
KSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CkBAIC00
MTEsMzYgKzQ2NiwzMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwotICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAg
aWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcwor
ICAgICAgICAmJiBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpCisgICAgICAgIG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CiAKICAgICBtX3NjaGVk
dWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKIGJvb2wgQ0NUaHJl
YWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVw
ZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3Jl
VXBkYXRlcygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0
ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAgICBzdGF0aWMgY29uc3QgaW50
IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5OwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVz
UGVyRnJhbWUpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQudXBkYXRlKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5U
KCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCgh
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOwor
ICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygp
KTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0g
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX3Rl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAKIAogICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmJlZ2luQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMWRmMzc0
NmM1ZGMwMTM0YTMyNGU0YWM4NjQyMzA0NTI5MzNhOThmYi4uYWJhMzQ0YjE2NDRmM2JlNTkzMTdm
ZmRjNDc4YmNjZDRlNGM1Yzk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJj
Yy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQo
KTsKQEAgLTc4LDYgKzgwLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NU
aHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7
CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsKKyAgICAg
ICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKKyAg
ICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCiAgICAgdm9pZCBiZWdpbkZyYW1l
QW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNz
T3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpOwpAQCAtOTIsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NPd25Q
dHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhy
ZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNrKiopOworICAgIHZvaWQgcHJlcGFy
ZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CisgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5Kik7CiAgICAgdm9pZCBiZWdp
bkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lk
IHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpAQCAt
MTI3LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRo
cmVhZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRvIGNvbXBsZXRlLgogICAgIENDQ29tcGxldGlv
bkV2ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKLSAgICBPd25QdHI8
Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiAK
ICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERy
YXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlD
b21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKKworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGRkNzc0OTkwYjYzYTE0OThiYTQzOGFiNmY1OTAx
N2Q4OWFlY2Y0YjMuLjc0NTJlMDY3M2EwZjg5MjA3NGQxMjM2NGM0MmViYzYwM2FhODFhNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTMyLDYg
KzEzMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0
b3IoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIaXhpZTc2V2ViU29ja2V0UHJvdG9j
b2xFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzdWFsV29yZE1vdmVt
ZW50RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVw
ZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkg
Y29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCBhMWJjZWJm
MTJlNWZkN2JkYTRhNDNkZTIzNTAzZWQ2OTNlMzhkYmNmLi5lYTNhNWY5ZGI1YjIyYTZmN2IyMWI4
ZjBiYjNhY2M0YjAyNmZiMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJT
ZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1
cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1f
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVz
KGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC00NjUsNCArNDY2LDkgQEAg
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoZW5h
YmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVz
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMgPSBlbmFibGVkOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggNzRiOGFmOWNkODU1YjJkMmIxZmQ5Njg1YTk3NmUxM2Zh
MWZmNmQxYi4uOTI3ZWM2NjBjOTA3NjJjNGU5YTAxNGZkNGMxZWZkZDY5YWQ1ZDg1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEyNCwxMiAr
MTI0LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlU2Nyb2xsQW5pbWF0
b3IoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVu
YWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJs
ZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7
CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBt
X2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5n
cyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAg
ICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJl
ZTsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4
IGEyZGYzMzM5N2IzN2Q4MTVjMWNmMTAxMDc2ZTQxNzcyMmM0NWI1NWEuLjFjNmU1NWQ5NjY0ZWVi
MjUxMWM5MzM4NzYzMDFkMmQ1YWYzNDk1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI5MDMsNiArMjkwMyw4IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
aWYgKCFjY1NldHRpbmdzLnJlZnJlc2hSYXRlKQogICAgICAgICAgICAgY2NTZXR0aW5ncy5yZWZy
ZXNoUmF0ZSA9IGRlZmF1bHRSZWZyZXNoUmF0ZTsKIAorICAgICAgICBjY1NldHRpbmdzLmRlbGF5
VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRleHR1cmVVcGRhdGVzKCk7CisKICAg
ICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1Nl
dHRpbmdzKTsKICAgICAgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZTIy
MDg4MDg1ZDdlZDBkNjUwMjk1YzY5NTc5ODAwOWY3MmU3YmVlMy4uY2I5NGYyNGE4YzNmY2YyNmZi
YmFiNWNlNzljMDA4OTY0MGUzNmI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUu
aCIKICNpbmNsdWRlICJNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKQEAgLTkyMiw2ICs5MjMs
MTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVh
ZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1
YmxpYyBDQ0xheWVyRGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xhc3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXll
ckRlbGVnYXRlIDogcHVibGljIENDTGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9w
YWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlKENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05
NDUsMzcgKzk1NCwxMTYgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmcgOiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7
IH0KKyAgICBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAg
ICAgICAgIFRleHR1cmUoQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
LCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgIDog
bV90ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRl
eHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdl
dCgpOyB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyLT5sYXll
cigpLT5uZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0
ZXItPmxheWVyKCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VS
ZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIt
PmxheWVyKCktPnBhaW50Q29udGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50
UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+
dXBkYXRlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAg
ICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgICAgIENvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgICAgICB9OworCisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBjcmVh
dGUoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyKGxheWVyKSk7CisgICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQo
KSB7IHJldHVybiBtX3BhaW50Q29udGVudHNDb3VudDsgfQotICAgIHZvaWQgcmVzZXRQYWludENv
bnRlbnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50ID0gMDsgfQorICAgICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVy
ZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdl
cikpKTsKKyAgICAgICAgfQogCi0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRh
dGVDb3VudDsgfQotICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9
IDA7IH0KKyAgICAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJu
IExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgICAgIHZpcnR1YWwgU2FtcGxlZFRl
eGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSAvKiB0ZXh0dXJlRm9ybWF0ICov
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRT
aXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29u
dGVudHNTY2FsZSAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXllci0+cGFpbnRDb250
ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKSA6IG1fbGF5ZXIobGF5ZXIpIHsgfQor
CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVy
OworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUsIGJvb2wg
bmVlZFByZXBhcmVSZWN0KQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcoZGVsZWdhdGUsIG5lZWRQcmVwYXJlUmVjdCkpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVU
ZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKQogICAgIHsKLSAgICAgICAgQ29u
dGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci0gICAgICAgIG1fdXBkYXRlQ291bnQrKzsKKyAgICAgICAgbV9jb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlciA9IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7
CiAgICAgfQorICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyLmdldCgpOyB9CisK
KyAgICB2b2lkIHBhaW50Q29udGVudHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAg
ICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7
IH0KKworICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9Cisg
ICAgaW50IHByZXBhcmVSZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0K
KworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoKSB7IG1fcGFpbnRDb250ZW50c1JlY3RDb3Vu
dCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNSZWN0Q291bnQoKSB7IHJldHVybiBtX3BhaW50
Q29udGVudHNSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBkYXRlUmVjdCgpIHsgbV91cGRhdGVS
ZWN0Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7IHJldHVybiBtX3VwZGF0
ZVJlY3RDb3VudDsgfQorCisgICAgaW50IG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIG1fbmVl
ZFByZXBhcmVSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkKKyAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVs
ZWdhdGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICAgICAgOiBDb250ZW50
TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX25lZWRQcmVwYXJlUmVjdChuZWVk
UHJlcGFyZVJlY3QpCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAg
LCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAg
ICAgICwgbV9wYWludENvbnRlbnRzUmVjdENvdW50KDApCisgICAgICAgICwgbV91cGRhdGVSZWN0
Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAg
IH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBib29sIG1fbmVlZFByZXBhcmVSZWN0OwogICAgIGludCBt
X3BhaW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsKKyAgICBpbnQgbV9w
cmVwYXJlUmVjdENvdW50OworICAgIGludCBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7CisgICAg
aW50IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVy
aW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJl
aW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTk4Myw3ICsxMDcxLDcgQEAgY2xhc3MgQ0NM
YXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVz
dCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UoKQogICAg
ICAgICA6IG1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSh0aGlzKQotICAgICAgICAsIG1fdXBk
YXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3Jl
YXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUpKQorICAgICAgICAsIG1fdXBkYXRlQ2hl
Y2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZt
X3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUsIHRydWUpKQogICAgIHsKICAgICB9CiAKQEAgLTEw
MDIsMTMgKzEwOTAsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgp
CiAgICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVy
LT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0gICAgICAgIC8vIGFt
b3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAgICAgIEVYUEVDVF9F
UShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAotICAgICAgICAgICAg
ICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKKyAgICAgICAgLy8gcGFp
bnRDb250ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAg
ICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VR
KG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpLAorICAgICAgICAgICAgICAg
ICAgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCkpOworCisgICAg
ICAgIC8vIHVwZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAg
ICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c1JlY3QoKS4KKyAgICAgICAg
RVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpLAor
ICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7
CiAKICAgICAgICAgLy8gY2xlYXIgbV91cGRhdGVDaGVja0xheWVyIHNvIENDTGF5ZXJUcmVlSG9z
dCBkaWVzLgogICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIuY2xlYXIoKTsKQEAgLTEwMjQsNCAr
MTExNyw0OSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UsIHJ1bk11
bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKKy8vIHByZXBhcmVSZWN0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBuZWVkUHJlcGFyZVJlY3QoKSByZXR1cm5zIGZhbHNlLgor
Y2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QgOiBwdWJsaWMgQ0NMYXllclRy
ZWVIb3N0VGVzdCB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJl
Y3QoKQorICAgICAgICA6IG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlLCBmYWxzZSkpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOworCisgICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgewor
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgp
CisgICAgeworICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRD
b250ZW50c0NvdW50KCkpOworCisgICAgICAgIC8vIHByZXBhcmVSZWN0KCkgc2hvdWxkIG5vdCBo
YXZlIGJlZW4gY2FsbGVkLgorICAgICAgICBFWFBFQ1RfRVEoMCwgbV91cGRhdGVDaGVja0xheWVy
LT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZVJlY3QoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMg
cGFpbnRDb250ZW50c1JlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXll
ci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVD
aGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE1v
Y2tMYXllckRlbGVnYXRlIG1fZGVsZWdhdGU7CisgICAgUmVmUHRyPENvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX3VwZGF0ZUNoZWNrTGF5ZXI7Cit9OworCitURVNUX0Yo
Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QsIHJ1bk11bHRpVGhyZWFkKQoreworICAg
IHJ1blRlc3QodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAKaW5kZXggZjM0Njk3NzY2NmQyYzRkZmY0N2I0ODgxZmFiMWIxNmQzZjhjZDdiMi4uZGJjMzdk
ZDkwMGM2NjA1ZWZiYWJlNzEzNzZjOGY0NDhkNjk4NGIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LmNwcApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgewogCiBjb25zdCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUgYWxsQ29tbWl0U3RhdGVzW10gPSB7CiAgICAgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFLAotICAgIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsCiAgICAgQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsCiAgICAgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsCiAgICAg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9E
UkFXCkBAIC02Myw2ICs2MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0g
YjsgfQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVy
biBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldFJlc291cmNl
VXBkYXRlc1BlbmRpbmcoYm9vbCBiKSB7IG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IGI7IH0K
KyAgICBib29sIHJlc291cmNlVXBkYXRlc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlVXBkYXRlc1BlbmRpbmc7IH0KKworICAgIHZvaWQgc2V0RnJhbWVDb21wbGV0ZShib29sIGIp
IHsgbV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJvb2wgZnJhbWVDb21wbGV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsKIAogVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKQEAgLTk3LDcg
KzEwMiw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlv
bkJlZ2luc0ZyYW1lSWZOZWVkZWQpCiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKICAgICAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dS
RVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwog
ICAgIH0KIH0KQEAgLTI1MSw2ICsyNTYsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNl
dFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0
ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9yIHZzeW5j
IGFuZCBub3QgdnN5bmMuCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwpA
QCAtMjY3LDcgKzI3NCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAg
ICAgLy8gRW5kIHVwZGF0ZSB3aXRoIG5vIG1vcmUgdXBkYXRlcyBwZW5kaW5nLgotICAgIHN0YXRl
LmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CkBAIC0yNzksNiArMjg2LDggQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBk
YXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1
ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0
ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHRoZSB1cGRhdGUgYmVn
aW5zLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRlLmRpZEVudGVyVlN5
bmMoKTsKQEAgLTI5NSw3ICszMDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CiAKICAgICAvLyBBY2sgdGhlIHVwZGF0ZSB3aXRoIG1vcmUgcGVuZGluZy4KLSAgICBzdGF0
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBzdGF0ZS51cGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgdXBkYXRl
IG1vcmUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgc3RhdGUuZGlkTGVhdmVW
U3luYygpOwpAQCAtMzA1LDcgKzMxNCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAKICAgICAvLyBC
ZWdpbiBhbm90aGVyIHVwZGF0ZSwgd2hpbGUgaW5zaWRlIHZzeW5jLiBBbmQsIGl0IHVwZGF0aW5n
LgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVS
ZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBjb21taXQsIGluZGVwZW5kZW50
IG9mIHZzeW5jLgogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTMyMSw2ICszMzAsOSBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJh
d19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsKICAg
ICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAgc3RhdGUu
c2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRy
dWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CisKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdpbiBhbiB1cGRhdGUuCkBAIC0z
MzgsNyArMzUwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRh
dGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuZGlkTGVhdmVWU3lu
YygpOwogCiAgICAgLy8gRmluaXNoIHVwZGF0ZSBidXQgbGVhdmUgbW9yZSByZXNvdXJjZXMgcGVu
ZGluZy4KLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsK
KyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBW
ZXJpZnkgdGhhdCByZWdhcmRsZXNzIG9mIHZzeW5jLCB3ZSB1cGRhdGUgc29tZSBtb3JlLgogICAg
IHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTM1Miw3ICszNjQsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBk
YXRlcykKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBjb21taXQgcmVnYXJkbGVzcyBv
ZiB2c3luYyBzdGF0ZQogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTM3MCw3ICszODIs
MTEgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1p
dElzTm90TG9zdCkKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9H
UkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRT
dGF0ZSgpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UgdGhhdCBuZWVkIHVwZGF0ZS4KKyAg
ICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CiAKICAgICAvLyBOb3csIHdoaWxlIHRoZSBmcmFtZSBpcyBp
biBwcm9ncmVzcywgc2V0IGFub3RoZXIgY29tbWl0LgogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0
KHRydWUpOwpAQCAtMzgyLDcgKzM5OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsK
KyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1J
VCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAKICAgICAvLyBFeHBlY3QgdG8gY29tbWl0IHJlZ2Fy
ZGxlc3Mgb2YgdnN5bmMgc3RhdGUuCkBAIC00MTMsMTAgKzQyOSwxNCBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8vIEJlZ2luIHRoZSBm
cmFtZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX0ZSQU1FKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGUubmVlZHNDb21taXQoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAorICAgIC8vIFJlY2VpdmUgcmVz
b3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1
bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNDI0LDcgKzQ0NCw3IEBA
IFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQogCiAgICAg
Ly8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkCiAgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogCkBAIC00NTksNyArNDc5LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIEJl
Z2luIHRoZSBmcmFtZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1Rf
RkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNDY3LDYg
KzQ4NywxMCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNs
ZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRy
dWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0
YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUg
ZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTQ3NCw3ICs0OTgsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3
ZWVuKQogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZp
bmlzaGVkCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC01MTYsMTMgKzU0MCwxNyBAQCBURVNUKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAKICAgICAvLyBC
ZWdpbiB0aGUgZnJhbWUgd2hpbGUgdmlzaWJsZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKLSAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgp
KTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIAogICAgIC8vIEJlY29tZSBpbnZpc2libGUKICAgICBzdGF0ZS5zZXRWaXNpYmxlKGZhbHNl
KTsKIAorICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRh
dGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
CiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZAogICAgIHN0YXRl
LmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUo
KSk7CkBAIC01MzAsNyArNTU4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVy
IHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMp
OwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAg
ICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC01NTAsNCArNTc4
LDY1IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJs
ZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCitURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdE5vUmVzb3VyY2VVcGRhdGVzKQoreworICAgIFN0YXRlTWFjaGluZSBz
dGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU3RhcnQgY2xlYW4g
YW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGUubmVlZHNDb21taXQoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNj
aGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRl
KCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
UkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7
Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9SZXNvdXJjZVBl
bmRpbmcpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5z
ZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJl
Z2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJj
ZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUo
KSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmlu
aXNoZWQuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUodHJ1ZSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgYW5vdGhl
ciB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4
dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsK
KyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworCisgICAgLy8g
Tm8gcGVuZGluZyByZXNvdXJjZXMgdG8gdXBkYXRlLgorICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAv
LyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgorICAgIHN0YXRlLmJlZ2lu
RnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggYjU4ZWQyYzU2YzI4ZGY3ODVjYzljMTE2OWQ2NzAx
Y2M3MGRmZmJkNi4uZjMyYjBiNTA2NDFmMWI0NjM0NTU0YzRiNzFjZjNlN2E1NmRjNDlkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcApA
QCAtNzYsMTIgKzc2LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0KQog
ICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0
ZXMgaXMgc2V0IHRvIGZhbHNlLAotICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBk
YXRlTW9yZVJlc291cmNlcywgdGhlbgotICAgIC8vIGNvbW1pdAorICAgIC8vIGJlZ2luRnJhbWVD
b21wbGV0ZSBzaG91bGQgY29tbWl0IGltbWVkaWF0ZWx5LgogICAgIHNjaGVkdWxlci0+YmVnaW5G
cmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwot
ICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNs
aWVudC5hY3Rpb24oMCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0
IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25z
KCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFj
dGlvbigwKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBUaWNrIHNob3VsZCBkcmF3
LgpAQCAtMTEyLDEyICsxMTAsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21t
aXRBZnRlckJlZ2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwogCiAg
ICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQg
YW5vdGhlciBjb21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91
bGQgdXBkYXRlTW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRoZW4KLSAgICAvLyBiZWdpbiBh
bm90aGVyIGZyYW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBj
b21taXQsIHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJh
bWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGll
bnQuYWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIs
IGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rp
b24oMCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdyBi
dXQgdGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtMjMzLDQgKzIyOSw1MiBAQCBURVNUKEND
U2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZURyYXcpCiAgICAgRVhQRUNUX0ZBTFNF
KHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclRlc3Qs
IFVwZGF0ZVJlc291cmNlcykKK3sKKyAgICBGYWtlQ0NTY2hlZHVsZXJDbGllbnQgY2xpZW50Owor
ICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNlID0gYWRvcHRSZWYobmV3IEZh
a2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3duUHRyPENDU2NoZWR1bGVyPiBzY2hlZHVsZXIgPSBD
Q1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5ldyBDQ0ZyYW1lUmF0ZUNvbnRy
b2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBzY2hlZHVsZXItPnNldFZpc2libGUodHJ1ZSk7CisK
KyAgICAvLyBTZXROZWVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhlIGZyYW1lLgorICAgIHNjaGVk
dWxlci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlv
bnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xp
ZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBOb3cgc2V0TmVl
ZHNDb21taXQgYWdhaW4uIENhbGxpbmcgaGVyZSBtZWFucyB3ZSBuZWVkIGEgc2Vjb25kIGZyYW1l
LgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKworICAgIC8vIFVwZGF0ZSBwZW5k
aW5nIHJlc291cmNlcy4KKyAgICBjbGllbnQuc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyh0cnVl
KTsKKyAgICBzY2hlZHVsZXItPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xp
ZW50LnJlc2V0KCk7CisKKyAgICAvLyBDbGllbnQgZmluaXNoZWQgdXBkYXRlIGJ1dCBoYXZlIG5v
dCB5ZXQgdG9sZCBzY2hlZHVsZXIuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0
ZXMoZmFsc2UpOworCisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBub3QgY29tbWl0
LCBhcyBhbiB1cGRhdGUgaXMgcGVuZGluZy4KKyAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBjbGll
bnQucmVzZXQoKTsKKworICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNl
dCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCisgICAgLy8gbmVlZGVkLCB1cGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoKSBzaG91bGQgY29tbWl0LCB0aGVuIGJlZ2luCisgICAgLy8g
YW5vdGhlciBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNs
aWVudC5yZXNldCgpOworCisgICAgLy8gVGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBiZWdpbiBh
bm90aGVyIGZyYW1lLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsKKyAgICBFWFBFQ1RfRVEoMiwg
Y2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25E
cmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1
bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMSkpOworICAgIGNsaWVudC5yZXNl
dCgpOworfQorCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE5MThmN2Q1N2Y0Yjg4NTU0ZmU2Yzk3
N2EyODIyZGJkMjVhZGFiYzguLjE4ZjAzZTAyZTBhNTUyMGI5ZDQ5YTU0MGY5NzlmMjlhMmZhOTVj
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIlRpbGVkTGF5
ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1
ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKQEAgLTM4LDIwICsz
OCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBGYWtl
VGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKK2NsYXNzIEZha2VI
YW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgewogcHVibGljOgot
ICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVu
dW0pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25l
ZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIHsgfQogfTsKIAogY2xhc3MgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRl
eHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQotICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkg
eyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkg
OiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFJlY3QmKSB7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gbV90ZXh0dXJlOwogICAgIH07CiAKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsg
fQpAQCAtNjAsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1h
bmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVh
dGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7
IHJldHVybiBCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJldHVybiBTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCkg
eyB9CiB9OwogCiBjbGFzcyBGYWtlQ0NUaWxlZExheWVySW1wbCA6IHB1YmxpYyBDQ1RpbGVkTGF5
ZXJJbXBsIHsKQEAgLTk4LDYgKzEwMSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QpOwogICAgIH0KIAorICAgIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHsKKyAgICAgICAgVGlsZWRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzKHJlY3QpOworICAgIH0KKwogICAgIHZpcnR1YWwgVGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdl
cjsgfQogCiBwcml2YXRlOgpAQCAtMTE5LDEzICsxMjcsMTMgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9
IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVy
ZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBw
YWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwor
ICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQg
aGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0xMzgsNyArMTQ2LDggQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhl
biBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRp
bGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117646</attachid>
            <date>2011-12-02 10:08:54 -0800</date>
            <delta_ts>2011-12-06 09:04:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111202130851.patch</filename>
            <type>text/plain</type>
            <size>143810</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdjMTI4OTE4MjFhM2Y2
ZjQ2MzViYjViZWUyNzU3NmUxODNmYTJjYy4uNDE5ZTExNGFmOWRiOGY5ZGIyMDQyMWY0YzQwNmE1
Y2RmNzA0ZTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAxMS0xMi0wMiAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnQgdXBsb2FkaW5n
IHRleHR1cmUgcmVzb3VyY2VzIGFzIHNvb24gYXMgZW5vdWdoIGNvbnRlbnRzIGhhcyBiZWVuCisg
ICAgICAgIHBhaW50ZWQgZm9yIG9uZSB0ZXh0dXJlIHRvIGJlIHVwZGF0ZWQuCisKKyAgICAgICAg
U3BsaXQgbGF5ZXIgdXBkYXRlcyBpbnRvIHR3byBzdGVwcy4gU3RlcCBvbmUgY2FsY3VsYXRlcyB0
cmFuc2Zvcm1zCisgICAgICAgIGFuZCB2aXNpYmxlIGxheWVyIGFyZWFzLiBTdGVwIHR3byBwYWlu
dHMgbGF5ZXIgY29udGVudHMuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBj
b21wb3NpdG9yIHJlc291cmNlIHByZXBhcmF0aW9uIHN0ZXAgYWZ0ZXIKKyAgICAgICAgdmlzaWJs
ZSBsYXllciBhcmVhcyBoYXZlIGJlZW4gY29tcHV0ZWQgYnV0IGJlZm9yZSBhbnkgcGFpbnRpbmcK
KyAgICAgICAgaGFzIG9jY3VycmVkLiBMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzIGlzIHJlcGxhY2VkCisgICAgICAgIGJ5IExheWVyQ2hyb21pdW06OmZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUKKyAgICAgICAgb3ZlciBj
b21wb3NpdG9yIHJlc291cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBBZGQg
bmV3IHVuaXQgdGVzdDogQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRl
eHR1cmVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5V
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFBy
ZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGly
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBk
YXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyOjp+SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpkYXRhUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9M
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRl
b0xheWVyQ2hyb21pdW06OnRleHR1cmVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9M
YXllckNocm9taXVtOjpyZXNlcnZlVGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBh
cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6OnNldFZpc2libGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6OnZpc2libGVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNo
cm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhh
bmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhh
bmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyOjp+UHJlcGFyZVJlc291cmNlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhh
bmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlBhaW50
SGFuZGxlcjo6UGFpbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGlu
Z1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6
cmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1By
b3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnNldFJlc291cmNlVXBkYXRl
c1BlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlv
bnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Np
bmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRo
cmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6
OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4
dHVyZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTEy
LTAyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAxODA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCAwOGI4N2Q4ZDFmOTI3YjBiOWQzMmJmMzc3NjdkNjkwYjY4NzNjZTkyLi5mZjA1MWQ5
NGY2ZTg1OTFmOWVmMWYzZjA5ZmYwMTYwMjg2MjdmZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDExLTEyLTAyICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1h
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVcGxvYWQgdGV4dHVyZXMgaW4g
cGFyYWxsZWwgd2l0aCBwYWludGluZyBjb250ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJl
Y3QgdGVzdC4gVHJhY2sgY2hhbmdlcyB0byBzY2hlZHVsZXIKKyAgICAgICAgYW5kIHRleHR1cmUg
dXBsb2Fkcy4KKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNy
Yy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6
OldlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0
RGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OmRlbGF5VGV4dHVyZVVwZGF0ZXMpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAqIHRlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0
ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpkcmF3
c0NvbnRlbnQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6cHJlc2VydmVzM0Qp
OgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6bm90aWZ5U3luY1JlcXVpcmVkKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpw
YWludENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBk
YXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpv
cmllbnRhdGlvbik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnRleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0KToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVS
ZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c1JlY3RDb3VudCk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OnVwZGF0ZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3Bh
Y2l0eUNoYW5nZTo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OkNDTGF5ZXJUcmVlSG9z
dFRlc3ROb1ByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE5v
UHJlcGFyZVJlY3Q6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3ROb1ByZXBhcmVSZWN0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RG
OjpDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6YWZ0ZXJUZXN0KToKKyAgICAgICAg
KFdURjo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5lOjpzZXRSZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6cmVzb3VyY2VVcGRh
dGVzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnNldEZyYW1lQ29t
cGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5lOjpmcmFtZUNvbXBsZXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyVGVz
dC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VIYW5kbGVyOjpoYW5k
bGUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0
ZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHMpOgorICAgICAgICAoV1RGOjpURVNUKToKKwogMjAxMS0xMi0wMiAgU2FtaSBLeW9z
dGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2Ug
Q0NJbnB1dEhhbmRsZXIgc2Nyb2xsaW5nIHN0YXRlZnVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGRkOTMxOTEzZjcwOTc3NjI2
MzVmZTY0MTlkMzg3NTFhZmY4NjE3OWQuLjA3OTA1YzE4OTcwNzQ4MDRiNTVkODEwNjVlMGU2ZTBh
Mzk5NjUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRl
eHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUp
CiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtNDUsOSAr
NDUsMTEgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1
cmUoKQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwor
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0
dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCkBAIC03Nyw3ICs3
OSw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAgICAgICAgICAgICBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxl
KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBtX3RleFN1YkltYWdlLnNl
dFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAKQEAgLTg4LDE1ICs5MCwxMyBAQCB2b2lkIEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpUZXh0T3B0aW9uIHRl
eHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6UGFpbnRl
cjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhlbFRleHQ7
CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMsIHRl
eHRPcHRpb24pOwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBj
b250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgcGFpbnQoKmNhbnZhc1BhaW50ZXIuY29u
dGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiB9CiAKLXZvaWQgQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBQbGF0
Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKLQotICAgIHRleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90ZXhTdWJJbWFnZS51cGxv
YWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwg
dGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxv
Y2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIGZvcm1h
dCwgY29udGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NzU1MjJjYmFhYTM0
MTQ3NTg1NmRiNmNiZWRhMzEyYzE0OWQ4N2JhLi4yZTkxZGJhMDRlMzBkODEwMjE2YzY2Njk4ZmZh
OWNlZGZmNGE2ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21p
dW07CiAvLyBBIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRt
YXAuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1
YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0
ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU5LDggKzU5
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJv
dHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1w
bGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwotICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
PiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmNwcAppbmRleCBiMGM0ZTA3Mzk0NmJhNWU1MWUzZGM2YTI1MzczNmEwZWNhMzhjYWNjLi5l
MDRmMThkMDA2MmY3ZTRhNjkzODRiYjg0YTEwMzkyMDNmM2ZlMGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDYgKzQ0LDIwIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRl
clRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5
ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRh
dGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1f
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKK30KKwogUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzMkRM
YXllckNocm9taXVtKGNvbnRleHQpKTsKQEAgLTUyLDYgKzY2LDcgQEAgUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dDMKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bSgwKQog
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJU
ZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY1LDcgKzgwLDcgQEAgYm9vbCBDYW52
YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgICAgICAgICAmJiAo
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBD
Q1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5IHx8ICFkcmF3c0Nv
bnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODUsNiArMTAwLDExIEBAIHZvaWQgQ2FudmFz
MkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgQ0NUZXh0CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAordm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0
ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSk7Cit9CisKIHZvaWQgQ2FudmFz
MkRMYXllckNocm9taXVtOjpjb250ZW50Q2hhbmdlZCgpCiB7CiAgICAgaWYgKGxheWVyVHJlZUhv
c3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggNDU3YmQ1NjRkNzc4
ZGFiOTRhYzk5MTEzZjgxZWJmZTc1ZGVmZGQ0Zi4uZTg2YTYxYTRlZWU0NTIwYWJhNjg2YzQxOTNh
NmY3OGYwZmM1MGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQz
LDE2ICs0MywzNiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIC8vIEEgbGF5ZXIgY29udGFp
bmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJETGF5ZXJDaHJvbWl1
bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRh
dGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUo
Q2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAg
ICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxp
Y2l0IFVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIENh
bnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqKTsK
ICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogCiAgICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIG1fY29udGV4dDsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRh
dGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKaW5kZXggNWZhNjc4NTRjNmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4u
YzYxZWMzM2Q2N2U2NTM3MTJkMmI5MjExM2ZiNzliYWJmODM5YjVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDYgKzM2LDI0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0
ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4
dHVyZSgpCit7Cit9CisKK2Jvb2wgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
bmVlZFByZXBhcmVSZWN0KCkKK3sKKyAgICByZXR1cm4gIW1fdGV4dHVyZS0+dGV4dHVyZUlkKCk7
Cit9CisKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVz
dFJlY3QgKi8pCit7CisgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxs
b2NhdG9yKTsKK30KKwogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQogICAg
IDogbV9wYWludGVyKHBhaW50ZXIpCiB7CkBAIC00NSw3ICs2Myw3IEBAIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6On5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
Cit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
CiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUoLWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0
LnkoKSk7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IGE4ZmVmZjM0MjJiMWI4NTMwYjhmNjg5ZmYyYzU2Njc2NjBiZWQ1Y2YuLjg4NmQxMDEyZDhl
NTMyNzljZTc0ZTUxYTEwMzQ5ZGI4MWE4OWZlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwxMiAr
NDAsMjggQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIExheWVyVGV4dHVyZVVw
ZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBjYW52YXMuCiBjbGFzcyBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgorICAgIGNsYXNz
IFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVi
bGljOgorICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICov
KTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9OworCiAgICAgdmlydHVhbCB+Q2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2
b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwog
ICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDNhZWMzZWJmZjBmMTJhYzYxOGQ2OGZmMjYxNzBjYjI2MDc0ZDFmYmIuLjM4ZTY0MzIwZWM5
NGMwOGI3OGIyOWFiZWU4YmM1M2IyOTVlMzAxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3Vy
Y2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAKQEAgLTEwOCw2ICsx
MDgsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
KQogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50
KCkpOworCisgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgp
OworICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRz
KGxheWVyUmVjdCk7Cit9CisKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3ND
b250ZW50KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI4MzRlNjc2YmQ2MzQ0NWFhNDUzYjM2NWVlZTI4
MDI0MGYzODA5YzEuLmM1ZTlmY2NlYmY0NzZlYjdkMDJiYzk4MjIxNzBiNjY1M2E1MTNiYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwogCisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZjJkN2UyZGRkYWE2ZmQ5OWZiZTYwM2MzYjhlMzczZTk5OGEzMzgzNS4uOWVlZmI0NmI1
ZTUyNGY3ZWUyMzU5ODM3ODUwNWI0ZjJlNGEyOWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBGcmFtZUJ1ZmZlcigpOwogICAg
IH5GcmFtZUJ1ZmZlcigpOwogCi0gICAgU2tDYW52YXMqIGluaXRpYWxpemUoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqKTsKKyAgICBTa0NhbnZh
cyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKik7CiAKIHBy
aXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKQEAgLTY2LDEyICs2Niwx
MiBAQCBGcmFtZUJ1ZmZlcjo6fkZyYW1lQnVmZmVyKCkKICAgICAgICAgbV9jb250ZXh0LT5kZWxl
dGVGcmFtZWJ1ZmZlcihtX2Zibyk7CiB9CiAKLVNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlh
bGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKK1NrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5p
dGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUpCiB7CiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2ZibyA9IG1fY29udGV4dC0+
Y3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICB0ZXh0dXJlLT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChtX2NvbnRleHQsIGFsbG9jYXRvcik7CisgICAgY29udGV4dC0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCB0ZXh0dXJlLT50ZXh0dXJlSWQoKSwgMCk7CiAKICAgICAvLyBDcmVhdGUgYSBza2lhIGdwdSBj
YW52YXMuCiAgICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBtX2NvbnRleHQtPmdyQ29udGV4dCgp
OwpAQCAtOTYsNyArOTYsNyBAQCBTa0NhbnZhcyogRnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqCiB9IC8vIG5hbWVzcGFj
ZQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAg
ICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0
ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CkBAIC0xMDUsOSArMTA1LDIzIEBAIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQog
ewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
IHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxv
Y2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIC8vIE1ha2Ugc3Vy
ZSBTS0lBIHVzZXMgdGhlIGNvcnJlY3QgR0wgY29udGV4dC4KKyAgICBjb250ZXh0LT5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKKyAgICAvLyBOb3RpZnkgU0tJQSB0byBzeW5jIGl0cyBpbnRlcm5hbCBH
TCBzdGF0ZS4KKyAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+cmVzZXRDb250ZXh0KCk7CisKKyAg
ICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisKKyAgICAvLyBDcmVhdGUgYW4gYWNj
ZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCisgICAgRnJhbWVCdWZmZXIgYnVmZmVyOworICAg
IFNrQ2FudmFzKiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250ZXh0LCB0ZXh0dXJlKCkp
OworCisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgY2Fu
dmFzLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisKKyAgICAvLyBGbHVzaCBTS0lBIGNvbnRleHQg
c28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCisg
ICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyKQpAQCAtMTM1LDI2ICsxNDksMTQgQEAgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXAKICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0UkdCQTsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQg
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0
dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgU2tDYW52YXMqIGNhbnZhcywgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
Ly8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgotICAgIGNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRz
IGludGVybmFsIEdMIHN0YXRlLgotICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRl
eHQoKTsKLQotICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4K
LSAgICBGcmFtZUJ1ZmZlciBidWZmZXI7Ci0gICAgU2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5p
bml0aWFsaXplKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7Ci0KICAgICBjYW52YXMtPmNs
aXBSZWN0KFNrUmVjdChkZXN0UmVjdCkpOwogICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9m
IGNvbnRlbnRSZWN0IHRvIHRoYXQgb2YgZGVzdFJlY3QuCiAgICAgLy8gTm90ZSB0aGF0IGRlc3RS
ZWN0IGlzIGRlZmluZWQgcmVsYXRpdmUgdG8gc291cmNlUmVjdC4KICAgICBjYW52YXMtPnRyYW5z
bGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNvdXJjZVJlY3QueCgpICsgZGVzdFJlY3QueCgpLAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0gc291cmNlUmVjdC55KCkg
KyBkZXN0UmVjdC55KCkpOwogICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7Ci0KLSAgICAvLyBGbHVz
aCBTS0lBIGNvbnRleHQgc28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24g
dGhlIHRleHR1cmUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMDZiNjJk
MTk5OWI1NjIzNTA0MWNjMGRiYjIyMjQ5MTA1MWY5NTllYi4uYThmZjg1ZmY1YmJlNDc4YTJkNTg1
ZGZhNjc1Y2VkMzhjYTA0OTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDE2
ICszMiwxOCBAQAogCiAjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIgogCitjbGFzcyBTa0NhbnZhczsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBU
ZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAgIHZp
cnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVU
ZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbjsg
fQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBk
YXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBTa0NhbnZhcyosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggNzBhZmRkMDgyYzQzZmMwMjg5Y2E5MDI5Yjk2NGE0ZDQ0ZTM0NGU3My4u
ZjlkODY3NDU1OTFjNDA4YThiYTUyMThkMDE4NTY0NGQ1NGY4NWJjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uY3BwCkBAIC00OSwxOSArNDksMzQgQEAgcHVibGljOgogICAgIGNsYXNz
IFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgICAgICA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgIDogbV90
ZXh0dXJlKHRleHR1cmUpCiAgICAgICAgICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVw
ZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90
ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKICAg
ICAgICAgewotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3Qo
Y29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAg
ICAgICAgICAgIG1fdGV4dHVyZS0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7
CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRl
eHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAg
IHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+
Zm9ybWF0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1
cmU+IG1fdGV4dHVyZTsKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1
cmVVcGRhdGVyOwogICAgIH07CiAKQEAgLTg1LDE1ICsxMDAsMTMgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBM
YXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAv
KiBjb250ZW50c1NjYWxlICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKICAgICB7CiAg
ICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNv
bnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVy
IGdvIG91dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlz
IHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2Uu
CiAgICAgICAgIEludFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwpAQCAtMTAz
LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERlc3RSZWN0Lm1vdmUoY2xpcHBl
ZFNvdXJjZVJlY3QubG9jYXRpb24oKSAtIHNvdXJjZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAg
IGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNsaXBwZWRTb3VyY2VSZWN0LnNpemUoKSk7CiAKLSAg
ICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCks
IGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBj
b250ZXh0KTsKKyAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwg
aW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIGZvcm1hdCwg
Y29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCB1cGRhdGVGcm9tSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHIgbmF0aXZlSW1hZ2UpCkBAIC0xNjcsNyArMTgwLDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykKICAgICBzZXRPcGFxdWUoIW1fY29udGVu
dHMtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewogICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVm
ZTRmMjY2NjhiZGNjM2UyOWYwNGNmZmNkYTg4MmE3M2MzMWUzMjcuLmY2ZWJjOGE3ZThiOTA3MzE4
Y2Y1MjA2YzRmYjRlODdmYWVhMWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0o
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaAppbmRleCAxNzVmYzJmOTA1OWEzMDgwMzdlMGVlODQ4YjlmYzEzMTI1MDllOGRkLi5kNmMx
ZTQzN2E0MzY1Mzg5YjU5YWYyNjNlYmRmNzQ5OWFiN2UyNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNp
bmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKQEAgLTUzLDcgKzU0LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAog
Y2xhc3MgQ0NMYXllckRlbGVnYXRlIHsKQEAgLTE2MCw4ICsxNjAsOSBAQCBwdWJsaWM6CiAKICAg
ICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRl
cml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250
ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzVjZjI5YTg5ZTM4OWUy
NzY3N2IxMTkyMDZlZjI5YTRlMzAxNDYuLjIyNmJjMjE4MWQzMTY0ODBkYjk5MGM2MzA4MmQ1NTg4
OWFjN2IxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTI5LDcgKzI5LDYg
QEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIk1hbmFn
ZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIApAQCAtMzgsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwor
Y2xhc3MgTWFuYWdlZFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4
dHVyZU1hbmFnZXI7CiAKQEAgLTQ4LDE0ICs0OCwyMyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkgPSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0K
KyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0K
IAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJl
OworICAgICAgICAvLyBwcmVwYXJlUmVjdCgpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhpcyBy
ZXR1cm5zIHRydWUuCisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICAvLyBUaGlzIHJ1bnMgc3luY2hyb25vdXNseSBvbiB0aGUg
aW1wbCB0aHJlYWQgd2l0aCBzYWZlIGFjY2VzcyB0byBtYWluIHRocmVhZCByZXNvdXJjZXMuCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRS
ZWN0JiAvKiBkZXN0UmVjdCAqLykgeyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBvbiB0aGUgbWFp
biB0aHJlYWQgYWZ0ZXIgY2FsbHMgdG8gbmVlZFByZXBhcmVSZWN0KCkgYW5kIHByZXBhcmVSZWN0
KCkgYnV0IGJlZm9yZSB1cGRhdGVSZWN0KCkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KKyAgICAgICAg
Ly8gVGhpcyBydW5zIGFzeW5jaHJvbm91c2x5IG9uIHRoZSBpbXBsIHRocmVhZC4gQWNjZXNzIHRv
IG1haW4gdGhyZWFkIHJlc291cmNlcyBpcyB1bnNhZmUuCisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxl
ciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAg
ICB9OwogCiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNzgsNyAr
ODcsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25l
bnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBU
ZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZp
cnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0
dXJlRm9ybWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRS
ZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVs
cyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggNWJiZmY2YTQzZTViMDM4YjNi
ZjMzMjdmYmQzZDFlNTE0M2I3ZjFkZS4uYzc0Yzk3Y2Y0NmJkOGIwYzRmODJiMDFiNmU2YjJjOTRk
MzdmN2FkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtODAsMTEgKzgwLDE2IEBAIHZv
aWQgTWFuYWdlZFRleHR1cmU6OnVucmVzZXJ2ZSgpCiAgICAgbV90ZXh0dXJlTWFuYWdlci0+dW5w
cm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VS
VChtX3RleHR1cmVNYW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKICAgICBpZiAoIW1fdGV4
dHVyZUlkKQogICAgICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRl
VGV4dHVyZShhbGxvY2F0b3IsIG1fdG9rZW4pOworfQorCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpi
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQoreworICAgIGFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwog
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X3RleHR1cmVJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmluZGV4IDRkNDM4MDk1OTUzNDBm
NWQ3MzNkNTY3OTI5MWE5MjA2NGM3YjFhZTUuLmQ3M2M4NzQyZDc4NDBlMjI5MDE0ZTAxYWZlZDI1
NjZkN2M5OWJjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZChtX3Rva2Vu
KTsKICAgICB9CiAKKyAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNTM3
ZTEzN2U4ZDhlYzUxOGI5MzRhYTVjZDJkNzAwYzc0YjE5ZmU0Yi4uNTVhMWRiOGZiNjAzZTZkMDQ5
MDJhYWNmY2ZmZjg3MDllODk1ZWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29u
dGVudHNTY2FsZSkKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyog
dGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUp
CiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250
ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250
ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0
RGVmZXJyZWQodHJ1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxh
dGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVu
dFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIHBhaW50KGdyYXBoaWNzQ29udGV4dCwgY29udGVu
dFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCmluZGV4IDQ0MGY4YjAzZWE0ZjI3MzlhOTc1NDM4NjdhYzdlYjE1NDAzMGQwYzIuLmFlZmJm
YzNmNmE0YTJhM2FhNzFhNWIxZmI0M2VkZWFmMWNiZjZkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwogCi0gICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRz
U2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxv
YXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTY4ZDllM2U0YWNl
NjUwMTBjODNkZGM5ZDg4NGNjYmE5MWIwMjVlMS4uNTJkMTc4MjFkZDQzOTI0Y2ExMTcxMzYyYWMw
ZGZjOTRiZGJiZWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xNzIs
MTAgKzE3MiwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXIoQ0NMYXll
clRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlcgogICAgIG1fdGlsZXIgPSBDQ0xh
eWVyVGlsaW5nRGF0YTo6Y3JlYXRlKG1fdGlsZVNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKIH0K
IAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21w
b3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBi
ZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKKyAg
ICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAh
bV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CkBAIC0yMTUsMTEgKzIx
NSw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlCiAgICAgICAgICAgICBpZiAocGFpbnRPZmZz
ZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQoKSkKICAgICAg
ICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuaGFu
ZGxlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAg
ICAgfQotCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0
VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAtMzk1LDE1ICsz
OTMsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9IGNvbnRlbnRS
ZWN0OwogCiAgICAgbV9wYWludFJlY3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0
KGRpcnR5TGF5ZXJSZWN0KTsKLSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAg
IGlmIChtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENh
bGxpbmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNo
IG1heSBoYXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGlu
Zywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBi
ZSBkZWxldGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNr
aW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8v
IHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFs
aXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCkpOwogICAgIG1fdGlsZXItPmNv
bnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhtX3JlcXVlc3RlZFVwZGF0ZVJlY3QsIGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikg
ewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CkBAIC00Mjgs
MTMgKzQyMCwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgp
OwogCiAgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgICAg
ICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNvdXJjZVJlY3Qp
OwogICAgICAgICB9CiAgICAgfQogfQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3sKKyAgICBpZiAobV9za2lwc0Ry
YXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGls
ZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IENhbGxpbmcgcGFpbnRDb250ZW50cygpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGlj
aCBtYXkgaGF2ZSB0aGUgc2lkZQorICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRp
bmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8g
YmUgZGVsZXRlZC4KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFj
a2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKKyAgICAv
LyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBh
bGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgorICAgIFJlZlB0cjxMYXllclRleHR1cmVV
cGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cGFpbnRDb250ZW50cyhtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxl
ci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSk7CisKKyAgICBtX3VwZGF0ZVJl
Y3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVj
dCkpOworfQorCisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI4ZTdkMWQwYzU2OTY4MDBmM2Q2MjEyNDA4
ZGQ4ZDE4YmNlZGJlYzIuLmU0NzgxOGY2NDIwNjYxNzMxN2ZlOTVhMzMxOTE3Yzc3Zjg0MGVjNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVV
cGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2so
Ym9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCop
OwpAQCAtNzUsOCArNzUsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU2V0IGludmFsaWRhdGlv
bnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lk
IGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAgICAvLyBQcmVw
YXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNv
bnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJz
ZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QpOworICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRh
dGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiAgICAgdmlydHVhbCB2
b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHJp
dmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0OwogICAgIFVw
ZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0gICAgLy8gVGVtcG9yYXJ5IHN0
YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRv
VXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0IG1fcmVxdWVzdGVkVXBk
YXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5k
IHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCiAgICAgLy8gb2Yg
dGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlYzkzZjE2OGRhMTRlYTQxZTNjMTZkZjZkN2M0
OWJlZTQ1MTNlYWNlLi43YmVjN2MwYTE4MDAzZGM5MWUxZDRjYmFhZGRlOWQzYjJkNDFmZWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRl
b0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDExICs0MCw2MSBAQAogI2lu
Y2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVy
VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogbV90ZXh0
dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1ZmZlcigwKQoreworfQorCitWaWRlb0xheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworICAgIEFTU0VS
VCghbV9tYXBwZWRCdWZmZXIpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIEludFNpemUgZGltZW5zaW9ucyA9
IG1fdGV4dHVyZS0+c2l6ZSgpOworCisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lv
bnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKSk7CisgICAgbV9tYXBwZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0
ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCks
IG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBF
eHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworCisgICAgaWYgKCFtX21hcHBlZEJ1
ZmZlcikgeworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1v
cnlVc2VCeXRlcyhkaW1lbnNpb25zLCBtX3RleHR1cmUtPmZvcm1hdCgpKTsKKyAgICAgICAgbV9i
dWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKKyAgICB9CisK
KyAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQor
Cit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmRhdGFSZWN0KGNvbnN0
IHZvaWQqIGRhdGEpCit7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6
bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVyZS0+Zm9ybWF0KCkpOwor
CisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKQorICAgICAgICBtZW1jcHkobV9tYXBwZWRCdWZmZXIs
IGRhdGEsIGJ1ZmZlclNpemUpOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KG1fYnVmZmVyLmdl
dCgpLCBkYXRhLCBidWZmZXJTaXplKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAq
LykKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZS0+dGV4
dHVyZUlkKCkpOworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGV4dGVu
c2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1fbWFwcGVkQnVmZmVyKSk7CisgICAg
ICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBJbnRTaXplIGRp
bWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAs
IGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQoKSwgbV90ZXh0dXJlLT5mb3Jt
YXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fYnVmZmVyLmdldCgpKSk7
CisgICAgICAgIG1fYnVmZmVyLmNsZWFyKCk7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPFZpZGVv
TGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtNTgsNiAr
MTA4LDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3YKICAgICAsIG1fcHJvdmlkZXIocHJvdmlk
ZXIpCiAgICAgLCBtX3BsYW5lcygwKQogICAgICwgbV9uYXRpdmVUZXh0dXJlSWQoMCkKKyAgICAs
IG1fZnJhbWUoMCkKIHsKIH0KIApAQCAtNzUsMTcgKzEyNiwxOSBAQCB2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiB7CiAgICAgTGF5ZXJDaHJvbWl1bTo6Y2xlYW51
cFJlc291cmNlcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsr
aSkKLSAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUuY2xlYXIoKTsKKyAgICAgICAgbV90
ZXh0dXJlc1tpXS5jbGVhcigpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVJZkRpcnR5KCkKIHsKKyAgICBtX2ZyYW1lID0gMDsKKwogICAgIGlmICghbV9kZWxlZ2F0ZSB8
fCAhbV9wcm92aWRlciB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9uZWVkc0Rpc3BsYXkgJiYgdGV4dHVyZXNWYWxpZCgpKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7Ci0gICAgICAg
ICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLmdl
dCgpOworICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVd
LT50ZXh0dXJlKCk7CiAgICAgICAgICAgICBpZiAoIXRleC0+cmVzZXJ2ZSh0ZXgtPnNpemUoKSwg
dGV4LT5mb3JtYXQoKSkpIHsKICAgICAgICAgICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMsOCArMTc2LDEwIEBAIHZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBBbGxvY2F0ZSB0ZXh0
dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYWxyZWFkeSwgb3IKLSAg
ICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRoYXQgYXJlIHRoZSB3cm9uZyBzaXplIGZvciB0aGUg
ZnJhbWUuCisgICAgaWYgKGZyYW1lLT5wbGFuZXMoKSA+IE1heFBsYW5lcykKKyAgICAgICAgQ1JB
U0goKTsKKworICAgIC8vIFJlc2VydmUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBu
b3QgcmVzZXJ2ZWQgYWxyZWFkeS4KICAgICBib29sIHRleHR1cmVzUmVzZXJ2ZWQgPSByZXNlcnZl
VGV4dHVyZXMoZnJhbWUsIHRleHR1cmVGb3JtYXQpOwogICAgIGlmICghdGV4dHVyZXNSZXNlcnZl
ZCkgewogICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7CkBAIC0xMzIsMjEgKzE4NywzNCBAQCB2
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
VXBkYXRlIHRleHR1cmUgcGxhbmVzLgotICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFu
ZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewotICAgICAgICBUZXh0dXJlJiB0ZXh0dXJl
ID0gbV90ZXh0dXJlc1twbGFuZV07Ci0gICAgICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7
Ci0gICAgICAgIEFTU0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSkgPT0gdGV4
dHVyZS5tX3RleHR1cmUtPnNpemUoKSk7Ci0gICAgICAgIHVwZGF0ZVRleHR1cmUoY29udGV4dCwg
dXBkYXRlci5hbGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJhbWUtPmRhdGEocGxhbmUpKTsKLSAgICB9
Ci0KKyAgICBtX2ZyYW1lID0gZnJhbWU7CiAgICAgbV9wbGFuZXMgPSBmcmFtZS0+cGxhbmVzKCk7
Ci0gICAgQVNTRVJUKG1fcGxhbmVzIDw9IE1heFBsYW5lcyk7CiAKICAgICBtX3VwZGF0ZVJlY3Qg
PSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBib3VuZHMoKSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkg
PSBmYWxzZTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KCkKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
dmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CisgICAgLy8gQ29weSBwbGFuZXMgdG8gbWFw
cGVkIGJ1ZmZlcnMuCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9mcmFt
ZS0+cGxhbmVzKCk7IHBsYW5lKyspCisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5kYXRhUmVj
dChtX2ZyYW1lLT5kYXRhKHBsYW5lKSk7CisKKyAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJh
bWUobV9mcmFtZSk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7Cisg
ICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIHBs
YW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykgeworICAgICAgICBJbnRSZWN0IHJl
Y3QoSW50UG9pbnQoKSwgbV90ZXh0dXJlc1twbGFuZV0tPnZpc2libGVTaXplKCkpOworICAgICAg
ICBoYW5kbGVyLmhhbmRsZShtX3RleHR1cmVzW3BsYW5lXS5nZXQoKSwgcmVjdCwgcmVjdCk7Cisg
ICAgfQogfQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCkBAIC0xNTcsMTEgKzIyNSwxMSBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgdmlkZW9MYXll
ci0+c2V0U2tpcHNEcmF3KG1fc2tpcHNEcmF3KTsKICAgICB2aWRlb0xheWVyLT5zZXRGcmFtZUZv
cm1hdChtX2ZyYW1lRm9ybWF0KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFu
ZXM7ICsraSkgewotICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlKSB7CisgICAg
ICAgIGlmICghbV90ZXh0dXJlc1tpXSkgewogICAgICAgICAgICAgdmlkZW9MYXllci0+c2V0U2tp
cHNEcmF3KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdmlk
ZW9MYXllci0+c2V0VGV4dHVyZShpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS0+dGV4dHVyZUlk
KCksIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVyZXNbaV0ubV92aXNp
YmxlU2l6ZSk7CisgICAgICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90ZXh0dXJlc1tp
XS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgbV90ZXh0dXJlc1tpXS0+dGV4dHVyZSgpLT5zaXpl
KCksIG1fdGV4dHVyZXNbaV0tPnZpc2libGVTaXplKCkpOwogICAgIH0KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3BsYW5lczsgaSA8IE1heFBsYW5lczsgKytpKQogICAgICAgICB2aWRlb0xheWVy
LT5zZXRUZXh0dXJlKGksIDAsIEludFNpemUoKSwgSW50U2l6ZSgpKTsKQEAgLTE3MiwxMCArMjQw
LDggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllcklt
cGwqIGxheWVyKQogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NM
YXllclRyZWVIb3N0KiBob3N0KQogewogICAgIGlmIChob3N0ICYmIGxheWVyVHJlZUhvc3QoKSAh
PSBob3N0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsr
aSkgewotICAgICAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3Zpc2libGVTaXplID0gSW50U2l6ZSgp
OwotICAgICAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6
Y3JlYXRlKGhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBsYW5lczsgKytpKQorICAgICAgICAgICAg
bV90ZXh0dXJlc1tpXSA9IFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUoTWFuYWdlZFRleHR1cmU6OmNy
ZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpKTsKICAgICB9CiAKICAgICBMYXll
ckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KGhvc3QpOwpAQCAtMTk5LDggKzI2NSwxMCBAQCBH
QzNEZW51bSBWaWRlb0xheWVyQ2hyb21pdW06OmRldGVybWluZVRleHR1cmVGb3JtYXQoY29uc3Qg
VmlkZW9GcmFtZUNocm9taXVtKiBmcgogCiBib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dGV4dHVy
ZXNWYWxpZCgpCiB7CisgICAgQVNTRVJUKGxheWVyVHJlZUhvc3QoKSk7CisKICAgICBmb3IgKHVu
c2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykgewotICAgICAgICBN
YW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLmdldCgpOwor
ICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUo
KTsKICAgICAgICAgaWYgKCF0ZXgtPmlzVmFsaWQodGV4LT5zaXplKCksIHRleC0+Zm9ybWF0KCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIxNywxOSArMjg1LDIwIEBA
IGJvb2wgVmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZlVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFt
ZUNocm9taXVtKiBmcmFtZSwgR0MzRGVuCiAKICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsg
cGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKICAgICAgICAgSW50U2l6ZSByZXF1
aXJlZFRleHR1cmVTaXplID0gZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpOworICAg
ICAgICBBU1NFUlQobV90ZXh0dXJlc1twbGFuZV0pOworICAgICAgICBBU1NFUlQobV90ZXh0dXJl
c1twbGFuZV0tPnRleHR1cmUoKSk7CiAKICAgICAgICAgLy8gSWYgdGhlIHJlbmRlcmVyIGNhbm5v
dCBoYW5kbGUgdGhpcyBsYXJnZSBvZiBhIHRleHR1cmUsIHJldHVybiBmYWxzZS4KICAgICAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0aWxlZCBsYXllcnMgYXJlIGltcGxlbWVu
dGVkLgogICAgICAgICBpZiAocmVxdWlyZWRUZXh0dXJlU2l6ZS5pc1plcm8oKSB8fCByZXF1aXJl
ZFRleHR1cmVTaXplLndpZHRoKCkgPiBtYXhUZXh0dXJlU2l6ZSB8fCByZXF1aXJlZFRleHR1cmVT
aXplLmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVy
ZS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpCi0gICAgICAgICAgICBtX3RleHR1cmVz
W3BsYW5lXS5tX3Zpc2libGVTaXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7
CisgICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpLT5zaXplKCkgIT0gcmVx
dWlyZWRUZXh0dXJlU2l6ZSkgeworICAgICAgICAgICAgSW50U2l6ZSB2aXNpYmxlU2l6ZSA9IGNv
bXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwgcGxhbmUpOworICAgICAgICAgICAgbV90ZXh0dXJlc1tw
bGFuZV0tPnNldFZpc2libGVTaXplKHZpc2libGVTaXplKTsKKyAgICAgICAgfQogCi0gICAgICAg
IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+cmVzZXJ2ZShyZXF1aXJlZFRleHR1cmVTaXpl
LCB0ZXh0dXJlRm9ybWF0KTsKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKS0+
cmVzZXJ2ZShyZXF1aXJlZFRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0KTsKICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI1OSwyOCArMzI4LDYgQEAgSW50U2l6ZSBWaWRlb0xheWVyQ2hy
b21pdW06OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1l
LAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwgdmlzaWJsZUhlaWdodCk7CiB9CiAK
LXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmUmIHRleHR1cmUs
IGNvbnN0IHZvaWQqIGRhdGEpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFT
U0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7Ci0KLSAgICB0ZXh0dXJlLm1fdGV4dHVyZS0+YmluZFRl
eHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQotICAgIEdDM0RlbnVtIGZvcm1hdCA9IHRleHR1
cmUubV90ZXh0dXJlLT5mb3JtYXQoKTsKLSAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSB0ZXh0dXJl
Lm1fdGV4dHVyZS0+c2l6ZSgpOwotCi0gICAgdm9pZCogbWVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5z
aW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT5tYXBUZXhTdWJJbWFn
ZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVu
c2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpOwot
ICAgIGlmIChtZW0pIHsKLSAgICAgICAgbWVtY3B5KG1lbSwgZGF0YSwgZGltZW5zaW9ucy53aWR0
aCgpICogZGltZW5zaW9ucy5oZWlnaHQoKSk7Ci0gICAgICAgIEdMQyhjb250ZXh0LCBzdGF0aWNf
Y2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSktPnVu
bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1lbSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8v
IElmIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSBmYWlscywgdGhlbiBkbyB0aGUgc2xvd2VyIHRl
eFN1YkltYWdlMkQKLSAgICAgICAgLy8gdXBsb2FkLiBUaGlzIGRvZXMgdHdpY2UgdGhlIGNvcGll
cyBhcyBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIG9uZQotICAgICAgICAvLyBpbiB0aGUgY29t
bWFuZCBidWZmZXIgYW5kIGFub3RoZXIgdG8gdGhlIHRleHR1cmUuCi0gICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1h
dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGRhdGEpKTsKLSAgICB9Ci19Ci0K
IHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpyZWxlYXNlUHJvdmlkZXIoKQogewogICAgIG1fcHJv
dmlkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA1MTZjOGQzODQ3YzJh
ZGI2NGM1YmJlZmI3Yzk5Y2FiNWY1YWZhYmEzLi4zNTFmOGY4ZDE1NjEzMTcyMGYzZTZiMzg0ZWIz
NDJmODA3NGU1MDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDMsNiArNDMs
MzMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEgVmlk
ZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9t
aXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
T3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4g
dGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRh
dGVyVGV4dHVyZSh0ZXh0dXJlKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRh
dGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUo
KSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2b2lk
IGRhdGFSZWN0KGNvbnN0IHZvaWQqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAgdm9pZCBzZXRWaXNpYmxlU2l6ZShJbnRTaXplJiBz
aXplKSB7IG1fdmlzaWJsZVNpemUgPSBzaXplOyB9CisgICAgICAgIEludFNpemUmIHZpc2libGVT
aXplKCkgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
ZXhwbGljaXQgVXBkYXRlclRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisg
ICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICBJbnRTaXpl
IG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOworICAgICAg
ICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICB9OwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9G
cmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZp
cnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKQEAgLTYzLDE4ICs5Miwx
MiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAog
cHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0gICAgICAgIEludFNpemUgbV92aXNpYmxl
U2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Ci0gICAgfTsK
LQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqLCBWaWRlb0ZyYW1lUHJv
dmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNv
bnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNp
YmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCBwbGFuZSk7CiAgICAg
Ym9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMoY29uc3QgVmlk
ZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRh
dGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmUm
LCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7
CiAKQEAgLTgzLDEyICsxMDYsMTQgQEAgcHJpdmF0ZToKICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIq
IG1fcHJvdmlkZXI7CiAKICAgICBlbnVtIHsgTWF4UGxhbmVzID0gMyB9OwotICAgIFRleHR1cmUg
bV90ZXh0dXJlc1tNYXhQbGFuZXNdOworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV90ZXh0
dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2lnbmVkIG1fcGxhbmVzOwogCiAgICAgdW5zaWduZWQg
bV9uYXRpdmVUZXh0dXJlSWQ7CiAgICAgSW50U2l6ZSBtX25hdGl2ZVRleHR1cmVTaXplOwogICAg
IEludFNpemUgbV9uYXRpdmVUZXh0dXJlVmlzaWJsZVNpemU7CisKKyAgICBWaWRlb0ZyYW1lQ2hy
b21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApp
bmRleCBkZWI4Yzk0NzQyMmExM2UxZjE3NDVkYWFmNDYzODBhODAzZmJkNjVkLi4zZjRiMDViNmE0
OTcyYTRkNTZlN2ZlZDFiNGJhYzk3MjMyODQ5Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0
dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQorewor
fQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUo
KQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJj
ZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9t
aXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2Vi
R0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1
cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9k
cmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpj
cmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJHTExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkgJiYgY29u
dGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJD
b250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQp
CiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNiAr
MTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRl
eHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogYm9vbCBXZWJHTExheWVy
Q2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyQ29u
dGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5k
ZXggNjM3NGI5ZWY2YjExN2FkMjM1NWExZmFkYjY5ZGRiNDEwN2E2OTMxMC4uNTRiMjdkNDc2NjU1
MTFkNzAzZmU2NjZhYWIzZDVjMWJjYWJmNmRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBX
ZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEg
V2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRl
clRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJU
ZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJH
TExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7
CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3Jl
YXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJv
bWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAsOCBAQCBwcml2YXRlOgogICAgIC8vIEEgcmVm
ZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhlIERyYXdpbmdCdWZmZXIgYWxyZWFk
eSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHTExheWVyQ2hyb21pdW0uCiAg
ICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOworCisgICAgT3duUHRyPFVwZGF0ZXJU
ZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKaW5kZXggMTQ1YTc5OTgwMjdkMDVmZWQyODU4ZTU4ODdmNGI0OWU2OTdiODQyZS4u
Y2M0ZGE5NTg4YzIyNDFkZGRmODNlNmNjMDA2ODFiNzk4OWRiMjUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFByb3h5LmgiCiAKQEAgLTQ4LDYgKzQ5LDUyIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojph
bnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAgIHJldHVybiBudW1MYXllclRyZWVJ
bnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6
Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sKK30KKworQ0NM
YXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcigp
Cit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5k
bGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
Lyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAg
aWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291cmNlcysrOwor
fQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNv
dXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3Io
YWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRs
ZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAg
ICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBhaW50
SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisKK0ND
TGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sKK30KKwordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNvdXJj
ZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0
dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFk
b3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMzEwLDcg
KzM1Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19j
YXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRp
YXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RMYXll
cigpKQogICAgICAgICByZXR1cm47CkBAIC0zMTgsMTIgKzM2NSwxMiBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAg
IHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7Cisg
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywg
MCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290
TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTMzMiwyNCArMzc5LDc3IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQog
ICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAg
ICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFz
c2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0
ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBh
dCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAg
IG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBmaXJl
cyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFyZVRv
VXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUu
CisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV9sYXll
clVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmFwcGVu
ZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290UmVuZGVyU3Vy
ZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5kZXJTdXJmYWNl
LT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwg
cm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwg
cm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0
OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICB9CisKKyAgICBh
cHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRh
dGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5z
aXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5
ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsK
KyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9Cit9CisKK2Jv
b2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKQoreworICAgIE5l
ZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJlc291cmNlcygpOworfQorCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBUUkFDRV9F
VkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyIsIHRoaXMs
IDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcihjb250ZXh0LCBhbGxvY2F0
b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7Cit9CisKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigpKTsKK30KKwor
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSogcm9vdExh
eWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMi
LCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlz
dC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQo
KTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisKKyAgICAgICAgUGFp
bnRIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5mb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KK30KIAotICAgIHBhaW50TGF5ZXJD
b250ZW50cyhtX3VwZGF0ZUxpc3QpOwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2li
bGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQorewor
ICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNob3VsZCBoYXZlIGFs
cmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5kZXIgc3VyZmFjZSBsYXll
ciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2ZXIsIHdlIG1heSBz
dGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAgICBpZiAobGF5ZXItPmJvdW5kcygpLmlz
RW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdzQ29udGVudCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0LmFwcGVuZChsYXllcik7CiB9CiAKLXZv
aWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShM
YXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRl
clN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1h
c2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1
cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFk
eSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJl
bmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM1OCwzMyArNDU4LDMzIEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
KiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAg
ICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0
aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJs
ZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVu
dEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnBh
aW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5kZXJT
dXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBMYXll
ckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXll
cigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNhTGF5ZXItPnNl
dExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgdXBk
YXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAg
ICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3QodGhp
cyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29u
dGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5w
YWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQog
fQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBl
bmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qs
IExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1z
dXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVy
ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAo
aW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1
cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1
bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUlu
ZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNl
ID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChy
ZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5
KCkpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlz
KTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3Vy
ZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNl
KHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgY29uc3QgTGF5ZXJM
aXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7
ICsrbGF5ZXJJbmRleCkgewpAQCAtNDAwLDQ5ICs1MDAsMjkgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QKICAgICAgICAgICAgIEFTU0VSVChsYXllci0+b3BhY2l0eSgpKTsKICAgICAgICAgICAg
IEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgICAgIGxheWVy
LT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVy
KGxheWVyLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBo
YW5kbGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXpl
KCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExh
eWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5k
ZXhdLmdldCgpOwotICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2Ug
PSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgQVNTRVJUKHJl
bmRlclN1cmZhY2UpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHko
KSk7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpCi0gICAg
ICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgIGlmIChyZW5kZXJTdXJmYWNl
TGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0
ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5y
ZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyU3VyZmFj
ZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNv
bnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXggPCBsYXllckxp
c3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIExheWVyQ2hyb21pdW0qIGxh
eWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotCi0gICAgICAgICAgICBpZiAoQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNlQ29udHJpYnV0ZXNUb1RhcmdldDxMYXll
ckNocm9taXVtPihsYXllciwgcmVuZGVyU3VyZmFjZUxheWVyLT5pZCgpKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGludCBsYXllcklu
ZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1s
YXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNs
ZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsg
c3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5n
ZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qg
c3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVy
ID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAg
ICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJl
bmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA1MDkzMDEzMzgzYmZiMDM0NGIxMGNiODQ0
YWVjYTE3NzhiYWExZTllLi5jZGEwYmY0ZTFhMjg3ZDk2MzljNjMzYTc4OWM2YzFiZjg0ZWMzZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBH
ckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdElt
cGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC03
NSw3ICs3NCw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgc2hvd0ZQU0Nv
dW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkK
ICAgICAgICAgICAgICwgdXNlRGFtYWdlVHJhY2tlcihmYWxzZSkKLSAgICAgICAgICAgICwgcmVm
cmVzaFJhdGUoMCkgeyB9CisgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCisgICAgICAgICAg
ICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRl
UGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04NCw2ICs4NCw3IEBA
IHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAg
ICBib29sIHVzZURhbWFnZVRyYWNrZXI7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOworICAgIGJv
b2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9u
IGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVl
SG9zdApAQCAtMTg0LDkgKzE4NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVl
bEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMo
KTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwogCi0gICAg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0
dXJlVXBkYXRlciYpOworICAgIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNv
bnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3Jh
cGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRl
eHQzRCopOwpAQCAtMTk2LDEyICsyMDAsNTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOwogCiBwcml2YXRlOgorICAgIGNsYXNzIE5lZWRSZXNvdXJjZUhhbmRsZXIgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBO
ZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisgICAgICAgIHZpcnR1YWwgfk5lZWRSZXNvdXJjZUhhbmRs
ZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CisKKyAgICAgICAgaW50IHJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBpbnQgbV9yZXNvdXJjZXM7CisgICAgfTsKKworICAg
IGNsYXNzIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVy
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgICAgICB2aXJ0dWFs
IH5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9h
bGxvY2F0b3I7CisgICAgfTsKKworICAgIGNsYXNzIFBhaW50SGFuZGxlciA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBhaW50SGFu
ZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflBhaW50SGFuZGxlcigpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IExheWVyTGlzdDsKIAotICAgIHZvaWQg
cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwotICAgIHZvaWQgcGFpbnRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgYXBw
ZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmKTsKKyAgICB2b2lkIGFw
cGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJM
aXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsK
IAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHByZXBh
cmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKExheWVy
Q2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1f
Y29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMTcsNyArMjU5LDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKLSAgICBMYXllckxpc3QgbV91cGRhdGVM
aXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0OworICAgIExheWVy
TGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oCmluZGV4IGJiMzc4MDE0N2IxNmMyNmI3NWE3Y2NkMjJhYThiOGZlODRlNzZiYmQu
LmVlZTZkMThjMWU4MDA4ZDgzZjk1M2NhYjQ1YmY0ZDQ0MTY5ZTQ4ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9oCiAKICNpbmNsdWRlICJJbnRSZWN0
LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0
aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29rcwogI2lmbmRlZiBOREVCVUcKICAg
ICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRl
eCA1MDFhMDBjMmIwOWEwZGY5MGRjNjFkY2FmY2ZjYTdkN2M2NjdiMTg1Li5jODk1YTUxNmQzZjYz
Y2Y0NzAxZDFmN2NiYjgzOTAzNThlZjgyNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBA
IC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2NoZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJlZHJhdygp
CiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlcjo6
c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0UmVz
b3VyY2VVcGRhdGVzUGVuZGluZygpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9
CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKQEAgLTk2
LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQogewogICAgIGlmICht
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7
CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2Ns
aWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQo
IkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CiAKQEAgLTEwNSw2ICsxMTEsMTQg
QEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlk
TGVhdmVWU3luYygpOwogfQogCit2b2lkIENDU2NoZWR1bGVyOjp1cGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoKQoreworICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsK
KyAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7CisgICAgbV9zdGF0ZU1h
Y2hpbmUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzKCkpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQg
Q0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKIHsKICAgICAvLyBFYXJseSBv
dXQgc28gd2UgZG9uJ3Qgc3BhbSBUUkFDRV9FVkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nlc3NTY2hl
ZHVsZWRBY3Rpb25zLgpAQCAtMTI1LDYgKzEzOSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nl
c3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rp
b25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAg
ICAgICAgICAgIEFTU0VSVChtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAg
ICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3Vy
Y2VzLCBidXQgdGhlcmUgYXJlIG5vCkBAIC0xMzIsNyArMTQ3LDcgQEAgdm9pZCBDQ1NjaGVkdWxl
cjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgICAgIC8vIGJlZ2luVXBk
YXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQuIElmIG1vcmUgYXJlIHBlbmRpbmcsCiAgICAgICAg
ICAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFjayB0aGUgdXBkYXRlIGF0IHRoZSBuZXh0IGRyYXcu
CiAgICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmluZGV4IDk1ZTk5NWY0NTE4ZWQ2N2NmMzRmNGM3ODg4
NzRmNjkyMmU3ZTI2ZGQuLjgyODIyODEyZTkwMWI5YWJjMzg2NDljNmYxYjRhYmFmNzBkZWM3YzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAtNjYsMTEgKzY2LDEyIEBAIHB1YmxpYzoKICAgICAv
LyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQgZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRl
bHkgaGFwcGVuIGV2ZW4gaWYgd2UgYXJlIG5vdCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNG
b3JjZWRSZWRyYXcoKTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwog
ICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0KICAgICB2b2lkIHNldE1heEZyYW1lc1Bl
bmRpbmcoaW50KTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKTsKICAgICB2b2lk
IGRpZFN3YXBCdWZmZXJzQWJvcnQoKTsKKyAgICB2b2lkIHVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZSgpOwogCiAgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUucmVkcmF3UGVuZGluZygpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxl
clN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggYmRmOGVkYTU1ZjE4OGIz
YjE5NjdiN2MxNGU2ZjBlNWRlOTU4YmZjMC4uMjkzYTM3ZTM0OTRhNGE3ZjVhOTRmYjRhZjljNDdm
MTE0OGI5ODczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmNwcApAQCAtMzcsNyArMzcsOSBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV9uZWVkc0NvbW1pdChmYWxzZSkKICAgICAsIG1fdXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNl
KQotICAgICwgbV92aXNpYmxlKGZhbHNlKSB7IH0KKyAgICAsIG1fdmlzaWJsZShmYWxzZSkKKyAg
ICAsIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0
ZShmYWxzZSkgeyB9CiAKIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewpAQCAtNTEsMTUgKzUzLDEwIEBA
IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFN
RTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVf
RlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAgIGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAg
cmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBj
YXNlIENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGRE
cmF3KQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCisgICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyAmJiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1
cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFD
VElPTl9OT05FOwogCkBAIC04Myw4ICs4MCwxMCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5f
RlJBTUU6CiAgICAgICAgIEFTU0VSVChtX3Zpc2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRl
ID0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVz
b3VyY2VVcGRhdGVzUGVuZGluZyk7CisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTOwogICAgICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7Cisg
ICAgICAgIG1fZnJhbWVDb21wbGV0ZSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBj
YXNlIEFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVM6CkBAIC0xNDQsMTggKzE0Mywy
NiBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAgICAg
bV9uZWVkc0NvbW1pdCA9IHRydWU7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKQoreworICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVu
ZGluZyA9IHRydWU7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJh
bWVDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRF
X0ZSQU1FX0lOX1BST0dSRVNTKTsKLSAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUzsKKyAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKKyAgICBtX2ZyYW1lQ29tcGxldGUgPSB0cnVlOworICAg
IGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiAhbV9yZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKQorICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NP
TU1JVDsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQog
ewogICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMpOwogICAgIEFTU0VSVChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKICAgICBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgaWYgKCFtb3JlUGVuZGlu
ZykKKyAgICBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBtb3JlUGVuZGluZzsKKyAgICBpZiAo
IW1vcmVQZW5kaW5nICYmIG1fZnJhbWVDb21wbGV0ZSkKICAgICAgICAgbV9jb21taXRTdGF0ZSA9
IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDVhMjdiZDI4Yjg4YTc0Y2I2OTRlZDNlNDU1MWQ0
MzM3ZGQ2MWM1MzIuLjBkOWViMTUyN2NkNDIwYWQ0N2YyNzdlMzE0ZWY1NTc5YzEzZDA4MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtNDUsNyArNDUs
NiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENvbW1pdFN0YXRlIHsKICAgICAgICAgQ09NTUlUX1NU
QVRFX0lETEUsCi0gICAgICAgIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAg
ICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRF
X1JFQURZX1RPX0NPTU1JVCwKICAgICAgICAgQ09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNU
X0RSQVcsCkBAIC04OSwxNCArODgsMTcgQEAgcHVibGljOgogICAgIC8vIHRocmVhZCB0byBtYWlu
LgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQoKTsKIAorICAgIC8vIEluZGljYXRlcyB0aGF0IGNv
bXBvc2l0b3IgcmVzb3VyY2VzIHRoYXQgbmVlZCB1cGRhdGluZyBhcmUgcGVuZGluZy4KKyAgICB2
b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5
IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBhbiBBQ1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBm
cm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgYWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFu
ZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2lu
LgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2YgY29tcG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4K
ICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZSgpOwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkg
aW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMK
ICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0
ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOworICAgIHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUg
bV9jb21taXRTdGF0ZTsKQEAgLTEwOSw2ICsxMTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBt
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOwogICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKICAg
ICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZzsKKyAg
ICBib29sIG1fZnJhbWVDb21wbGV0ZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMyYTcxNjY0YWY0M2NkNjRkMDE0ZDI4Yjg0MjY1MDk1
YjIwMy4uOTI3MzM3MGU1MjczMjk0NTIyODFjYTliOWM5YmFiZjU3NGY1M2I1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0NywxNSArMTQ3LDE5IEBAIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJl
YWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3VyY2VzCisgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpCisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0
b3IoKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMoKTsKKwogICAgIC8v
IENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0K
KyAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29t
bWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICAg
ICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
MSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJU
cmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21t
aXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTIwOCw2ICsy
MTIsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJl
ZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1w
bC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX3RleHR1cmVVcGRh
dGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgZWxzZQorICAg
ICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hl
ZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5n
KQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBA
IC0yNzIsNyArMjg0LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRl
ZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJl
VG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKaW5kZXggMGQ1YTRhMmQ4YTUxNmIxZDdiY2Y5OTFhOTllMWM3ODc4OTk0M2Vj
NS4uNzgzYThkYjg1NzQwMTI4YTRkNjAwOWViNTgxODRlMzBjZDAxN2RiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNj
L0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8v
IENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZv
aWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0Nv
bnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1
cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7
CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3Ig
dXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0
ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1
YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3MmFiLi5hNjFjM2JiMzNmNmUyOWNiZWZh
YjczMDAyNTA4NWQxMjA3NTM2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
CisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0
dXJlLmgiCkBAIC0zNywxMSArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAg
ICwgbV9lbnRyeUluZGV4KDApCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkK
IHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NU
ZXh0dXJlVXBkYXRlcigpCkBAIC02NiwyMyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVy
OjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90
IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsK
LSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0g
ICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAg
ICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVu
dHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQorICAgIHdoaWxlIChj
b3VudC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMu
bGFzdCgpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgZW50
cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZUxhc3QoKTsKKyAgICB9CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2Vz
cywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xl
YXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRh
OWE2NDgyOWUyZWZjY2VjMTViYjMwLi5hYjY1OWVjZWVhZDZkY2NmNTZiZDgzMDhhODY0ZDgzNGQw
ZWM4ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoK
LSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1RleHR1cmVV
cGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4ICs0OCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0
dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsK
ICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgs
OCArNTUsNiBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsK
IAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5
SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDhlNzc0MjVlNDQwYTRlZGNmMjlmMjY1YWMzZTllZWZk
YmUyMTVkODcuLmVhNzI5MDc5YzZlODFmZTQxZDZhZjVlM2U4NWZiNTY5Yjk5NDVlODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yODUsNiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJl
YWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisgICAgT3duUHRy
PFVwZGF0ZUVudHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVcGRhdGVFbnRyeSk7CisgICAgZW50
cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7CisgICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJj
ZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkLCBlbnRyeS5yZWxlYXNlKCkpKTsKK30K
Kwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzcz
LDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50
IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVy
cy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgp
OworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkp
IHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZv
ciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAg
ICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIENDUHJveHk6OmltcGxU
aHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5
OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOworICAgIH0KKwor
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOwogCiAgICAgLy8gQmVmb3JlIGFw
cGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVl
c3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVl
ZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAtMzk3LDEz
ICs0MjEsNDAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBz
ZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhl
Y3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIp
OwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKK3sKKyAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25PbkltcGxUaHJlYWQiLCB0aGlz
LCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsK
KyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1w
bCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwor
dm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8
VXBkYXRlRW50cnk+IGVudHJ5KQoreworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3RJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VS
ZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwt
PnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgbV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKK30KKwogdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQobV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJl
ZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1
cm47CkBAIC00MTEsMzYgKzQ2MiwzMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAg
bV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAg
QVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBk
YXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJl
VXBkYXRlcworICAgICAgICAmJiBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpCisgICAgICAgIG1f
c2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CiAKICAg
ICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKIGJv
b2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC5oYXNNb3JlVXBkYXRlcygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFBy
b3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAg
QVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAgICBzdGF0aWMg
Y29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5OwotICAgIG1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCBVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQudXBk
YXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKIH0K
IAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAw
KTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAg
IEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRh
dGVzKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3Jl
VXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsK
KyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAKIAogICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5k
ZXggMWRmMzc0NmM1ZGMwMTM0YTMyNGU0YWM4NjQyMzA0NTI5MzNhOThmYi4uZjEyNDRjMmExOWNk
ZjRiMmNjOTMxZWE1NjY3Y2Y4MGQ0YmY4NjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNp
bmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKyNpbmNs
dWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBp
bXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbklt
cGxUaHJlYWQoKTsKQEAgLTc4LDYgKzgwLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAgIHN0cnVjdCBVcGRh
dGVFbnRyeSB7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVy
ZTsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJlY3QgbV9kZXN0
UmVjdDsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCiAgICAgdm9pZCBi
ZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5U
aW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1p
dEFuZERyYXdGcmFtZSgpOwpAQCAtOTIsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNr
T25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zy
b21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNrKiopOworICAgIHZv
aWQgcHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7
CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50
cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNr
UmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CkBAIC0xMjcsMTAgKzEzNywxMSBAQCBwcml2YXRlOgogCiAgICAgLy8g
U2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxl
dGUuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkOwotICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxk
IHBvc3QgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29s
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgQ0NU
ZXh0dXJlVXBkYXRlciBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggZGQ3NzQ5OTBi
NjNhMTQ5OGJhNDM4YWI2ZjU5MDE3ZDg5YWVjZjRiMy4uNzQ1MmUwNjczYTBmODkyMDc0ZDEyMzY0
YzQyZWJjNjAzYWE4MWE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
ZXR0aW5ncy5oCkBAIC0xMzIsNiArMTMyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEhp
eGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRl
bGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0
dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwCmluZGV4IGExYmNlYmYxMmU1ZmQ3YmRhNGE0M2RlMjM1MDNlZDY5M2UzOGRiY2YuLmVh
M2E1ZjlkYjViMjJhNmY3YjIxYjhmMGJiM2FjYzRiMDI2ZmIwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTAsNiArNTAsNyBAQCBX
ZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAg
LCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3dGUFNDb3Vu
dGVyKGZhbHNlKQogICAgICwgbV9zaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCisgICAgLCBt
X2RlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0K
QEAgLTQ2NSw0ICs0NjYsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VmlzdWFsV29yZE1v
dmVtZW50RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0VmlzdWFsV29y
ZE1vdmVtZW50RW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCBlbmFibGVkKQoreworICAgIG1fZGVsYXlUZXh0dXJl
VXBkYXRlcyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCA3NGI4YWY5Y2Q4NTVi
MmQyYjFmZDk2ODVhOTc2ZTEzZmExZmY2ZDFiLi45MjdlYzY2MGM5MDc2MmM0ZTlhMDE0ZmQ0YzFl
ZmRkNjlhZDVkODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuaApAQCAtMTI0LDEyICsxMjQsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVTY3JvbGxBbmltYXRvcihib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlz
dWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVsYXlU
ZXh0dXJlVXBkYXRlcyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsgfQogCiBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9jb21wb3NpdGVU
b1RleHR1cmVFbmFibGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBib29sIG1f
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlOworICAgIGJvb2wgbV9kZWxheVRleHR1cmVVcGRhdGVzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYTJkZjMzMzk3YjM3ZDgxNWMxY2YxMDEwNzZlNDE3NzIyYzQ1
YjU1YS4uMWM2ZTU1ZDk2NjRlZWIyNTExYzkzMzg3NjMwMWQyZDVhZjM0OTU5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjkwMyw2ICsyOTAzLDgg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJv
b2wgYWN0aXZlKQogICAgICAgICBpZiAoIWNjU2V0dGluZ3MucmVmcmVzaFJhdGUpCiAgICAgICAg
ICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0gZGVmYXVsdFJlZnJlc2hSYXRlOwogCisgICAg
ICAgIGNjU2V0dGluZ3MuZGVsYXlUZXh0dXJlVXBkYXRlcyA9IHNldHRpbmdzKCktPmRlbGF5VGV4
dHVyZVVwZGF0ZXMoKTsKKwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6
OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlKHRoaXMsIGNjU2V0dGluZ3MpOwogICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAppbmRleCBlMjIwODgwODVkN2VkMGQ2NTAyOTVjNjk1Nzk4MDA5ZjcyZTdiZWUz
Li44YTZlZjcxOGU1YzkwM2VlYjRjYmUzNmUyMjJmMzkxMzEwNTNkYmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNs
dWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIk1vY2tXZWJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRv
ci5oIgpAQCAtOTIyLDYgKzkyMywxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFZp
c2libGUsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIE1v
Y2tMYXllckRlbGVnYXRlIDogcHVibGljIENDTGF5ZXJEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBib29sIHByZXNlcnZlczNEKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCkgeyB9Cit9OworCiBjbGFzcyBU
ZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsK
IHB1YmxpYzoKICAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUoQ0NMYXllclRyZWVI
b3N0VGVzdCogdGVzdCkKQEAgLTk0NSwzNyArOTU0LDExNiBAQCBwcml2YXRlOgogCiBjbGFzcyBD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUgKmRlbGVn
YXRlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcoZGVsZWdhdGUpKTsgfQorICAgIGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
Y2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICAgICAgcHVibGljOgorICAgICAgICAgICAgVGV4dHVyZShDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
CisgICAgICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgICAgICAs
IG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7
IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICAgICAgdmlydHVhbCBib29sIG5l
ZWRQcmVwYXJlUmVjdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
dGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPm5lZWRQcmVwYXJlUmVjdCgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cHJlcGFyZVJlY3QoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0
JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1
cmVVcGRhdGVyLT5sYXllcigpLT51cGRhdGVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgcHJpdmF0ZToKKyAgICAgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJl
OworICAgICAgICAgICAgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0
ZXI7CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVy
VGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZyAqbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIobGF5ZXIpKTsKKyAgICAgICAgfQogCi0gICAgaW50
IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9Ci0g
ICAgdm9pZCByZXNldFBhaW50Q29udGVudHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQg
PSAwOyB9CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUodGhpcywgTWFuYWdlZFRl
eHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOworICAgICAgICB9CiAKLSAgICBpbnQgdXBkYXRlQ291
bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9Ci0gICAgdm9pZCByZXNldFVwZGF0ZUNvdW50
KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQorICAgICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRh
dGlvbjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICAg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IC8qIHRleHR1cmVGb3JtYXQgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOworICAgICAgICB9CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4
ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xheWVyLT5wYWludENvbnRlbnRzKCk7CisgICAgICAgIH0KKworICAgICAgICBDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbGF5ZXIoKSB7IHJldHVybiBtX2xheWVy
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbGF5ZXIpIDog
bV9sYXllcihsYXllcikgeyB9CisKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmcqIG1fbGF5ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVn
YXRlKiBkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAgICAgewotICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKTsKLSAgICAgICAgbV9wYWlu
dENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSwgbmVlZFByZXBhcmVSZWN0KSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCop
CiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgbV91cGRhdGVDb3VudCsrOworICAg
ICAgICBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyID0gQ29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZSh0aGlzKTsKICAgICB9CisgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgcGFpbnRDb250ZW50cygpIHsgbV9wYWludENv
bnRlbnRzQ291bnQrKzsgfQorICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBt
X3BhaW50Q29udGVudHNDb3VudDsgfQorCisgICAgdm9pZCBwcmVwYXJlUmVjdCgpIHsgbV9wcmVw
YXJlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgcHJlcGFyZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1f
cHJlcGFyZVJlY3RDb3VudDsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzUmVjdCgpIHsgbV9w
YWludENvbnRlbnRzUmVjdENvdW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250ZW50c1JlY3RDb3Vu
dCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c1JlY3RDb3VudDsgfQorCisgICAgdm9pZCB1cGRh
dGVSZWN0KCkgeyBtX3VwZGF0ZVJlY3RDb3VudCsrOyB9CisgICAgaW50IHVwZGF0ZVJlY3RDb3Vu
dCgpIHsgcmV0dXJuIG1fdXBkYXRlUmVjdENvdW50OyB9CisKKyAgICBpbnQgbmVlZFByZXBhcmVS
ZWN0KCkgeyByZXR1cm4gbV9uZWVkUHJlcGFyZVJlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdh
dGUgKmRlbGVnYXRlKQorICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0
KQogICAgICAgICA6IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQorICAgICAgICAsIG1f
bmVlZFByZXBhcmVSZWN0KG5lZWRQcmVwYXJlUmVjdCkKICAgICAgICAgLCBtX3BhaW50Q29udGVu
dHNDb3VudCgwKQotICAgICAgICAsIG1fdXBkYXRlQ291bnQoMCkKKyAgICAgICAgLCBtX3ByZXBh
cmVSZWN0Q291bnQoMCkKKyAgICAgICAgLCBtX3BhaW50Q29udGVudHNSZWN0Q291bnQoMCkKKyAg
ICAgICAgLCBtX3VwZGF0ZVJlY3RDb3VudCgwKQogICAgIHsKICAgICAgICAgc2V0Qm91bmRzKElu
dFNpemUoMTAsIDEwKSk7CiAgICAgfQogCisgICAgUmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyPiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOworICAgIGJvb2wgbV9uZWVkUHJl
cGFyZVJlY3Q7CiAgICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50OwotICAgIGludCBtX3VwZGF0
ZUNvdW50OworICAgIGludCBtX3ByZXBhcmVSZWN0Q291bnQ7CisgICAgaW50IG1fcGFpbnRDb250
ZW50c1JlY3RDb3VudDsKKyAgICBpbnQgbV91cGRhdGVSZWN0Q291bnQ7CiB9OwogCiAvLyBMYXll
ciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxkIG5vdCBwcmV2ZW50IGNvbXBvc2l0
b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRlZCBkdXJpbmcgY29tbWl0LgpAQCAtOTgzLDcg
KzEwNzEsNyBAQCBjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSA6IHB1Ymxp
YyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0
T3BhY2l0eUNoYW5nZSgpCiAgICAgICAgIDogbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKHRo
aXMpCi0gICAgICAgICwgbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSkpCisg
ICAgICAgICwgbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpjcmVhdGUoJm1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSwgdHJ1ZSkpCiAg
ICAgewogICAgIH0KIApAQCAtMTAwMiwxMyArMTA5MCwxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRp
cnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgLy8gcGFpbnRDb250
ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCiAgICAgICAgIEVYUEVDVF9FUSgx
LCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKIAotICAgICAgICAv
LyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhl
IHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHko
KS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0Nv
dW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50
KCkpOworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgp
LgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50
KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNS
ZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRl
bnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENv
bnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnVwZGF0ZVJlY3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5
ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5j
bGVhcigpOwpAQCAtMTAyNCw0ICsxMTE3LDQ5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0
T3BhY2l0eUNoYW5nZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAor
Ly8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGVuIG5lZWRQcmVwYXJlUmVj
dCgpIHJldHVybnMgZmFsc2UuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVj
dCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJl
ZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCgpCisgICAgICAgIDogbV91cGRhdGVDaGVja0xheWVyKENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUs
IGZhbHNlKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisg
ICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNr
TGF5ZXIpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0KEludFNpemUoMTAs
IDEwKSk7CisKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKikKKyAgICB7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRh
dGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CisKKyAgICAgICAgLy8gcHJlcGFy
ZVJlY3QoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCisgICAgICAgIEVYUEVDVF9FUSgw
LCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8g
dXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8v
IGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1Rf
RVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAg
ICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgTW9ja0xheWVyRGVsZWdhdGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQ
dHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IG1fdXBkYXRlQ2hlY2tM
YXllcjsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCwgcnVu
TXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCBmMzQ2OTc3NjY2ZDJjNGRmZjQ3YjQ4ODFmYWIx
YjE2ZDNmOGNkN2IyLi5kYmMzN2RkOTAwYzY2MDVlZmJhYmU3MTM3NmM4ZjQ0OGQ2OTg0YjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0zNyw3ICszNyw2IEBAIG5hbWVzcGFjZSB7CiAK
IGNvbnN0IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSBhbGxDb21taXRTdGF0
ZXNbXSA9IHsKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUs
Ci0gICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9H
UkVTUywKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5H
X1JFU09VUkNFUywKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JF
QURZX1RPX0NPTU1JVCwKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcKQEAgLTYzLDYgKzYyLDEyIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoYm9vbCBiKSB7IG1fdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcgPSBiOyB9CiAgICAgYm9vbCB1cGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7IH0KKwor
ICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyhib29sIGIpIHsgbV9yZXNvdXJjZVVw
ZGF0ZXNQZW5kaW5nID0gYjsgfQorICAgIGJvb2wgcmVzb3VyY2VVcGRhdGVzUGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZzsgfQorCisgICAgdm9pZCBzZXRG
cmFtZUNvbXBsZXRlKGJvb2wgYikgeyBtX2ZyYW1lQ29tcGxldGUgPSBiOyB9CisgICAgYm9vbCBm
cmFtZUNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUNvbXBsZXRlOyB9CiB9OwogCiBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFt
ZUlmTmVlZGVkKQpAQCAtOTcsNyArMTAyLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5lZWRlZCkKICAgICAgICAgU3RhdGVN
YWNoaW5lIHN0YXRlOwogICAgICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZS
QU1FKTsKLSAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgICAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Rh
dGUubmVlZHNDb21taXQoKSk7CiAgICAgfQogfQpAQCAtMjUxLDYgKzI1Niw4IEBAIFRFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9m
VXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0
VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBz
dGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIGJlZ2luIHVw
ZGF0ZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oKSk7CkBAIC0yNjcsNyArMjc0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBFbmQgdXBkYXRlIHdpdGggbm8gbW9yZSB1cGRhdGVz
IHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFs
c2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAg
c3RhdGUuZGlkTGVhdmVWU3luYygpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KQEAgLTI3OSw2ICsy
ODYsOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9S
ZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNl
KTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5k
aW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBW
ZXJpZnkgdGhlIHVwZGF0ZSBiZWdpbnMsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAg
ICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwpAQCAtMjk1LDcgKzMwNCw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVw
ZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9O
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEFjayB0aGUgdXBkYXRlIHdpdGggbW9y
ZSBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRy
dWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKIAogICAg
IC8vIFZlcmlmeSB3ZSB1cGRhdGUgbW9yZSwgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4K
ICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zMDUsNyArMzE0LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09m
VXBkYXRlcykKIAogICAgIC8vIEJlZ2luIGFub3RoZXIgdXBkYXRlLCB3aGlsZSBpbnNpZGUgdnN5
bmMuIEFuZCwgaXQgdXBkYXRpbmcuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gTWFrZSBzdXJlIHdl
IGNvbW1pdCwgaW5kZXBlbmRlbnQgb2YgdnN5bmMuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygp
OwpAQCAtMzIxLDYgKzMzMCw5IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldFJlc291
cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVl
KTsKKwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJl
Z2luIGFuIHVwZGF0ZS4KQEAgLTMzOCw3ICszNTAsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAg
ICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAKICAgICAvLyBGaW5pc2ggdXBkYXRlIGJ1dCBsZWF2
ZSBtb3JlIHJlc291cmNlcyBwZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlKHRydWUpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMsIHdlIHVw
ZGF0ZSBzb21lIG1vcmUuCiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtMzUyLDcgKzM2
NCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRo
UmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKICAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwotICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0
ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogCiAgICAgLy8gVmVyaWZ5IHdl
IGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlCiAgICAgc3RhdGUuZGlkTGVhdmVWU3lu
YygpOwpAQCAtMzcwLDcgKzM4MiwxMSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4K
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0
QWN0aW9uKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZSB0
aGF0IG5lZWQgdXBkYXRlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywg
d2hpbGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhlciBjb21taXQuCiAgICAg
c3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CkBAIC0zODIsNyArMzk4LDcgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3Vy
Y2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIEV4
cGVjdCB0byBjb21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0ZS4KQEAgLTQxMywxMCArNDI5
LDE0IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlKQog
CiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwog
ICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwog
CisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKICAg
ICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRlLmJl
Z2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7
CkBAIC00MjQsNyArNDQ0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RGdWxsQ3ljbGUpCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdh
biBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01N
SVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTQ1OSw3ICs0NzksNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5i
ZXR3ZWVuKQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dS
RVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCkBAIC00NjcsNiArNDg3LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAgICAgc3Rh
dGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAorICAgIC8vIFJlY2Vp
dmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUg
c2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNDc0LDcgKzQ5
OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0
aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhl
IHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0g
ICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0
YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTUxNiwxMyArNTQwLDE3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1p
ZENvbW1pdCkKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZSB3aGlsZSB2aXNpYmxlLgogICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1p
dCgpKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVjb21lIGludmlzaWJsZQogICAgIHN0
YXRlLnNldFZpc2libGUoZmFsc2UpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBz
dGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1l
IGZpbmlzaGVkCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTUzMCw3ICs1NTgsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAKICAgICAv
LyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShm
YWxzZSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24o
KSk7CiAKQEAgLTU1MCw0ICs1NzgsNjUgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKK1RF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9SZXNvdXJjZVVwZGF0ZXMpCit7
CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisK
KyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0Nv
bW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBm
cmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwor
ICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
CisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0
ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3ROb1Jlc291cmNlUGVuZGluZykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7Cisg
ICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQg
Y29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09V
UkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRz
Q29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgor
ICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VT
LCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUg
dXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAg
IHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKKworICAgIC8vIFRlbGwg
dGhlIHNjaGVkdWxlciBhbm90aGVyIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQuCisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7CisKKyAgICAvLyBObyBwZW5kaW5nIHJlc291cmNlcyB0byB1cGRhdGUuCisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4
dEFjdGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNo
ZWQuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5j
b21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAppbmRleCBiNThlZDJjNTZj
MjhkZjc4NWNjOWMxMTY5ZDY3MDFjYzcwZGZmYmQ2Li5mMzJiMGI1MDY0MWYxYjQ2MzQ1NTRjNGI3
MWNmM2U3YTU2ZGM0OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwCkBAIC03NiwxMiArNzYsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclRl
c3QsIFJlcXVlc3RDb21taXQpCiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAvLyBTaW5jZSwg
aGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsCi0gICAgLy8gYmVnaW5GcmFt
ZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuCi0gICAgLy8gY29tbWl0
CisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRlIHNob3VsZCBjb21taXQgaW1tZWRpYXRlbHkuCiAg
ICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xp
ZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRh
dGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJz
Y2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEo
MSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAg
IC8vIFRpY2sgc2hvdWxkIGRyYXcuCkBAIC0xMTIsMTIgKzExMCwxMCBAQCBURVNUKENDU2NoZWR1
bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkKICAgICBzY2hlZHVsZXItPnNl
dE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBp
cyBzZXQgdG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcwotICAgIC8vIG5lZWRlZCwgYmVn
aW5GcmFtZUNvbXBsZXRlIHNob3VsZCB1cGRhdGVNb3JlUmVzb3VyY2VzLCB0aGVuIGNvbW1pdCwg
dGhlbgotICAgIC8vIGJlZ2luIGFub3RoZXIgZnJhbWUuCisgICAgLy8gbmVlZGVkLCBiZWdpbkZy
YW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgogICAg
IHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VRKDIsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgRVhQRUNUX0VRKDEs
IGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9u
Q29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAv
LyBUaWNrIHNob3VsZCBkcmF3IGJ1dCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCkBAIC0yMzMs
NCArMjI5LDUyIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0SW5zaWRlRHJh
dykKICAgICBFWFBFQ1RfRkFMU0Uoc2NoZWR1bGVyLT5yZWRyYXdQZW5kaW5nKCkpOwogfQogCitU
RVNUKENDU2NoZWR1bGVyVGVzdCwgVXBkYXRlUmVzb3VyY2VzKQoreworICAgIEZha2VDQ1NjaGVk
dWxlckNsaWVudCBjbGllbnQ7CisgICAgUmVmUHRyPEZha2VDQ1RpbWVTb3VyY2U+IHRpbWVTb3Vy
Y2UgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGltZVNvdXJjZSgpKTsKKyAgICBPd25QdHI8Q0NTY2hl
ZHVsZXI+IHNjaGVkdWxlciA9IENDU2NoZWR1bGVyOjpjcmVhdGUoJmNsaWVudCwgYWRvcHRQdHIo
bmV3IENDRnJhbWVSYXRlQ29udHJvbGxlcih0aW1lU291cmNlKSkpOworICAgIHNjaGVkdWxlci0+
c2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFNldE5lZWRzQ29tbWl0IHNob3VsZCBiZWdpbiB0
aGUgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOworICAgIEVYUEVDVF9F
USgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFj
dGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsK
KworICAgIC8vIE5vdyBzZXROZWVkc0NvbW1pdCBhZ2Fpbi4gQ2FsbGluZyBoZXJlIG1lYW5zIHdl
IG5lZWQgYSBzZWNvbmQgZnJhbWUuCisgICAgc2NoZWR1bGVyLT5zZXROZWVkc0NvbW1pdCgpOwor
CisgICAgLy8gVXBkYXRlIHBlbmRpbmcgcmVzb3VyY2VzLgorICAgIGNsaWVudC5zZXRIYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzKHRydWUpOworICAgIHNjaGVkdWxlci0+c2V0UmVzb3VyY2VVcGRhdGVz
UGVuZGluZygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBF
WFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQu
YWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIENsaWVudCBmaW5pc2hl
ZCB1cGRhdGUgYnV0IGhhdmUgbm90IHlldCB0b2xkIHNjaGVkdWxlci4KKyAgICBjbGllbnQuc2V0
SGFzTW9yZVJlc291cmNlVXBkYXRlcyhmYWxzZSk7CisKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxl
dGUgc2hvdWxkIG5vdCBjb21taXQsIGFzIGFuIHVwZGF0ZSBpcyBwZW5kaW5nLgorICAgIHNjaGVk
dWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDAsIGNsaWVudC5udW1B
Y3Rpb25zKCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gU2luY2UsIGhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBjb21taXQgaXMKKyAg
ICAvLyBuZWVkZWQsIHVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpIHNob3VsZCBjb21taXQs
IHRoZW4gYmVnaW4KKyAgICAvLyBhbm90aGVyIGZyYW1lLgorICAgIHNjaGVkdWxlci0+dXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rp
b25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50
LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBUaWNrIHNob3VsZCBk
cmF3IGJ1dCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCisgICAgdGltZVNvdXJjZS0+dGljaygp
OworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigx
KSk7CisgICAgY2xpZW50LnJlc2V0KCk7Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYTkx
OGY3ZDU3ZjRiODg1NTRmZTZjOTc3YTI4MjJkYmQyNWFkYWJjOC4uMThmMDNlMDJlMGE1NTIwYjlk
NDlhNTQwZjk3OWYyOWEyZmE5NWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNyw5ICsyNyw5IEBA
CiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9y
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KIApAQCAtMzgsMjAgKzM4LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVz
cGFjZSB7CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxv
Y2F0b3IgeworY2xhc3MgRmFrZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNv
bnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiB9OwogCiBjbGFzcyBGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKICAgICBj
bGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0
dXJlKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9Ci0gICAgICAg
IHZpcnR1YWwgflRleHR1cmUoKSB7IH0KKyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFs
IE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgfTsKIAogICAgIEZha2VMYXll
clRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC02MCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVy
ZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUo
TWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOyB9CiAgICAgdmlydHVhbCBPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIEJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2
aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsg
cmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFNpemUmLCBpbnQsIGZsb2F0KSB7IH0KIH07CiAKIGNsYXNzIEZha2VDQ1RpbGVkTGF5ZXJJbXBs
IDogcHVibGljIENDVGlsZWRMYXllckltcGwgewpAQCAtOTgsNiArMTAxLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCk7CiAgICAg
fQogCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgewor
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMocmVjdCk7CisgICAgfQor
CiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJl
dHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9CiAKIHByaXZhdGU6CkBAIC0xMTksMTMgKzEyNywxMyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDAp
KTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxl
ciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGlu
dmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTEzOCw3ICsxNDYsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRp
bGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENv
bnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGls
ZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118058</attachid>
            <date>2011-12-06 09:04:00 -0800</date>
            <delta_ts>2011-12-07 07:26:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>parallel-paint-upload.diff</filename>
            <type>text/plain</type>
            <size>124828</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZGQ5MzE5MS4uMDc5MDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkwLDEz
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3Jt
Q2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVy
KCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRl
ci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwot
Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IDk3NTUyMmMuLjJlOTFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFs
IGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGIwYzRlMDcuLmUwNGYxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVy
Q2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29sIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgICYmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKQogewogICAgIGlmICghbV9uZWVkc0Rpc3BsYXkgfHwgIWRyYXdzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAgdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHQKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCit2b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRl
eHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9zdCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2Li5lODZhNjFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2IEBA
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFjY2Vs
ZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGljIENh
bnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExheWVy
Q2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFs
IH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRl
eHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXllckNo
cm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMy
RExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwg
fkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExheWVy
Q2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9j
b250ZXh0OworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRl
eCA1ZmE2Nzg1Li5jNjFlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcApAQCAtMzYsNiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9vbCBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQorewor
ICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX3Rl
eHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRlcikK
IHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtY29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMy4uODg2ZDEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiArMzAs
NyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJv
bWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4K
IGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUo
KTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4g
bV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVj
dCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29u
c3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBl
eHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisK
ICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7Cisg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2FlYzNlYi4uMzhlNjQzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hyb21p
dW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24o
KTsKIApAQCAtMTA4LDYgKzEwOCwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4uYzVl
OWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCBmMmQ3ZTJkLi45ZWVmYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAgICAg
fkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2FudmFz
KiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2LDEy
IEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1IGNh
bnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0KCk7
CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNl
CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJl
IFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAg
IEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2Nl
bGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7
CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52
YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBz
byB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAg
ICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAv
LyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgot
ICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmlu
aXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xp
cFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2Yg
Y29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJl
Y3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNs
YXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSAr
IGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNo
IFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0
aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAwNmI2MmQx
Li5hOGZmODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBA
CiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2Ns
YXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCA3MGFmZGQwLi5mOWQ4Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQ5LDE5ICs0OSwzNCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
ICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsK
IApAQCAtODUsMTUgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFn
ZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
LQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1h
Z2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2Ug
dGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBj
bGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlv
bigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNl
dFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3Qs
IGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAg
LTE2Nyw3ICsxODAsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1h
Z2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFz
QWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
CiB7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIt
PnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggNWZlNGYyNi4uZjZlYmM4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgp
OworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgdmlydHVh
bCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50
cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVlMDVjMTUuLmZkMDQzZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRl
eHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQ
cm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAt
NTMsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBDQ0xheWVyRGVsZWdhdGUgewpAQCAtMTYwLDggKzE2
MCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8g
YmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3
c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
ciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBi
aW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5k
ZXggYmY3NWNmMi4uMjI2YmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
MjksNyArMjksNiBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5j
bHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zOCw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IEludFNpemU7CitjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7
CiBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKIApAQCAtNDgsMTQgKzQ4LDIzIEBAIHB1YmxpYzoKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAq
LykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSA9IDA7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRl
eHR1cmUpIHsgfQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyBy
ZXR1cm4gMDsgfQogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiBtX3RleHR1cmU7CisgICAgICAgIC8vIHByZXBhcmVSZWN0KCkgd2lsbCBvbmx5IGJlIGNhbGxl
ZCBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBzeW5jaHJvbm91
c2x5IG9uIHRoZSBpbXBsIHRocmVhZCB3aXRoIHNhZmUgYWNjZXNzIHRvIG1haW4gdGhyZWFkIHJl
c291cmNlcy4KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8s
IGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5z
IG9uIHRoZSBtYWluIHRocmVhZCBhZnRlciBjYWxscyB0byBuZWVkUHJlcGFyZVJlY3QoKSBhbmQg
cHJlcGFyZVJlY3QoKSBidXQgYmVmb3JlIHVwZGF0ZVJlY3QoKS4KKyAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsg
fQorICAgICAgICAvLyBUaGlzIHJ1bnMgYXN5bmNocm9ub3VzbHkgb24gdGhlIGltcGwgdGhyZWFk
LiBBY2Nlc3MgdG8gbWFpbiB0aHJlYWQgcmVzb3VyY2VzIGlzIHVuc2FmZS4KKyAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgIH07CisKKyAgICBj
bGFzcyBIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkhhbmRsZXIoKSB7
IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyKCkgeyB9
CkBAIC03OCw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMg
dGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUg
Zm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyBy
ZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0
aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2Fs
ZSAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
LyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyog
Ym9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAppbmRleCBjYmRmZTAz
Li5lZTE4MDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCkBAIC04MCwxMSArODAsMTYgQEAg
dm9pZCBNYW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3RleHR1cmVNYW5hZ2VyLT51
bnByb3RlY3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNT
RVJUKG1fdGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOwogICAgIGlmICghbV90
ZXh0dXJlSWQpCiAgICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2Nh
dGVUZXh0dXJlKGFsbG9jYXRvciwgbV90b2tlbik7Cit9CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6
OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IpCit7CisgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7
CiAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fdGV4dHVyZUlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggNGQ0MzgwOS4uZDcz
Yzg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTWFuYWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAg
IH0KIAorICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciopOwogICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1MzdlMTM3Li41
NWExZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsK
IH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVT
aXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9p
ZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50
IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBTa0NhbnZh
cyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCks
IGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3Jt
Q29udGV4dChjYW52YXMpOwogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsK
ICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwot
ICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNT
Y2FsZSk7CisgICAgcGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNT
Y2FsZSk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNDQwZjhi
MC4uYWVmYmZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2
b2lkIGRyYXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcAppbmRleCA5NjhkOWUzLi41MmQxNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTE3MiwxMCArMTcyLDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpjcmVhdGVUaWxlcihDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9y
ZGVyCiAgICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUobV90aWxlU2l6ZSwg
Ym9yZGVyVGV4ZWxPcHRpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
IHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewogICAgIC8vIFBh
aW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBt
YXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgotICAg
IGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFt
X3RpbGVyLT5udW1UaWxlcygpKQorICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVw
ZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQs
IGJvdHRvbTsKQEAgLTIxNSwxMSArMjE1LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAg
ICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFp
bnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAg
IHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJl
Y3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwogfQogCiB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxp
bmdPcHRpb24pCkBAIC0zOTUsMTUgKzM5Myw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgbV9yZXF1ZXN0
ZWRVcGRhdGVSZWN0ID0gY29udGVudFJlY3Q7CiAKICAgICBtX3BhaW50UmVjdCA9IG1fdGlsZXIt
PmxheWVyUmVjdFRvQ29udGVudFJlY3QoZGlydHlMYXllclJlY3QpOwotICAgIGlmIChkaXJ0eUxh
eWVyUmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRv
IFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qg
b2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0
aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8gSG93ZXZlciwgd2UgY2Fu
J3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUg
cGFpbnQgZmluaXNoZXMsCi0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJl
IHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KLSAg
ICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkp
OwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90
aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2Nh
bGUoKSk7CiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVk
VXBkYXRlUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGludCBqID0g
dG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9
IHJpZ2h0OyArK2kpIHsKQEAgLTQyOCwxMyArNDIwLDI1IEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAg
ICAgICB0aWxlLT5jbGVhckRpcnR5KCk7CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVj
dCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+
cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQoreworICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0
eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50
byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0
IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8g
dGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNh
bid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhl
IHBhaW50IGZpbmlzaGVzLAorICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVy
ZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisg
ICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigp
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2Fs
ZSgpKTsKKworICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVj
dFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggMjhl
N2QxZC4uZTQ3ODE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2
b2lkIHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1Rv
KENDTGF5ZXJJbXBsKik7CkBAIC03NSw4ICs3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBT
ZXQgaW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0
ZSgpLgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
OwotICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50
ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVy
ZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29udGVudHMg
bmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0
LgorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtOTMs
NyArOTUsNyBAQCBwcml2YXRlOgogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkg
Y29uc3Q7CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAv
LyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0
d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3Qg
bV9yZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJl
VG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFy
ZWEKICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSByZS1wYWludGVkIGJ5IFdl
YktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVjOTNmMTYuLjdiZWM3
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNDAsMTEgKzQwLDYxIEBA
CiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZVBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBt
X3RleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fbWFwcGVkQnVmZmVyKDApCit7Cit9CisKK1ZpZGVv
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7CisgICAg
QVNTRVJUKCFtX21hcHBlZEJ1ZmZlcik7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAq
LywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgSW50U2l6ZSBkaW1lbnNp
b25zID0gbV90ZXh0dXJlLT5zaXplKCk7CisKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0
ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpKTsKKyAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWln
aHQoKSwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CisKKyAgICBpZiAoIW1fbWFw
cGVkQnVmZmVyKSB7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFnZXI6
Om1lbW9yeVVzZUJ5dGVzKGRpbWVuc2lvbnMsIG1fdGV4dHVyZS0+Zm9ybWF0KCkpOworICAgICAg
ICBtX2J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOworICAg
IH0KKworICAgIG1fdGV4dHVyZS0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7
Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6ZGF0YVJlY3Qo
Y29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5h
Z2VyOjptZW1vcnlVc2VCeXRlcyhtX3RleHR1cmUtPnNpemUoKSwgbV90ZXh0dXJlLT5mb3JtYXQo
KSk7CisKKyAgICBpZiAobV9tYXBwZWRCdWZmZXIpCisgICAgICAgIG1lbWNweShtX21hcHBlZEJ1
ZmZlciwgZGF0YSwgYnVmZmVyU2l6ZSk7CisgICAgZWxzZQorICAgICAgICBtZW1jcHkobV9idWZm
ZXIuZ2V0KCksIGRhdGEsIGJ1ZmZlclNpemUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RS
ZWN0ICovKQoreworICAgIEFTU0VSVChtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBjb250
ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJl
LT50ZXh0dXJlSWQoKSk7CisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIEV4dGVu
c2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hy
b21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBHTEMoY29udGV4dCwg
ZXh0ZW5zaW9ucy0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0obV9tYXBwZWRCdWZmZXIpKTsK
KyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIEludFNp
emUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgpOworICAgICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
MCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBtX3RleHR1cmUt
PmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbV9idWZmZXIuZ2V0
KCkpKTsKKyAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8
VmlkZW9MYXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVs
ZWdhdGUqIGRlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7CkBAIC01
OCw2ICsxMDgsNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdgogICAgICwgbV9wcm92aWRlcihw
cm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCiAgICAgLCBtX25hdGl2ZVRleHR1cmVJZCgwKQor
ICAgICwgbV9mcmFtZSgwKQogewogfQogCkBAIC03NSwxNyArMTI2LDE5IEBAIHZvaWQgVmlkZW9M
YXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsKICAgICBMYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBsYW5l
czsgKytpKQotICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOworICAgICAg
ICBtX3RleHR1cmVzW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKQogeworICAgIG1fZnJhbWUgPSAwOworCiAgICAgaWYgKCFtX2RlbGVn
YXRlIHx8ICFtX3Byb3ZpZGVyIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSAmJiB0ZXh0dXJlc1ZhbGlkKCkpIHsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKLSAg
ICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1
cmUuZ2V0KCk7CisgICAgICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1tw
bGFuZV0tPnRleHR1cmUoKTsKICAgICAgICAgICAgIGlmICghdGV4LT5yZXNlcnZlKHRleC0+c2l6
ZSgpLCB0ZXgtPmZvcm1hdCgpKSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMyw4ICsxNzYsMTAgQEAgdm9pZCBWaWRl
b0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFsbG9jYXRl
IHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBhbHJlYWR5LCBv
cgotICAgIC8vIHJlYWxsb2NhdGUgdGV4dHVyZXMgdGhhdCBhcmUgdGhlIHdyb25nIHNpemUgZm9y
IHRoZSBmcmFtZS4KKyAgICBpZiAoZnJhbWUtPnBsYW5lcygpID4gTWF4UGxhbmVzKQorICAgICAg
ICBDUkFTSCgpOworCisgICAgLy8gUmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkg
YXJlIG5vdCByZXNlcnZlZCBhbHJlYWR5LgogICAgIGJvb2wgdGV4dHVyZXNSZXNlcnZlZCA9IHJl
c2VydmVUZXh0dXJlcyhmcmFtZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgaWYgKCF0ZXh0dXJlc1Jl
c2VydmVkKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKQEAgLTEzMiwyMSArMTg3LDM0
IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBVcGRhdGUgdGV4dHVyZSBwbGFuZXMuCi0gICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7
IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7Ci0gICAgICAgIFRleHR1cmUmIHRl
eHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKLSAgICAgICAgQVNTRVJUKHRleHR1cmUubV90ZXh0
dXJlKTsKLSAgICAgICAgQVNTRVJUKGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKSA9
PSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpKTsKLSAgICAgICAgdXBkYXRlVGV4dHVyZShjb250
ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpLCB0ZXh0dXJlLCBmcmFtZS0+ZGF0YShwbGFuZSkpOwot
ICAgIH0KLQorICAgIG1fZnJhbWUgPSBmcmFtZTsKICAgICBtX3BsYW5lcyA9IGZyYW1lLT5wbGFu
ZXMoKTsKLSAgICBBU1NFUlQobV9wbGFuZXMgPD0gTWF4UGxhbmVzKTsKIAogICAgIG1fdXBkYXRl
UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJvdW5kcygpKTsKICAgICBtX25lZWRzRGlz
cGxheSA9IGZhbHNlOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAvLyBDb3B5IHBsYW5lcyB0
byBtYXBwZWQgYnVmZmVycy4KKyAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBt
X2ZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0tPmRh
dGFSZWN0KG1fZnJhbWUtPmRhdGEocGxhbmUpKTsKKworICAgIG1fcHJvdmlkZXItPnB1dEN1cnJl
bnRGcmFtZShtX2ZyYW1lKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikK
K3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAodW5zaWdu
ZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7CisgICAgICAgIEludFJl
Y3QgcmVjdChJbnRQb2ludCgpLCBtX3RleHR1cmVzW3BsYW5lXS0+dmlzaWJsZVNpemUoKSk7Cisg
ICAgICAgIGhhbmRsZXIuaGFuZGxlKG1fdGV4dHVyZXNbcGxhbmVdLmdldCgpLCByZWN0LCByZWN0
KTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1Rv
KENDTGF5ZXJJbXBsKiBsYXllcikKQEAgLTE1NywxMSArMjI1LDExIEBAIHZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB2aWRl
b0xheWVyLT5zZXRTa2lwc0RyYXcobV9za2lwc0RyYXcpOwogICAgIHZpZGVvTGF5ZXItPnNldEZy
YW1lRm9ybWF0KG1fZnJhbWVGb3JtYXQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3BsYW5lczsgKytpKSB7Ci0gICAgICAgIGlmICghbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUpIHsK
KyAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ldKSB7CiAgICAgICAgICAgICB2aWRlb0xheWVyLT5z
ZXRTa2lwc0RyYXcodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLT50ZXh0
dXJlSWQoKSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnNpemUoKSwgbV90ZXh0dXJlc1tpXS5t
X3Zpc2libGVTaXplKTsKKyAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCBtX3RleHR1
cmVzW2ldLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLT50ZXh0dXJlKCkt
PnNpemUoKSwgbV90ZXh0dXJlc1tpXS0+dmlzaWJsZVNpemUoKSk7CiAgICAgfQogICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fcGxhbmVzOyBpIDwgTWF4UGxhbmVzOyArK2kpCiAgICAgICAgIHZpZGVv
TGF5ZXItPnNldFRleHR1cmUoaSwgMCwgSW50U2l6ZSgpLCBJbnRTaXplKCkpOwpAQCAtMTcyLDEw
ICsyNDAsOCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9z
dChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAgICAgaWYgKGhvc3QgJiYgbGF5ZXJUcmVlSG9z
dCgpICE9IGhvc3QpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBsYW5l
czsgKytpKSB7Ci0gICAgICAgICAgICBtX3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUgPSBJbnRT
aXplKCk7Ci0gICAgICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSA9IE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKLSAgICAgICAgfQor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpCisgICAgICAg
ICAgICBtX3RleHR1cmVzW2ldID0gVXBkYXRlclRleHR1cmU6OmNyZWF0ZShNYW5hZ2VkVGV4dHVy
ZTo6Y3JlYXRlKGhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSkpOwogICAgIH0KIAogICAg
IExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoaG9zdCk7CkBAIC0xOTksOCArMjY1LDEw
IEBAIEdDM0RlbnVtIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChj
b25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyCiAKIGJvb2wgVmlkZW9MYXllckNocm9taXVtOjp0
ZXh0dXJlc1ZhbGlkKCkKIHsKKyAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsKKwogICAgIGZv
ciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7Ci0gICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUuZ2V0
KCk7CisgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS0+dGV4
dHVyZSgpOwogICAgICAgICBpZiAoIXRleC0+aXNWYWxpZCh0ZXgtPnNpemUoKSwgdGV4LT5mb3Jt
YXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjE3LDE5ICsyODUs
MjAgQEAgYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcyhjb25zdCBWaWRl
b0ZyYW1lQ2hyb21pdW0qIGZyYW1lLCBHQzNEZW4KIAogICAgIGZvciAodW5zaWduZWQgcGxhbmUg
PSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewogICAgICAgICBJbnRTaXpl
IHJlcXVpcmVkVGV4dHVyZVNpemUgPSBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSk7
CisgICAgICAgIEFTU0VSVChtX3RleHR1cmVzW3BsYW5lXSk7CisgICAgICAgIEFTU0VSVChtX3Rl
eHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVuZGVyZXIg
Y2Fubm90IGhhbmRsZSB0aGlzIGxhcmdlIG9mIGEgdGV4dHVyZSwgcmV0dXJuIGZhbHNlLgogICAg
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUgaW1w
bGVtZW50ZWQuCiAgICAgICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplLmlzWmVybygpIHx8IHJl
cXVpcmVkVGV4dHVyZVNpemUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplIHx8IHJlcXVpcmVkVGV4
dHVyZVNpemUuaGVpZ2h0KCkgPiBtYXhUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBpZiAoIW1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0ubV90
ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkKLSAgICAgICAgICAgIG1fdGV4
dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBs
YW5lKTsKKyAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCktPnNpemUoKSAh
PSByZXF1aXJlZFRleHR1cmVTaXplKSB7CisgICAgICAgICAgICBJbnRTaXplIHZpc2libGVTaXpl
ID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7CisgICAgICAgICAgICBtX3RleHR1
cmVzW3BsYW5lXS0+c2V0VmlzaWJsZVNpemUodmlzaWJsZVNpemUpOworICAgICAgICB9CiAKLSAg
ICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkVGV4dHVy
ZVNpemUsIHRleHR1cmVGb3JtYXQpOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVy
ZSgpLT5yZXNlcnZlKHJlcXVpcmVkVGV4dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOwogICAgIH0K
IAogICAgIHJldHVybiB0cnVlOwpAQCAtMjU5LDI4ICszMjgsNiBAQCBJbnRTaXplIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSog
ZnJhbWUsCiAgICAgcmV0dXJuIEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVpZ2h0KTsK
IH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZSYgdGV4
dHVyZSwgY29uc3Qgdm9pZCogZGF0YSkgY29uc3QKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0g
ICAgQVNTRVJUKHRleHR1cmUubV90ZXh0dXJlKTsKLQotICAgIHRleHR1cmUubV90ZXh0dXJlLT5i
aW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCi0gICAgR0MzRGVudW0gZm9ybWF0ID0g
dGV4dHVyZS5tX3RleHR1cmUtPmZvcm1hdCgpOwotICAgIEludFNpemUgZGltZW5zaW9ucyA9IHRl
eHR1cmUubV90ZXh0dXJlLT5zaXplKCk7Ci0KLSAgICB2b2lkKiBtZW0gPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSktPm1hcFRleFN1
YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwg
ZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05M
WSk7Ci0gICAgaWYgKG1lbSkgewotICAgICAgICBtZW1jcHkobWVtLCBkYXRhLCBkaW1lbnNpb25z
LndpZHRoKCkgKiBkaW1lbnNpb25zLmhlaWdodCgpKTsKLSAgICAgICAgR0xDKGNvbnRleHQsIHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
KS0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0obWVtKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgLy8gSWYgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNIGZhaWxzLCB0aGVuIGRvIHRoZSBzbG93
ZXIgdGV4U3ViSW1hZ2UyRAotICAgICAgICAvLyB1cGxvYWQuIFRoaXMgZG9lcyB0d2ljZSB0aGUg
Y29waWVzIGFzIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwgb25lCi0gICAgICAgIC8vIGluIHRo
ZSBjb21tYW5kIGJ1ZmZlciBhbmQgYW5vdGhlciB0byB0aGUgdGV4dHVyZS4KLSAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQoKSwg
Zm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0YSkpOwotICAgIH0K
LX0KLQogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VQcm92aWRlcigpCiB7CiAgICAg
bV9wcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDUxNmM4ZDMu
LjM1MWY4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0MywzMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMgYSBWaWRlbyBl
bGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0g
ewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0
dXJlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJU
ZXh0dXJlKHRleHR1cmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJU
ZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsg
cmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJl
cGFyZVJlY3QoKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZvaWQgZGF0
YVJlY3QoY29uc3Qgdm9pZCopOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKKworICAgICAgICB2b2lkIHNldFZpc2libGVTaXplKEludFNpemUmIHNpemUp
IHsgbV92aXNpYmxlU2l6ZSA9IHNpemU7IH0KKyAgICAgICAgSW50U2l6ZSYgdmlzaWJsZVNpemUo
KSB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBs
aWNpdCBVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICAg
ICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIEludFNpemUgbV92
aXNpYmxlU2l6ZTsKKyAgICAgICAgdWludDhfdCogbV9tYXBwZWRCdWZmZXI7CisgICAgICAgIE93
bkFycmF5UHRyPHVpbnQ4X3Q+IG1fYnVmZmVyOworICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1l
UHJvdmlkZXIqID0gMCk7CkBAIC01MCw3ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5
KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVh
bCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciYpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2b2lkIHJlbGVhc2VQcm92aWRlcigpOwpAQCAtNjMsMTggKzkyLDEyIEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogCiBwcml2
YXRlOgotICAgIHN0cnVjdCBUZXh0dXJlIHsKLSAgICAgICAgSW50U2l6ZSBtX3Zpc2libGVTaXpl
OwotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKLSAgICB9OwotCiAg
ICAgVmlkZW9MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSosIFZpZGVvRnJhbWVQcm92aWRl
ciopOwogCiAgICAgc3RhdGljIEdDM0RlbnVtIGRldGVybWluZVRleHR1cmVGb3JtYXQoY29uc3Qg
VmlkZW9GcmFtZUNocm9taXVtKik7CiAgICAgc3RhdGljIEludFNpemUgY29tcHV0ZVZpc2libGVT
aXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHBsYW5lKTsKICAgICBib29s
IHRleHR1cmVzVmFsaWQoKTsKICAgICBib29sIHJlc2VydmVUZXh0dXJlcyhjb25zdCBWaWRlb0Zy
YW1lQ2hyb21pdW0qLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgVGV4dHVyZSYsIGNv
bnN0IHZvaWQqKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRGcmFtZVBhcmFtZXRlcnMoKTsKIApA
QCAtODMsMTIgKzEwNiwxNCBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVQcm92aWRlciogbV9w
cm92aWRlcjsKIAogICAgIGVudW0geyBNYXhQbGFuZXMgPSAzIH07Ci0gICAgVGV4dHVyZSBtX3Rl
eHR1cmVzW01heFBsYW5lc107CisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3RleHR1cmVz
W01heFBsYW5lc107CiAgICAgdW5zaWduZWQgbV9wbGFuZXM7CiAKICAgICB1bnNpZ25lZCBtX25h
dGl2ZVRleHR1cmVJZDsKICAgICBJbnRTaXplIG1fbmF0aXZlVGV4dHVyZVNpemU7CiAgICAgSW50
U2l6ZSBtX25hdGl2ZVRleHR1cmVWaXNpYmxlU2l6ZTsKKworICAgIFZpZGVvRnJhbWVDaHJvbWl1
bSogbV9mcmFtZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IGRlYjhjOTQuLjNmNGIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAt
MzksOSArMzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNs
dWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXll
ckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3Zv
aWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29u
c3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21p
dW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oZGVsZWdhdGUp
KTsKQEAgLTUyLDYgKzY3LDcgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21p
dW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1
ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCiAgICAgLCBtX2RyYXdpbmdCdWZmZXIo
MCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkK
IHsKIH0KIApAQCAtNjYsNyArODIsNyBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCkgY29uc3QKICAgICByZXR1cm4gKGNvbnRleHQoKSAmJiBjb250ZXh0KCktPmdldEV4
dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4
dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCkKIHsKICAgICBpZiAo
IWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC05NSw2ICsxMTEsMTEgQEAgdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIHJlbmRlcmVyQ28KICAgICB9CiB9CiAKK3ZvaWQgV2ViR0xMYXllckNocm9taXVt
Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIm
IGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwg
SW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFp
bnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAg
ICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250ZXh0KCkgfHwgIWRy
YXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA2Mzc0YjllLi41
NGIyN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAog
CiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZm
ZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDUsMTIgKzQ2LDMwIEBAIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVM
aW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJHTCBjYW52YXMKIGNsYXNzIFdl
YkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
KyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJU
ZXh0dXJlPiBjcmVhdGUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisg
ICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9
IDApOwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7Cisg
ICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7Cisg
ICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAg
IGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03
MSw2ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVy
ZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZlciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZl
cmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJvbWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2Ry
YXdpbmdCdWZmZXI7CisKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1
cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAyN2MxNzA0
Li5jNTcwNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIApAQCAtNDgsNiArNDksNTIg
QEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygp
CiAgICAgcmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAKK0NDTGF5ZXJUcmVl
SG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6TmVlZFJlc291cmNlSGFuZGxlcigpCisgICAgOiBt
X3Jlc291cmNlcygwKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRs
ZXI6On5OZWVkUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0
JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkp
CisgICAgICAgIG1fcmVzb3VyY2VzKys7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJl
c291cmNlSGFuZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisKK0NDTGF5ZXJUcmVl
SG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKQor
eworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6aGFu
ZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlmICh0ZXh0dXJl
LT5uZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3QobV9jb250
ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCitDQ0xheWVyVHJl
ZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVyKENDUHJveHkqIHByb3h5KQorICAgIDog
bV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6On5Q
YWludEhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVy
OjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVy
ZS0+cGFpbnRDb250ZW50c1JlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+dXBkYXRlKHRl
eHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJl
ZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xp
ZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRy
ZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGll
bnQsIHNldHRpbmdzKSk7CkBAIC0zMTMsNyArMzYwLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJv
eHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRh
dGUoKQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMyMSwx
MiArMzY4LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlm
ICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0
ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsK
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0
OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpA
QCAtMzM1LDI0ICszODIsNzcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhM
YXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9p
bnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENs
aXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBv
bmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCgh
bV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIp
OworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxs
ZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUg
cGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOworICAgIG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNl
KCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAw
KTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCks
IGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMi
LCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4
dHVyZVNpemUpOworICAgIH0KKworICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOworCisgICAgZm9yIChpbnQgbGF5ZXJJ
bmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0t
bGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRh
dGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpOworICAgIH0KK30KKworYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzQ29tcG9z
aXRvclJlc291cmNlcygpCit7CisgICAgTmVlZFJlc291cmNlSGFuZGxlciBoYW5kbGVyOworICAg
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgcmV0dXJuIGhhbmRsZXIu
cmVzb3VyY2VzKCk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVD
b21wb3NpdG9yUmVzb3VyY2VzIiwgdGhpcywgMCk7CisgICAgUHJlcGFyZVJlc291cmNlSGFuZGxl
ciBoYW5kbGVyKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShoYW5kbGVyKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMo
KQoreworICAgIGlmICghcm9vdExheWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2
aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29u
dGVudHMocm9vdExheWVyKCkpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250
ZW50cyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQgbGF5
ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7
IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJV
cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKworICAgICAgICBQYWludEhhbmRsZXIgaGFuZGxlcihtX3Byb3h5LmdldCgp
KTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAg
ICAgfQorfQogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCk7Cit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBM
YXllckxpc3QmIHVwZGF0ZUxpc3QpCit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNl
IGNvbmRpdGlvbnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRp
bmcgdGhlIHJlbmRlciBzdXJmYWNlIGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQg
cmVwbGljYXMgaG93ZXZlciwgd2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgor
ICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8
ICFsYXllci0+ZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxp
c3QuYXBwZW5kKGxheWVyKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXll
cikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1
cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0
ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9y
IGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQK
ICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcg
d2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtMzYxLDMz
ICs0NjEsMzMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JS
ZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICBpZiAocmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tM
YXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
cmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgcmVuZGVyU3Vy
ZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIHVwZGF0
ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IHJlbmRl
clN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FMYXllcikgewog
CiAgICAgICAgIHJlcGxpY2FMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAg
cmVwbGljYUxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBhcHBlbmRWaXNp
YmxlTGF5ZXIocmVwbGljYUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+
bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAg
ICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRl
TGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQor
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0
JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewotICAg
IGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0g
MTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNo
cm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZh
Y2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRl
eCkgeworICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1
cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAgICBBU1NFUlQo
cmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZUxh
eWVyLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBwYWludE1hc2tBbmRSZXBsaWNh
Rm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIpOworICAgICAgICBhcHBlbmRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCB1cGRhdGVMaXN0
KTsKIAogICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2Ut
PmxheWVyTGlzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXll
ckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7CkBAIC00MDMsNDkgKzUw
MywyOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKGxheWVy
LT5vcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFsYXllci0+Ym91bmRzKCkuaXNFbXB0
eSgpKTsKIAotICAgICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAg
ICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIobGF5ZXIsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9
CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRl
cikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7Ci0gICAgZm9yIChpbnQgc3VyZmFj
ZUluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1z
dXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVy
ID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Ci0gICAgICAgIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3Vy
ZmFjZSgpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7Ci0gICAgICAgIEFTU0VSVChy
ZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFz
a0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0K
LSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAg
ICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5
ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5k
ZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4
ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAg
ICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0
KCk7Ci0KLSAgICAgICAgICAgIGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZh
Y2VDb250cmlidXRlc1RvVGFyZ2V0PExheWVyQ2hyb21pdW0+KGxheWVyLCByZW5kZXJTdXJmYWNl
TGF5ZXItPmlkKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAg
ICAgfQorICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkg
LSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAg
ICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQogfQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3Ig
KHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6
ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1f
dXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNs
ZWFyKCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXgg
PCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1
cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3Vw
ZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7
CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEND
U2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IDg3MmMzYzguLmNmYWU3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw3
ICs0NSw2IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogY2xhc3MgVGV4dHVy
ZUFsbG9jYXRvcjsKQEAgLTczLDEzICs3MiwxNSBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAg
ICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQ
U0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxz
ZSkKLSAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkgeyB9CisgICAgICAgICAgICAsIHJlZnJl
c2hSYXRlKDApCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQog
CiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3Jl
ZW47CiAgICAgYm9vbCBzaG93RlBTQ291bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVy
VHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CisgICAgYm9vbCBkZWxheVRleHR1cmVVcGRh
dGVzOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmlu
ZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xODQsOSArMTg1
LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29s
KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
KTsKKyAgICBib29sIG5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFy
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
Kik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAg
dm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2Fs
ZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwog
ICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xOTYsMTIg
KzIwMCw1MCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6
CisgICAgY2xhc3MgTmVlZFJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIo
KTsKKyAgICAgICAgdmlydHVhbCB+TmVlZFJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBp
bnQgcmVzb3VyY2VzKCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIGludCBtX3Jlc291cmNlczsKKyAgICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291
cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhh
bmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9j
b250ZXh0OworICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9Owor
CisgICAgY2xhc3MgUGFpbnRIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAg
ICAgICAgdmlydHVhbCB+UGFpbnRIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Q0NQcm94eSogbV9wcm94eTsKKyAgICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMo
Y29uc3QgTGF5ZXJMaXN0Jik7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5
ZXJDaHJvbWl1bSosIExheWVyTGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FG
b3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwor
ICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hy
b21pdW0qKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZv
aWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmll
cjsKQEAgLTIxNyw3ICsyNTksOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0
dXJlTWFuYWdlcjsKIAotICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0
IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVM
aXN0OwogCiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYmIz
NzgwMS4uZWVlNmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBD
Q1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzksNiArODAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAv
LyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERl
YnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDUwMWEwMGMuLmM4OTVhNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNl
dE5lZWRzRm9yY2VkUmVkcmF3KCkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQog
Cit2b2lkIENDU2NoZWR1bGVyOjpzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkKK3sKKyAgICBt
X3N0YXRlTWFjaGluZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgcHJvY2Vzc1Nj
aGVkdWxlZEFjdGlvbnMoKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBs
ZXRlKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0
ZSIsIHRoaXMsIDApOwpAQCAtOTYsNyArMTAyLDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5G
cmFtZSgpCiB7CiAgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpIHsKICAgICAg
ICAgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAgICAgICBtX3N0YXRl
TWFjaGluZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9y
ZVJlc291cmNlVXBkYXRlcygpKTsKKyAgICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOwogICAg
IH0KICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUiLCB0aGlzLCAwKTsK
IApAQCAtMTA1LDYgKzExMSwxNCBAQCB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKCkKICAg
ICBtX3N0YXRlTWFjaGluZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6
OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpCit7CisgICAgQVNTRVJUKG1fdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcpOworICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBm
YWxzZTsKKyAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9j
bGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFj
dGlvbnMoKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMo
KQogewogICAgIC8vIEVhcmx5IG91dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRo
IHVzZWxlc3MgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMuCkBAIC0xMjUsNiArMTM5LDcgQEAgdm9p
ZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgbV9j
bGllbnQtPnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRF
X01PUkVfUkVTT1VSQ0VTOgorICAgICAgICAgICAgQVNTRVJUKG1fY2xpZW50LT5oYXNNb3JlUmVz
b3VyY2VVcGRhdGVzKCkpOwogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVw
ZGF0ZU1vcmVSZXNvdXJjZXMoKTsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQtPmhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVzdCB0
b2xkIHRvIHVwZGF0ZSByZXNvdXJjZXMsIGJ1dCB0aGVyZSBhcmUgbm8KQEAgLTEzMiw3ICsxNDcs
NyBAQCB2b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgICAg
ICAgICAgICAgLy8gYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzIGNvbXBsZXRlZC4gSWYgbW9yZSBh
cmUgcGVuZGluZywKICAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIHdpbGwgYWNrIHRoZSB1cGRh
dGUgYXQgdGhlIG5leHQgZHJhdy4KICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5V
cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgICAgICAgICAgICAgIG1fc3Rh
dGVNYWNoaW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggOTVlOTk1
Zi4uODI4MjI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC02NiwxMSArNjYsMTIgQEAgcHVi
bGljOgogICAgIC8vIEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBlbnN1cmVzIHRoZSBkcmF3IHdp
bGwgZGVmaW5pdGVseSBoYXBwZW4gZXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUuCiAgICAgdm9p
ZCBzZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogCisgICAgdm9pZCBzZXRSZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nKCk7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKLQogICAgIHZvaWQgc2V0
TWF4RnJhbWVzUGVuZGluZyhpbnQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNDb21wbGV0ZSgp
OwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOworICAgIHZvaWQgdXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKCk7CiAKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0KICAgICBib29sIHJlZHJhd1Bl
bmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA0Y2Zm
NjczLi5mZjY1ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmUuY3BwCkBAIC0zNyw3ICszNyw5IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQogICAgICwgbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5zaWRlVlN5bmMoZmFs
c2UpCi0gICAgLCBtX3Zpc2libGUoZmFsc2UpIHsgfQorICAgICwgbV92aXNpYmxlKGZhbHNlKQor
ICAgICwgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKGZhbHNlKQorICAgICwgbV9mcmFtZUNvbXBs
ZXRlKGZhbHNlKSB7IH0KIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CkBAIC01MSwxNSArNTMsMTAg
QEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZS
QU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKLSAgICBjYXNlIENPTU1JVF9TVEFU
RV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAgaWYgKHNob3VsZERyYXcpCi0gICAgICAgICAg
ICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKLQogICAg
IGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAgICAgaWYgKHNob3Vs
ZERyYXcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIGlmICghbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nICYmIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZykKICAgICAgICAgICAgIHJl
dHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwogICAgICAgICByZXR1cm4g
QUNUSU9OX05PTkU7CiAKQEAgLTgzLDggKzgwLDEwIEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAKICAgICBjYXNlIEFDVElPTl9CRUdJ
Tl9GUkFNRToKICAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7Ci0gICAgICAgIG1fY29tbWl0U3Rh
dGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CisgICAgICAgIEFTU0VSVCghbV9y
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKTsKKyAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVM7CiAgICAgICAgIG1fbmVlZHNDb21taXQgPSBmYWxzZTsK
KyAgICAgICAgbV9mcmFtZUNvbXBsZXRlID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKIAogICAg
IGNhc2UgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKQEAgLTE0NCwxOCArMTQz
LDI2IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzQ29tbWl0KCkKICAg
ICBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9yZXNvdXJjZVVwZGF0ZXNQ
ZW5kaW5nID0gdHJ1ZTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5G
cmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1MpOwotICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTOworICAgIEFTU0VSVChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9T
VEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIG1fZnJhbWVDb21wbGV0ZSA9IHRydWU7Cisg
ICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYmICFtX3Jlc291cmNlVXBkYXRl
c1BlbmRpbmcpCisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfUkVBRFlfVE9f
Q09NTUlUOwogfQogCi12b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpiZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQordm9pZCBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcp
CiB7CiAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUyk7CiAgICAgQVNTRVJUKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpOwogICAg
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICBpZiAoIW1vcmVQZW5k
aW5nKQorICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IG1vcmVQZW5kaW5nOworICAgIGlm
ICghbW9yZVBlbmRpbmcgJiYgbV9mcmFtZUNvbXBsZXRlKQogICAgICAgICBtX2NvbW1pdFN0YXRl
ID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNWEyN2JkMi4uMGQ5ZWIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCkBAIC00NSw3ICs0NSw2IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gQ29tbWl0U3RhdGUgewogICAgICAgICBDT01NSVRfU1RBVEVfSURM
RSwKLSAgICAgICAgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgICAgICBDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgICAgICBDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlULAogICAgICAgICBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywK
QEAgLTg5LDE0ICs4OCwxNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhyZWFkIHRvIG1haW4uCiAgICAg
dm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgLy8gSW5kaWNhdGVzIHRoYXQgY29tcG9zaXRv
ciByZXNvdXJjZXMgdGhhdCBuZWVkIHVwZGF0aW5nIGFyZSBwZW5kaW5nLgorICAgIHZvaWQgc2V0
UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVz
cG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9CRUdJTl9GUkFNRQogICAgIC8vIGZyb20gbmV4
dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCBhbGwgcGFpbnRpbmcgaXMgY29tcGxldGUgYW5kIHRoYXQK
LSAgICAvLyB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNlcyBjYW4gYmVnaW4uCisgICAg
Ly8gb25seSB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291cmNlcyBpcyBsZWZ0LgogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICAvLyBDYWxsIHRoaXMgb25seSBpbiByZXNw
b25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9NT1JFX1JFU09VUkNFUwogICAgIC8v
IGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lmaWMgdXBkYXRlIHJlcXVl
c3QgY29tcGxldGVkLgotICAgIHZvaWQgYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
Ym9vbCBtb3JlUGVuZGluZyk7CisgICAgdm9pZCB1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
Ym9vbCBtb3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAgICBDb21taXRTdGF0ZSBtX2NvbW1p
dFN0YXRlOwpAQCAtMTA5LDYgKzExMSw4IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fdXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmc7CiAgICAgYm9vbCBtX2luc2lkZVZTeW5jOwogICAgIGJvb2wg
bV92aXNpYmxlOworICAgIGJvb2wgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOworICAgIGJvb2wg
bV9mcmFtZUNvbXBsZXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcAppbmRleCA3MmJlYzJhLi45MjczMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmNwcApAQCAtMTQ3LDE1ICsxNDcsMTkgQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKworICAgIC8v
IFByZXBhcmUgY29tcG9zaXRvciByZXNvdXJjZXMKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5u
ZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVw
YXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0
ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKLQorICAgICAgICB3aGlsZSAo
bV90ZXh0dXJlVXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAx
KSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0g
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRl
ci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxl
KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApAQCAtMjA4LDYgKzIxMiwxNCBAQCB2b2lkIEND
U2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IDA7CiB9CiAK
K3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRl
bGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIuYXBwZW5kKHRleHR1
cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIHRleHR1cmUtPnVw
ZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5n
LiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCkKIHsKQEAgLTI3Miw3ICsyODQsNyBA
QCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogCiAg
ICAgZG9Db21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRl
eCAwZDVhNGEyLi43ODNhOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgp
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVu
dCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVP
bkltcGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04Miw2ICs4NCw4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGlt
ZXNSZWNyZWF0ZVNob3VsZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBt
X25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZTsKKworICAgIENDVGV4dHVyZVVwZGF0ZXIg
bV90ZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRl
ZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGUuLmE2MWMzYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgi
CiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKQEAgLTM3LDExICszOCw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0dXJlVXBkYXRlcjo6
Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi0gICAgOiBtX2Fs
bG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKK0NDVGV4dHVyZVVwZGF0
ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoKQogewotICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9CiAK
IENDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKQEAgLTY2LDIzICs2NCwyMCBA
QCBib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIAogYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVf
dCBjb3VudCkKIHsKLSAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291
bnQsIG1fZW50cmllcy5zaXplKCkpOwotICAgIGZvciAoOyBtX2VudHJ5SW5kZXggPCBtYXhJbmRl
eDsgKyttX2VudHJ5SW5kZXgpIHsKLSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRy
aWVzW21fZW50cnlJbmRleF07Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChj
b250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0
KTsKLSAgICB9CisgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXMu
c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1heEluZGV4IDwg
bV9lbnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFVwZGF0ZUVu
dHJ5JiBlbnRyeSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+
dXBkYXRlUmVjdChjb250ZXh0LCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3Qp
OworICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOworICAgIH0KIAotICAgIC8vIElmIG5v
IGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpID4gMDsKIH0KIAogdm9p
ZCBDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKICAg
ICBtX2VudHJpZXMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IGJmNzlhYzkuLmFiNjU5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAg
LTMzLDExICszMywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiAKIGNsYXNzIENDVGV4dHVyZVVwZGF0
ZXIgewogcHVibGljOgotICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIENDVGV4dHVyZVVwZGF0ZXIoKTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAg
dm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDggKzQ4LDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KLQogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
VXBkYXRlRW50cnkgewogICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3Rl
eHR1cmU7CkBAIC01OCw4ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgbV9kZXN0
UmVjdDsKICAgICB9OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAg
c2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOGU3NzQyNS4uZWE3MjkwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI4NSw2ICsyODUsMjAgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKIH0KIAordm9pZCBD
Q1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7
CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMsIDApOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7CisKKyAgICBP
d25QdHI8VXBkYXRlRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVwZGF0ZUVudHJ5KTsKKyAg
ICBlbnRyeS0+bV90ZXh0dXJlID0gdGV4dHVyZTsKKyAgICBlbnRyeS0+bV9zb3VyY2VSZWN0ID0g
c291cmNlUmVjdDsKKyAgICBlbnRyeS0+bV9kZXN0UmVjdCA9IGRlc3RSZWN0OworCisgICAgQ0NQ
cm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQsIGVudHJ5LnJlbGVhc2UoKSkp
OworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBA
IC0zNzMsNyArMzg3LDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1p
dChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgLy8gdXBkYXRl
TGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CiAKLSAgICBtX2xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBk
YXRlKCk7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJj
ZXMoKSkgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHJlcXVp
cmUgZm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0aGlzLCAwKTsK
KyAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAgQ0NQcm94eTo6
aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CisgICAg
fQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAgICAvLyBCZWZv
cmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRl
UmVxdWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBz
ZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0CkBAIC0z
OTcsMTMgKzQyMSw0MCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQo
aW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xh
c3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51
bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbk9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhv
c3RJbXBsKSB7CisgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNl
cyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwor
fQorCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093
blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuYXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3Nv
dXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKKworICAgIGlmICghbV9sYXllclRyZWVIb3N0
SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworfQorCiB2b2lkIEND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2Nv
bW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCht
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1fbGF5
ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTQxMSwzNiArNDYyLDMyIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAK
ICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAK
LSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1
cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRl
eHR1cmVVcGRhdGVzCisgICAgICAgICYmIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkKKyAgICAg
ICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsK
IAogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKIH0K
IAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLT5oYXNNb3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLmhhc01vcmVVcGRhdGVzKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsK
LSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwogICAgIHN0
YXRpYyBjb25zdCBpbnQgVXBkYXRlc1BlckZyYW1lID0gOTk5OTk7Ci0gICAgbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUp
OwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRo
aXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7
Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9y
ZVVwZGF0ZXMoKSk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmhh
c01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCk7CiAKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVh
cigpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAogCiAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAppbmRleCAxZGYzNzQ2Li5mMTI0NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgorI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpOwpAQCAtNzgsNiArODAsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0ZUVu
dHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwor
ICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0
OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJlZ2lu
RnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUs
IFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCk7CkBAIC05Miw2ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFz
c093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbklt
cGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUND
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCBw
cmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAg
ICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4p
OwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1
ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqKTsKQEAgLTEyNywxMCArMTM3LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQg
d2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4K
ICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQ7Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9z
dCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9u
ZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBkMjhhYmExLi5jODQ5
ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAg
LTEzMyw2ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZVNjcm9s
bEFuaW1hdG9yKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGl4aWU3NldlYlNvY2tl
dFByb3RvY29sRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdv
cmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRl
eHR1cmVVcGRhdGVzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBk
YXRlcygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXgg
MjBmMjM0NS4uM2QzMDM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0
dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fY29tcG9zaXRlVG9UZXh0dXJl
RW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3No
b3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAsIG1fZGVsYXlUZXh0dXJlVXBkYXRlcyhm
YWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtNDk3LDUgKzQ5OCw5IEBAIHZv
aWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhib29s
IGVuYWJsZWQpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldERlbGF5VGV4
dHVyZVVwZGF0ZXMoYm9vbCBlbmFibGVkKQoreworICAgIG1fZGVsYXlUZXh0dXJlVXBkYXRlcyA9
IGVuYWJsZWQ7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCAyYzIzY2MyLi5jZWQ3NDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTI4LDEy
ICsxMjgsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNwbGF5U3Vi
dGl0bGVzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNwbGF5Q2FwdGlvbnMo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25z
KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpOwor
ICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWxheVRleHR1cmVVcGRhdGVzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3Mq
IG1fc2V0dGluZ3M7CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAgICAg
Ym9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7
CisgICAgYm9vbCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAw
NmMwOTcyLi41MjhlMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0yOTAyLDYgKzI5MDIsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIGlmICghY2NTZXR0
aW5ncy5yZWZyZXNoUmF0ZSkKICAgICAgICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBk
ZWZhdWx0UmVmcmVzaFJhdGU7CiAKKyAgICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRh
dGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRlcygpOworCiAgICAgICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUo
V2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CiAg
ICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDM2ZmQ3ZGIuLjQzMTNm
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNo
cm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVu
VGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXll
ckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2Vy
dmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVx
dWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6
IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdl
TGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTQ1LDM3ICs5NTQs
MTE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3Jl
YXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xh
c3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
ciB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0
dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0
ZXh0dXJlKQorICAgICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRl
cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisg
ICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFBy
ZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigp
LT5wcmVwYXJlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5w
YWludENvbnRlbnRzUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNv
dXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3Qo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXll
cikpOworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4g
bV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50
KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IH0KKyAgICAgICAgdmlydHVhbCBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1h
bmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAg
ICAgIH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0K
LSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAg
ICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1
cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50c0lmRGlydHkoKQorICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBz
YW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGls
ZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUg
Ki8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
KiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4
cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nKiBsYXllcikgOiBtX2xheWVyKGxheWVyKSB7IH0KKworICAgICAgICBD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbV9sYXllcjsKKyAgICB9Owor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJl
UmVjdCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eSgpOwotICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRl
bGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0
ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAg
ICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAg
ICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBw
YWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50
Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2
b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVw
YXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lk
IHBhaW50Q29udGVudHNSZWN0KCkgeyBtX3BhaW50Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAg
IGludCBwYWludENvbnRlbnRzUmVjdENvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVj
dENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7
IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7
IH0KKworICAgIGludCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVj
dDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCisgICAgZXhwbGljaXQgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxl
Z2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21p
dW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9uZWVkUHJlcGFyZVJlY3QobmVlZFByZXBhcmVSZWN0
KQogICAgICAgICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVD
b3VudCgwKQorICAgICAgICAsIG1fcHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fcGFp
bnRDb250ZW50c1JlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAg
ICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICB9CiAKKyAgICBS
ZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVwYXJlUmVjdDsKICAgICBpbnQgbV9wYWludENvbnRl
bnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RD
b3VudDsKKyAgICBpbnQgbV9wYWludENvbnRlbnRzUmVjdENvdW50OworICAgIGludCBtX3VwZGF0
ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBz
aG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVk
IGR1cmluZyBjb21taXQuCkBAIC05ODMsNyArMTA3MSw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGlj
OgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKCkKICAgICAgICAgOiBtX3Rl
c3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhpcykKLSAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5
ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0
T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0
eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAgICB7CiAgICAgfQogCkBAIC0xMDAyLDEzICsxMDkw
LDE4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQogICAgIHsKLSAg
ICAgICAgLy8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBv
bmNlLgorICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
b25jZS4KICAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250
ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQotICAgICAgICAvLyBhbW91dCBvZiB0aW1l
cyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgotICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVD
aGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKLSAgICAgICAgICAgICAgICAgIG1fdXBk
YXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7CisgICAgICAgIC8vIHBhaW50Q29udGVudHNS
ZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50
IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNo
ZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRl
Q2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRh
dGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1v
dW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUSht
X3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAg
ICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOwogCiAgICAgICAg
IC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xheWVyVHJlZUhvc3QgZGllcy4KICAg
ICAgICAgbV91cGRhdGVDaGVja0xheWVyLmNsZWFyKCk7CkBAIC0xMDI0LDQgKzExMTcsNDkgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkK
ICAgICBydW5UZXN0KHRydWUpOwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgYmUg
Y2FsbGVkIHdoZW4gbmVlZFByZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5
ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qg
eworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0KCkKKyAgICAg
ICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKG1fdXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHND
b21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29t
cGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgZW5k
VGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAg
ICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisg
ICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3Vu
dCgpKTsKKworICAgICAgICAvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNh
bGxlZC4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJl
Y3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVu
dHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29u
dGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+
dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxl
Z2F0ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdFRlc3ROb1ByZXBhcmVSZWN0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRy
dWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmluZGV4IGYz
NDY5NzcuLmRiYzM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKQEAgLTM3LDcgKzM3LDYg
QEAgbmFtZXNwYWNlIHsKIAogY29uc3QgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0
YXRlIGFsbENvbW1pdFN0YXRlc1tdID0gewogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfSURMRSwKLSAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVwpAQCAtNjMsNiArNjIsMTIg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhib29s
IGIpIHsgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGI7IH0KICAgICBib29sIHVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZzsgfQorCisgICAgdm9pZCBzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKGJvb2wg
YikgeyBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBiOyB9CisgICAgYm9vbCByZXNvdXJjZVVw
ZGF0ZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nOyB9
CisKKyAgICB2b2lkIHNldEZyYW1lQ29tcGxldGUoYm9vbCBiKSB7IG1fZnJhbWVDb21wbGV0ZSA9
IGI7IH0KKyAgICBib29sIGZyYW1lQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lQ29t
cGxldGU7IH0KIH07CiAKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4
dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCkBAIC05Nyw3ICsxMDIsNyBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVk
KQogICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CiAgICAgICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgICAg
IEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAgICB9CiB9CkBAIC0yNTEsNiAr
MjU2LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05v
UmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KGZhbHNl
KTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7CiAgICAg
c3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5k
aW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7CiAKICAgICAvLyBW
ZXJpZnkgd2UgYmVnaW4gdXBkYXRlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAgLTI2Nyw3ICsyNzQsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25l
Um91bmRPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEVuZCB1cGRhdGUgd2l0
aCBubyBtb3JlIHVwZGF0ZXMgcGVuZGluZy4KLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKGZhbHNlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogfQpAQCAtMjc5LDYgKzI4Niw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0
TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworICAgIHN0YXRlLnNldFJl
c291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUuc2V0RnJhbWVDb21wbGV0ZSh0
cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lucywgYm90aCBmb3IgdnN5bmMg
YW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CkBAIC0yOTUsNyArMzA0
LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVk
cmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQWNrIHRo
ZSB1cGRhdGUgd2l0aCBtb3JlIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBs
ZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIHVwZGF0ZSBtb3JlLCBib3RoIGZvciB2c3lu
YyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTMwNSw3ICsz
MTQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9S
ZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogCiAgICAgLy8gQmVnaW4gYW5vdGhlciB1cGRhdGUs
IHdoaWxlIGluc2lkZSB2c3luYy4gQW5kLCBpdCB1cGRhdGluZy4KICAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFs
c2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAKICAg
ICAvLyBNYWtlIHN1cmUgd2UgY29tbWl0LCBpbmRlcGVuZGVudCBvZiB2c3luYy4KICAgICBzdGF0
ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zMjEsNiArMzMwLDkgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMp
CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRG
cmFtZUNvbXBsZXRlKHRydWUpOworCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOwogCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgpAQCAtMzM4LDcgKzM1MCw3IEBAIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJv
dW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKIAogICAgIC8vIEZpbmlz
aCB1cGRhdGUgYnV0IGxlYXZlIG1vcmUgcmVzb3VyY2VzIHBlbmRpbmcuCi0gICAgc3RhdGUuYmVn
aW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUudXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgcmVnYXJkbGVz
cyBvZiB2c3luYywgd2UgdXBkYXRlIHNvbWUgbW9yZS4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5j
KCk7CkBAIC0zNTIsNyArMzY0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuZGlk
RW50ZXJWU3luYygpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5kaWRM
ZWF2ZVZTeW5jKCk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAK
ICAgICAvLyBWZXJpZnkgd2UgY29tbWl0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMgc3RhdGUKICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNzAsNyArMzgyLDExIEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAgLy8g
QmVnaW4gdGhlIGZyYW1lLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0
ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisKKyAgICAvLyBS
ZWNlaXZlIHJlc291cmNlIHRoYXQgbmVlZCB1cGRhdGUuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VV
cGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OwogCiAgICAgLy8gTm93LCB3aGlsZSB0aGUgZnJhbWUgaXMgaW4gcHJvZ3Jlc3MsIHNldCBhbm90
aGVyIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKQEAgLTM4Miw3ICsz
OTgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29t
bWl0SXNOb3RMb3N0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAg
ICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lO
X1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKLSAgICBzdGF0ZS5iZWdp
blVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRl
LgpAQCAtNDEzLDEwICs0MjksMTQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAgICAgc3RhdGUudXBk
YXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0g
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVf
SU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwog
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNl
dFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNo
ZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0
ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTQyNCw3ICs0NDQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxl
ciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Cisg
ICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNDU5LDcgKzQ3
OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0
aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29t
bWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTQ2Nyw2ICs0ODcsMTAgQEAgVEVTVChDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdElu
YmV0d2VlbikKICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisK
ICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgogICAgIHN0YXRl
LmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUo
KSk7CkBAIC00NzQsNyArNDk4LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKIAogICAgIC8vIFRlbGwg
dGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0
ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFE
WV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApA
QCAtNTE2LDEzICs1NDAsMTcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lIHdoaWxl
IHZpc2libGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWNvbWUg
aW52aXNpYmxlCiAgICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7CiAKKyAgICAvLyBSZWNlaXZl
IHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNj
aGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQKICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpAQCAtNTMwLDcgKzU1OCw3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0R29lc0ludmlzaWJsZU1p
ZENvbW1pdCkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFu
ZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTUwLDQgKzU3OCw2NSBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRDb21taXQpCiAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROb1Jl
c291cmNlVXBkYXRlcykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0
VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisg
ICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkLgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCitURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vUmVzb3VyY2VQZW5kaW5nKQoreworICAgIFN0YXRl
TWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU3Rh
cnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJB
TUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCisgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIFJl
Y2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9V
UERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCisgICAgLy8gVGVsbCB0
aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIHN0YXRlLnVw
ZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUp
OworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIGFub3RoZXIgdXBkYXRlIGJlZ2FuIGFuZCBm
aW5pc2hlZC4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKworICAgIC8vIE5vIHBlbmRpbmcgcmVzb3VyY2Vz
IHRvIHVwZGF0ZS4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVy
IHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9U
T19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3Bw
CmluZGV4IGI1OGVkMmMuLmYzMmIwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAgLTc2LDEyICs3NiwxMCBAQCBURVNUKENDU2No
ZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8v
IFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwKLSAgICAvLyBi
ZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4KLSAgICAv
LyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIGNvbW1pdCBpbW1lZGlh
dGVseS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9F
USgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVY
UEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVk
dWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIGNsaWVudC5yZXNldCgp
OwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4KQEAgLTExMiwxMiArMTEwLDEwIEBAIFRFU1Qo
Q0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVk
dWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCi0gICAgLy8gbmVl
ZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4g
Y29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICAvLyBuZWVkZWQs
IGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJh
bWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEo
MiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NU
UkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVs
ZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKICAgICBjbGllbnQucmVzZXQoKTsK
IAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4K
QEAgLTIzMyw0ICsyMjksNTIgQEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJ
bnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRShzY2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7
CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBVcGRhdGVSZXNvdXJjZXMpCit7CisgICAgRmFr
ZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAgICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4g
dGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaW1lU291cmNlKCkpOworICAgIE93blB0
cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NTY2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBh
ZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9sbGVyKHRpbWVTb3VyY2UpKSk7CisgICAgc2No
ZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisgICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxk
IGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAg
RVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5y
ZXNldCgpOworCisgICAgLy8gTm93IHNldE5lZWRzQ29tbWl0IGFnYWluLiBDYWxsaW5nIGhlcmUg
bWVhbnMgd2UgbmVlZCBhIHNlY29uZCBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29t
bWl0KCk7CisKKyAgICAvLyBVcGRhdGUgcGVuZGluZyByZXNvdXJjZXMuCisgICAgY2xpZW50LnNl
dEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7CisgICAgc2NoZWR1bGVyLT5zZXRSZXNvdXJj
ZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkp
OworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIs
IGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gQ2xpZW50
IGZpbmlzaGVkIHVwZGF0ZSBidXQgaGF2ZSBub3QgeWV0IHRvbGQgc2NoZWR1bGVyLgorICAgIGNs
aWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVzKGZhbHNlKTsKKworICAgIC8vIGJlZ2luRnJh
bWVDb21wbGV0ZSBzaG91bGQgbm90IGNvbW1pdCwgYXMgYW4gdXBkYXRlIGlzIHBlbmRpbmcuCisg
ICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xp
ZW50Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwg
aGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQgdG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1p
dCBpcworICAgIC8vIG5lZWRlZCwgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKCkgc2hvdWxk
IGNvbW1pdCwgdGhlbiBiZWdpbgorICAgIC8vIGFub3RoZXIgZnJhbWUuCisgICAgc2NoZWR1bGVy
LT51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50
Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQi
LCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFRpY2sg
c2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KKyAgICB0aW1lU291cmNl
LT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVY
UEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDAp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQu
YWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApp
bmRleCA2M2FhNDU2Li45M2NmYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTI3LDkgKzI3LDkgQEAK
ICNpbmNsdWRlICJUaWxlZExheWVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVy
ZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3Ig
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgogCkBAIC0zOCwyMCArMzgsMjMgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNw
YWNlIHsKIAotY2xhc3MgRmFrZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9j
YXRvciB7CitjbGFzcyBGYWtlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29u
c3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIGNs
YXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAg
cHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KLSAgICAgICAg
dmlydHVhbCB+VGV4dHVyZSgpIHsgfQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBP
d25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICB9OwogCiAgICAgRmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTYwLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJl
KFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShN
YW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIE9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gQm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZp
cnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyBy
ZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
U2l6ZSYsIGludCwgZmxvYXQpIHsgfQogfTsKIAogY2xhc3MgRmFrZUNDVGlsZWRMYXllckltcGwg
OiBwdWJsaWMgQ0NUaWxlZExheWVySW1wbCB7CkBAIC05OCw2ICsxMDEsMTEgQEAgcHVibGljOgog
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKICAgICB9
CiAKKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7Cisg
ICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisK
ICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0KIAogcHJpdmF0ZToKQEAgLTExOSwxMyArMTI3LDEzIEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkp
OwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVy
IGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52
YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0
ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSho
YW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwog
CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAt
MTM4LDcgKzE0Niw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGls
ZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
ICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29u
dGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxl
IHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118207</attachid>
            <date>2011-12-07 07:26:47 -0800</date>
            <delta_ts>2011-12-08 10:02:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111207102645.patch</filename>
            <type>text/plain</type>
            <size>148975</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJmZDhjYzhkM2M3Yjgz
OGU3ZGNjMDc1ZTUwOGYyNmE0OTk5N2I2ZC4uYTYzYzI5Zjk3ZGMxZjkxNzNjYWY3ODdlNDQyNTdh
NzcyOGQ5YTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAxMS0xMi0wNyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMgYmVlbgor
ICAgICAgICBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorCisgICAgICAg
IFNwbGl0IGxheWVyIHVwZGF0ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMg
dHJhbnNmb3JtcworICAgICAgICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFp
bnRzIGxheWVyIGNvbnRlbnRzLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEg
Y29tcG9zaXRvciByZXNvdXJjZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2li
bGUgbGF5ZXIgYXJlYXMgaGF2ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5n
CisgICAgICAgIGhhcyBvY2N1cnJlZC4gTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyBpcyByZXBsYWNlZAorICAgICAgICBieSBMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlIHdoaWNoIGFsbG93cyB1cyB0byBpdGVyYXRlCisgICAgICAgIG92ZXIg
Y29tcG9zaXRvciByZXNvdXJjZXMgZm9yIHZhcmlvdXMgcHVycG9zZXMuCisKKyAgICAgICAgQWRk
IG5ldyB1bml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6flRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9t
aXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
Ojp+SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9M
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpwcmVwYXJlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJl
OjpkYXRhUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0
ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJv
bWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9MYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1cmVzVmFsaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZlVGV4dHVyZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnNldFZpc2libGVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnZpc2libGVTaXplKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0
ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291
cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNv
dXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyOjp+UHJl
cGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpoYW5kbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGlj
YUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRWaXNpYmxlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRp
bmdzOjpDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6TmVl
ZFJlc291cmNlSGFuZGxlcjo6cmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6
OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVs
ZXI6OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXI6OnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6cHJv
Y2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0QWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0UmVzb3VyY2VVcGRhdGVzUGVu
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6YmVnaW5G
cmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
Ojp1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpwcmVw
YXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNv
bW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oOgorCiAyMDExLTEyLTAxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4dHJhY3QgZGVmYXVsdCBjYWxsIHN0YWNr
IGNyZWF0aW9uIGFuZCBjaGVjayBmb3IgZnJvbnQtZW5kIGZyb20gY29uc29sZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMTI0ZGIwMWJkYWRhNTE1Yjg0Y2I2MWE5YWJlNmMyM2ZlMmY5
MTZkZi4uZjRhZjUyOGM2MDQzNWJkNWQ0YWM4NmNiOTA0M2MzYTBiMTQ0MGRiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAxMS0xMi0wNyAgRGF2aWQgUmV2
ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXBsb2Fk
IHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDQ0xheWVyVHJlZUhvc3RU
ZXN0Tm9QcmVwYXJlUmVjdCB0ZXN0LiBUcmFjayBjaGFuZ2VzIHRvIHNjaGVkdWxlcgorICAgICAg
ICBhbmQgdGV4dHVyZSB1cGxvYWRzLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6
CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0
dGluZ3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6ZGVsYXlUZXh0
dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6Ok1v
Y2tMYXllckRlbGVnYXRlOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVy
RGVsZWdhdGU6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRl
OjpwcmVzZXJ2ZXMzRCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpub3RpZnlT
eW5jUmVxdWlyZWQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAo
V1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6
OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnBhaW50Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpzYW1w
bGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmxheWVyKToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzQ291bnQpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFy
ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6cHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXVEY6
OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzUmVj
dENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5n
ZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjphZnRl
clRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6
Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0OjphZnRlclRl
c3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnNl
dFJlc291cmNlVXBkYXRlc1BlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5l
OjpyZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGlu
ZTo6c2V0RnJhbWVDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OmZy
YW1lQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
Q0NTY2hlZHVsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKyAgICAg
ICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFr
ZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAyMDExLTEy
LTA2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCB0
eXBvIGluIFdlYktpdC5neXAgaW50cm9kdWNlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGRk
OTMxOTEzZjcwOTc3NjI2MzVmZTY0MTlkMzg3NTFhZmY4NjE3OWQuLjA3OTA1YzE4OTcwNzQ4MDRi
NTVkODEwNjVlMGU2ZTBhMzk5NjUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRl
eHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQog
ewogfQpAQCAtNDUsOSArNDUsMTEgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAg
IHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwg
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+
dGV4dHVyZUlkKCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICB0ZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcj4gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1h
Z2UpCkBAIC03Nyw3ICs3OSw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAgICAgICAgICAg
ICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9h
dCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBt
X3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAKQEAgLTg4LDE1ICs5MCwx
MyBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
OjpUZXh0T3B0aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9y
bUNhbnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
OjpTdWJwaXhlbFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRl
cigmbV9jYW52YXMsIHRleHRPcHRpb24pOwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50
ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgcGFpbnQoKmNh
bnZhc1BhaW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiB9CiAK
LXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQg
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsK
LQotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90
ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgIG1fdGV4U3Vi
SW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCA5NzU1MjJjYmFhYTM0MTQ3NTg1NmRiNmNiZWRhMzEyYzE0OWQ4N2JhLi4yZTkxZGJhMDRlMzBk
ODEwMjE2YzY2Njk4ZmZhOWNlZGZmNGE2ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgTGF5
ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBh
biBpbnRlcm5hbCBiaXRtYXAuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNz
IFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7
IH0KQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7
CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4
dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRU
ZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZh
dGU6CiAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCmluZGV4IDgyMjFkZDJlNTIxYmQ2M2ZlMGU2ZjBmOWQ2MjI0ZTM4ZGZiMzQyOTguLmRmMDBl
NGE5ZWFlZTk0OTVmNjVhMGE2ZDdhNTY2MTFjYTY5OGViZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzCiB7CiB9CiAKLXZvaWQg
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFy
ZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCkKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzb3VyY2VSZWN0LnNpemUoKSwgdGV4dHVyZSgpLT5mb3Jt
YXQoKSk7CiAgICAgbV9waXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZl
clNpemVdKTsKQEAgLTUxLDkgKzUxLDEwIEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VS
ZWN0KTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAg
ICB0ZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgQVNTRVJU
KHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBB
U1NFUlQobV9waXhlbERhdGEuZ2V0KCkpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVs
RGF0YS5nZXQoKSk7CiAgICAgbV9waXhlbERhdGEuY2xlYXIoKTsKQEAgLTg2LDEwICs4NywxMCBA
QCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcgogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNT
Y2FsZSkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCiB7CiAgICAgbV90
ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwotICAgIFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGlsZVNp
emUsIGJvcmRlclRleGVscywgY29udGVudHNTY2FsZSk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb250ZW50UmVjdCwgdGlsZVNpemUsIGJv
cmRlclRleGVscywgY29udGVudHNTY2FsZSk7CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqIGNhbnZh
cywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBjMzBmMzA3
NTU1YmQzNzIxYjExNGZmYjhiN2IwZDZjODZkNWY0NDJiLi5lYzdhYzZjOTI2NGQ5MjUxMGEyYTVm
OWQwOGQyMGYxNmRlNzQ5NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1
YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0
dXJlVXBkYXRlcjsgfQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVy
ZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1
cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1
YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJl
Rm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywg
ZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2b2lkIHBhaW50Q29udGVudHNS
ZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCB1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGIwYzRlMDczOTQ2YmE1ZTUxZTNkYzZhMjUz
NzM2YTBlY2EzOGNhY2MuLmUwNGYxOGQwMDYyZjdlNGE2OTM4NGJiODRhMTAzOTIwM2YzZmUwZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0
ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQor
ICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
Y29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJl
Y3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQor
CiBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVt
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDYW52YXMyRExheWVyQ2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBA
QCBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVt
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMy
RExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNM
YXllckNocm9taXVtKDApCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRl
clRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyAr
ODAsNyBAQCBib29sIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QK
ICAgICAgICAgICAgICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogewogICAgIGlmICghbV9uZWVkc0Rp
c3BsYXkgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAs
MTEgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHQKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNl
OwogfQogCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRs
ZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsK
K30KKwogdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAg
ICBpZiAobGF5ZXJUcmVlSG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApp
bmRleCA0NTdiZDU2NGQ3NzhkYWI5NGFjOTkxMTNmODFlYmZlNzVkZWZkZDRmLi5lODZhNjFhNGVl
ZTQ1MjBhYmE2ODZjNDE5M2E2Zjc4ZjBmYzUwZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwog
Ly8gQSBsYXllciBjb250YWluaW5nIGFuIGFjY2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2Fu
dmFzMkRMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGlj
OgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRl
clRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7
CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVt
Kik7CisKKyAgICAgICAgQ2FudmFzMkRMYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0Qq
KTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworCisgICAgT3duUHRyPFVwZGF0
ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1ZmE2Nzg1NGM2YmQ3ZjUzODJiNTJiMGVl
ZmJhMTAzMTY2ZmMwOGZlLi5jNjFlYzMzZDY3ZTY1MzcxMmQyYjkyMTEzZmI3OWJhYmY4MzliNWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzYs
NiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9vbCBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQoreworICAgIHJldHVybiAhbV90ZXh0
dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25z
dCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4
dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21p
dW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRlcikKIHsKQEAgLTQ1LDcgKzYzLDcg
QEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
KQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxv
YXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxv
YXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29udGVudFJlY3Qu
eCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMzQyMmIxYjg1MzBiOGY2ODlmZjJjNTY2NzY2MGJl
ZDVjZi4uODg2ZDEwMTJkOGU1MzI3OWNlNzRlNTFhMTAzNDlkYjgxYTg5ZmU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8v
IEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4KIGNsYXNzIENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBw
dWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAg
ICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0
dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQg
Y29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggMmEyNDY2ZDkxMjlhZWMzNjQwOTMyMjljYjkzNWFmODJkNTA3
MjRiNi4uZGQ3NDk2NzdjYjcxMmQwNGY3ZGUyMDUxMTAzMmNlNzczNTkyOWQzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hyb21p
dW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24o
KTsKIApAQCAtMTA5LDYgKzEwOSwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2NzZiZDYz
NDQ1YWE0NTNiMzY1ZWVlMjgwMjQwZjM4MDljMS4uYzVlOWZjY2ViZjQ3NmViN2QwMmJjOTgyMjE3
MGI2NjUzYTUxM2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2
ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAppbmRleCBmMmQ3ZTJkZGRhYTZmZDk5ZmJlNjAzYzNiOGUzNzNlOTk4
YTMzODM1Li45ZWVmYjQ2YjVlNTI0ZjdlZTIzNTk4Mzc4NTA1YjRmMmU0YTI5ZWE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZy
YW1lQnVmZmVyKCk7CiAgICAgfkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlh
bGl6ZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVy
ZSopOworICAgIFNrQ2FudmFzKiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdl
ZFRleHR1cmUqKTsKIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OwpAQCAtNjYsMTIgKzY2LDEyIEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAg
ICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZy
YW1lQnVmZmVyOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMq
IEZyYW1lQnVmZmVyOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1f
ZmJvID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAg
IHRleHR1cmUtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAg
ICBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENy
ZWF0ZSBhIHNraWEgZ3B1IGNhbnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29u
dGV4dC0+Z3JDb250ZXh0KCk7CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZl
cjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
cioKIH0gLy8gbmFtZXNwYWNlCiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJl
KQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAg
ICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUs
MjMgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVS
ZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CisgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAg
IGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5
bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNl
dENvbnRleHQoKTsKKworICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAg
IC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1
ZmZlciBidWZmZXI7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNv
bnRleHQsIHRleHR1cmUoKSk7CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJl
UmVjdChjb250ZXh0LCBjYW52YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZs
dXNoIFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBv
biB0aGUgdGV4dHVyZS4KKyAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAog
UGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwx
NCBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0Nh
bnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkKIHsKLSAgICAvLyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNv
bnRleHQuCi0gICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5
IFNLSUEgdG8gc3luYyBpdHMgaW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250
ZXh0KCktPnJlc2V0Q29udGV4dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNh
bnZhcyB0byBkcmF3IG9uLgotICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyog
Y2FudmFzID0gYnVmZmVyLmluaXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsK
LQogICAgIGNhbnZhcy0+Y2xpcFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNs
YXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAv
LyBOb3RlIHRoYXQgZGVzdFJlY3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0Lgog
ICAgIGNhbnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkg
KyBkZXN0UmVjdC54KCksCiAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkg
LSBzb3VyY2VSZWN0LnkoKSArIGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFz
KTsKLQotICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQg
c3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+
Zmx1c2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCAwNmI2MmQxOTk5YjU2MjM1MDQxY2MwZGJiMjIyNDkxMDUxZjk1OWViLi5hOGZm
ODVmZjViYmU0NzhhMmQ1ODVkZmE2NzVjZWQzOGNhMDQ5NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBACiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2NsYXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1Ymxp
YzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRl
eHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9w
RG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxl
ZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2Fu
dmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA0ZmI5NTc0ZDQ4ZWUwMDI4NzI4ZTkyMmUx
NGUzMTY3MDlhNjA0ZGRhLi4xZTMzYzZkMjY5N2JmMDEwMjA2ZGU0MTM4MzEzMzE3MmQ2OWZjMzIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ5LDE5ICs0OSwzNCBAQCBw
dWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoSW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQor
ICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAgICAgICAgICAgICwgbV90ZXh0dXJl
VXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wg
bmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICFtX3RleHR1
cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8q
IGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29u
dGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHRl
eHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQogCisgICAgICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgICAgICBJbWFnZUxheWVyVGV4dHVy
ZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIApAQCAtODUsMTUgKzEwMCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJH
UkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJU
ZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1Nj
YWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGls
ZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsKLSAgICAgICAgdGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQogICAgICAgICAvLyBTb3VyY2Ug
cmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4ZWxzLCBldmVuIGlmIHRo
aXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRleHR1cmUgZXh0ZW5kcyBv
dXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBjbGlwcGVkU291cmNlUmVjdCA9IHNv
dXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBjbGlwcGVkRGVz
dFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlvbigpIC0gc291cmNlUmVjdC5sb2Nh
dGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNldFNpemUoY2xpcHBlZFNvdXJjZVJl
Y3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVs
cygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgdGV4
dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZCht
X2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWRE
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAKICAgICB2b2lkIHVwZGF0ZUZyb21J
bWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAgLTE2Niw3ICsxNzksNyBAQCB2b2lk
IEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNl
dE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKQogewogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVV
cGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVmZTRmMjY2NjhiZGNj
M2UyOWYwNGNmZmNkYTg4MmE3M2MzMWUzMjcuLmY2ZWJjOGE3ZThiOTA3MzE4Y2Y1MjA2YzRmYjRl
ODdmYWVhMWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eSgpOwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAg
IHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA1
ZTA1YzE1N2M3OTVjZTFlMDY0ZGYyZGY5NjQ0MDdhZGJmZTU1MGIwLi5mZDA0M2YwOTVkMWE2MDIz
ZjVkNjZkYjhlODc3ZGMzZjc0N2M1NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw2ICsz
Niw3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0uaCIKQEAgLTUzLDcgKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNsYXNzIEND
VGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogY2xhc3MgQ0NMYXll
ckRlbGVnYXRlIHsKQEAgLTE2MCw4ICsxNjAsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBt
ZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nl
cy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBk
YXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNN
YXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzVjZjI5YTg5ZTM4OWUyNzY3N2IxMTkyMDZl
ZjI5YTRlMzAxNDYuLjIyNmJjMjE4MWQzMTY0ODBkYjk5MGM2MzA4MmQ1NTg4OWFjN2IxODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAotI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIApAQCAtMzgsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOworY2xhc3MgTWFuYWdl
ZFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogY2xhc3MgVGV4dHVyZU1hbmFnZXI7
CiAKQEAgLTQ4LDE0ICs0OCwyMyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7
IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVS
ZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwot
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICAgICAgdmly
dHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KIAotICAgIHByaXZh
dGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICAv
LyBwcmVwYXJlUmVjdCgpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhpcyByZXR1cm5zIHRydWUu
CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICAvLyBUaGlzIHJ1bnMgc3luY2hyb25vdXNseSBvbiB0aGUgaW1wbCB0aHJlYWQg
d2l0aCBzYWZlIGFjY2VzcyB0byBtYWluIHRocmVhZCByZXNvdXJjZXMuCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0
UmVjdCAqLykgeyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBvbiB0aGUgbWFpbiB0aHJlYWQgYWZ0
ZXIgY2FsbHMgdG8gbmVlZFByZXBhcmVSZWN0KCkgYW5kIHByZXBhcmVSZWN0KCkgYnV0IGJlZm9y
ZSB1cGRhdGVSZWN0KCkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5z
IGFzeW5jaHJvbm91c2x5IG9uIHRoZSBpbXBsIHRocmVhZC4gQWNjZXNzIHRvIG1haW4gdGhyZWFk
IHJlc291cmNlcyBpcyB1bnNhZmUuCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpID0gMDsKKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVi
bGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAgICB9OwogCiAgICAg
dmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNzgsNyArODcsNyBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4g
dGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJH
UkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxl
ZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiAvKiBj
b250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3Jk
ZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25z
dCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQg
LyogY29udGVudHNTY2FsZSAqLykgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5h
Z2VkVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5jcHAKaW5kZXggY2JkZmUwM2MyYzU0NDNiY2VhZjQzY2E2YWYwMmE3
M2M1NzFkMDMzMy4uZWUxODAyNWZhYTFkZTViMGYwNjI1MDMxN2Q4ODlkYThkNjlhZDdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdl
ZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtODAsMTEgKzgwLDE2IEBAIHZvaWQgTWFuYWdlZFRl
eHR1cmU6OnVucmVzZXJ2ZSgpCiAgICAgbV90ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0VGV4dHVy
ZShtX3Rva2VuKTsKIH0KIAotdm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3ZvaWQg
TWFuYWdlZFRleHR1cmU6OmFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogewogICAgIEFTU0VSVChtX3RleHR1cmVN
YW5hZ2VyLT5oYXNUZXh0dXJlKG1fdG9rZW4pKTsKICAgICBpZiAoIW1fdGV4dHVyZUlkKQogICAg
ICAgICBtX3RleHR1cmVJZCA9IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlVGV4dHVyZShhbGxv
Y2F0b3IsIG1fdG9rZW4pOworfQorCit2b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQor
eworICAgIGFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogICAgIGNvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVJZCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCmluZGV4IDRkNDM4MDk1OTUzNDBmNWQ3MzNkNTY3OTI5
MWE5MjA2NGM3YjFhZTUuLmQ3M2M4NzQyZDc4NDBlMjI5MDE0ZTAxYWZlZDI1NjZkN2M5OWJjMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01h
bmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyLT5pc1Byb3RlY3RlZChtX3Rva2VuKTsKICAgICB9CiAK
KyAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNTM3ZTEzN2U4ZDhlYzUx
OGI5MzRhYTVjZDJkNzAwYzc0YjE5ZmU0Yi4uNTVhMWRiOGZiNjAzZTZkMDQ5MDJhYWNmY2ZmZjg3
MDllODk1ZWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQCBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigp
CiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0
aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSkK
K3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUpCiB7CiAgICAgU2tD
YW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0
aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0
Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVmZXJyZWQodHJ1
ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0
KTsKLSAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRl
bnRzU2NhbGUpOworICAgIHBhaW50KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRl
bnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0
MGY4YjAzZWE0ZjI3MzlhOTc1NDM4NjdhYzdlYjE1NDAzMGQwYzIuLmFlZmJmYzNmNmE0YTJhM2Fh
NzFhNWIxZmI0M2VkZWFmMWNiZjZkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNT
Y2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNWM1NWY1OWJmM2U3MzcyZmU5ZWM1MTJl
ZjYzNjExMDFhYzVhMDVlNS4uMmE2ODE1ODJiMzY1ZjRjNGFlYWQxZjIzYmVmNmNkOTE2Y2E3NDdh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xNzIsMTQgKzE3MiwxNCBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXIoQ0NMYXllclRpbGluZ0RhdGE6
OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlcgogICAgIG1fdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0
YTo6Y3JlYXRlKG1fdGlsZVNpemUsIGJvcmRlclRleGVsT3B0aW9uKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYg
aGFuZGxlcikKIHsKICAgICAvLyBJZiB0aGlzIGFzc2VydCBpcyBoaXQsIGl0IG1lYW5zIHRoYXQg
cGFpbnRDb250ZW50c0lmRGlydHkgaGFzbid0IGJlZW4KICAgICAvLyBjYWxsZWQgb24gdGhpcyBs
YXllci4gQW55IGxheWVyIHRoYXQgaXMgdXBkYXRlZCBzaG91bGQgYmUgcGFpbnRlZCBmaXJzdC4K
ICAgICBBU1NFUlQobV90aWxlcik7CiAKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21w
b3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBi
ZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlciB8fCAhbV90aWxlci0+bnVt
VGlsZXMoKSkKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0Lmlz
RW1wdHkoKSB8fCAhbV90aWxlciB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207CkBAIC0yMTksMTEgKzIxOSw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlCiAg
ICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3Bh
aW50UmVjdC5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAg
ICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
KyAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRS
ZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKIH0KIAog
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGls
aW5nT3B0aW9uKQpAQCAtMzk5LDE1ICszOTcsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIG1fcmVxdWVz
dGVkVXBkYXRlUmVjdCA9IGNvbnRlbnRSZWN0OwogCiAgICAgbV9wYWludFJlY3QgPSBtX3RpbGVy
LT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KGRpcnR5TGF5ZXJSZWN0KTsKLSAgICBpZiAoZGlydHlM
YXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIENhbGxpbmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50
byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0
IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8g
dGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNh
bid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhl
IHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVy
ZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0g
ICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigp
KTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1f
dGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1Nj
YWxlKCkpOwogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhtX3JlcXVlc3Rl
ZFVwZGF0ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgZm9yIChpbnQgaiA9
IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8
PSByaWdodDsgKytpKSB7CkBAIC00MzIsMTMgKzQyNCwyNSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAg
ICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogCiAgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJl
Y3QgPSBzb3VyY2VSZWN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCkt
PnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQogCit2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCkKK3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1w
dHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250ZW50cygpIGNhbGxzIGlu
dG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQorICAgIC8vIGVmZmVj
dCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRv
IHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyBIb3dldmVyLCB3ZSBj
YW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRo
ZSBwYWludCBmaW5pc2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhl
cmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgor
ICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIo
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyhtX3BhaW50UmVjdCwgbV90
aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2Nh
bGUoKSk7CisKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJl
Y3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOworfQorCisKIH0KICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI4
ZTdkMWQwYzU2OTY4MDBmM2Q2MjEyNDA4ZGQ4ZDE4YmNlZGJlYzIuLmU0NzgxOGY2NDIwNjYxNzMx
N2ZlOTVhMzMxOTE3Yzc3Zjg0MGVjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1
bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtNzUsOCArNzUsMTAgQEAgcHJvdGVjdGVkOgog
CiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1
cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KTsKLSAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJl
cyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBk
YXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIC8vIFBhaW50
IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBj
b250ZW50UmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7
CiAKQEAgLTkzLDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQo
aW50LCBpbnQpIGNvbnN0OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQp
OwogCi0gICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUo
KSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0
ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAg
ICBJbnRSZWN0IG1fcmVxdWVzdGVkVXBkYXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdl
ZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNl
bnRzIHRoZSBhcmVhCiAgICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFp
bnRlZCBieSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlYzkz
ZjE2OGRhMTRlYTQxZTNjMTZkZjZkN2M0OWJlZTQ1MTNlYWNlLi43YmVjN2MwYTE4MDAzZGM5MWUx
ZDRjYmFhZGRlOWQzYjJkNDFmZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQwLDExICs0MCw2MSBAQAogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgi
Ci0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9M
YXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRlb0xheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1ZmZl
cigwKQoreworfQorCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRl
clRleHR1cmUoKQoreworICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIpOworfQorCit2b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorewor
ICAgIEludFNpemUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgpOworCisgICAgRXh0ZW5z
aW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJv
bWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9tYXBwZWRCdWZmZXIgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRo
KCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkp
OworCisgICAgaWYgKCFtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBzaXplX3QgYnVmZmVyU2l6
ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhkaW1lbnNpb25zLCBtX3RleHR1cmUt
PmZvcm1hdCgpKTsKKyAgICAgICAgbV9idWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90
W2J1ZmZlclNpemVdKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShj
b250ZXh0LCBhbGxvY2F0b3IpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OmRhdGFSZWN0KGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgc2l6ZV90IGJ1ZmZl
clNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlLT5zaXplKCks
IG1fdGV4dHVyZS0+Zm9ybWF0KCkpOworCisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKQorICAgICAg
ICBtZW1jcHkobV9tYXBwZWRCdWZmZXIsIGRhdGEsIGJ1ZmZlclNpemUpOworICAgIGVsc2UKKyAg
ICAgICAgbWVtY3B5KG1fYnVmZmVyLmdldCgpLCBkYXRhLCBidWZmZXJTaXplKTsKK30KKwordm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25z
dCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlLT50ZXh0
dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGlmIChtX21hcHBlZEJ1ZmZl
cikgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19j
YXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAg
ICAgICAgR0xDKGNvbnRleHQsIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVN
KG1fbWFwcGVkQnVmZmVyKSk7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVs
c2UgeworICAgICAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKyAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5o
ZWlnaHQoKSwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIG1fYnVmZmVyLmdldCgpKSk7CisgICAgICAgIG1fYnVmZmVyLmNsZWFyKCk7CisgICAg
fQorfQorCiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVt
OjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIq
IHByb3ZpZGVyKQogewpAQCAtNTgsNiArMTA4LDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpWaWRl
b0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3YK
ICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX3BsYW5lcygwKQogICAgICwgbV9u
YXRpdmVUZXh0dXJlSWQoMCkKKyAgICAsIG1fZnJhbWUoMCkKIHsKIH0KIApAQCAtNzUsMTcgKzEy
NiwxOSBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiB7CiAg
ICAgTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsraSkKLSAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1
cmUuY2xlYXIoKTsKKyAgICAgICAgbV90ZXh0dXJlc1tpXS5jbGVhcigpOwogfQogCi12b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKKyAgICBtX2ZyYW1lID0gMDsK
KwogICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9wcm92aWRlciB8fCAhZHJhd3NDb250ZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9uZWVkc0Rpc3BsYXkgJiYgdGV4dHVyZXNW
YWxpZCgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxh
bmVzOyBwbGFuZSsrKSB7Ci0gICAgICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0
dXJlc1twbGFuZV0ubV90ZXh0dXJlLmdldCgpOworICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUq
IHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgICAgICBpZiAoIXRl
eC0+cmVzZXJ2ZSh0ZXgtPnNpemUoKSwgdGV4LT5mb3JtYXQoKSkpIHsKICAgICAgICAgICAgICAg
ICBtX3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjMsOCAr
MTc2LDEwIEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICAvLyBBbGxvY2F0ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkgYXJlIG5vdCBh
bGxvY2F0ZWQgYWxyZWFkeSwgb3IKLSAgICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRoYXQgYXJl
IHRoZSB3cm9uZyBzaXplIGZvciB0aGUgZnJhbWUuCisgICAgaWYgKGZyYW1lLT5wbGFuZXMoKSA+
IE1heFBsYW5lcykKKyAgICAgICAgQ1JBU0goKTsKKworICAgIC8vIFJlc2VydmUgdGV4dHVyZXMg
Zm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBub3QgcmVzZXJ2ZWQgYWxyZWFkeS4KICAgICBib29sIHRl
eHR1cmVzUmVzZXJ2ZWQgPSByZXNlcnZlVGV4dHVyZXMoZnJhbWUsIHRleHR1cmVGb3JtYXQpOwog
ICAgIGlmICghdGV4dHVyZXNSZXNlcnZlZCkgewogICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7
CkBAIC0xMzIsMjEgKzE4NywzNCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgLy8gVXBkYXRlIHRleHR1cmUgcGxhbmVzLgotICAgIGZvciAo
dW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewot
ICAgICAgICBUZXh0dXJlJiB0ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07Ci0gICAgICAgIEFT
U0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7Ci0gICAgICAgIEFTU0VSVChmcmFtZS0+cmVxdWlyZWRU
ZXh0dXJlU2l6ZShwbGFuZSkgPT0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKSk7Ci0gICAgICAg
IHVwZGF0ZVRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJh
bWUtPmRhdGEocGxhbmUpKTsKLSAgICB9Ci0KKyAgICBtX2ZyYW1lID0gZnJhbWU7CiAgICAgbV9w
bGFuZXMgPSBmcmFtZS0+cGxhbmVzKCk7Ci0gICAgQVNTRVJUKG1fcGxhbmVzIDw9IE1heFBsYW5l
cyk7CiAKICAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBib3VuZHMo
KSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7Cisg
ICAgLy8gQ29weSBwbGFuZXMgdG8gbWFwcGVkIGJ1ZmZlcnMuCisgICAgZm9yICh1bnNpZ25lZCBw
bGFuZSA9IDA7IHBsYW5lIDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspCisgICAgICAgIG1f
dGV4dHVyZXNbcGxhbmVdLT5kYXRhUmVjdChtX2ZyYW1lLT5kYXRhKHBsYW5lKSk7CisKKyAgICBt
X3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7Cit9CisKK3ZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUr
KykgeworICAgICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQoKSwgbV90ZXh0dXJlc1twbGFuZV0t
PnZpc2libGVTaXplKCkpOworICAgICAgICBoYW5kbGVyLmhhbmRsZShtX3RleHR1cmVzW3BsYW5l
XS5nZXQoKSwgcmVjdCwgcmVjdCk7CisgICAgfQogfQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCkBAIC0xNTcsMTEgKzIyNSwx
MSBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1w
bCogbGF5ZXIpCiAgICAgdmlkZW9MYXllci0+c2V0U2tpcHNEcmF3KG1fc2tpcHNEcmF3KTsKICAg
ICB2aWRlb0xheWVyLT5zZXRGcmFtZUZvcm1hdChtX2ZyYW1lRm9ybWF0KTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFuZXM7ICsraSkgewotICAgICAgICBpZiAoIW1fdGV4dHVy
ZXNbaV0ubV90ZXh0dXJlKSB7CisgICAgICAgIGlmICghbV90ZXh0dXJlc1tpXSkgewogICAgICAg
ICAgICAgdmlkZW9MYXllci0+c2V0U2tpcHNEcmF3KHRydWUpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCBtX3RleHR1cmVz
W2ldLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLT5zaXpl
KCksIG1fdGV4dHVyZXNbaV0ubV92aXNpYmxlU2l6ZSk7CisgICAgICAgIHZpZGVvTGF5ZXItPnNl
dFRleHR1cmUoaSwgbV90ZXh0dXJlc1tpXS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgbV90ZXh0
dXJlc1tpXS0+dGV4dHVyZSgpLT5zaXplKCksIG1fdGV4dHVyZXNbaV0tPnZpc2libGVTaXplKCkp
OwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5lczsgaSA8IE1heFBsYW5lczsg
KytpKQogICAgICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIDAsIEludFNpemUoKSwgSW50
U2l6ZSgpKTsKQEAgLTE3MiwxMCArMjQwLDggQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogdm9pZCBWaWRlb0xheWVyQ2hyb21p
dW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewogICAgIGlmICho
b3N0ICYmIGxheWVyVHJlZUhvc3QoKSAhPSBob3N0KSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsraSkgewotICAgICAgICAgICAgbV90ZXh0dXJlc1tpXS5t
X3Zpc2libGVTaXplID0gSW50U2l6ZSgpOwotICAgICAgICAgICAgbV90ZXh0dXJlc1tpXS5tX3Rl
eHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKGhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFn
ZXIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBs
YW5lczsgKytpKQorICAgICAgICAgICAgbV90ZXh0dXJlc1tpXSA9IFVwZGF0ZXJUZXh0dXJlOjpj
cmVhdGUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2Vy
KCkpKTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KGhvc3Qp
OwpAQCAtMTk5LDggKzI2NSwxMCBAQCBHQzNEZW51bSBWaWRlb0xheWVyQ2hyb21pdW06OmRldGVy
bWluZVRleHR1cmVGb3JtYXQoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcgogCiBib29sIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6dGV4dHVyZXNWYWxpZCgpCiB7CisgICAgQVNTRVJUKGxheWVyVHJl
ZUhvc3QoKSk7CisKICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5l
czsgcGxhbmUrKykgewotICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlc1tw
bGFuZV0ubV90ZXh0dXJlLmdldCgpOworICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90
ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKTsKICAgICAgICAgaWYgKCF0ZXgtPmlzVmFsaWQodGV4
LT5zaXplKCksIHRleC0+Zm9ybWF0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTIxNywxOSArMjg1LDIwIEBAIGJvb2wgVmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZl
VGV4dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwgR0MzRGVuCiAKICAgICBm
b3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKysp
IHsKICAgICAgICAgSW50U2l6ZSByZXF1aXJlZFRleHR1cmVTaXplID0gZnJhbWUtPnJlcXVpcmVk
VGV4dHVyZVNpemUocGxhbmUpOworICAgICAgICBBU1NFUlQobV90ZXh0dXJlc1twbGFuZV0pOwor
ICAgICAgICBBU1NFUlQobV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKSk7CiAKICAgICAgICAg
Ly8gSWYgdGhlIHJlbmRlcmVyIGNhbm5vdCBoYW5kbGUgdGhpcyBsYXJnZSBvZiBhIHRleHR1cmUs
IHJldHVybiBmYWxzZS4KICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHRlc3Qgd2hlbiB0
aWxlZCBsYXllcnMgYXJlIGltcGxlbWVudGVkLgogICAgICAgICBpZiAocmVxdWlyZWRUZXh0dXJl
U2l6ZS5pc1plcm8oKSB8fCByZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgPiBtYXhUZXh0dXJl
U2l6ZSB8fCByZXF1aXJlZFRleHR1cmVTaXplLmhlaWdodCgpID4gbWF4VGV4dHVyZVNpemUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW3BsYW5l
XS5tX3RleHR1cmUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1f
dGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUp
Ci0gICAgICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3Zpc2libGVTaXplID0gY29tcHV0ZVZp
c2libGVTaXplKGZyYW1lLCBwbGFuZSk7CisgICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS0+
dGV4dHVyZSgpLT5zaXplKCkgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkgeworICAgICAgICAgICAg
SW50U2l6ZSB2aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwgcGxhbmUpOwor
ICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0tPnNldFZpc2libGVTaXplKHZpc2libGVTaXpl
KTsKKyAgICAgICAgfQogCi0gICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS0+cmVz
ZXJ2ZShyZXF1aXJlZFRleHR1cmVTaXplLCB0ZXh0dXJlRm9ybWF0KTsKKyAgICAgICAgbV90ZXh0
dXJlc1twbGFuZV0tPnRleHR1cmUoKS0+cmVzZXJ2ZShyZXF1aXJlZFRleHR1cmVTaXplLCB0ZXh0
dXJlRm9ybWF0KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1OSwyOCArMzI4LDYg
QEAgSW50U2l6ZSBWaWRlb0xheWVyQ2hyb21pdW06OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBW
aWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lLAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0
aCwgdmlzaWJsZUhlaWdodCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IHZvaWQqIGRhdGEpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7Ci0KLSAgICB0
ZXh0dXJlLm1fdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLQotICAg
IEdDM0RlbnVtIGZvcm1hdCA9IHRleHR1cmUubV90ZXh0dXJlLT5mb3JtYXQoKTsKLSAgICBJbnRT
aXplIGRpbWVuc2lvbnMgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpOwotCi0gICAgdm9pZCog
bWVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQo
KSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNE
Q2hyb21pdW06OldSSVRFX09OTFkpOwotICAgIGlmIChtZW0pIHsKLSAgICAgICAgbWVtY3B5KG1l
bSwgZGF0YSwgZGltZW5zaW9ucy53aWR0aCgpICogZGltZW5zaW9ucy5oZWlnaHQoKSk7Ci0gICAg
ICAgIEdMQyhjb250ZXh0LCBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSktPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1lbSkpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSBmYWls
cywgdGhlbiBkbyB0aGUgc2xvd2VyIHRleFN1YkltYWdlMkQKLSAgICAgICAgLy8gdXBsb2FkLiBU
aGlzIGRvZXMgdHdpY2UgdGhlIGNvcGllcyBhcyBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0sIG9u
ZQotICAgICAgICAvLyBpbiB0aGUgY29tbWFuZCBidWZmZXIgYW5kIGFub3RoZXIgdG8gdGhlIHRl
eHR1cmUuCi0gICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRp
bWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUsIGRhdGEpKTsKLSAgICB9Ci19Ci0KIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpyZWxlYXNl
UHJvdmlkZXIoKQogewogICAgIG1fcHJvdmlkZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaAppbmRleCA1MTZjOGQzODQ3YzJhZGI2NGM1YmJlZmI3Yzk5Y2FiNWY1YWZhYmEzLi4zNTFm
OGY4ZDE1NjEzMTcyMGYzZTZiMzg0ZWIzNDJmODA3NGU1MDhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVy
Q2hyb21pdW0uaApAQCAtNDMsNiArNDMsMzMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBM
YXllciB0aGF0IGNvbnRhaW5zIGEgVmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVy
VGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZSh0ZXh0dXJlKSk7CisgICAgICAgIH0K
KworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2b2lkIGRhdGFSZWN0KGNvbnN0IHZvaWQqKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAgdm9pZCBz
ZXRWaXNpYmxlU2l6ZShJbnRTaXplJiBzaXplKSB7IG1fdmlzaWJsZVNpemUgPSBzaXplOyB9Cisg
ICAgICAgIEludFNpemUmIHZpc2libGVTaXplKCkgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXh0dXJlOworICAgICAgICBJbnRTaXplIG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVpbnQ4X3Qq
IG1fbWFwcGVkQnVmZmVyOworICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsK
KyAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzcs
OSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0
ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJh
d3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJv
dmlkZXIoKTsKQEAgLTYzLDE4ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFudXBSZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0g
ICAgICAgIEludFNpemUgbV92aXNpYmxlU2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiBtX3RleHR1cmU7Ci0gICAgfTsKLQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVy
RGVsZWdhdGUqLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBk
ZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0
YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0q
LCB1bnNpZ25lZCBwbGFuZSk7CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAgYm9vbCBy
ZXNlcnZlVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIFRleHR1cmUmLCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAgICB2b2lk
IHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAKQEAgLTgzLDEyICsxMDYsMTQgQEAgcHJpdmF0ZToK
ICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIG1fcHJvdmlkZXI7CiAKICAgICBlbnVtIHsgTWF4UGxh
bmVzID0gMyB9OwotICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOworICAgIE93blB0
cjxVcGRhdGVyVGV4dHVyZT4gbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2lnbmVkIG1f
cGxhbmVzOwogCiAgICAgdW5zaWduZWQgbV9uYXRpdmVUZXh0dXJlSWQ7CiAgICAgSW50U2l6ZSBt
X25hdGl2ZVRleHR1cmVTaXplOwogICAgIEludFNpemUgbV9uYXRpdmVUZXh0dXJlVmlzaWJsZVNp
emU7CisKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBkZWI4Yzk0NzQyMmExM2UxZjE3NDVkYWFmNDYz
ODBhODAzZmJkNjVkLi4zZjRiMDViNmE0OTcyYTRkNTZlN2ZlZDFiNGJhYzk3MjMyODQ5Nzg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBk
YXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisg
ICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RS
ZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCk7Cit9CisKIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21p
dW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBA
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSog
ZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVV
cGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJU
ZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgy
LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIChjb250ZXh0KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQog
Ci12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQg
V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNv
CiAgICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhh
bmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgp
KTsKK30KKwogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9D
YW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRh
dGVkIHx8ICFsYXllclJlbmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggNjM3NGI5ZWY2YjExN2FkMjM1NWExZmFkYjY5ZGRi
NDEwN2E2OTMxMC4uNTRiMjdkNDc2NjU1MTFkNzAzZmU2NjZhYWIzZDVjMWJjYWJmNmRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUg
IkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwog
Ly8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hy
b21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3Mg
VXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3Jl
YXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBs
aWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJH
TExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAg
IHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZpcnR1YWwg
dm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50
UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAsOCBA
QCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2Ug
dGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRo
ZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVy
OworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMjdkOTU2YTdjN2FmYmQwOTVk
Yjk0NWI5MzRhMTY2ZWZhNTVmMzc0Zi4uYzY1ODQ1MjhjODBkMzAzZWE1ZWE2NjYwNTBmNWI2OWFk
ZjY3ZTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHku
aCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKQEAgLTQ4LDYgKzQ5LDUyIEBA
IGJvb2wgQ0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQog
ICAgIHJldHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJlZUhv
c3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9y
ZXNvdXJjZXMoMCkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVy
Ojp+TmVlZFJlc291cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpO
ZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQor
ICAgICAgICBtX3Jlc291cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNv
dXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhv
c3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sK
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+
bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4
dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVI
b3N0OjpQYWludEhhbmRsZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1f
cHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFp
bnRIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6
aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUt
PnBhaW50Q29udGVudHNSZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0
dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVI
b3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVu
dCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVl
SG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50
LCBzZXR0aW5ncykpOwpAQCAtMzE0LDcgKzM2MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
b21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5
LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
KCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMjIsMTIg
KzM2OSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAo
dmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVM
YXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVy
U3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAg
LTMzNiwyNCArMzgzLDc3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50
KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlw
UmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25l
IHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1f
dXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsK
KyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVk
IGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBl
bmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7
Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBs
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwg
dGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJT
dXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1
cmVTaXplKTsKKyAgICB9CisKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5k
ZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxh
eWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRl
TGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0
b3JSZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJl
c291cmNlcygpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29t
cG9zaXRvclJlc291cmNlcyIsIHRoaXMsIDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIg
aGFuZGxlcihjb250ZXh0LCBhbGxvY2F0b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoaGFuZGxlcik7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkK
K3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmll
d3BvcnRTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRl
bnRzKHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVu
dHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVy
VHJlZUhvc3Q6OnBhaW50Q29udGVudHMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVy
SW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAt
LWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBk
YXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisKKyAgICAgICAgUGFpbnRIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7
CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAg
IH0KK30KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOwordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KQoreworICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBj
b25kaXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5n
IHRoZSByZW5kZXIgc3VyZmFjZSBsYXllciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJl
cGxpY2FzIGhvd2V2ZXIsIHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAg
ICBpZiAobGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAh
bGF5ZXItPmRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0
LmFwcGVuZChsYXllcik7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRS
ZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIp
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVM
aXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBs
YXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAg
ICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdp
bGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM2MiwzMyAr
NDYyLDMzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVy
LT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJl
bmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFw
cGVuZFZpc2libGVMYXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVM
aXN0KTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJT
dXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAog
ICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJl
cGxpY2FMYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJs
ZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FM
YXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1h
c2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAg
ICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxp
c3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRM
YXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYg
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBm
b3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7
IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNl
SW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VV
cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgp
IHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3Vy
ZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJm
YWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJl
bmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5kTWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRlTGlzdCk7
CiAKICAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5s
YXllckxpc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJ
bmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewpAQCAtNDA0LDQ5ICs1MDQs
MjkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIEFTU0VSVChsYXllci0+
b3BhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1wdHko
KSk7CiAKLSAgICAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAg
ICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKGxheWVyLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIp
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJ
bmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3Vy
ZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9
IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwotICAgICAgICBBU1NFUlQocmVu
ZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSk7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tM
YXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0g
ICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAg
ICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAg
ICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVy
KCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVy
U3VyZmFjZS0+bGF5ZXJMaXN0KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9
IDA7IGxheWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAg
ICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgp
OwotCi0gICAgICAgICAgICBpZiAoQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpyZW5kZXJTdXJmYWNl
Q29udHJpYnV0ZXNUb1RhcmdldDxMYXllckNocm9taXVtPihsYXllciwgcmVuZGVyU3VyZmFjZUxh
eWVyLT5pZCgpKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAg
IH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0g
MTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21p
dW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAg
IGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChz
aXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUo
KTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3Vw
ZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVh
cigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwg
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAg
ICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJm
YWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRh
dGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Nj
cm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBh
YWFkMTQyMjlkMzUxMGVlMTkxMDIxYzc2NGM3NWI0ZmI0NzNhYjU1Li5jMzJlMjEwYmZhNDdmOGZh
OWFiMTE1NTE4MDNjMmVkYWI4N2NjOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApA
QCAtNDUsNyArNDUsNiBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNz
IFRleHR1cmVBbGxvY2F0b3I7CkBAIC03NCw3ICs3Myw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsK
ICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQ
bGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKLSAg
ICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgcGVy
VGlsZVBhaW50aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBkZWxheVRleHR1cmVVcGRhdGVzKGZh
bHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9z
aXRlT2Zmc2NyZWVuOwpAQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAg
Ym9vbCBzaG93UGxhdGZvcm1MYXllclRyZWU7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOwogICAg
IGJvb2wgcGVyVGlsZVBhaW50aW5nOworICAgIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07
CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJp
bGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMTg2LDkgKzE4NywxMiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAg
ICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAg
Ym9vbCBuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAg
IHZvaWQgcGFpbnRDb250ZW50cygpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgZm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAg
ICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsK
ICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lk
IHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMTk4LDEyICsyMDIsNTAg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgorICAgIGNs
YXNzIE5lZWRSZXNvdXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBOZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisgICAg
ICAgIHZpcnR1YWwgfk5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAgaW50IHJlc291
cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBp
bnQgbV9yZXNvdXJjZXM7CisgICAgfTsKKworICAgIGNsYXNzIFByZXBhcmVSZXNvdXJjZUhhbmRs
ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgor
ICAgICAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciopOworICAgICAgICB2aXJ0dWFsIH5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsK
KyAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgfTsKKworICAgIGNs
YXNzIFBhaW50SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFBhaW50SGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZp
cnR1YWwgflBhaW50SGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIENDUHJveHkq
IG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IExheWVyTGlzdDsKIAotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYpOwotICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
TGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21p
dW0qLCBMYXllckxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lk
IGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExh
eWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7
CisgICAgdm9pZCBwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFy
UGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0y
MTksNyArMjYxLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290
TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXI7CiAKLSAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAog
ICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGJiMzc4MDE0N2Ix
NmMyNmI3NWE3Y2NkMjJhYThiOGZlODRlNzZiYmQuLmVlZTZkMThjMWU4MDA4ZDgzZjk1M2NhYjQ1
YmY0ZDQ0MTY5ZTQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUg
Q0NQcm94eV9oCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTc5LDYgKzgwLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxs
ZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsg
Ly8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBE
ZWJ1ZyBob29rcwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA1MDFhMDBjMmIwOWEwZGY5MGRjNjFkY2Fm
Y2ZjYTdkN2M2NjdiMTg1Li5jODk1YTUxNmQzZjYzY2Y0NzAxZDFmN2NiYjgzOTAzNThlZjgyNGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC02OCw2ICs2OCwxMiBAQCB2b2lkIENDU2No
ZWR1bGVyOjpzZXROZWVkc0ZvcmNlZFJlZHJhdygpCiAgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlv
bnMoKTsKIH0KIAordm9pZCBDQ1NjaGVkdWxlcjo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygp
Cit7CisgICAgbV9zdGF0ZU1hY2hpbmUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworICAg
IHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2lu
RnJhbWVDb21wbGV0ZSgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZy
YW1lQ29tcGxldGUiLCB0aGlzLCAwKTsKQEAgLTk2LDcgKzEwMiw3IEBAIHZvaWQgQ0NTY2hlZHVs
ZXI6OmJlZ2luRnJhbWUoKQogewogICAgIGlmIChtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KSB7CiAgICAgICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICAg
ICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGll
bnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fc3RhdGVNYWNoaW5lLnVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291cmNlVXBkYXRl
cygpKTsKICAgICB9CiAgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lIiwg
dGhpcywgMCk7CiAKQEAgLTEwNSw2ICsxMTEsMTQgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5G
cmFtZSgpCiAgICAgbV9zdGF0ZU1hY2hpbmUuZGlkTGVhdmVWU3luYygpOwogfQogCit2b2lkIEND
U2NoZWR1bGVyOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKQoreworICAgIEFTU0VSVCht
X3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKKyAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nID0gZmFsc2U7CisgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOworICAgIHByb2Nlc3NT
Y2hlZHVsZWRBY3Rpb25zKCk7Cit9CisKIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVs
ZWRBY3Rpb25zKCkKIHsKICAgICAvLyBFYXJseSBvdXQgc28gd2UgZG9uJ3Qgc3BhbSBUUkFDRV9F
VkVOVFMgd2l0aCB1c2VsZXNzIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zLgpAQCAtMTI1LDYgKzEz
OSw3IEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCkKICAgICAg
ICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKKyAgICAgICAgICAgIEFTU0VSVChtX2NsaWVudC0+
aGFzTW9yZVJlc291cmNlVXBkYXRlcygpKTsKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVs
ZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3
ZXJlIGp1c3QgdG9sZCB0byB1cGRhdGUgcmVzb3VyY2VzLCBidXQgdGhlcmUgYXJlIG5vCkBAIC0x
MzIsNyArMTQ3LDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMo
KQogICAgICAgICAgICAgICAgIC8vIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlcyBjb21wbGV0ZWQu
IElmIG1vcmUgYXJlIHBlbmRpbmcsCiAgICAgICAgICAgICAgICAgLy8gdGhlbiB3ZSB3aWxsIGFj
ayB0aGUgdXBkYXRlIGF0IHRoZSBuZXh0IGRyYXcuCiAgICAgICAgICAgICAgICAgbV91cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNo
aW5lLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwog
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV91cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCmlu
ZGV4IDk1ZTk5NWY0NTE4ZWQ2N2NmMzRmNGM3ODg4NzRmNjkyMmU3ZTI2ZGQuLjgyODIyODEyZTkw
MWI5YWJjMzg2NDljNmYxYjRhYmFmNzBkZWM3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaApAQCAt
NjYsMTEgKzY2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBBcyBzZXROZWVkc1JlZHJhdygpLCBidXQg
ZW5zdXJlcyB0aGUgZHJhdyB3aWxsIGRlZmluaXRlbHkgaGFwcGVuIGV2ZW4gaWYgd2UgYXJlIG5v
dCB2aXNpYmxlLgogICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRSZWRyYXcoKTsKIAorICAgIHZvaWQg
c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRl
KCk7Ci0KICAgICB2b2lkIHNldE1heEZyYW1lc1BlbmRpbmcoaW50KTsKICAgICB2b2lkIGRpZFN3
YXBCdWZmZXJzQ29tcGxldGUoKTsKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzQWJvcnQoKTsKKyAg
ICB2b2lkIHVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpOwogCiAgICAgYm9vbCBjb21taXRQ
ZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUuY29tbWl0UGVuZGluZygpOyB9
CiAgICAgYm9vbCByZWRyYXdQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZU1hY2hpbmUu
cmVkcmF3UGVuZGluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5jcHAKaW5kZXggNGNmZjY3MzBiODdjZTE0MjljYWIwZDIxOTA3ZjI4NmRhODZiYTQ3Yi4u
ZmY2NWZlNTBhMjU3NTA2OWViZTY0YjViZTRiYmQ2YmQ0YzZkZjhlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcApAQCAtMzcsNyArMzcsOSBAQCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogICAgICwgbV9u
ZWVkc0NvbW1pdChmYWxzZSkKICAgICAsIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFs
c2UpCiAgICAgLCBtX2luc2lkZVZTeW5jKGZhbHNlKQotICAgICwgbV92aXNpYmxlKGZhbHNlKSB7
IH0KKyAgICAsIG1fdmlzaWJsZShmYWxzZSkKKyAgICAsIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGlu
ZyhmYWxzZSkKKyAgICAsIG1fZnJhbWVDb21wbGV0ZShmYWxzZSkgeyB9CiAKIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24o
KSBjb25zdAogewpAQCAtNTEsMTUgKzUzLDEwIEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Y3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogICAgICAg
ICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFNRTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9O
T05FOwogCi0gICAgY2FzZSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAg
IGlmIChzaG91bGREcmF3KQotICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFXOwotICAgICAg
ICByZXR1cm4gQUNUSU9OX05PTkU7Ci0KICAgICBjYXNlIENPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVM6CiAgICAgICAgIGlmIChzaG91bGREcmF3KQogICAgICAgICAgICAgcmV0dXJuIEFD
VElPTl9EUkFXOwotICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCisg
ICAgICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyAmJiBtX3Jlc291cmNlVXBk
YXRlc1BlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JF
X1JFU09VUkNFUzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCkBAIC04Myw4ICs4MCwx
MCBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24gYWN0
aW9uKQogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CiAgICAgICAgIEFTU0VSVChtX3Zp
c2libGUpOwotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BS
T0dSRVNTOworICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyk7CisgICAg
ICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOwogICAg
ICAgICBtX25lZWRzQ29tbWl0ID0gZmFsc2U7CisgICAgICAgIG1fZnJhbWVDb21wbGV0ZSA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVM6CkBAIC0xNDQsMTggKzE0MywyNiBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpzZXROZWVkc0NvbW1pdCgpCiAgICAgbV9uZWVkc0NvbW1pdCA9IHRydWU7CiB9CiAK
K3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmco
KQoreworICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IHRydWU7Cit9CisKIHZvaWQgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJU
KG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTKTsKLSAgICBt
X2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzsKKyAgICBBU1NF
UlQobV9jb21taXRTdGF0ZSA9PSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKKyAg
ICBtX2ZyYW1lQ29tcGxldGUgPSB0cnVlOworICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyAmJiAhbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKQorICAgICAgICBtX2NvbW1pdFN0
YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIAotdm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3Jl
UGVuZGluZykKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQogewogICAgIEFTU0VSVChtX2NvbW1pdFN0YXRl
ID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIEFTU0VSVChtX3VwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKTsKICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
ID0gZmFsc2U7Ci0gICAgaWYgKCFtb3JlUGVuZGluZykKKyAgICBtX3Jlc291cmNlVXBkYXRlc1Bl
bmRpbmcgPSBtb3JlUGVuZGluZzsKKyAgICBpZiAoIW1vcmVQZW5kaW5nICYmIG1fZnJhbWVDb21w
bGV0ZSkKICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9SRUFEWV9UT19DT01N
SVQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4
IDVhMjdiZDI4Yjg4YTc0Y2I2OTRlZDNlNDU1MWQ0MzM3ZGQ2MWM1MzIuLjBkOWViMTUyN2NkNDIw
YWQ0N2YyNzdlMzE0ZWY1NTc5YzEzZDA4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuaApAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAKICAgICBlbnVtIENv
bW1pdFN0YXRlIHsKICAgICAgICAgQ09NTUlUX1NUQVRFX0lETEUsCi0gICAgICAgIENPTU1JVF9T
VEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKICAgICAgICAg
Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCkBAIC04OSwxNCArODgsMTcgQEAg
cHVibGljOgogICAgIC8vIHRocmVhZCB0byBtYWluLgogICAgIHZvaWQgc2V0TmVlZHNDb21taXQo
KTsKIAorICAgIC8vIEluZGljYXRlcyB0aGF0IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHRoYXQgbmVl
ZCB1cGRhdGluZyBhcmUgcGVuZGluZy4KKyAgICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRp
bmcoKTsKKwogICAgIC8vIENhbGwgdGhpcyBvbmx5IGluIHJlc3BvbnNlIHRvIHJlY2VpdmluZyBh
biBBQ1RJT05fQkVHSU5fRlJBTUUKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5kaWNhdGVzIHRo
YXQgYWxsIHBhaW50aW5nIGlzIGNvbXBsZXRlIGFuZCB0aGF0Ci0gICAgLy8gdXBkYXRpbmcgb2Yg
Y29tcG9zaXRvciByZXNvdXJjZXMgY2FuIGJlZ2luLgorICAgIC8vIG9ubHkgdXBkYXRpbmcgb2Yg
Y29tcG9zaXRvciByZXNvdXJjZXMgaXMgbGVmdC4KICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0
ZSgpOwogCiAgICAgLy8gQ2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFu
IEFDVElPTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMKICAgICAvLyBmcm9tIG5leHRTdGF0ZS4gSW5k
aWNhdGVzIHRoYXQgdGhlIHNwZWNpZmljIHVwZGF0ZSByZXF1ZXN0IGNvbXBsZXRlZC4KLSAgICB2
b2lkIGJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwor
ICAgIHZvaWQgdXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wgbW9yZVBlbmRpbmcpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgQ29tbWl0U3RhdGUgbV9jb21taXRTdGF0ZTsKQEAgLTEwOSw2ICsx
MTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
OwogICAgIGJvb2wgbV9pbnNpZGVWU3luYzsKICAgICBib29sIG1fdmlzaWJsZTsKKyAgICBib29s
IG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZzsKKyAgICBib29sIG1fZnJhbWVDb21wbGV0ZTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMy
YTcxNjY0YWY0M2NkNjRkMDE0ZDI4Yjg0MjY1MDk1YjIwMy4uOTI3MzM3MGU1MjczMjk0NTIyODFj
YTliOWM5YmFiZjU3NGY1M2I1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKQEAgLTE0NywxNSArMTQ3LDE5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
TmVlZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNv
bXBvc2l0b3IgcmVzb3VyY2VzCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3Np
dG9yUmVzb3VyY2VzKCkpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBtX2xheWVyVHJlZUhv
c3QtPnBhaW50Q29udGVudHMoKTsKKwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsK
ICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7Ci0KKyAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVw
ZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVI
b3N0SW1wbC5nZXQoKSk7CiAKQEAgLTIwOCw2ICsyMTIsMTQgQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2lu
Z2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
K3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVV
cGRhdGVzKQorICAgICAgICBtX3RleHR1cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCk7CisgICAgZWxzZQorICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQor
CiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVu
ZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzIsNyArMjg0LDcgQEAgdm9pZCBDQ1Np
bmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6
OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggMGQ1YTRhMmQ4
YTUxNmIxZDdiY2Y5OTFhOTllMWM3ODc4OTk0M2VjNS4uNzgzYThkYjg1NzQwMTI4YTRkNjAwOWVi
NTgxODRlMzBjZDAxN2RiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
KyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQg
aW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25J
bXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVz
UmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9u
ZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1f
dGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQg
Y2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZk
YjhjYzg3MmFiLi5hNjFjM2JiMzNmNmUyOWNiZWZhYjczMDAyNTA4NWQxMjA3NTM2YzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zNywxMSArMzgsOCBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVw
ZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAg
IDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCitDQ1RleHR1
cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3Ip
OwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02NiwyMyAr
NjQsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAK
IGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRl
eCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwg
bWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9
IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0
ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9k
ZXN0UmVjdCk7Ci0gICAgfQorICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICghbV9l
bnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtYXhJ
bmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBV
cGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOworICAgICAgICBlbnRyeS5tX3Rl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rl
c3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CiAKLSAgICAv
LyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigp
OwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9
CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9
IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTViYjMwLi5hYjY1
OWVjZWVhZDZkY2NmNTZiZDgzMDhhODY0ZDgzNGQwZWM4ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFz
cyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1
cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVw
ZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBA
IC00OSw4ICs0OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZh
dGU6CiAgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgsOCArNTUsNiBAQCBwcml2YXRlOgogICAgICAg
ICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1f
YWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVu
dHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDhl
Nzc0MjVlNDQwYTRlZGNmMjlmMjY1YWMzZTllZWZkYmUyMTVkODcuLmVhNzI5MDc5YzZlODFmZTQx
ZDZhZjVlM2U4NWZiNTY5Yjk5NDVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBA
IC0yODUsNiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFy
dGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX3N0YXJ0ZWQpOworCisgICAgT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSA9IGFkb3B0
UHRyKG5ldyBVcGRhdGVFbnRyeSk7CisgICAgZW50cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7Cisg
ICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJl
Y3QgPSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBs
VGhyZWFkLCBlbnRyeS5yZWxlYXNlKCkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5p
c2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24p
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzczLDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJh
bWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9
IGZhbHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBj
b21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZF
TlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBs
ZXRpb247CisgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NU
aHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbklt
cGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAg
IGNvbXBsZXRpb24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRD
b250ZW50cygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcg
YW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBp
dCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4g
Q2FsbCBzZXROZWVkc0NvbW1pdApAQCAtMzk3LDEzICs0MjEsNDAgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1l
QmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2Vx
dWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6
OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1l
UmVzb3VyY2VzT25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5z
aWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAg
ICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVU
ZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQoreworICAg
IEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VS
VChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmFwcGVuZChlbnRy
eS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisK
KyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBk
YXRlcykKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRl
c1BlbmRpbmcoKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRo
aXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25J
bXBsVGhyZWFkKTsKLSAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBl
bmRpbmcoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBs
ZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CkBAIC00MTEsMzYgKzQ2MiwzMiBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcworICAgICAgICAmJiBoYXNNb3Jl
UmVzb3VyY2VVcGRhdGVzKCkpCisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRS
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+
YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1
cm4gbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpOwogfQogCiB2
b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQog
ewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKTsKICAgICBzdGF0aWMgY29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9
IDk5OTk5OwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworICAgIG1f
dGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworICAgIEFTU0VSVCghbV90ZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9j
b21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLmNsZWFyKCk7CiAKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMWRmMzc0NmM1ZGMwMTM0YTMyNGU0YWM4
NjQyMzA0NTI5MzNhOThmYi4uZjEyNDRjMmExOWNkZjRiMmNjOTMxZWE1NjY3Y2Y4MGQ0YmY4NjE3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5j
bHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAg
LTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAg
Ly8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTc4LDYgKzgwLDEy
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVy
VHJlZUhvc3QqKTsKIAorICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJj
ZVJlY3Q7CisgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKKyAgICB9OworCiAgICAgLy8gQ2Fs
bGVkIG9uIG1haW4gdGhyZWFkCiAgICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1
ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5k
U2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwpAQCAtOTIsNiAr
MTAwLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+
IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBv
YnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCosIENDVGhyZWFkOjpUYXNrKiopOworICAgIHZvaWQgcHJlcGFyZUZyYW1lUmVzb3VyY2VzT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVxdWVz
dFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNo
QWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CkBAIC0xMjcsMTAg
KzEzNywxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlz
IHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxldGUuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQq
IG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOwotICAgIE93blB0cjxDQ1RleHR1
cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKIAogICAgIC8v
IFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5kRHJhd0ZyYW1l
IHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRl
ZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3RleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNldHRpbmdzLmgKaW5kZXggZTJlNzQzYTEwZGIxOTZjZDk3MjBiODM4OTg4ZTg3Yjg3NzZi
OWY0MC4uZjBmMjgwMTZjNzliNDgyMWRkN2I2ZWE1NjdmOGRjNmVmM2JlMDI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMzUsNiArMTM1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgcGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IH5XZWJTZXR0aW5ncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKaW5kZXggMDZlZTAxMDEyOGE4NTZmMmVjNzNkNWQyM2VkYWQ4MjE0MWZm
NjdiOC4uMjQwMTJlMzUxNTdiNzUwNjY3ZDIyYzAxYzBhMGI3OTkwNWNlYmJmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MSw2ICs1
MSw3IEBAIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5n
cykKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxh
eWVyVHJlZShmYWxzZSkKICAgICAsIG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQorICAgICwgbV9k
ZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBA
IC00OTgsMTAgKzQ5OSwxNCBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0U2hvdWxkRGlzcGxh
eVRleHREZXNjcmlwdGlvbnMoYm9vbCBlbmFibGVkKQogI2VuZGlmCiB9CiAKLQogdm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWludGluZyhib29sIGVuYWJsZWQpCiB7CiAgICAgbV9w
ZXJUaWxlUGFpbnRpbmcgPSBlbmFibGVkOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVV
cGRhdGVzID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDg4ZTI1ZTk2ZWZjYWZl
NTI0ZTA4YTc2NjYxMTYxY2I3NTkzNDRlZTUuLmYyZmRkMzUwMGZjNjA0M2YyMzYwZTZmYTg0OTBh
ODBhNTI1NWFmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oCkBAIC0xMzAsNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UGVyVGlsZVBhaW50aW5nKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmco
KSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1
cmVVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWxheVRleHR1cmVVcGRhdGVzOyB9CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkBAIC0xMzcsNiArMTM5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3No
b3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOworICAgIGJv
b2wgbV9kZWxheVRleHR1cmVVcGRhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjMxNWI1MmFk
ODdkOGVkMjZjYWJhMDBjNDU2NTU3MDQ2YmM2N2EzNS4uODgxNDBlYjBjYjVhZDU2MDk4ZDZlZTgz
MmYwZjM4ZmI1NzI5OGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMjkwNCw2ICsyOTA0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAgY2NTZXR0
aW5ncy5yZWZyZXNoUmF0ZSA9IGRlZmF1bHRSZWZyZXNoUmF0ZTsKIAogICAgICAgICBjY1NldHRp
bmdzLnBlclRpbGVQYWludGluZyA9IHNldHRpbmdzKCktPnBlclRpbGVQYWludGluZygpOworICAg
ICAgICBjY1NldHRpbmdzLmRlbGF5VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRl
eHR1cmVVcGRhdGVzKCk7CiAKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVy
OjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhv
c3Q6OmNyZWF0ZSh0aGlzLCBjY1NldHRpbmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDM2ZmQ3ZGJkMDdiZGM3
Y2YxYzg2MWZkODJhZWJjMmIwODRhMDNhMzMuLjQzMTNmYTUxNGNlYzRiNGM3MTg4ODViYWZmYjE3
MTgxNzM0Nzc4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRl
bnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgi
CiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgi
CiAjaW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCkBAIC05MjIsNiArOTIzLDE0
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQp
CiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJs
aWMgQ0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlTeW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJE
ZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFj
aXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTQ1
LDM3ICs5NTQsMTE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9
CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAg
ICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwg
UGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1f
dGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0
dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQo
KTsgfQorCisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIo
KS0+bmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0
UmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVy
LT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5s
YXllcigpLT5wYWludENvbnRlbnRzUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVw
ZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAg
ICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRl
KENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkg
eyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250
ZW50c0NvdW50KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IH0KKyAgICAgICAgdmlydHVh
bCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUo
VGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIp
KSk7CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRl
Q291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAw
OyB9CisgICAgICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBM
YXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhl
bEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6
ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRl
bnRzU2NhbGUgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVu
dHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcikgOiBtX2xheWVyKGxheWVyKSB7IH0KKwor
ICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbV9sYXllcjsK
KyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBib29sIG5l
ZWRQcmVwYXJlUmVjdCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4
dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikKICAgICB7Ci0gICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0
ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwog
ICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQorCisg
ICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAg
aW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9
CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAg
IGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisK
KyAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KCkgeyBtX3BhaW50Q29udGVudHNSZWN0Q291bnQr
KzsgfQorICAgIGludCBwYWludENvbnRlbnRzUmVjdENvdW50KCkgeyByZXR1cm4gbV9wYWludENv
bnRlbnRzUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVj
dENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVS
ZWN0Q291bnQ7IH0KKworICAgIGludCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBtX25lZWRQ
cmVwYXJlUmVjdDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCisgICAgZXhw
bGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVn
YXRlICpkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgIDogQ29udGVudExh
eWVyQ2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9uZWVkUHJlcGFyZVJlY3QobmVlZFBy
ZXBhcmVSZWN0KQogICAgICAgICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCi0gICAgICAgICwg
bV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAg
ICAsIG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENv
dW50KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICB9
CiAKKyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fY29udGVudExheWVy
VGV4dHVyZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVwYXJlUmVjdDsKICAgICBpbnQgbV9w
YWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJl
cGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWludENvbnRlbnRzUmVjdENvdW50OworICAgIGlu
dCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmlu
ZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWlu
ZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC05ODMsNyArMTA3MSw3IEBAIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qg
ewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKCkKICAgICAg
ICAgOiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhpcykKLSAgICAgICAgLCBtX3VwZGF0
ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0
ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAgICAgICAgLCBtX3VwZGF0ZUNoZWNr
TGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90
ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAgICB7CiAgICAgfQogCkBAIC0xMDAy
LDEzICsxMDkwLDE4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQog
ICAgIHsKLSAgICAgICAgLy8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVu
IGNhbGxlZCBvbmNlLgorICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhhdmUgYmVl
biBjYWxsZWQgb25jZS4KICAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+
cGFpbnRDb250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQotICAgICAgICAvLyBhbW91
dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgotICAgICAgICBFWFBFQ1RfRVEo
bV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKLSAgICAgICAgICAgICAg
ICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7CisgICAgICAgIC8vIHBhaW50
Q29udGVudHNSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAg
Ly8gYW1vdW50IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUSht
X3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAg
IG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpKTsKKworICAgICAg
ICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAg
ICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVY
UEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAg
ICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOwog
CiAgICAgICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xheWVyVHJlZUhvc3Qg
ZGllcy4KICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLmNsZWFyKCk7CkBAIC0xMDI0LDQgKzEx
MTcsNDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0
aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIHdoZW4gbmVlZFByZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2Ns
YXNzIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVl
SG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0
KCkKKyAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKG1fdXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAg
ICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQor
ICAgIHsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29u
dGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGNhbGxlZC4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fdXBkYXRlQ2hlY2tMYXllci0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBh
aW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hl
Y2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2Nr
TGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBy
dW5UZXN0KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3Bw
CmluZGV4IGYzNDY5Nzc2NjZkMmM0ZGZmNDdiNDg4MWZhYjFiMTZkM2Y4Y2Q3YjIuLmRiYzM3ZGQ5
MDBjNjYwNWVmYmFiZTcxMzc2YzhmNDQ4ZDY5ODRiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5j
cHAKQEAgLTM3LDcgKzM3LDYgQEAgbmFtZXNwYWNlIHsKIAogY29uc3QgQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNvbW1pdFN0YXRlIGFsbENvbW1pdFN0YXRlc1tdID0gewogICAgIENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfSURMRSwKLSAgICBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgIENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgIENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULAogICAgIEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJB
VwpAQCAtNjMsNiArNjIsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyhib29sIGIpIHsgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGI7
IH0KICAgICBib29sIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4g
bV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZzsgfQorCisgICAgdm9pZCBzZXRSZXNvdXJjZVVw
ZGF0ZXNQZW5kaW5nKGJvb2wgYikgeyBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmcgPSBiOyB9Cisg
ICAgYm9vbCByZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJj
ZVVwZGF0ZXNQZW5kaW5nOyB9CisKKyAgICB2b2lkIHNldEZyYW1lQ29tcGxldGUoYm9vbCBiKSB7
IG1fZnJhbWVDb21wbGV0ZSA9IGI7IH0KKyAgICBib29sIGZyYW1lQ29tcGxldGUoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lQ29tcGxldGU7IH0KIH07CiAKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCkBAIC05Nyw3ICsx
MDIsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25C
ZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CiAgICAgICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwotICAgICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0
U3RhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKICAg
ICB9CiB9CkBAIC0yNTEsNiArMjU2LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRl
c3QsIFRlc3RVcGRhdGVzX05vUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLnNl
dE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyhmYWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRS
ZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUo
dHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgYmVnaW4gdXBkYXRlLCBib3RoIGZvciB2c3luYyBh
bmQgbm90IHZzeW5jLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKQEAg
LTI2Nyw3ICsyNzQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVw
ZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAg
IC8vIEVuZCB1cGRhdGUgd2l0aCBubyBtb3JlIHVwZGF0ZXMgcGVuZGluZy4KLSAgICBzdGF0ZS5i
ZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7
CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogfQpAQCAtMjc5LDYgKzI4Niw4IEBAIFRFU1QoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVwZGF0
ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUp
OworICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3RhdGUu
c2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB0aGUgdXBkYXRlIGJlZ2lu
cywgYm90aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KICAgICBzdGF0ZS5kaWRFbnRlclZTeW5j
KCk7CkBAIC0yOTUsNyArMzA0LDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RVcGRhdGVzX05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogCiAgICAgLy8gQWNrIHRoZSB1cGRhdGUgd2l0aCBtb3JlIHBlbmRpbmcuCi0gICAgc3RhdGUu
YmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisgICAgc3RhdGUudXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVyaWZ5IHdlIHVwZGF0ZSBt
b3JlLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAgIHN0YXRlLmRpZExlYXZlVlN5
bmMoKTsKQEAgLTMwNSw3ICszMTQsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQogCiAgICAgLy8gQmVn
aW4gYW5vdGhlciB1cGRhdGUsIHdoaWxlIGluc2lkZSB2c3luYy4gQW5kLCBpdCB1cGRhdGluZy4K
ICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JF
R0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21w
bGV0ZShmYWxzZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgY29tbWl0LCBpbmRlcGVuZGVudCBv
ZiB2c3luYy4KICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zMjEsNiArMzMwLDkgQEAg
VEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdf
T25lUm91bmRPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcodHJ1ZSk7CiAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVl
KTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOworCiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgpAQCAtMzM4
LDcgKzM1MCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRl
c19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKIAogICAgIC8vIEZpbmlzaCB1cGRhdGUgYnV0IGxlYXZlIG1vcmUgcmVzb3VyY2VzIHBlbmRp
bmcuCi0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7Cisg
ICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVy
aWZ5IHRoYXQgcmVnYXJkbGVzcyBvZiB2c3luYywgd2UgdXBkYXRlIHNvbWUgbW9yZS4KICAgICBz
dGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNTIsNyArMzY0LDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0
ZXMpCiAgICAgc3RhdGUuZGlkRW50ZXJWU3luYygpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VT
KTsKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7Ci0gICAgc3RhdGUuYmVnaW5VcGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgIHN0YXRlLnVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7CiAKICAgICAvLyBWZXJpZnkgd2UgY29tbWl0IHJlZ2FyZGxlc3Mgb2Yg
dnN5bmMgc3RhdGUKICAgICBzdGF0ZS5kaWRMZWF2ZVZTeW5jKCk7CkBAIC0zNzAsNyArMzgyLDEx
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJ
c05vdExvc3QpCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JF
U1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CisKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlIHRoYXQgbmVlZCB1cGRhdGUuCisgICAg
c3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gTm93LCB3aGlsZSB0aGUgZnJhbWUgaXMgaW4g
cHJvZ3Jlc3MsIHNldCBhbm90aGVyIGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0
cnVlKTsKQEAgLTM4Miw3ICszOTgsNyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVz
dCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigp
KTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Cisg
ICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gRXhwZWN0IHRvIGNvbW1pdCByZWdhcmRs
ZXNzIG9mIHZzeW5jIHN0YXRlLgpAQCAtNDEzLDEwICs0MjksMTQgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBCZWdpbiB0aGUgZnJh
bWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5H
X1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRl
Lm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZlIHJlc291
cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVT
T1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxl
ciB0aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTQyNCw3ICs0NDQsNyBAQCBU
RVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAogICAgIC8v
IFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0
YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZh
bHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKIApAQCAtNDU5LDcgKzQ3OSw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJlcXVlc3RJbmJldHdlZW4pCiAKICAgICAvLyBCZWdp
biB0aGUgZnJhbWUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0ZB
TFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKQEAgLTQ2Nyw2ICs0
ODcsMTAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVX
aXRoQ29tbWl0UmVxdWVzdEluYmV0d2VlbikKICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVl
KTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBz
dGF0ZS5uZXh0QWN0aW9uKCkpOwogCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAgICBzdGF0
ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkLgogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC00NzQsNyArNDk4LDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0d2Vl
bikKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5p
c2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUu
bmV4dEFjdGlvbigpKTsKIApAQCAtNTE2LDEzICs1NDAsMTcgQEAgVEVTVChDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogCiAgICAgLy8gQmVn
aW4gdGhlIGZyYW1lIHdoaWxlIHZpc2libGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7Ci0gICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7
CiAKICAgICAvLyBCZWNvbWUgaW52aXNpYmxlCiAgICAgc3RhdGUuc2V0VmlzaWJsZShmYWxzZSk7
CiAKKyAgICAvLyBSZWNlaXZlIHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRl
c1BlbmRpbmcodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwog
ICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQKICAgICBzdGF0ZS5i
ZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OwpAQCAtNTMwLDcgKzU1OCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKIAogICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0
aGUgdXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsK
LSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAg
c3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIApAQCAtNTUwLDQgKzU3OCw2
NSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVN
aWRDb21taXQpCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3ROb1Jlc291cmNlVXBkYXRlcykKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3Rh
dGU7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFu
ZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0
ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5H
X1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRl
Lm5lZWRzQ29tbWl0KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hl
ZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVkLgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JF
QURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
fQorCitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vUmVzb3VyY2VQZW5k
aW5nKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRy
dWUpOworCisgICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdp
biB0aGUgZnJhbWUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VV
cGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZpbmlz
aGVkLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNv
bW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlKHRydWUpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIGFub3RoZXIg
dXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZC4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7Cisg
ICAgc3RhdGUudXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKworICAgIC8vIE5v
IHBlbmRpbmcgcmVzb3VyY2VzIHRvIHVwZGF0ZS4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8g
VGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZy
YW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4
dEFjdGlvbigpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IGI1OGVkMmM1NmMyOGRmNzg1Y2M5YzExNjlkNjcwMWNj
NzBkZmZiZDYuLmYzMmIwYjUwNjQxZjFiNDYzNDU1NGM0YjcxY2YzZTdhNTZkYzQ5ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKQEAg
LTc2LDEyICs3NiwxMCBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdCkKICAg
ICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVz
IGlzIHNldCB0byBmYWxzZSwKLSAgICAvLyBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0
ZU1vcmVSZXNvdXJjZXMsIHRoZW4KLSAgICAvLyBjb21taXQKKyAgICAvLyBiZWdpbkZyYW1lQ29t
cGxldGUgc2hvdWxkIGNvbW1pdCBpbW1lZGlhdGVseS4KICAgICBzY2hlZHVsZXItPmJlZ2luRnJh
bWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGll
bnQuYWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIs
IGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9ucygp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rp
b24oMCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91bGQgZHJhdy4K
QEAgLTExMiwxMiArMTEwLDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0LCBSZXF1ZXN0Q29tbWl0
QWZ0ZXJCZWdpbkZyYW1lKQogICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKIAogICAg
IC8vIFNpbmNlLCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFu
b3RoZXIgY29tbWl0IGlzCi0gICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxk
IHVwZGF0ZU1vcmVSZXNvdXJjZXMsIHRoZW4gY29tbWl0LCB0aGVuCi0gICAgLy8gYmVnaW4gYW5v
dGhlciBmcmFtZS4KKyAgICAvLyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29t
bWl0LCB0aGVuIGJlZ2luIGFub3RoZXIgZnJhbWUuCiAgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1l
Q29tcGxldGUoKTsKLSAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7Ci0gICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50
LmFjdGlvbigwKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBj
bGllbnQuYWN0aW9uKDEpKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9u
KDApKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0
IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KQEAgLTIzMyw0ICsyMjksNTIgQEAgVEVTVChDQ1Nj
aGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRJbnNpZGVEcmF3KQogICAgIEVYUEVDVF9GQUxTRShz
Y2hlZHVsZXItPnJlZHJhd1BlbmRpbmcoKSk7CiB9CiAKK1RFU1QoQ0NTY2hlZHVsZXJUZXN0LCBV
cGRhdGVSZXNvdXJjZXMpCit7CisgICAgRmFrZUNDU2NoZWR1bGVyQ2xpZW50IGNsaWVudDsKKyAg
ICBSZWZQdHI8RmFrZUNDVGltZVNvdXJjZT4gdGltZVNvdXJjZSA9IGFkb3B0UmVmKG5ldyBGYWtl
Q0NUaW1lU291cmNlKCkpOworICAgIE93blB0cjxDQ1NjaGVkdWxlcj4gc2NoZWR1bGVyID0gQ0NT
Y2hlZHVsZXI6OmNyZWF0ZSgmY2xpZW50LCBhZG9wdFB0cihuZXcgQ0NGcmFtZVJhdGVDb250cm9s
bGVyKHRpbWVTb3VyY2UpKSk7CisgICAgc2NoZWR1bGVyLT5zZXRWaXNpYmxlKHRydWUpOworCisg
ICAgLy8gU2V0TmVlZHNDb21taXQgc2hvdWxkIGJlZ2luIHRoZSBmcmFtZS4KKyAgICBzY2hlZHVs
ZXItPnNldE5lZWRzQ29tbWl0KCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25z
KCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVu
dC5hY3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gTm93IHNldE5lZWRz
Q29tbWl0IGFnYWluLiBDYWxsaW5nIGhlcmUgbWVhbnMgd2UgbmVlZCBhIHNlY29uZCBmcmFtZS4K
KyAgICBzY2hlZHVsZXItPnNldE5lZWRzQ29tbWl0KCk7CisKKyAgICAvLyBVcGRhdGUgcGVuZGlu
ZyByZXNvdXJjZXMuCisgICAgY2xpZW50LnNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXModHJ1ZSk7
CisgICAgc2NoZWR1bGVyLT5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgRVhQRUNU
X0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVk
QWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIGNsaWVu
dC5yZXNldCgpOworCisgICAgLy8gQ2xpZW50IGZpbmlzaGVkIHVwZGF0ZSBidXQgaGF2ZSBub3Qg
eWV0IHRvbGQgc2NoZWR1bGVyLgorICAgIGNsaWVudC5zZXRIYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KGZhbHNlKTsKKworICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgbm90IGNvbW1pdCwg
YXMgYW4gdXBkYXRlIGlzIHBlbmRpbmcuCisgICAgc2NoZWR1bGVyLT5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKKyAgICBFWFBFQ1RfRVEoMCwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgY2xpZW50
LnJlc2V0KCk7CisKKyAgICAvLyBTaW5jZSwgaGFzTW9yZVJlc291cmNlVXBkYXRlcyBpcyBzZXQg
dG8gZmFsc2UsIGFuZCBhbm90aGVyIGNvbW1pdCBpcworICAgIC8vIG5lZWRlZCwgdXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKCkgc2hvdWxkIGNvbW1pdCwgdGhlbiBiZWdpbgorICAgIC8vIGFu
b3RoZXIgZnJhbWUuCisgICAgc2NoZWR1bGVyLT51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
KTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NU
UkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBjbGll
bnQucmVzZXQoKTsKKworICAgIC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5v
dGhlciBmcmFtZS4KKyAgICB0aW1lU291cmNlLT50aWNrKCk7CisgICAgRVhQRUNUX0VRKDIsIGNs
aWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxl
ZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKKyAgICBjbGllbnQucmVzZXQo
KTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA2M2FhNDU2YWQ4ZDhjY2IzZmUwNGZhZmMx
NjIwYmYwZjI0ZTY3ZjQzLi45M2NmYjU3ODgzYTVmMTU0MGI0Y2M5OGVhNTgzYTk5MTZiMTZlNTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTI3LDkgKzI3LDkgQEAKICNpbmNsdWRlICJUaWxlZExheWVy
Q2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRl
ICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGls
ZWRMYXllckltcGwuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zOCwyMCArMzgs
MjMgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgRmFrZVRl
eHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CitjbGFzcyBGYWtlSGFu
ZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVt
KSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQs
IGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJl
Y3QmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0
dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KLSAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsg
fQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDog
bV90ZXh0dXJlKHRleHR1cmUpIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBj
b25zdCBJbnRSZWN0JikgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRS
ZWN0JikgeyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+
IG1fdGV4dHVyZTsKICAgICB9OwogCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0K
QEAgLTYwLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5h
Z2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRl
KG1hbmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gQm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9y
bWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9y
bWF0UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsg
fQogfTsKIAogY2xhc3MgRmFrZUNDVGlsZWRMYXllckltcGwgOiBwdWJsaWMgQ0NUaWxlZExheWVy
SW1wbCB7CkBAIC05OCw2ICsxMDEsMTEgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIFRleHR1cmVN
YW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7
IH0KIAogcHJpdmF0ZToKQEAgLTExOSwxMyArMTI3LDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBh
ZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVB
bGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
JnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFp
bnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAg
ICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhh
dmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTM4LDcgKzE0Niw4IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4g
b25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIp
OwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAv
LyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxl
IHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118412</attachid>
            <date>2011-12-08 10:02:35 -0800</date>
            <delta_ts>2011-12-08 12:12:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111208130233.patch</filename>
            <type>text/plain</type>
            <size>150420</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4ODkzNGJhNjZiMWEx
MTA1MDJkZDI4OWQ2NDZhZDhiNWNmZTk2Yi4uMGZkZjM3ZTkyYzlmYmNlZThmYjE5NmU0ZjY1ZGEw
OTcxMDczMTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NCBAQAorMjAxMS0xMi0wOCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMgYmVlbgor
ICAgICAgICBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorCisgICAgICAg
IFNwbGl0IGxheWVyIHVwZGF0ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMg
dHJhbnNmb3JtcworICAgICAgICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFp
bnRzIGxheWVyIGNvbnRlbnRzLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEg
Y29tcG9zaXRvciByZXNvdXJjZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2li
bGUgbGF5ZXIgYXJlYXMgaGF2ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5n
CisgICAgICAgIGhhcyBvY2N1cnJlZC4gTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyBpcyByZXBsYWNlZAorICAgICAgICBieSBMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlIHdoaWNoIGFsbG93cyB1cyB0byBpdGVyYXRlCisgICAgICAgIG92ZXIg
Y29tcG9zaXRvciByZXNvdXJjZXMgZm9yIHZhcmlvdXMgcHVycG9zZXMuCisKKyAgICAgICAgQWRk
IG5ldyB1bml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6flRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9t
aXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
Ojp+SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVy
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjpkYXRhUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5
ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1
cmVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZl
VGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnNldFZpc2libGVTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OnZpc2libGVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VI
YW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJj
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVz
b3VyY2VIYW5kbGVyOjp+UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFp
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5k
bGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
VG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBv
c2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRWaXNpYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6cmVzb3VyY2VzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTY2hlZHVsZXI6OnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
Y2hlZHVsZXI6OnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpuZXh0
QWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRh
dGVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6c2V0
UmVzb3VyY2VVcGRhdGVzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVy
ZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNl
VXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTEyLTA4ICBUYWthc2hpIFRveW9zaGlt
YSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQcm92aWRlIG1vcmUgc3BlY2lm
aWMgZXJyb3IgZGVzY3JpcHRpb24gZm9yIFNvY2tldFN0cmVhbUVycm9yLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCA1NjliYmI4NzZhZjJjMjhmNGI2YzA4ZDZiNWQ5MTBjZTY1NjdkZGRk
Li45YzhhZjhmZGVjZTNlYmE1NjliZmYyZjVmNzU3YjgzNzZlNTNmMTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDExLTEyLTA4ICBEYXZpZCBSZXZlbWFu
ICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVcGxvYWQgdGV4
dHVyZXMgaW4gcGFyYWxsZWwgd2l0aCBwYWludGluZyBjb250ZW50cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIENDTGF5ZXJUcmVlSG9zdFRlc3RO
b1ByZXBhcmVSZWN0IHRlc3QuIFRyYWNrIGNoYW5nZXMgdG8gc2NoZWR1bGVyCisgICAgICAgIGFu
ZCB0ZXh0dXJlIHVwbG9hZHMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAg
ICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0
dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5n
c0ltcGw6OnNldERlbGF5VGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRleHR1cmVV
cGRhdGVzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAg
ICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xh
eWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxl
Z2F0ZTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OnBy
ZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6Om5vdGlmeVN5bmNS
ZXF1aXJlZCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6
OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRU
ZXhlbEZvcm1hdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6bGF5ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6
OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp0
ZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNDb3VudCk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlUmVj
dCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNSZWN0Q291
bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVI
b3N0VGVzdE9wYWNpdHlDaGFuZ2U6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmFmdGVyVGVz
dCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0OjpDQ0xh
eWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3ROb1ByZXBhcmVSZWN0OjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKToKKyAg
ICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OmFmdGVyVGVzdCk6
CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6c2V0UmVz
b3VyY2VVcGRhdGVzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdGF0ZU1hY2hpbmU6OnJl
c291cmNlVXBkYXRlc1BlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGVNYWNoaW5lOjpz
ZXRGcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRlTWFjaGluZTo6ZnJhbWVD
b21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1Nj
aGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1QpOgorICAgICAgICAq
IHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlSGFu
ZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6VEVTVCk6CisKIDIwMTEtMTItMDcg
IEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gQWRkIHBhZ2Utc2NhbGUgYW5pbWF0aW9uIHN1cHBvcnQgdG8gSW1wbCB0aHJlYWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
ZGQ5MzE5MTNmNzA5Nzc2MjYzNWZlNjQxOWQzODc1MWFmZjg2MTc5ZC4uMDc5MDVjMTg5NzA3NDgw
NGI1NWQ4MTA2NWUwZTZlMGEzOTk2NTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
VGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwg
UGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIp
CiB7CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0g
ICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9y
LCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgp
LT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRh
dGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAg
ICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAg
IG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkw
LDEzIEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50
ZXI6OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRm
b3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50
ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWlu
dGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFp
bnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgq
Y2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0K
IAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVj
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25l
ZCBmb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMp
OwotCi0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhT
dWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IDk3NTUyMmNiYWFhMzQxNDc1ODU2ZGI2Y2JlZGEzMTJjMTQ5ZDg3YmEuLjJlOTFkYmEwNGUz
MGQ4MTAyMTZjNjY2OThmZmE5Y2VkZmY0YTY4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBM
YXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRo
IGFuIGludGVybmFsIGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBj
bGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5U
ZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRl
cjsgfQpAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIq
KTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxl
ZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29u
dGVudHNTY2FsZSk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJp
dmF0ZToKICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggODIyMWRkMmU1MjFiZDYzZmUwZTZmMGY5ZDYyMjRlMzhkZmIzNDI5OC4uZGYw
MGU0YTllYWVlOTQ5NWY2NWEwYTZkN2E1NjYxMWNhNjk4ZWJkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXMKIHsKIH0KIAotdm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVw
YXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0KQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVy
ZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNvdXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCktPmZv
cm1hdCgpKTsKICAgICBtX3BpeGVsRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVm
ZmVyU2l6ZV0pOwpAQCAtNTEsOSArNTEsMTAgQEAgdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWMKICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCksIHNvdXJj
ZVJlY3QpOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewot
ICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBBU1NF
UlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwogICAg
IEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
VGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIG1fcGl4
ZWxEYXRhLmdldCgpKTsKICAgICBtX3BpeGVsRGF0YS5jbGVhcigpOwpAQCAtODYsMTAgKzg3LDEw
IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50
c1NjYWxlKQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBt
X3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAgU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0aWxl
U2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKKyAgICBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwg
Ym9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2Fu
dmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGMzMGYz
MDc1NTViZDM3MjFiMTE0ZmZiOGI3YjBkNmM4NmQ1ZjQ0MmIuLmVjN2FjNmM5MjY0ZDkyNTEwYTJh
NWY5ZDA4ZDIwZjE2ZGU3NDk0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDggKzQyLDggQEAg
cHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0
dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJl
dHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
LCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwogICAgIHZvaWQgcGFpbnRDb250ZW50
c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKICAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYjBjNGUwNzM5NDZiYTVlNTFlM2RjNmEy
NTM3MzZhMGVjYTM4Y2FjYy4uZTA0ZjE4ZDAwNjJmN2U0YTY5Mzg0YmI4NGExMDM5MjAzZjNmZTBm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0NCwy
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIp
CisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0
UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7Cit9
CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hyb21p
dW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0KSk7CkBAIC01Miw2ICs2Niw3
IEBAIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hyb21p
dW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzCiBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZh
czJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IENhbnZh
c0xheWVyQ2hyb21pdW0oMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91cGRh
dGVyVGV4dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMpKQogewogfQogCkBAIC02NSw3
ICs4MCw3IEBAIGJvb2wgQ2FudmFzMkRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25z
dAogICAgICAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSk7CiB9CiAK
LXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIENhbnZhczJETGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7CiAgICAgaWYgKCFtX25lZWRz
RGlzcGxheSB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg1LDYgKzEw
MCwxMSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dAogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFs
c2U7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFu
ZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkp
OworfQorCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y29udGVudENoYW5nZWQoKQogewog
ICAgIGlmIChsYXllclRyZWVIb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5o
CmluZGV4IDQ1N2JkNTY0ZDc3OGRhYjk0YWM5OTExM2Y4MWViZmU3NWRlZmRkNGYuLmU4NmE2MWE0
ZWVlNDUyMGFiYTY4NmM0MTkzYTZmNzhmMGZjNTBmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJDaHJvbWl1bS5oCkBAIC00MywxNiArNDMsMzYgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFzcyBD
YW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJs
aWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRh
dGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVyQ2hyb21p
dW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsK
KwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdy
YXBoaWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNocm9taXVtKCk7
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworICAgIHZp
cnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IENhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQz
RCopOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisKKyAgICBPd25QdHI8VXBk
YXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDVmYTY3ODU0YzZiZDdmNTM4MmI1MmIw
ZWVmYmExMDMxNjZmYzA4ZmUuLmM2MWVjMzNkNjdlNjUzNzEyZDJiOTIxMTNmYjc5YmFiZjgzOWI1
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0z
Niw2ICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCitib29sIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAgcmV0dXJuICFtX3Rl
eHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fdGV4dHVyZS0+YWxsb2NhdGVU
ZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpAQCAtNDUsNyArNjMs
NyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBm
bG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBm
bG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50UmVj
dC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAppbmRleCBhOGZlZmYzNDIyYjFiODUzMGI4ZjY4OWZmMmM1NjY3NjYw
YmVkNWNmLi44ODZkMTAxMmQ4ZTUzMjc5Y2U3NGU1MWExMDM0OWRiODFhODlmZTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzksMTIgKzQwLDI4IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwog
Ly8gQSBMYXllclRleHR1cmVVcGRhdGVyIHdpdGggYW4gaW50ZXJuYWwgY2FudmFzLgogY2xhc3Mg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsK
IHB1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOworCisg
ICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRS
ZWN0JiAvKiBkZXN0UmVjdCAqLyk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGV4cGxpY2l0
IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgfTsKKwogICAgIHZp
cnR1YWwgfkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOwogCi0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBmbG9h
dCBjb250ZW50c1NjYWxlKTsKICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFJlY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcAppbmRleCAyYTI0NjZkOTEyOWFlYzM2NDA5MzIyOWNiOTM1YWY4MmQ1
MDcyNGI2Li5kZDc0OTY3N2NiNzEyZDA0ZjdkZTIwNTExMDMyY2U3NzM1OTI5ZDMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgQ29u
dGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlv
bigpOwogCkBAIC0xMDksNiArMTA5LDIwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KCkKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCit2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAg
QVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9
IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiBib29sIENvbnRlbnRMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RlbGVnYXRlICYm
IG1fZGVsZWdhdGUtPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBiODM0ZTY3NmJk
NjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBmMzgwOWMxLi5jNWU5ZmNjZWJmNDc2ZWI3ZDAyYmM5ODIy
MTcwYjY2NTNhNTEzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQ5
LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21pdW0o
KTsKIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGYyZDdlMmRkZGFhNmZkOTlmYmU2MDNjM2I4ZTM3M2U5
OThhMzM4MzUuLjllZWZiNDZiNWU1MjRmN2VlMjM1OTgzNzg1MDViNGYyZTRhMjllYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
RnJhbWVCdWZmZXIoKTsKICAgICB+RnJhbWVCdWZmZXIoKTsKIAotICAgIFNrQ2FudmFzKiBpbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0
dXJlKik7CisgICAgU2tDYW52YXMqIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqLCBNYW5h
Z2VkVGV4dHVyZSopOwogCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRl
eHQ7CkBAIC02NiwxMiArNjYsMTIgQEAgRnJhbWVCdWZmZXI6On5GcmFtZUJ1ZmZlcigpCiAgICAg
ICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pOwogfQogCi1Ta0NhbnZhcyog
RnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCitTa0NhbnZh
cyogRnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQogewogICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CiAgICAg
bV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgbV9jb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7Ci0g
ICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LCBhbGxvY2F0b3IpOwor
ICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+dGV4dHVyZUlkKCksIDApOwogCiAgICAgLy8g
Q3JlYXRlIGEgc2tpYSBncHUgY2FudmFzLgogICAgIEdyQ29udGV4dCogZ3JDb250ZXh0ID0gbV9j
b250ZXh0LT5nckNvbnRleHQoKTsKQEAgLTk2LDcgKzk2LDcgQEAgU2tDYW52YXMqIEZyYW1lQnVm
ZmVyOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKgogfSAvLyBuYW1lc3BhY2UKIAogRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRl
eHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAg
ICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtMTA1LDkgKzEw
NSwyMyBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVy
ZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKKyAgICAvLyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCisg
ICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgLy8gTm90aWZ5IFNLSUEgdG8g
c3luYyBpdHMgaW50ZXJuYWwgR0wgc3RhdGUuCisgICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJl
c2V0Q29udGV4dCgpOworCisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworCisg
ICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgorICAgIEZyYW1l
QnVmZmVyIGJ1ZmZlcjsKKyAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmluaXRpYWxpemUo
Y29udGV4dCwgdGV4dHVyZSgpKTsKKworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1
cmVSZWN0KGNvbnRleHQsIGNhbnZhcywgc291cmNlUmVjdCwgZGVzdFJlY3QpOworCisgICAgLy8g
Rmx1c2ggU0tJQSBjb250ZXh0IHNvIHRoYXQgYWxsIHRoZSByZW5kZXJlZCBzdHVmZiBhcHBlYXJz
IG9uIHRoZSB0ZXh0dXJlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5mbHVzaCgpOwogfQog
CiBQYXNzUmVmUHRyPEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cj4gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKQEAgLTEzNSwyNiArMTQ5
LDE0IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFNr
Q2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQogewotICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNvcnJlY3QgR0wg
Y29udGV4dC4KLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICAvLyBOb3Rp
ZnkgU0tJQSB0byBzeW5jIGl0cyBpbnRlcm5hbCBHTCBzdGF0ZS4KLSAgICBjb250ZXh0LT5nckNv
bnRleHQoKS0+cmVzZXRDb250ZXh0KCk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0ZWQg
Y2FudmFzIHRvIGRyYXcgb24uCi0gICAgRnJhbWVCdWZmZXIgYnVmZmVyOwotICAgIFNrQ2FudmFz
KiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUp
OwotCiAgICAgY2FudmFzLT5jbGlwUmVjdChTa1JlY3QoZGVzdFJlY3QpKTsKICAgICAvLyBUcmFu
c2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIGRlc3RSZWN0LgogICAg
IC8vIE5vdGUgdGhhdCBkZXN0UmVjdCBpcyBkZWZpbmVkIHJlbGF0aXZlIHRvIHNvdXJjZVJlY3Qu
CiAgICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3VyY2VSZWN0Lngo
KSArIGRlc3RSZWN0LngoKSwKICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgpLnko
KSAtIHNvdXJjZVJlY3QueSgpICsgZGVzdFJlY3QueSgpKTsKICAgICBkcmF3UGljdHVyZShjYW52
YXMpOwotCi0gICAgLy8gRmx1c2ggU0tJQSBjb250ZXh0IHNvIHRoYXQgYWxsIHRoZSByZW5kZXJl
ZCBzdHVmZiBhcHBlYXJzIG9uIHRoZSB0ZXh0dXJlLgotICAgIGNvbnRleHQtPmdyQ29udGV4dCgp
LT5mbHVzaCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IDA2YjYyZDE5OTliNTYyMzUwNDFjYzBkYmIyMjI0OTEwNTFmOTU5ZWIuLmE4
ZmY4NWZmNWJiZTQ3OGEyZDU4NWRmYTY3NWNlZDM4Y2EwNDk0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCkBAIC0zMiwxNiArMzIsMTggQEAKIAogI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVi
bGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01NSw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwg
T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpU
b3BEb3duT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1w
bGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVU
ZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2Vk
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgU2tD
YW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDRmYjk1NzRkNDhlZTAwMjg3MjhlOTIy
ZTE0ZTMxNjcwOWE2MDRkZGEuLjFlMzNjNmQyNjk3YmYwMTAyMDZkZTQxMzgzMTMzMTcyZDY5ZmMz
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNDksMTkgKzQ5LDM0IEBA
IHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShJbWFnZUxheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0
dXJlKQotICAgICAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUp
CisgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAgLCBtX3RleHR1
cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9v
bCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fdGV4
dHVyZS0+dGV4dHVyZUlkKCk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShj
b250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJl
SWQoKSk7CisgICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChj
b250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CiAKKyAgICAgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgICAgIEltYWdlTGF5ZXJUZXh0
dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCkBAIC04NSwxNSArMTAwLDEz
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0
QkdSQTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRl
clRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0
aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewotICAgICAgICB0ZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCiAgICAgICAgIC8vIFNvdXJj
ZSByZWN0IHNob3VsZCBuZXZlciBnbyBvdXRzaWRlIHRoZSBpbWFnZSBwaXhlbHMsIGV2ZW4gaWYg
dGhpcwogICAgICAgICAvLyBpcyByZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4dHVyZSBleHRlbmRz
IG91dHNpZGUgdGhlIGltYWdlLgogICAgICAgICBJbnRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0g
c291cmNlUmVjdDsKQEAgLTEwMyw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWRE
ZXN0UmVjdC5tb3ZlKGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVkU291cmNl
UmVjdC5zaXplKCkpOwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4
ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCB0
ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2Fk
KG1faW1hZ2UucGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBl
ZERlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgdXBkYXRlRnJv
bUltYWdlKE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKQpAQCAtMTY2LDcgKzE3OSw3IEBAIHZv
aWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAg
c2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpCiB7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CiAgICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggNWZlNGYyNjY2OGJk
Y2MzZTI5ZjA0Y2ZmY2RhODgyYTczYzMxZTMyNy4uZjZlYmM4YTdlOGI5MDczMThjZjUyMDZjNGZi
NGU4N2ZhZWExZTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAg
dmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KCk7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0OwogCiAg
ICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDVlMDVjMTU3Yzc5NWNlMWUwNjRkZjJkZjk2NDQwN2FkYmZlNTUwYjAuLmZkMDQzZjA5NWQxYTYw
MjNmNWQ2NmRiOGU4NzdkYzNmNzQ3YzU0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM2LDYg
KzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgIlJl
bmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAtNTMsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwotY2xhc3Mg
Q0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBDQ0xh
eWVyRGVsZWdhdGUgewpAQCAtMTYwLDggKzE2MCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFz
c2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVV
cGRhdGVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
c01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVy
ZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYmY3NWNmMjlhODllMzg5ZTI3Njc3YjExOTIw
NmVmMjlhNGUzMDE0Ni4uMjI2YmMyMTgxZDMxNjQ4MGRiOTkwYzYzMDgyZDU1ODg5YWM3YjE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMjksNyArMjksNiBAQAogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCkBAIC0zOCw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFzcyBNYW5h
Z2VkVGV4dHVyZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlTWFuYWdl
cjsKIApAQCAtNDgsMTQgKzQ4LDIzIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgp
IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7
Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAgICB2
aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gMDsgfQogCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAg
IC8vIHByZXBhcmVSZWN0KCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGlzIHJldHVybnMgdHJ1
ZS4KKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBzeW5jaHJvbm91c2x5IG9uIHRoZSBpbXBsIHRocmVh
ZCB3aXRoIHNhZmUgYWNjZXNzIHRvIG1haW4gdGhyZWFkIHJlc291cmNlcy4KKyAgICAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIG9uIHRoZSBtYWluIHRocmVhZCBh
ZnRlciBjYWxscyB0byBuZWVkUHJlcGFyZVJlY3QoKSBhbmQgcHJlcGFyZVJlY3QoKSBidXQgYmVm
b3JlIHVwZGF0ZVJlY3QoKS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0
KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQorICAgICAgICAvLyBUaGlzIHJ1
bnMgYXN5bmNocm9ub3VzbHkgb24gdGhlIGltcGwgdGhyZWFkLiBBY2Nlc3MgdG8gbWFpbiB0aHJl
YWQgcmVzb3VyY2VzIGlzIHVuc2FmZS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgPSAwOworICAgIH07CisKKyAgICBjbGFzcyBIYW5kbGVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkhhbmRsZXIoKSB7IH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIH07CiAKICAg
ICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC03OCw3ICs4Nyw3IEBAIHB1
YmxpYzoKICAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBp
biB0aGUgc2FtcGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0
QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1w
bGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIC8q
IGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJv
cmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgeyB9CisgICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNv
bnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9h
dCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01h
bmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL01hbmFnZWRUZXh0dXJlLmNwcAppbmRleCBjYmRmZTAzYzJjNTQ0M2JjZWFmNDNjYTZhZjAy
YTczYzU3MWQwMzMzLi5lZTE4MDI1ZmFhMWRlNWIwZjA2MjUwMzE3ZDg4OWRhOGQ2OWFkN2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5h
Z2VkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCkBAIC04MCwxMSArODAsMTYgQEAgdm9pZCBNYW5hZ2Vk
VGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RUZXh0
dXJlKG1fdG9rZW4pOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQordm9p
ZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKG1fdGV4dHVy
ZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOwogICAgIGlmICghbV90ZXh0dXJlSWQpCiAg
ICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVUZXh0dXJlKGFs
bG9jYXRvciwgbV90b2tlbik7Cit9CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
Cit7CisgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAgICAgY29udGV4
dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggNGQ0MzgwOTU5NTM0MGY1ZDczM2Q1Njc5
MjkxYTkyMDY0YzdiMWFlNS4uZDczYzg3NDJkNzg0MGUyMjkwMTRlMDFhZmVkMjU2NmQ3Yzk5YmMw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TWFuYWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAgIH0K
IAorICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciopOwogICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9t
aXVtLmNwcAppbmRleCBlM2M1YzQ4Zjc5MjBmZWVjNzA4ZTRkYWM3YWVmNjRlMjNlOGFhZjAwLi42
MDMyNjhhNjJlM2YyZDA0NzA5YjZjZGI2MjlkYWJlYzM3NmZjYmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBQbHVnaW5MYXllckNocm9taXVt
OjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiB9CiAK
LXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQg
UGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYg
KCFtX25lZWRzRGlzcGxheSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IDI3N2E5NjljNThjYzNmNTgzNDU4N2UwNzc4ZmZkMWM2Mjc3ZDY2ZjYuLjE2
ZjNmYzFiM2NlODI1NDJmZGY0MDcwNmRhNjA4ODcyOTM1YzNlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5M
YXllckNocm9taXVtLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUGx1Z2luTGF5ZXJDaHJvbWl1
bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogICAg
IHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NM
YXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1MzdlMTM3ZThkOGVjNTE4YjkzNGFhNWNkMmQ3MDBj
NzRiMTlmZTRiLi41NWExZGI4ZmI2MDNlNmQwNDkwMmFhY2ZjZmZmODcwOWU4OTVlYjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQg
LyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRl
eGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBTa0NhbnZhcyogY2FudmFzID0g
bV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0
LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52
YXMpOwogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBHcmFwaGlj
c0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwotICAgIHBhaW50Q29u
dGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAg
cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAgICAg
bV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNDQwZjhiMDNlYTRmMjczOWE5
NzU0Mzg2N2FjN2ViMTU0MDMwZDBjMi4uYWVmYmZjM2Y2YTRhMmEzYWE3MWE1YjFmYjQzZWRlYWYx
Y2JmNmRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2b2lk
IGRyYXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcAppbmRleCA1YzU1ZjU5YmYzZTczNzJmZTllYzUxMmVmNjM2MTEwMWFjNWEwNWU1
Li4yYTY4MTU4MmIzNjVmNGM0YWVhZDFmMjNiZWY2Y2Q5MTZjYTc0N2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE3MiwxNCArMTcyLDE0IEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpjcmVhdGVUaWxlcihDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRp
b24gYm9yZGVyCiAgICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUobV90aWxl
U2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewogICAg
IC8vIElmIHRoaXMgYXNzZXJ0IGlzIGhpdCwgaXQgbWVhbnMgdGhhdCBwYWludENvbnRlbnRzSWZE
aXJ0eSBoYXNuJ3QgYmVlbgogICAgIC8vIGNhbGxlZCBvbiB0aGlzIGxheWVyLiBBbnkgbGF5ZXIg
dGhhdCBpcyB1cGRhdGVkIHNob3VsZCBiZSBwYWludGVkIGZpcnN0LgogICAgIEFTU0VSVChtX3Rp
bGVyKTsKIAogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0
dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlkYXRl
ZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJl
Y3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQorICAgIGlm
IChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3Rp
bGVyIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAgLTIx
OSwxMSArMjE5LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChw
YWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgp
KQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5k
KHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaGFu
ZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAg
ICAgIH0KICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29u
dGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRpb24pCkBAIC0z
OTksMTUgKzM5Nyw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0ID0g
Y29udGVudFJlY3Q7CiAKICAgICBtX3BhaW50UmVjdCA9IG1fdGlsZXItPmxheWVyUmVjdFRvQ29u
dGVudFJlY3QoZGlydHlMYXllclJlY3QpOwotICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5
KCkpCisgICAgaWYgKG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWlu
dCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNv
bXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRh
dGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVt
b3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMs
Ci0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVw
ZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KLSAgICBSZWZQdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIHRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUo
KSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSk7CiAgICAgbV90
aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVkVXBkYXRlUmVjdCwgbGVm
dCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRv
bTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsK
QEAgLTQzMiwxMyArNDI0LDI1IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICB0aWxlLT5jbGVh
ckRpcnR5KCk7CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7
Ci0gICAgICAgICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291
cmNlUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQoreworICAgIGlmICht
X3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVy
LT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFp
bnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBj
b21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBk
YXRlciB0byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1l
bW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVz
LAorICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1
cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICB0ZXh0dXJl
VXBkYXRlcigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgp
LCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpKTsKKworICAgIG1f
dXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1f
cGFpbnRSZWN0KSk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggMjhlN2QxZDBjNTY5NjgwMGYz
ZDYyMTI0MDhkZDhkMThiY2VkYmVjMi4uZTQ3ODE4ZjY0MjA2NjE3MzE3ZmU5NWEzMzE5MTdjNzdm
ODQwZWM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNl
dElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5
ZXJJbXBsKik7CkBAIC03NSw4ICs3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBTZXQgaW52
YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgog
ICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwotICAg
IC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0
IHdpdGggY29udGVudFJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMgdGhh
dCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29udGVudHMgbmVlZGVk
IHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAg
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtOTMsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7
CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1w
b3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBw
cmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9yZXF1
ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRh
dGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEKICAg
ICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVjOTNmMTY4ZGExNGVhNDFlM2Mx
NmRmNmQ3YzQ5YmVlNDUxM2VhY2UuLjdiZWM3YzBhMTgwMDNkYzkxZTFkNGNiYWFkZGU5ZDNiMmQ0
MWZlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNDAsMTEgKzQwLDYx
IEBACiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFt
ZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OlVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAg
OiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fbWFwcGVkQnVmZmVyKDApCit7Cit9CisKK1Zp
ZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cisg
ICAgQVNTRVJUKCFtX21hcHBlZEJ1ZmZlcik7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgSW50U2l6ZSBkaW1l
bnNpb25zID0gbV90ZXh0dXJlLT5zaXplKCk7CisKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSog
ZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5o
ZWlnaHQoKSwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CisKKyAgICBpZiAoIW1f
bWFwcGVkQnVmZmVyKSB7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1hbmFn
ZXI6Om1lbW9yeVVzZUJ5dGVzKGRpbWVuc2lvbnMsIG1fdGV4dHVyZS0+Zm9ybWF0KCkpOworICAg
ICAgICBtX2J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0pOwor
ICAgIH0KKworICAgIG1fdGV4dHVyZS0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRv
cik7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6ZGF0YVJl
Y3QoY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVN
YW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhtX3RleHR1cmUtPnNpemUoKSwgbV90ZXh0dXJlLT5mb3Jt
YXQoKSk7CisKKyAgICBpZiAobV9tYXBwZWRCdWZmZXIpCisgICAgICAgIG1lbWNweShtX21hcHBl
ZEJ1ZmZlciwgZGF0YSwgYnVmZmVyU2l6ZSk7CisgICAgZWxzZQorICAgICAgICBtZW1jcHkobV9i
dWZmZXIuZ2V0KCksIGRhdGEsIGJ1ZmZlclNpemUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKQoreworICAgIEFTU0VSVChtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBj
b250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0
dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIEV4
dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBHTEMoY29udGV4
dCwgZXh0ZW5zaW9ucy0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0obV9tYXBwZWRCdWZmZXIp
KTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIElu
dFNpemUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgpOworICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
MCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBtX3RleHR1
cmUtPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbV9idWZmZXIu
Z2V0KCkpKTsKKyAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQ
dHI8VmlkZW9MYXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVy
RGVsZWdhdGUqIGRlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7CkBA
IC01OCw2ICsxMDgsNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShD
Q0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdgogICAgICwgbV9wcm92aWRl
cihwcm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCiAgICAgLCBtX25hdGl2ZVRleHR1cmVJZCgw
KQorICAgICwgbV9mcmFtZSgwKQogewogfQogCkBAIC03NSwxNyArMTI2LDE5IEBAIHZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsKICAgICBMYXllckNocm9taXVt
OjpjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBs
YW5lczsgKytpKQotICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOworICAg
ICAgICBtX3RleHR1cmVzW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZUlmRGlydHkoKQogeworICAgIG1fZnJhbWUgPSAwOworCiAgICAgaWYgKCFtX2Rl
bGVnYXRlIHx8ICFtX3Byb3ZpZGVyIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSAmJiB0ZXh0dXJlc1ZhbGlkKCkpIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsK
LSAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS5tX3Rl
eHR1cmUuZ2V0KCk7CisgICAgICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJl
c1twbGFuZV0tPnRleHR1cmUoKTsKICAgICAgICAgICAgIGlmICghdGV4LT5yZXNlcnZlKHRleC0+
c2l6ZSgpLCB0ZXgtPmZvcm1hdCgpKSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3ID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMyw4ICsxNzYsMTAgQEAgdm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFsbG9j
YXRlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBhbHJlYWR5
LCBvcgotICAgIC8vIHJlYWxsb2NhdGUgdGV4dHVyZXMgdGhhdCBhcmUgdGhlIHdyb25nIHNpemUg
Zm9yIHRoZSBmcmFtZS4KKyAgICBpZiAoZnJhbWUtPnBsYW5lcygpID4gTWF4UGxhbmVzKQorICAg
ICAgICBDUkFTSCgpOworCisgICAgLy8gUmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRo
ZXkgYXJlIG5vdCByZXNlcnZlZCBhbHJlYWR5LgogICAgIGJvb2wgdGV4dHVyZXNSZXNlcnZlZCA9
IHJlc2VydmVUZXh0dXJlcyhmcmFtZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgaWYgKCF0ZXh0dXJl
c1Jlc2VydmVkKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKQEAgLTEzMiwyMSArMTg3
LDM0IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICAvLyBVcGRhdGUgdGV4dHVyZSBwbGFuZXMuCi0gICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9
IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7Ci0gICAgICAgIFRleHR1cmUm
IHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKLSAgICAgICAgQVNTRVJUKHRleHR1cmUubV90
ZXh0dXJlKTsKLSAgICAgICAgQVNTRVJUKGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5l
KSA9PSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpKTsKLSAgICAgICAgdXBkYXRlVGV4dHVyZShj
b250ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpLCB0ZXh0dXJlLCBmcmFtZS0+ZGF0YShwbGFuZSkp
OwotICAgIH0KLQorICAgIG1fZnJhbWUgPSBmcmFtZTsKICAgICBtX3BsYW5lcyA9IGZyYW1lLT5w
bGFuZXMoKTsKLSAgICBBU1NFUlQobV9wbGFuZXMgPD0gTWF4UGxhbmVzKTsKIAogICAgIG1fdXBk
YXRlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJvdW5kcygpKTsKICAgICBtX25lZWRz
RGlzcGxheSA9IGZhbHNlOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAvLyBDb3B5IHBsYW5l
cyB0byBtYXBwZWQgYnVmZmVycy4KKyAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUg
PCBtX2ZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykKKyAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0t
PmRhdGFSZWN0KG1fZnJhbWUtPmRhdGEocGxhbmUpKTsKKworICAgIG1fcHJvdmlkZXItPnB1dEN1
cnJlbnRGcmFtZShtX2ZyYW1lKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxl
cikKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAodW5z
aWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7CisgICAgICAgIElu
dFJlY3QgcmVjdChJbnRQb2ludCgpLCBtX3RleHR1cmVzW3BsYW5lXS0+dmlzaWJsZVNpemUoKSk7
CisgICAgICAgIGhhbmRsZXIuaGFuZGxlKG1fdGV4dHVyZXNbcGxhbmVdLmdldCgpLCByZWN0LCBy
ZWN0KTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGll
c1RvKENDTGF5ZXJJbXBsKiBsYXllcikKQEAgLTE1NywxMSArMjI1LDExIEBAIHZvaWQgVmlkZW9M
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICB2
aWRlb0xheWVyLT5zZXRTa2lwc0RyYXcobV9za2lwc0RyYXcpOwogICAgIHZpZGVvTGF5ZXItPnNl
dEZyYW1lRm9ybWF0KG1fZnJhbWVGb3JtYXQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3BsYW5lczsgKytpKSB7Ci0gICAgICAgIGlmICghbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUp
IHsKKyAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ldKSB7CiAgICAgICAgICAgICB2aWRlb0xheWVy
LT5zZXRTa2lwc0RyYXcodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLT50
ZXh0dXJlSWQoKSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnNpemUoKSwgbV90ZXh0dXJlc1tp
XS5tX3Zpc2libGVTaXplKTsKKyAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCBtX3Rl
eHR1cmVzW2ldLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLT50ZXh0dXJl
KCktPnNpemUoKSwgbV90ZXh0dXJlc1tpXS0+dmlzaWJsZVNpemUoKSk7CiAgICAgfQogICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fcGxhbmVzOyBpIDwgTWF4UGxhbmVzOyArK2kpCiAgICAgICAgIHZp
ZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgMCwgSW50U2l6ZSgpLCBJbnRTaXplKCkpOwpAQCAtMTcy
LDEwICsyNDAsOCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhD
Q0xheWVySW1wbCogbGF5ZXIpCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAgICAgaWYgKGhvc3QgJiYgbGF5ZXJUcmVl
SG9zdCgpICE9IGhvc3QpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBs
YW5lczsgKytpKSB7Ci0gICAgICAgICAgICBtX3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUgPSBJ
bnRTaXplKCk7Ci0gICAgICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSA9IE1hbmFnZWRU
ZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKLSAgICAgICAg
fQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpCisgICAg
ICAgICAgICBtX3RleHR1cmVzW2ldID0gVXBkYXRlclRleHR1cmU6OmNyZWF0ZShNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKGhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSkpOwogICAgIH0KIAog
ICAgIExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoaG9zdCk7CkBAIC0xOTksOCArMjY1
LDEwIEBAIEdDM0RlbnVtIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZGV0ZXJtaW5lVGV4dHVyZUZvcm1h
dChjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyCiAKIGJvb2wgVmlkZW9MYXllckNocm9taXVt
Ojp0ZXh0dXJlc1ZhbGlkKCkKIHsKKyAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsKKwogICAg
IGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7Ci0g
ICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUu
Z2V0KCk7CisgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS0+
dGV4dHVyZSgpOwogICAgICAgICBpZiAoIXRleC0+aXNWYWxpZCh0ZXgtPnNpemUoKSwgdGV4LT5m
b3JtYXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjE3LDE5ICsy
ODUsMjAgQEAgYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcyhjb25zdCBW
aWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lLCBHQzNEZW4KIAogICAgIGZvciAodW5zaWduZWQgcGxh
bmUgPSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewogICAgICAgICBJbnRT
aXplIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFu
ZSk7CisgICAgICAgIEFTU0VSVChtX3RleHR1cmVzW3BsYW5lXSk7CisgICAgICAgIEFTU0VSVCht
X3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVuZGVy
ZXIgY2Fubm90IGhhbmRsZSB0aGlzIGxhcmdlIG9mIGEgdGV4dHVyZSwgcmV0dXJuIGZhbHNlLgog
ICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBhcmUg
aW1wbGVtZW50ZWQuCiAgICAgICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplLmlzWmVybygpIHx8
IHJlcXVpcmVkVGV4dHVyZVNpemUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplIHx8IHJlcXVpcmVk
VGV4dHVyZVNpemUuaGVpZ2h0KCkgPiBtYXhUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICBpZiAoIW1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0u
bV90ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkKLSAgICAgICAgICAgIG1f
dGV4dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUs
IHBsYW5lKTsKKyAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCktPnNpemUo
KSAhPSByZXF1aXJlZFRleHR1cmVTaXplKSB7CisgICAgICAgICAgICBJbnRTaXplIHZpc2libGVT
aXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7CisgICAgICAgICAgICBtX3Rl
eHR1cmVzW3BsYW5lXS0+c2V0VmlzaWJsZVNpemUodmlzaWJsZVNpemUpOworICAgICAgICB9CiAK
LSAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVkVGV4
dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS0+dGV4
dHVyZSgpLT5yZXNlcnZlKHJlcXVpcmVkVGV4dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOwogICAg
IH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjU5LDI4ICszMjgsNiBAQCBJbnRTaXplIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6Y29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1
bSogZnJhbWUsCiAgICAgcmV0dXJuIEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVpZ2h0
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZSYg
dGV4dHVyZSwgY29uc3Qgdm9pZCogZGF0YSkgY29uc3QKLXsKLSAgICBBU1NFUlQoY29udGV4dCk7
Ci0gICAgQVNTRVJUKHRleHR1cmUubV90ZXh0dXJlKTsKLQotICAgIHRleHR1cmUubV90ZXh0dXJl
LT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCi0gICAgR0MzRGVudW0gZm9ybWF0
ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1hdCgpOwotICAgIEludFNpemUgZGltZW5zaW9ucyA9
IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7Ci0KLSAgICB2b2lkKiBtZW0gPSBzdGF0aWNfY2Fz
dDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSktPm1hcFRl
eFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwg
MCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBmb3JtYXQsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVf
T05MWSk7Ci0gICAgaWYgKG1lbSkgewotICAgICAgICBtZW1jcHkobWVtLCBkYXRhLCBkaW1lbnNp
b25zLndpZHRoKCkgKiBkaW1lbnNpb25zLmhlaWdodCgpKTsKLSAgICAgICAgR0xDKGNvbnRleHQs
IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpKS0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0obWVtKSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgLy8gSWYgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNIGZhaWxzLCB0aGVuIGRvIHRoZSBz
bG93ZXIgdGV4U3ViSW1hZ2UyRAotICAgICAgICAvLyB1cGxvYWQuIFRoaXMgZG9lcyB0d2ljZSB0
aGUgY29waWVzIGFzIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwgb25lCi0gICAgICAgIC8vIGlu
IHRoZSBjb21tYW5kIGJ1ZmZlciBhbmQgYW5vdGhlciB0byB0aGUgdGV4dHVyZS4KLSAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQo
KSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0YSkpOwotICAg
IH0KLX0KLQogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VQcm92aWRlcigpCiB7CiAg
ICAgbV9wcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDUxNmM4
ZDM4NDdjMmFkYjY0YzViYmVmYjdjOTljYWI1ZjVhZmFiYTMuLjM1MWY4ZjhkMTU2MTMxNzIwZjNl
NmIzODRlYjM0MmY4MDc0ZTUwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00
Myw2ICs0MywzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQgY29udGFp
bnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExh
eWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFVwZGF0ZXJUZXh0dXJlKHRleHR1cmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAg
ICAgIHZvaWQgZGF0YVJlY3QoY29uc3Qgdm9pZCopOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICB2b2lkIHNldFZpc2libGVTaXplKElu
dFNpemUmIHNpemUpIHsgbV92aXNpYmxlU2l6ZSA9IHNpemU7IH0KKyAgICAgICAgSW50U2l6ZSYg
dmlzaWJsZVNpemUoKSB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
Pik7CisKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAg
IEludFNpemUgbV92aXNpYmxlU2l6ZTsKKyAgICAgICAgdWludDhfdCogbV9tYXBwZWRCdWZmZXI7
CisgICAgICAgIE93bkFycmF5UHRyPHVpbnQ4X3Q+IG1fYnVmZmVyOworICAgIH07CiAKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CkBAIC01MCw3ICs3Nyw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7
CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHJlbGVhc2VQcm92aWRlcigpOwpAQCAtNjMs
MTggKzkyLDEyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNl
cygpOwogCiBwcml2YXRlOgotICAgIHN0cnVjdCBUZXh0dXJlIHsKLSAgICAgICAgSW50U2l6ZSBt
X3Zpc2libGVTaXplOwotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsK
LSAgICB9OwotCiAgICAgVmlkZW9MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSosIFZpZGVv
RnJhbWVQcm92aWRlciopOwogCiAgICAgc3RhdGljIEdDM0RlbnVtIGRldGVybWluZVRleHR1cmVG
b3JtYXQoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKik7CiAgICAgc3RhdGljIEludFNpemUgY29t
cHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHBsYW5l
KTsKICAgICBib29sIHRleHR1cmVzVmFsaWQoKTsKICAgICBib29sIHJlc2VydmVUZXh0dXJlcyhj
b25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2
b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
VGV4dHVyZSYsIGNvbnN0IHZvaWQqKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRGcmFtZVBhcmFt
ZXRlcnMoKTsKIApAQCAtODMsMTIgKzEwNiwxNCBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVQ
cm92aWRlciogbV9wcm92aWRlcjsKIAogICAgIGVudW0geyBNYXhQbGFuZXMgPSAzIH07Ci0gICAg
VGV4dHVyZSBtX3RleHR1cmVzW01heFBsYW5lc107CisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJl
PiBtX3RleHR1cmVzW01heFBsYW5lc107CiAgICAgdW5zaWduZWQgbV9wbGFuZXM7CiAKICAgICB1
bnNpZ25lZCBtX25hdGl2ZVRleHR1cmVJZDsKICAgICBJbnRTaXplIG1fbmF0aXZlVGV4dHVyZVNp
emU7CiAgICAgSW50U2l6ZSBtX25hdGl2ZVRleHR1cmVWaXNpYmxlU2l6ZTsKKworICAgIFZpZGVv
RnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGRlYjhjOTQ3NDIyYTEzZTFmMTc0NWRhYWY0NjM4MGE4MDNmYmQ2NWQuLjNm
NGIwNWI2YTQ5NzJhNGQ1NmU3ZmVkMWI0YmFjOTcyMzI4NDk3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcApAQCAtMzksOSArMzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBk
YXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5
ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVy
VGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
Lyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAg
bV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKK30KKwogUGFzc1Jl
ZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExh
eWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKQEAgLTUyLDYgKzY3LDcgQEAgV2ViR0xMYXllckNocm9t
aXVtOjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAs
IG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCiAg
ICAgLCBtX2RyYXdpbmdCdWZmZXIoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRl
eHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjYsNyArODIsNyBAQCBib29sIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gKGNvbnRleHQo
KSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBy
ZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBXZWJHTExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVy
Q29udGV4dCkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC05NSw2ICsxMTEsMTEgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ28KICAgICB9CiB9CiAKK3Zv
aWQgV2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUobV91
cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiBib29sIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVu
ZGVyZXJDb250ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uaAppbmRleCA2Mzc0YjllZjZiMTE3YWQyMzU1YTFmYWRiNjlkZGI0MTA3YTY5MzEwLi41NGIy
N2Q0NzY2NTUxMWQ3MDNmZTY2NmFhYjNkNWMxYmNhYmY2ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMTIgKzQ2LDMwIEBA
IGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRh
aW5pbmcgYSBXZWJHTCBjYW52YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBD
YW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoV2ViR0xMYXllckNo
cm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+
VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0
dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSog
bV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmlydHVhbCB+V2ViR0xM
YXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1
YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03MSw2ICs5MCw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZl
ciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJv
bWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisKKyAgICBPd25QdHI8
VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAppbmRleCAyN2Q5NTZhN2M3YWZiZDA5NWRiOTQ1YjkzNGExNjZlZmE1
NWYzNzRmLi5jNjU4NDUyOGM4MGQzMDNlYTVlYTY2NjA1MGY1YjY5YWRmNjdlMzRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDVGhyZWFkUHJveHkuaCIKIApAQCAtNDgsNiArNDksNTIgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpCiAgICAgcmV0dXJuIG51bUxh
eWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAKK0NDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNl
SGFuZGxlcjo6TmVlZFJlc291cmNlSGFuZGxlcigpCisgICAgOiBtX3Jlc291cmNlcygwKQorewor
fQorCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6On5OZWVkUmVzb3VyY2VI
YW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRs
ZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykK
K3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIG1fcmVzb3Vy
Y2VzKys7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6UHJl
cGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2Fs
bG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291
cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlmICh0ZXh0dXJlLT5uZWVkUHJlcGFyZVJlY3Qo
KSkKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxl
cjo6UGFpbnRIYW5kbGVyKENDUHJveHkqIHByb3h5KQorICAgIDogbV9wcm94eShwcm94eSkKK3sK
K30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIoKQorewor
fQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZS0+cGFpbnRDb250ZW50c1Jl
Y3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRp
bmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVI
b3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBA
IC0zMTQsNyArMzYxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAg
c3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3Np
dGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoKQogewogICAgIGlmICgh
cm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMyMiwxMiArMzY5LDEyIEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIo
KSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsKIH0KIAotdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikK
IHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlz
LCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUi
LCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAg
ICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtMzM2LDI0ICszODMsNzcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290
TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXpl
KCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8v
IFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNh
bGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBw
ZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUo
KSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNz
ZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBw
cmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2
ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYm
ICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RS
ZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRl
clN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRh
dGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAg
ICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2li
aWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgIH0K
KworICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9s
YXllclVwZGF0ZUxpc3QpOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRh
dGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAg
ICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhd
LmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIH0K
K30KKworYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpCit7
CisgICAgTmVlZFJlc291cmNlSGFuZGxlciBoYW5kbGVyOworICAgIGZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CisgICAgcmV0dXJuIGhhbmRsZXIucmVzb3VyY2VzKCk7Cit9CisK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2Vz
IiwgdGhpcywgMCk7CisgICAgUHJlcGFyZVJlc291cmNlSGFuZGxlciBoYW5kbGVyKGNvbnRleHQs
IGFsbG9jYXRvcik7CisgICAgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKK30K
Kwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoKQoreworICAgIGlmICghcm9v
dExheWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMocm9vdExheWVyKCkp
OworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyhMYXllckNocm9taXVt
KiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRD
b250ZW50cyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJV
cGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgewor
ICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5k
ZXhdLmdldCgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKworICAg
ICAgICBQYWludEhhbmRsZXIgaGFuZGxlcihtX3Byb3h5LmdldCgpKTsKKyAgICAgICAgbGF5ZXIt
PmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQorfQogCi0gICAgcGFp
bnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCk7Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBw
ZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxp
c3QpCit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJm
YWNlIGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwg
d2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91
bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsK
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllcikKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8g
Tm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biBy
ZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3
ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRv
IHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtMzYyLDMzICs0NjIsMzMgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVy
Q2hyb21pdW0qIHJlbmRlclMKICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIo
KSkgewogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRy
ZWVIb3N0KHRoaXMpOwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVy
LT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVy
KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgIH0KIAog
ICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVw
bGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FMYXllcikgewogCiAgICAgICAgIHJlcGxpY2FM
YXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcmVwbGljYUxheWVyLT5wYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxh
eWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIo
KSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVl
SG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldFZp
c2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXll
cigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xh
eWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxl
TGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29u
c3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBk
YXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewotICAgIGZvciAoaW50IHN1cmZhY2VJ
bmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49
IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Cisg
ICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgp
IC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBMYXll
ckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtz
dXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRl
clN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAg
QVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJh
d09wYWNpdHkoKSk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5zZXRMYXllclRyZWVI
b3N0KHRoaXMpOwotICAgICAgICBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShy
ZW5kZXJTdXJmYWNlTGF5ZXIpOworICAgICAgICBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBjb25z
dCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0
LnNpemUoKTsgKytsYXllckluZGV4KSB7CkBAIC00MDQsNDkgKzUwNCwyOSBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKGxheWVyLT5vcGFjaXR5KCkpOwogICAg
ICAgICAgICAgQVNTRVJUKCFsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAotICAgICAgICAg
ICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgICAgICBhcHBlbmRWaXNp
YmxlTGF5ZXIobGF5ZXIsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImIGhhbmRsZXIpCiB7Ci0gICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gbV91cGRhdGVM
aXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gbV91cGRhdGVMaXN0W3N1
cmZhY2VJbmRleF0uZ2V0KCk7Ci0gICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVy
U3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBB
U1NFUlQocmVuZGVyU3VyZmFjZSk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3
T3BhY2l0eSgpKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIo
KSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRl
clN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlclN1cmZh
Y2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNl
TGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICByZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxp
c3QoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8
IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7Ci0KLSAgICAgICAgICAg
IGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFy
Z2V0PExheWVyQ2hyb21pdW0+KGxheWVyLCByZW5kZXJTdXJmYWNlTGF5ZXItPmlkKCkpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQorICAgIGZvciAoaW50
IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49
IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xh
eWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQogfQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5k
ZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRl
eCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNl
SW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNsZWFyKCk7CisKKyAgICBmb3Ig
KHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3JlbmRlclN1cmZhY2VV
cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1
bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7
CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgbGF5ZXIt
PmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsK
KyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQm
IGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGFhYWQxNDIyOWQzNTEwZWUx
OTEwMjFjNzY0Yzc1YjRmYjQ3M2FiNTUuLmMzMmUyMTBiZmE0N2Y4ZmE5YWIxMTU1MTgwM2MyZWRh
Yjg3Y2M5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw3ICs0NSw2IEBA
IGNsYXNzIEdyQ29udGV4dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0SW1wbDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRv
cjsKQEAgLTc0LDcgKzczLDggQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCBz
aG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KGZhbHNlKQogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQotICAgICAgICAgICAgLCBwZXJU
aWxlUGFpbnRpbmcoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFs
c2UpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAg
Ym9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBA
IC04Miw2ICs4Miw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHNob3dQbGF0Zm9y
bUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9vbCBwZXJUaWxlUGFp
bnRpbmc7CisgICAgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlkZXMg
aW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0
aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xODYsOSArMTg3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5
ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAgICBib29sIG5lZWRzQ29tcG9z
aXRvclJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBwYWludENvbnRl
bnRzKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U2Ny
b2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRS
YXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVy
KEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xOTgsMTIgKzIwMiw1MCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgTmVlZFJlc291cmNl
SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAgICAgICAgdmlydHVhbCB+TmVl
ZFJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVzb3VyY2VzKCkgeyByZXR1cm4g
bV9yZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX3Jlc291cmNlczsK
KyAgICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFByZXBhcmVS
ZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Cisg
ICAgICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRl
OgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgICAgICBUZXh0dXJl
QWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAgY2xhc3MgUGFpbnRIYW5kbGVy
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAgdmlydHVhbCB+UGFpbnRIYW5k
bGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94eSogbV9wcm94eTsKKyAgICB9
OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0
OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jik7Ci0gICAg
dm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKik7
CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYp
OworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hy
b21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxh
eWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3Qm
IHVwZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwor
ICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHBhaW50
Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7
CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAgLTIxOSw3ICsyNjEsOCBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExheWVy
TGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5ncyBt
X3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYmIzNzgwMTQ3YjE2YzI2Yjc1YTdjY2QyMmFh
OGI4ZmU4NGU3NmJiZC4uZWVlNmQxOGMxZTgwMDhkODNmOTUzY2FiNDViZjRkNDQxNjllNDhlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcg
dGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuY3BwCmluZGV4IDUwMWEwMGMyYjA5YTBkZjkwZGM2MWRjYWZjZmNhN2Q3YzY2N2IxODUu
LmM4OTVhNTE2ZDNmNjNjZjQ3MDFkMWY3Y2JiODM5MDM1OGVmODI0YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5jcHAKQEAgLTY4LDYgKzY4LDEyIEBAIHZvaWQgQ0NTY2hlZHVsZXI6OnNldE5lZWRz
Rm9yY2VkUmVkcmF3KCkKICAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCit2b2lk
IENDU2NoZWR1bGVyOjpzZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCkKK3sKKyAgICBtX3N0YXRl
TWFjaGluZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKCk7CisgICAgcHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZUNvbXBsZXRlKCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSIsIHRo
aXMsIDApOwpAQCAtOTYsNyArMTAyLDcgQEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgp
CiB7CiAgICAgaWYgKG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpIHsKICAgICAgICAgbV91
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyA9IGZhbHNlOwotICAgICAgICBtX3N0YXRlTWFjaGlu
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShtX2NsaWVudC0+aGFzTW9yZVJlc291
cmNlVXBkYXRlcygpKTsKKyAgICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOwogICAgIH0KICAg
ICBUUkFDRV9FVkVOVCgiQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUiLCB0aGlzLCAwKTsKIApAQCAt
MTA1LDYgKzExMSwxNCBAQCB2b2lkIENDU2NoZWR1bGVyOjpiZWdpbkZyYW1lKCkKICAgICBtX3N0
YXRlTWFjaGluZS5kaWRMZWF2ZVZTeW5jKCk7CiB9CiAKK3ZvaWQgQ0NTY2hlZHVsZXI6OnVwZGF0
ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSgpCit7CisgICAgQVNTRVJUKG1fdXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcpOworICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsK
KyAgICBtX3N0YXRlTWFjaGluZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQt
Pmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSk7CisgICAgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMo
KTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogewog
ICAgIC8vIEVhcmx5IG91dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxl
c3MgcHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMuCkBAIC0xMjUsNiArMTM5LDcgQEAgdm9pZCBDQ1Nj
aGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoKQogICAgICAgICAgICAgbV9jbGllbnQt
PnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTOgorICAgICAgICAgICAgQVNTRVJUKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkpOwogICAgICAgICAgICAgbV9jbGllbnQtPnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMoKTsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQtPmhhc01vcmVSZXNvdXJj
ZVVwZGF0ZXMoKSkgewogICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUganVzdCB0b2xkIHRv
IHVwZGF0ZSByZXNvdXJjZXMsIGJ1dCB0aGVyZSBhcmUgbm8KQEAgLTEzMiw3ICsxNDcsNyBAQCB2
b2lkIENDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpCiAgICAgICAgICAgICAg
ICAgLy8gYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzIGNvbXBsZXRlZC4gSWYgbW9yZSBhcmUgcGVu
ZGluZywKICAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIHdpbGwgYWNrIHRoZSB1cGRhdGUgYXQg
dGhlIG5leHQgZHJhdy4KICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOworICAgICAgICAgICAgICAgIG1fc3RhdGVNYWNo
aW5lLnVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKaW5kZXggOTVlOTk1ZjQ1MThl
ZDY3Y2YzNGY0Yzc4ODg3NGY2OTIyZTdlMjZkZC4uODI4MjI4MTJlOTAxYjlhYmMzODY0OWM2ZjFi
NGFiYWY3MGRlYzdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCkBAIC02NiwxMSArNjYsMTIgQEAg
cHVibGljOgogICAgIC8vIEFzIHNldE5lZWRzUmVkcmF3KCksIGJ1dCBlbnN1cmVzIHRoZSBkcmF3
IHdpbGwgZGVmaW5pdGVseSBoYXBwZW4gZXZlbiBpZiB3ZSBhcmUgbm90IHZpc2libGUuCiAgICAg
dm9pZCBzZXROZWVkc0ZvcmNlZFJlZHJhdygpOwogCisgICAgdm9pZCBzZXRSZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nKCk7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGUoKTsKLQogICAgIHZvaWQg
c2V0TWF4RnJhbWVzUGVuZGluZyhpbnQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNDb21wbGV0
ZSgpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnNBYm9ydCgpOworICAgIHZvaWQgdXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKCk7CiAKICAgICBib29sIGNvbW1pdFBlbmRpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlTWFjaGluZS5jb21taXRQZW5kaW5nKCk7IH0KICAgICBib29sIHJlZHJh
d1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlTWFjaGluZS5yZWRyYXdQZW5kaW5nKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAppbmRleCA0
Y2ZmNjczMGI4N2NlMTQyOWNhYjBkMjE5MDdmMjg2ZGE4NmJhNDdiLi5mZjY1ZmU1MGEyNTc1MDY5
ZWJlNjRiNWJlNGJiZDZiZDRjNmRmOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmUuY3BwCkBAIC0zNyw3ICszNyw5IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNl
KQogICAgICwgbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSkKICAgICAsIG1faW5z
aWRlVlN5bmMoZmFsc2UpCi0gICAgLCBtX3Zpc2libGUoZmFsc2UpIHsgfQorICAgICwgbV92aXNp
YmxlKGZhbHNlKQorICAgICwgbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKGZhbHNlKQorICAgICwg
bV9mcmFtZUNvbXBsZXRlKGZhbHNlKSB7IH0KIAogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFj
dGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiB7CkBAIC01
MSwxNSArNTMsMTAgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gQUNU
SU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKLSAgICBjYXNl
IENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAgICAgaWYgKHNob3VsZERyYXcp
Ci0gICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIHJldHVybiBBQ1RJT05f
Tk9ORTsKLQogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUzoKICAgICAg
ICAgaWYgKHNob3VsZERyYXcpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAg
ICAgIGlmICghbV91cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZykKKyAgICAgICAgaWYgKCFtX3Vw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYmIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZykKICAg
ICAgICAgICAgIHJldHVybiBBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTOwogICAg
ICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKQEAgLTgzLDggKzgwLDEwIEBAIHZvaWQgQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAKICAgICBjYXNl
IEFDVElPTl9CRUdJTl9GUkFNRToKICAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7Ci0gICAgICAg
IG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CisgICAgICAg
IEFTU0VSVCghbV9yZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKTsKKyAgICAgICAgbV9jb21taXRTdGF0
ZSA9IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVM7CiAgICAgICAgIG1fbmVlZHNDb21t
aXQgPSBmYWxzZTsKKyAgICAgICAgbV9mcmFtZUNvbXBsZXRlID0gZmFsc2U7CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzoKQEAg
LTE0NCwxOCArMTQzLDI2IEBAIHZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRz
Q29tbWl0KCkKICAgICBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsKIH0KIAordm9pZCBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6c2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpCit7CisgICAgbV9yZXNv
dXJjZVVwZGF0ZXNQZW5kaW5nID0gdHJ1ZTsKK30KKwogdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6YmVnaW5GcmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQobV9jb21taXRTdGF0ZSA9
PSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1MpOwotICAgIG1fY29tbWl0U3RhdGUgPSBD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOworICAgIEFTU0VSVChtX2NvbW1pdFN0YXRl
ID09IENPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOworICAgIG1fZnJhbWVDb21wbGV0
ZSA9IHRydWU7CisgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nICYmICFtX3Jl
c291cmNlVXBkYXRlc1BlbmRpbmcpCisgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RB
VEVfUkVBRFlfVE9fQ09NTUlUOwogfQogCi12b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpi
ZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShib29sIG1vcmVQZW5kaW5nKQordm9pZCBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGJvb2wg
bW9yZVBlbmRpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29tbWl0U3RhdGUgPT0gQ09NTUlUX1NUQVRF
X1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgQVNTRVJUKG1fdXBkYXRlTW9yZVJlc291cmNlc1Bl
bmRpbmcpOwogICAgIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcgPSBmYWxzZTsKLSAgICBp
ZiAoIW1vcmVQZW5kaW5nKQorICAgIG1fcmVzb3VyY2VVcGRhdGVzUGVuZGluZyA9IG1vcmVQZW5k
aW5nOworICAgIGlmICghbW9yZVBlbmRpbmcgJiYgbV9mcmFtZUNvbXBsZXRlKQogICAgICAgICBt
X2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKaW5kZXggNWEyN2JkMjhiODhhNzRj
YjY5NGVkM2U0NTUxZDQzMzdkZDYxYzUzMi4uMGQ5ZWIxNTI3Y2Q0MjBhZDQ3ZjI3N2UzMTRlZjU1
NzljMTNkMDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5o
CkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKIAogICAgIGVudW0gQ29tbWl0U3RhdGUgewogICAg
ICAgICBDT01NSVRfU1RBVEVfSURMRSwKLSAgICAgICAgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BS
T0dSRVNTLAogICAgICAgICBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgICAg
ICBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULAogICAgICAgICBDT01NSVRfU1RBVEVfV0FJ
VElOR19GT1JfRklSU1RfRFJBVywKQEAgLTg5LDE0ICs4OCwxNyBAQCBwdWJsaWM6CiAgICAgLy8g
dGhyZWFkIHRvIG1haW4uCiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpOwogCisgICAgLy8gSW5k
aWNhdGVzIHRoYXQgY29tcG9zaXRvciByZXNvdXJjZXMgdGhhdCBuZWVkIHVwZGF0aW5nIGFyZSBw
ZW5kaW5nLgorICAgIHZvaWQgc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZygpOworCiAgICAgLy8g
Q2FsbCB0aGlzIG9ubHkgaW4gcmVzcG9uc2UgdG8gcmVjZWl2aW5nIGFuIEFDVElPTl9CRUdJTl9G
UkFNRQogICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCBhbGwgcGFpbnRpbmcg
aXMgY29tcGxldGUgYW5kIHRoYXQKLSAgICAvLyB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291
cmNlcyBjYW4gYmVnaW4uCisgICAgLy8gb25seSB1cGRhdGluZyBvZiBjb21wb3NpdG9yIHJlc291
cmNlcyBpcyBsZWZ0LgogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlKCk7CiAKICAgICAvLyBD
YWxsIHRoaXMgb25seSBpbiByZXNwb25zZSB0byByZWNlaXZpbmcgYW4gQUNUSU9OX1VQREFURV9N
T1JFX1JFU09VUkNFUwogICAgIC8vIGZyb20gbmV4dFN0YXRlLiBJbmRpY2F0ZXMgdGhhdCB0aGUg
c3BlY2lmaWMgdXBkYXRlIHJlcXVlc3QgY29tcGxldGVkLgotICAgIHZvaWQgYmVnaW5VcGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZyk7CisgICAgdm9pZCB1cGRhdGVN
b3JlUmVzb3VyY2VzQ29tcGxldGUoYm9vbCBtb3JlUGVuZGluZyk7CiAKIHByb3RlY3RlZDoKICAg
ICBDb21taXRTdGF0ZSBtX2NvbW1pdFN0YXRlOwpAQCAtMTA5LDYgKzExMSw4IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7CiAgICAgYm9vbCBtX2lu
c2lkZVZTeW5jOwogICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9yZXNvdXJjZVVwZGF0
ZXNQZW5kaW5nOworICAgIGJvb2wgbV9mcmFtZUNvbXBsZXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3MmJlYzJhNzE2NjRhZjQzY2Q2NGQw
MTRkMjhiODQyNjUwOTViMjAzLi45MjczMzcwZTUyNzMyOTQ1MjI4MWNhOWI5YzliYWJmNTc0ZjUz
YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTQ3LDE1
ICsxNDcsMTkgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQog
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByZXBhcmUgY29tcG9zaXRvciByZXNvdXJj
ZXMKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50
cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVn
aW5Db21taXQoKTsKLQorICAgICAgICB3aGlsZSAobV90ZXh0dXJlVXBkYXRlci51cGRhdGUobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7
Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVw
ZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZp
c2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsK
IApAQCAtMjA4LDYgKzIxMiwxNCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQog
ICAgIG1fbGF5ZXJUcmVlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlmIChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAg
IG1fdGV4dHVyZVVwZGF0ZXIuYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
KyAgICBlbHNlCisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0
aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMg
dGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVk
aWF0ZWx5KCkKIHsKQEAgLTI3Miw3ICsyODQsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogCiAgICAgZG9Db21taXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCAwZDVhNGEyZDhhNTE2YjFkN2JjZjk5MWE5
OWUxYzc4Nzg5OTQzZWM1Li43ODNhOGRiODU3NDAxMjhhNGQ2MDA5ZWI1ODE4NGUzMGNkMDE3ZGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgog
ICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3VsZEZh
aWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlD
b21taXR0ZWRGcmFtZTsKKworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRlcjsK
IH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBi
dWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIuLmE2MWMz
YmIzM2Y2ZTI5Y2JlZmFiNzMwMDI1MDg1ZDEyMDc1MzZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKQEAgLTM3LDExICszOCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJl
VXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi0gICAgOiBtX2FsbG9jYXRvcihh
bGxvY2F0b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKK0NDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4
dHVyZVVwZGF0ZXIoKQogewotICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9CiAKIENDVGV4dHVy
ZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKQEAgLTY2LDIzICs2NCwyMCBAQCBib29sIEND
VGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIAogYm9vbCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkK
IHsKLSAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50
cmllcy5zaXplKCkpOwotICAgIGZvciAoOyBtX2VudHJ5SW5kZXggPCBtYXhJbmRleDsgKyttX2Vu
dHJ5SW5kZXgpIHsKLSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50
cnlJbmRleF07Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBt
X2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKLSAgICB9
CisgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVj
dChjb250ZXh0LCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOworICAgIH0KIAotICAgIC8vIElmIG5vIGVudHJpZXMg
bGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpID4gMDsKIH0KIAogdm9pZCBDQ1RleHR1
cmVVcGRhdGVyOjpjbGVhcigpCiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2VudHJp
ZXMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzlh
YzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNjZWMxNWJiMzAuLmFiNjU5ZWNlZWFkNmRjY2Y1NmJk
ODMwOGE4NjRkODM0ZDBlYzg4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAg
LTMzLDExICszMywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiAKIGNsYXNzIENDVGV4dHVyZVVwZGF0
ZXIgewogcHVibGljOgotICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIENDVGV4dHVyZVVwZGF0ZXIoKTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAg
dm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDggKzQ4LDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KLQogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
VXBkYXRlRW50cnkgewogICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3Rl
eHR1cmU7CkBAIC01OCw4ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgbV9kZXN0
UmVjdDsKICAgICB9OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAg
c2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOGU3NzQyNWU0NDBhNGVkY2Yy
OWYyNjVhYzNlOWVlZmRiZTIxNWQ4Ny4uZDg5YmZmZjU4NDVkNDFkZGE4ZmE5YmViNDMwMDk0YWQw
ZDBlZDZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI4NSw2ICsyODUsMjAg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKIH0K
IAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMs
IDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7
CisKKyAgICBPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVwZGF0ZUVu
dHJ5KTsKKyAgICBlbnRyeS0+bV90ZXh0dXJlID0gdGV4dHVyZTsKKyAgICBlbnRyeS0+bV9zb3Vy
Y2VSZWN0ID0gc291cmNlUmVjdDsKKyAgICBlbnRyeS0+bV9kZXN0UmVjdCA9IGRlc3RSZWN0Owor
CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQsIGVudHJ5LnJl
bGVhc2UoKSkpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhp
cywgMCk7CkBAIC0zNzMsNyArMzg3LDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAg
Ly8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CiAKLSAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJl
cGFyZVRvVXBkYXRlKCk7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0
b3JSZXNvdXJjZXMoKSkgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAg
Q0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZCwgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxldGlvbi53YWl0
KCk7CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAg
ICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQg
bV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBp
dCBtZWFucyBzZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29t
bWl0CkBAIC0zOTcsMTMgKzQyMSwzNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFT
U0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBz
ZXF1ZW5jZU51bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVz
b3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbk9uSW1w
bFRocmVhZCIsIHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRv
clJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIGNvbXBsZXRpb24tPnNp
Z25hbCgpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJUKCFtX2NvbW1p
dENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgp
KTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuYXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVu
dHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKK30KKwogdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQobV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJl
ZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1
cm47CkBAIC00MTEsMzYgKzQ1OSwzMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAg
bV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAg
QVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBk
YXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCk7CisgICAgaWYgKGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSkKKyAgICAgICAgbV9zY2hlZHVs
ZXJPbkltcGxUaHJlYWQtPnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoKTsKIAogICAgIG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKIH0KIAogYm9vbCBDQ1Ro
cmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3Jl
VXBkYXRlcygpOworICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmhhc01v
cmVVcGRhdGVzKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBk
YXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQo
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwogICAgIHN0YXRpYyBjb25zdCBp
bnQgVXBkYXRlc1BlckZyYW1lID0gOTk5OTk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0
ZXNQZXJGcmFtZSk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC51cGRhdGUobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOwogfQogCiB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOwotICAg
IEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJU
KCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7
CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmhhc01vcmVVcGRhdGVz
KCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAK
LSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOworICAgIG1f
dGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAogCiAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+YmVnaW5Db21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAxZGYz
NzQ2YzVkYzAxMzRhMzI0ZTRhYzg2NDIzMDQ1MjkzM2E5OGZiLi5mMTI0NGMyYTE5Y2RmNGIyY2M5
MzFlYTU2NjdjZjgwZDRiZjg2MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUg
ImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgorI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIApAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVu
dGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpOwpAQCAtNzgsNiArODAsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0ZUVudHJ5
IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOworICAg
ICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0Owor
ICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJlZ2luRnJh
bWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBh
c3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKCk7CkBAIC05Miw2ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093
blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxU
aHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCBwcmVw
YXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2
b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4pOwog
ICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0
Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqKTsKQEAgLTEyNywxMCArMTM3LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hl
biB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4KICAg
ICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7
Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBk
aWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0
RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKKyAgICBDQ1RleHR1cmVV
cGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBlMmU3NDNhMTBkYjE5NmNk
OTcyMGI4Mzg5ODhlODdiODc3NmI5ZjQwLi5mMGYyODAxNmM3OWI0ODIxZGQ3YjZlYTU2N2Y4ZGM2
ZWYzYmUwMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
ZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdz
LmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc3Vh
bFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJU
aWxlUGFpbnRpbmcoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmco
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAwNmVlMDEwMTI4YTg1NmYy
ZWM3M2Q1ZDIzZWRhZDgyMTQxZmY2N2I4Li4yNDAxMmUzNTE1N2I3NTA2NjdkMjJjMDFjMGEwYjc5
OTA1Y2ViYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0lt
cGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAg
ICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwgbV9wZXJUaWxlUGFpbnRp
bmcoZmFsc2UpCisgICAgLCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKHNldHRpbmdzKTsKIH0KQEAgLTQ5OCwxMCArNDk5LDE0IEBAIHZvaWQgV2ViU2V0dGluZ3NJ
bXBsOjpzZXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhib29sIGVuYWJsZWQpCiAjZW5k
aWYKIH0KIAotCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nKGJvb2wg
ZW5hYmxlZCkKIHsKICAgICBtX3BlclRpbGVQYWludGluZyA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQg
V2ViU2V0dGluZ3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgK
aW5kZXggODhlMjVlOTZlZmNhZmU1MjRlMDhhNzY2NjExNjFjYjc1OTM0NGVlNS4uZjJmZGQzNTAw
ZmM2MDQzZjIzNjBlNmZhODQ5MGE4MGE1MjU1YWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEzMCw2ICsxMzAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zKGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCk7CiAgICAgdmlydHVhbCBi
b29sIHBlclRpbGVQYWludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGVyVGlsZVBhaW50aW5nOyB9
CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CisgICAgdmly
dHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4
dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0
aW5nczsKQEAgLTEzNyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG93RlBTQ291
bnRlcjsKICAgICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGJvb2wgbV9wZXJU
aWxlUGFpbnRpbmc7CisgICAgYm9vbCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAppbmRleCAyZTM5ZmNlNDBkMmFmODYzMGU4OTMxMDc3N2I3OWQzNTA2YjNlNTk1Li40NGZm
NGQ2MzBkNDhmMGE5NDg2YmVlY2JkYmYxMDllNTljY2I5MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yOTQwLDYgKzI5NDAsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUp
CiAgICAgICAgICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0gZGVmYXVsdFJlZnJlc2hSYXRl
OwogCiAgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gc2V0dGluZ3MoKS0+cGVy
VGlsZVBhaW50aW5nKCk7CisgICAgICAgIGNjU2V0dGluZ3MuZGVsYXlUZXh0dXJlVXBkYXRlcyA9
IHNldHRpbmdzKCktPmRlbGF5VGV4dHVyZVVwZGF0ZXMoKTsKIAogICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Y3JlYXRlKFdlYlZp
ZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHRoaXMsIGNjU2V0dGluZ3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
aW5kZXggMzZmZDdkYmQwN2JkYzdjZjFjODYxZmQ4MmFlYmMyYjA4NGEwM2EzMy4uNDMxM2ZhNTE0
Y2VjNGI0YzcxODg4NWJhZmZiMTcxODE3MzQ3Nzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3Iu
aCIKQEAgLTkyMiw2ICs5MjMsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaXNp
YmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCitjbGFzcyBNb2Nr
TGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xhc3MgVGVz
dE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGljIENDTGF5ZXJEZWxlZ2F0ZSB7CiBw
dWJsaWM6CiAgICAgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlKENDTGF5ZXJUcmVlSG9z
dFRlc3QqIHRlc3QpCkBAIC05NDUsMzcgKzk1NCwxMTYgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgOiBwdWJsaWMgQ29udGVudExheWVy
Q2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0
ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nKGRlbGVnYXRlKSk7IH0KKyAgICBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
ciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGNs
YXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAg
ICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRleHR1cmUoQ29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQor
ICAgICAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAgICAgLCBt
X3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyBy
ZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVk
UHJlcGFyZVJlY3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyLT5sYXllcigpLT5uZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnBhaW50Q29udGVudHNSZWN0KCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci0+bGF5ZXIoKS0+dXBkYXRlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
IHByaXZhdGU6CisgICAgICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsK
KyAgICAgICAgICAgIENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVy
OworICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyPiBjcmVhdGUoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmcgKmxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyKGxheWVyKSk7CisgICAgICAgIH0KIAotICAgIGludCBw
YWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3BhaW50Q29udGVudHNDb3VudDsgfQotICAg
IHZvaWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50ID0g
MDsgfQorICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKKyAgICAgICAgfQogCi0gICAgaW50IHVwZGF0ZUNvdW50
KCkgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQotICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgp
IHsgbV91cGRhdGVDb3VudCA9IDA7IH0KKyAgICAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmll
bnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRp
b247IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgICAg
IHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSAv
KiB0ZXh0dXJlRm9ybWF0ICovKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRS
ZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVs
cyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sYXllci0+cGFpbnRDb250ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6IG1f
bGF5ZXIobGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0
ZSogZGVsZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0KQogICAgIHsKLSAgICAgICAgQ29udGVu
dExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1fcGFpbnRD
b250ZW50c0NvdW50Kys7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUsIG5lZWRQcmVwYXJlUmVjdCkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKQog
ICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBkYXRlQ291bnQrKzsKKyAgICAg
ICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUodGhpcyk7CiAgICAgfQorICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRl
ciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyLmdldCgpOyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVudHMoKSB7IG1fcGFpbnRDb250
ZW50c0NvdW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9w
YWludENvbnRlbnRzQ291bnQ7IH0KKworICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFy
ZVJlY3RDb3VudCsrOyB9CisgICAgaW50IHByZXBhcmVSZWN0Q291bnQoKSB7IHJldHVybiBtX3By
ZXBhcmVSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoKSB7IG1fcGFp
bnRDb250ZW50c1JlY3RDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNSZWN0Q291bnQo
KSB7IHJldHVybiBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBkYXRl
UmVjdCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291bnQo
KSB7IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCisgICAgaW50IG5lZWRQcmVwYXJlUmVj
dCgpIHsgcmV0dXJuIG1fbmVlZFByZXBhcmVSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRl
ICpkZWxlZ2F0ZSkKKyAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkK
ICAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX25l
ZWRQcmVwYXJlUmVjdChuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgICwgbV9wYWludENvbnRlbnRz
Q291bnQoMCkKLSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJl
UmVjdENvdW50KDApCisgICAgICAgICwgbV9wYWludENvbnRlbnRzUmVjdENvdW50KDApCisgICAg
ICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRT
aXplKDEwLCAxMCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBib29sIG1fbmVlZFByZXBh
cmVSZWN0OwogICAgIGludCBtX3BhaW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVD
b3VudDsKKyAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50OworICAgIGludCBtX3BhaW50Q29udGVu
dHNSZWN0Q291bnQ7CisgICAgaW50IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIAogLy8gTGF5ZXIg
b3BhY2l0eSBjaGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9y
IHJlc291cmNlcyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTk4Myw3ICsx
MDcxLDcgQEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgOiBwdWJsaWMg
Q0NMYXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdE9w
YWNpdHlDaGFuZ2UoKQogICAgICAgICA6IG1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSh0aGlz
KQotICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUpKQorICAg
ICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUsIHRydWUpKQogICAg
IHsKICAgICB9CiAKQEAgLTEwMDIsMTMgKzEwOTAsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0
eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVu
dHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwg
bV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8g
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBz
YW1lCi0gICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCku
Ci0gICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3Vu
dCgpLAotICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgp
KTsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4K
KyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgp
LAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVj
dENvdW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50
c1JlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250
ZW50c1JlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51
cGRhdGVSZWN0Q291bnQoKSk7CiAKICAgICAgICAgLy8gY2xlYXIgbV91cGRhdGVDaGVja0xheWVy
IHNvIENDTGF5ZXJUcmVlSG9zdCBkaWVzLgogICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIuY2xl
YXIoKTsKQEAgLTEwMjQsNCArMTExNyw0OSBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdE9w
YWNpdHlDaGFuZ2UsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKKy8v
IHByZXBhcmVSZWN0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBuZWVkUHJlcGFyZVJlY3Qo
KSByZXR1cm5zIGZhbHNlLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Qg
OiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6CisgICAgQ0NMYXllclRyZWVI
b3N0VGVzdE5vUHJlcGFyZVJlY3QoKQorICAgICAgICA6IG1fdXBkYXRlQ2hlY2tMYXllcihDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX2RlbGVnYXRlLCBm
YWxzZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAg
IHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xh
eWVyKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAx
MCkpOworCisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopCisgICAgeworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRl
Q2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOworCisgICAgICAgIC8vIHByZXBhcmVS
ZWN0KCkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkLgorICAgICAgICBFWFBFQ1RfRVEoMCwg
bV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgICAgIC8vIHVw
ZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBh
bW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c1JlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VR
KG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpLAorICAgICAgICAg
ICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIE1vY2tMYXllckRlbGVnYXRlIG1fZGVsZWdhdGU7CisgICAgUmVmUHRy
PENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX3VwZGF0ZUNoZWNrTGF5
ZXI7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QsIHJ1bk11
bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdC5jcHAKaW5kZXggZjM0Njk3NzY2NmQyYzRkZmY0N2I0ODgxZmFiMWIx
NmQzZjhjZDdiMi4uZGJjMzdkZDkwMGM2NjA1ZWZiYWJlNzEzNzZjOGY0NDhkNjk4NGIwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcApAQCAtMzcsNyArMzcsNiBAQCBuYW1lc3BhY2UgewogCiBj
b25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUgYWxsQ29tbWl0U3RhdGVz
W10gPSB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFLAot
ICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JF
U1MsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19S
RVNPVVJDRVMsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFE
WV9UT19DT01NSVQsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9X
QUlUSU5HX0ZPUl9GSVJTVF9EUkFXCkBAIC02Myw2ICs2MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGJvb2wgYikgeyBtX3VwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nID0gYjsgfQogICAgIGJvb2wgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmcoKSBjb25zdCB7IHJldHVybiBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nOyB9CisKKyAg
ICB2b2lkIHNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcoYm9vbCBiKSB7IG1fcmVzb3VyY2VVcGRh
dGVzUGVuZGluZyA9IGI7IH0KKyAgICBib29sIHJlc291cmNlVXBkYXRlc1BlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlVXBkYXRlc1BlbmRpbmc7IH0KKworICAgIHZvaWQgc2V0RnJh
bWVDb21wbGV0ZShib29sIGIpIHsgbV9mcmFtZUNvbXBsZXRlID0gYjsgfQorICAgIGJvb2wgZnJh
bWVDb21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVDb21wbGV0ZTsgfQogfTsKIAogVEVT
VChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJ
Zk5lZWRlZCkKQEAgLTk3LDcgKzEwMiw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCiAgICAgICAgIFN0YXRlTWFj
aGluZSBzdGF0ZTsKICAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKICAgICAgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSk7Ci0gICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVT
T1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRl
Lm5lZWRzQ29tbWl0KCkpOwogICAgIH0KIH0KQEAgLTI1MSw2ICsyNTYsOCBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfT25lUm91bmRPZlVw
ZGF0ZXMpCiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKICAgICBzdGF0ZS5zZXRWaXNpYmxlKHRy
dWUpOworICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7CisgICAgc3Rh
dGUuc2V0RnJhbWVDb21wbGV0ZSh0cnVlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBiZWdpbiB1cGRh
dGUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwpAQCAtMjY3LDcgKzI3NCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gRW5kIHVwZGF0ZSB3aXRoIG5vIG1vcmUgdXBkYXRlcyBw
ZW5kaW5nLgotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNl
KTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIHN0
YXRlLmRpZExlYXZlVlN5bmMoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CkBAIC0yNzksNiArMjg2
LDggQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVk
cmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7
CiAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwogICAgIHN0
YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGlu
Zyh0cnVlKTsKKyAgICBzdGF0ZS5zZXRGcmFtZUNvbXBsZXRlKHRydWUpOwogCiAgICAgLy8gVmVy
aWZ5IHRoZSB1cGRhdGUgYmVnaW5zLCBib3RoIGZvciB2c3luYyBhbmQgbm90IHZzeW5jLgogICAg
IHN0YXRlLmRpZEVudGVyVlN5bmMoKTsKQEAgLTI5NSw3ICszMDQsNyBAQCBURVNUKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRh
dGVzKQogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBBY2sgdGhlIHVwZGF0ZSB3aXRoIG1vcmUg
cGVuZGluZy4KLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVl
KTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CiAKICAgICAv
LyBWZXJpZnkgd2UgdXBkYXRlIG1vcmUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMuCiAg
ICAgc3RhdGUuZGlkTGVhdmVWU3luYygpOwpAQCAtMzA1LDcgKzMxNCw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3VuZHNPZlVw
ZGF0ZXMpCiAKICAgICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZSwgd2hpbGUgaW5zaWRlIHZzeW5j
LiBBbmQsIGl0IHVwZGF0aW5nLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBzdGF0
ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUudXBk
YXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBj
b21taXQsIGluZGVwZW5kZW50IG9mIHZzeW5jLgogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsK
QEAgLTMyMSw2ICszMzAsOSBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXROZWVk
c1JlZHJhdyh0cnVlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhm
YWxzZSk7CiAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICBzdGF0ZS5zZXRSZXNvdXJj
ZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIHN0YXRlLnNldEZyYW1lQ29tcGxldGUodHJ1ZSk7
CisKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdp
biBhbiB1cGRhdGUuCkBAIC0zMzgsNyArMzUwLDcgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVwZGF0ZXMpCiAgICAg
c3RhdGUuZGlkTGVhdmVWU3luYygpOwogCiAgICAgLy8gRmluaXNoIHVwZGF0ZSBidXQgbGVhdmUg
bW9yZSByZXNvdXJjZXMgcGVuZGluZy4KLSAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJj
ZXNDb21wbGV0ZSh0cnVlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
dHJ1ZSk7CiAKICAgICAvLyBWZXJpZnkgdGhhdCByZWdhcmRsZXNzIG9mIHZzeW5jLCB3ZSB1cGRh
dGUgc29tZSBtb3JlLgogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKQEAgLTM1Miw3ICszNjQs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJl
ZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5kaWRFbnRlclZTeW5jKCk7CiAgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMpOwogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMoKTsKLSAgICBz
dGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgc3RhdGUu
dXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKIAogICAgIC8vIFZlcmlmeSB3ZSBj
b21taXQgcmVnYXJkbGVzcyBvZiB2c3luYyBzdGF0ZQogICAgIHN0YXRlLmRpZExlYXZlVlN5bmMo
KTsKQEAgLTM3MCw3ICszODIsMTEgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3Qs
IFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUuCiAg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoc3RhdGUubmV4dEFj
dGlvbigpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKworICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UgdGhh
dCBuZWVkIHVwZGF0ZS4KKyAgICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQ
REFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAKICAgICAvLyBOb3csIHdo
aWxlIHRoZSBmcmFtZSBpcyBpbiBwcm9ncmVzcywgc2V0IGFub3RoZXIgY29tbWl0LgogICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwpAQCAtMzgyLDcgKzM5OCw3IEBAIFRFU1QoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExvc3QpCiAgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01P
UkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNl
c0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAKICAgICAvLyBFeHBl
Y3QgdG8gY29tbWl0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMgc3RhdGUuCkBAIC00MTMsMTAgKzQyOSwx
NCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZSkKIAog
ICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CiAgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKIAor
ICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3RhdGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVu
ZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworCiAgICAg
Ly8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdp
bkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwpA
QCAtNDI0LDcgKzQ0NCw3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0
RnVsbEN5Y2xlKQogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4g
YW5kIGZpbmlzaGVkCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2lu
VXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3Jl
UmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUo
KSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlU
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC00NTksNyArNDc5LDcgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGVXaXRoQ29tbWl0UmVxdWVzdEluYmV0
d2VlbikKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KICAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVT
Uywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0
ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKIApAQCAtNDY3LDYgKzQ4NywxMCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogICAgIHN0YXRl
LnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKKyAgICAvLyBSZWNlaXZl
IHJlc291cmNlLgorICAgIHN0YXRlLnNldFJlc291cmNlVXBkYXRlc1BlbmRpbmcodHJ1ZSk7Cisg
ICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJ
TkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKwogICAgIC8vIFRlbGwgdGhlIHNj
aGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVf
VVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKQEAgLTQ3NCw3ICs0OTgs
NyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhD
b21taXRSZXF1ZXN0SW5iZXR3ZWVuKQogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1
cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0
ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCkBAIC01MTYsMTMgKzU0MCwxNyBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRD
b21taXQpCiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUgd2hpbGUgdmlzaWJsZS4KICAgICBzdGF0
ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
KTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9G
UkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQo
KSk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIEJlY29tZSBpbnZpc2libGUKICAgICBzdGF0
ZS5zZXRWaXNpYmxlKGZhbHNlKTsKIAorICAgIC8vIFJlY2VpdmUgcmVzb3VyY2UuCisgICAgc3Rh
dGUuc2V0UmVzb3VyY2VVcGRhdGVzUGVuZGluZyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0YXRl
LmNvbW1pdFN0YXRlKCkpOworCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBm
aW5pc2hlZAogICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CkBAIC01MzAsNyArNTU4LDcgQEAgVEVTVChDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogCiAgICAgLy8g
VGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkCiAgICAgc3Rh
dGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGZhbHNlKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFs
c2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX0VRKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogCkBAIC01NTAsNCArNTc4LDY1IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0R29lc0ludmlzaWJsZU1pZENvbW1pdCkKICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCitURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5vUmVzb3VyY2VVcGRhdGVzKQorewor
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0ZS5zZXRWaXNpYmxlKHRydWUpOworCisg
ICAgLy8gU3RhcnQgY2xlYW4gYW5kIHNldCBjb21taXQuCisgICAgc3RhdGUuc2V0TmVlZHNDb21t
aXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiB0aGUgZnJh
bWUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9GUkFNRSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJhbWUgZmluaXNoZWQuCisgICAgc3RhdGUu
YmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0
YXRlLm5leHRBY3Rpb24oKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0
LCBUZXN0Tm9SZXNvdXJjZVBlbmRpbmcpCit7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAg
IHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNv
bW1pdC4KKyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlv
bigpKTsKKworICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc0Nv
bW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gUmVjZWl2ZSByZXNvdXJjZS4KKyAg
ICBzdGF0ZS5zZXRSZXNvdXJjZVVwZGF0ZXNQZW5kaW5nKHRydWUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVw
ZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5H
X1JFU09VUkNFUywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBz
dGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7CisKKyAgICAvLyBUZWxsIHRo
ZSBzY2hlZHVsZXIgYW5vdGhlciB1cGRhdGUgYmVnYW4gYW5kIGZpbmlzaGVkLgorICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUo
ZmFsc2UpOworCisgICAgLy8gTm8gcGVuZGluZyByZXNvdXJjZXMgdG8gdXBkYXRlLgorICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZpbmlzaGVk
LgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggYjU4ZWQyYzU2YzI4
ZGY3ODVjYzljMTE2OWQ2NzAxY2M3MGRmZmJkNi4uZjMyYjBiNTA2NDFmMWI0NjM0NTU0YzRiNzFj
ZjNlN2E1NmRjNDlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1NjaGVkdWxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NT
Y2hlZHVsZXJUZXN0LmNwcApAQCAtNzYsMTIgKzc2LDEwIEBAIFRFU1QoQ0NTY2hlZHVsZXJUZXN0
LCBSZXF1ZXN0Q29tbWl0KQogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gU2luY2UsIGhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMgc2V0IHRvIGZhbHNlLAotICAgIC8vIGJlZ2luRnJhbWVD
b21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJlc291cmNlcywgdGhlbgotICAgIC8vIGNvbW1pdAor
ICAgIC8vIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgY29tbWl0IGltbWVkaWF0ZWx5LgogICAg
IHNjaGVkdWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VRKDIsIGNsaWVu
dC5udW1BY3Rpb25zKCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcyIsIGNsaWVudC5hY3Rpb24oMCkpOwotICAgIEVYUEVDVF9TVFJFUSgic2No
ZWR1bGVkQWN0aW9uQ29tbWl0IiwgY2xpZW50LmFjdGlvbigxKSk7CisgICAgRVhQRUNUX0VRKDEs
IGNsaWVudC5udW1BY3Rpb25zKCkpOworICAgIEVYUEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9u
Q29tbWl0IiwgY2xpZW50LmFjdGlvbigwKSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiAKICAgICAv
LyBUaWNrIHNob3VsZCBkcmF3LgpAQCAtMTEyLDEyICsxMTAsMTAgQEAgVEVTVChDQ1NjaGVkdWxl
clRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAgICAgc2NoZWR1bGVyLT5zZXRO
ZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gU2luY2UsIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMgaXMg
c2V0IHRvIGZhbHNlLCBhbmQgYW5vdGhlciBjb21taXQgaXMKLSAgICAvLyBuZWVkZWQsIGJlZ2lu
RnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJlc291cmNlcywgdGhlbiBjb21taXQsIHRo
ZW4KLSAgICAvLyBiZWdpbiBhbm90aGVyIGZyYW1lLgorICAgIC8vIG5lZWRlZCwgYmVnaW5GcmFt
ZUNvbXBsZXRlIHNob3VsZCBjb21taXQsIHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBz
Y2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgyLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1v
cmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0aW9uKDApKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVk
dWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5hY3Rpb24oMSkpOworICAgIEVYUEVDVF9FUSgxLCBj
bGllbnQubnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNv
bW1pdCIsIGNsaWVudC5hY3Rpb24oMCkpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8g
VGljayBzaG91bGQgZHJhdyBidXQgdGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgpAQCAtMjMzLDQg
KzIyOSw1MiBAQCBURVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEluc2lkZURyYXcp
CiAgICAgRVhQRUNUX0ZBTFNFKHNjaGVkdWxlci0+cmVkcmF3UGVuZGluZygpKTsKIH0KIAorVEVT
VChDQ1NjaGVkdWxlclRlc3QsIFVwZGF0ZVJlc291cmNlcykKK3sKKyAgICBGYWtlQ0NTY2hlZHVs
ZXJDbGllbnQgY2xpZW50OworICAgIFJlZlB0cjxGYWtlQ0NUaW1lU291cmNlPiB0aW1lU291cmNl
ID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbWVTb3VyY2UoKSk7CisgICAgT3duUHRyPENDU2NoZWR1
bGVyPiBzY2hlZHVsZXIgPSBDQ1NjaGVkdWxlcjo6Y3JlYXRlKCZjbGllbnQsIGFkb3B0UHRyKG5l
dyBDQ0ZyYW1lUmF0ZUNvbnRyb2xsZXIodGltZVNvdXJjZSkpKTsKKyAgICBzY2hlZHVsZXItPnNl
dFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTZXROZWVkc0NvbW1pdCBzaG91bGQgYmVnaW4gdGhl
IGZyYW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKyAgICBFWFBFQ1RfRVEo
MSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rp
b25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisK
KyAgICAvLyBOb3cgc2V0TmVlZHNDb21taXQgYWdhaW4uIENhbGxpbmcgaGVyZSBtZWFucyB3ZSBu
ZWVkIGEgc2Vjb25kIGZyYW1lLgorICAgIHNjaGVkdWxlci0+c2V0TmVlZHNDb21taXQoKTsKKwor
ICAgIC8vIFVwZGF0ZSBwZW5kaW5nIHJlc291cmNlcy4KKyAgICBjbGllbnQuc2V0SGFzTW9yZVJl
c291cmNlVXBkYXRlcyh0cnVlKTsKKyAgICBzY2hlZHVsZXItPnNldFJlc291cmNlVXBkYXRlc1Bl
bmRpbmcoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQ
RUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xpZW50LmFj
dGlvbigwKSk7CisgICAgY2xpZW50LnJlc2V0KCk7CisKKyAgICAvLyBDbGllbnQgZmluaXNoZWQg
dXBkYXRlIGJ1dCBoYXZlIG5vdCB5ZXQgdG9sZCBzY2hlZHVsZXIuCisgICAgY2xpZW50LnNldEhh
c01vcmVSZXNvdXJjZVVwZGF0ZXMoZmFsc2UpOworCisgICAgLy8gYmVnaW5GcmFtZUNvbXBsZXRl
IHNob3VsZCBub3QgY29tbWl0LCBhcyBhbiB1cGRhdGUgaXMgcGVuZGluZy4KKyAgICBzY2hlZHVs
ZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgwLCBjbGllbnQubnVtQWN0
aW9ucygpKTsKKyAgICBjbGllbnQucmVzZXQoKTsKKworICAgIC8vIFNpbmNlLCBoYXNNb3JlUmVz
b3VyY2VVcGRhdGVzIGlzIHNldCB0byBmYWxzZSwgYW5kIGFub3RoZXIgY29tbWl0IGlzCisgICAg
Ly8gbmVlZGVkLCB1cGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoKSBzaG91bGQgY29tbWl0LCB0
aGVuIGJlZ2luCisgICAgLy8gYW5vdGhlciBmcmFtZS4KKyAgICBzY2hlZHVsZXItPnVwZGF0ZU1v
cmVSZXNvdXJjZXNDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubnVtQWN0aW9u
cygpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5h
Y3Rpb24oMCkpOworICAgIGNsaWVudC5yZXNldCgpOworCisgICAgLy8gVGljayBzaG91bGQgZHJh
dyBidXQgdGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgorICAgIHRpbWVTb3VyY2UtPnRpY2soKTsK
KyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIsIGNsaWVudC5hY3Rpb24oMCkpOworICAgIEVY
UEVDVF9TVFJFUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNsaWVudC5hY3Rpb24oMSkp
OworICAgIGNsaWVudC5yZXNldCgpOworfQorCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDYzYWE0
NTZhZDhkOGNjYjNmZTA0ZmFmYzE2MjBiZjBmMjRlNjdmNDMuLjkzY2ZiNTc4ODNhNWYxNTQwYjRj
Yzk4ZWE1ODNhOTkxNmIxNmU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsOSArMjcsOSBAQAog
I2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CiAKQEAgLTM4LDIwICszOCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3Bh
Y2UgewogCi1jbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2Nh
dG9yIHsKK2NsYXNzIEZha2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25z
dCBJbnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlVGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogfTsKIAogY2xhc3MgRmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQotICAgICAgICB2
aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIH07CiAKICAgICBGYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNjAsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUo
VGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1h
bmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSB7IHJldHVybiBCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJl
dHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRT
aXplJiwgaW50LCBmbG9hdCkgeyB9CiB9OwogCiBjbGFzcyBGYWtlQ0NUaWxlZExheWVySW1wbCA6
IHB1YmxpYyBDQ1RpbGVkTGF5ZXJJbXBsIHsKQEAgLTk4LDYgKzEwMSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QpOwogICAgIH0K
IAorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHsKKyAg
ICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKHJlY3QpOworICAgIH0KKwog
ICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQogCiBwcml2YXRlOgpAQCAtMTE5LDEzICsxMjcsMTMgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXll
ckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7
CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIg
aGFuZGxlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZh
bGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRl
UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhh
bmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
ICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0x
MzgsNyArMTQ2LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxl
cykKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
ICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKLSAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250
ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3Np
dG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUg
c2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118442</attachid>
            <date>2011-12-08 12:12:34 -0800</date>
            <delta_ts>2011-12-09 10:18:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111208151232.patch</filename>
            <type>text/plain</type>
            <size>124010</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY4ODkzNGJhNjZiMWEx
MTA1MDJkZDI4OWQ2NDZhZDhiNWNmZTk2Yi4uMzRmOGRhYzAwZjZhYjA5ZmNiYTI2NjVlNzZjYWZi
YTBmOTczYWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MCBAQAorMjAxMS0xMi0wOCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMgYmVlbgor
ICAgICAgICBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorCisgICAgICAg
IFNwbGl0IGxheWVyIHVwZGF0ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMg
dHJhbnNmb3JtcworICAgICAgICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFp
bnRzIGxheWVyIGNvbnRlbnRzLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEg
Y29tcG9zaXRvciByZXNvdXJjZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2li
bGUgbGF5ZXIgYXJlYXMgaGF2ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5n
CisgICAgICAgIGhhcyBvY2N1cnJlZC4gTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyBpcyByZXBsYWNlZAorICAgICAgICBieSBMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlIHdoaWNoIGFsbG93cyB1cyB0byBpdGVyYXRlCisgICAgICAgIG92ZXIg
Y29tcG9zaXRvciByZXNvdXJjZXMgZm9yIHZhcmlvdXMgcHVycG9zZXMuCisKKyAgICAgICAgQWRk
IG5ldyB1bml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6flRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9t
aXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
Ojp+SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVy
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjpkYXRhUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5
ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1
cmVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZl
VGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnNldFZpc2libGVTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OnZpc2libGVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VI
YW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJj
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVz
b3VyY2VIYW5kbGVyOjp+UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFp
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5k
bGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
VG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBv
c2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRWaXNpYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6cmVzb3VyY2VzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpwcmVw
YXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNv
bW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oOgorCiAyMDExLTEyLTA4ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBQcm92aWRlIG1vcmUgc3BlY2lmaWMgZXJyb3IgZGVzY3JpcHRp
b24gZm9yIFNvY2tldFN0cmVhbUVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1
NjliYmI4NzZhZjJjMjhmNGI2YzA4ZDZiNWQ5MTBjZTY1NjdkZGRkLi5hNzVhODViNGIyNTAwZWNm
YWI4NWUyYTA2NTY1YzIxNjkwMjdmNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY4IEBACisyMDExLTEyLTA4ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVcGxvYWQgdGV4dHVyZXMgaW4gcGFyYWxsZWwg
d2l0aCBwYWludGluZyBjb250ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IHRlc3Qu
IFRyYWNrIGNoYW5nZXMgdG8gdGV4dHVyZQorICAgICAgICB1cGxvYWRzLgorCisgICAgICAgICog
cHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKToK
KyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
dHRpbmdzSW1wbDo6ZGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHA6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChX
VEY6Ok1vY2tMYXllckRlbGVnYXRlOjpwcmVzZXJ2ZXMzRCk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllckRlbGVnYXRlOjpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAgICAgICAoV1RGOjpDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJl
UmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnBhaW50Q29udGVudHNSZWN0KToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXll
clRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmxheWVyKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcik6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVh
dGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWlu
dENvbnRlbnRzQ291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRz
UmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjpwYWludENvbnRlbnRzUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdENvdW50KToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6Om5l
ZWRQcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRl
c3RPcGFjaXR5Q2hhbmdlOjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhv
c3RUZXN0Tm9QcmVwYXJlUmVjdDo6Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6YmVnaW5UZXN0
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OmNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RO
b1ByZXBhcmVSZWN0OjphZnRlclRlc3QpOgorICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtl
SGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6VEVTVCk6CisKIDIwMTEtMTIt
MDcgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gQWRkIHBhZ2Utc2NhbGUgYW5pbWF0aW9uIHN1cHBvcnQgdG8gSW1wbCB0aHJlYWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5k
ZXggZGQ5MzE5MTNmNzA5Nzc2MjYzNWZlNjQxOWQzODc1MWFmZjg2MTc5ZC4uMDc5MDVjMTg5NzA3
NDgwNGI1NWQ4MTA2NWUwZTZlMGEzOTk2NTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
ciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0
ZXIpCiB7CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7
Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2Nh
dG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVy
ZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCks
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhT
dWJJbWFnZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAg
ICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewog
ICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUg
KzkwLDEzIEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRv
VXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBh
aW50ZXI6OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBs
YXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBh
aW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQ
YWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFz
UGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWlu
dCgqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsK
IH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNp
Z25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52
YXMpOwotCi0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAg
ICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90
ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CmluZGV4IDk3NTUyMmNiYWFhMzQxNDc1ODU2ZGI2Y2JlZGEzMTJjMTQ5ZDg3YmEuLjJlOTFkYmEw
NGUzMGQ4MTAyMTZjNjY2OThmZmE5Y2VkZmY0YTY4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFz
cyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3
aXRoIGFuIGludGVybmFsIGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAg
Y2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFs
IH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQpAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFn
ZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2Ft
cGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQg
Y29udGVudHNTY2FsZSk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZv
aWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAog
cHJpdmF0ZToKICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKaW5kZXggODIyMWRkMmU1MjFiZDYzZmUwZTZmMGY5ZDYyMjRlMzhkZmIzNDI5OC4u
ZGYwMGU0YTllYWVlOTQ5NWY2NWEwYTZkN2E1NjYxMWNhNjk4ZWJkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBTa1BpY3R1cmVDYW52YXMKIHsKIH0KIAot
dm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpw
cmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRlbnRzUmVjdChj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4
dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHNvdXJjZVJlY3Quc2l6ZSgpLCB0ZXh0dXJlKCkt
PmZvcm1hdCgpKTsKICAgICBtX3BpeGVsRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3Rb
YnVmZmVyU2l6ZV0pOwpAQCAtNTEsOSArNTEsMTAgQEAgdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChjb25zdCBJbnRSZWMK
ICAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzUmVjdChjYW52YXMuZ2V0KCksIHNv
dXJjZVJlY3QpOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBB
U1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwog
ICAgIEFTU0VSVChtX3BpeGVsRGF0YS5nZXQoKSk7CiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3QsIG1f
cGl4ZWxEYXRhLmdldCgpKTsKICAgICBtX3BpeGVsRGF0YS5jbGVhcigpOwpAQCAtODYsMTAgKzg3
LDEwIEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAgICBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250
ZW50c1NjYWxlKQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXpl
JiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAg
ICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0
aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKKyAgICBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnRlbnRSZWN0LCB0aWxlU2l6
ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyog
Y2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGMz
MGYzMDc1NTViZDM3MjFiMTE0ZmZiOGI3YjBkNmM4NmQ1ZjQ0MmIuLmVjN2FjNmM5MjY0ZDkyNTEw
YTJhNWY5ZDA4ZDIwZjE2ZGU3NDk0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDggKzQyLDgg
QEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3Qo
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBt
X3RleHR1cmVVcGRhdGVyOyB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShU
ZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7
IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4
ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGlu
dCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwogICAgIHZvaWQgcGFpbnRDb250
ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKICAgICB2b2lk
IHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYjBjNGUwNzM5NDZiYTVlNTFlM2Rj
NmEyNTM3MzZhMGVjYTM4Y2FjYy4uZTA0ZjE4ZDAwNjJmN2U0YTY5Mzg0YmI4NGExMDM5MjAzZjNm
ZTBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0
NCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5
ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitDYW52YXMyRExheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBk
ZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7
Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0KSk7CkBAIC01Miw2ICs2
Niw3IEBAIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzCiBDYW52YXMyRExheWVyQ2hyb21pdW06OkNh
bnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IENh
bnZhc0xheWVyQ2hyb21pdW0oMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91
cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMpKQogewogfQogCkBAIC02
NSw3ICs4MCw3IEBAIGJvb2wgQ2FudmFzMkRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBj
b25zdAogICAgICAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSk7CiB9
CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7CiAgICAgaWYgKCFtX25l
ZWRzRGlzcGxheSB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg1LDYg
KzEwMCwxMSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dAogICAgIG1fbmVlZHNEaXNwbGF5ID0g
ZmFsc2U7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAg
aGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0
KCkpOworfQorCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y29udGVudENoYW5nZWQoKQog
ewogICAgIGlmIChsYXllclRyZWVIb3N0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1
bS5oCmluZGV4IDQ1N2JkNTY0ZDc3OGRhYjk0YWM5OTExM2Y4MWViZmU3NWRlZmRkNGYuLmU4NmE2
MWE0ZWVlNDUyMGFiYTY4NmM0MTkzYTZmNzhmMGZjNTBmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5oCkBAIC00MywxNiArNDMsMzYgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFz
cyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxV
cGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5
ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVyQ2hy
b21pdW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAg
fTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNocm9taXVt
KCk7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0
dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworICAg
IHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OkhhbmRsZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IENhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRl
eHQzRCopOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisKKyAgICBPd25QdHI8
VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDVmYTY3ODU0YzZiZDdmNTM4MmI1
MmIwZWVmYmExMDMxNjZmYzA4ZmUuLmM2MWVjMzNkNjdlNjUzNzEyZDJiOTIxMTNmYjc5YmFiZjgz
OWI1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBA
IC0zNiw2ICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4g
dGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKworQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCitib29sIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAgcmV0dXJuICFt
X3RleHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8s
IGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fdGV4dHVyZS0+YWxsb2Nh
dGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpAQCAtNDUsNyAr
NjMsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50
UmVjdC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBhOGZlZmYzNDIyYjFiODUzMGI4ZjY4OWZmMmM1NjY3
NjYwYmVkNWNmLi44ODZkMTAxMmQ4ZTUzMjc5Y2U3NGU1MWExMDM0OWRiODFhODlmZTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzksMTIgKzQwLDI4IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVt
OwogLy8gQSBMYXllclRleHR1cmVVcGRhdGVyIHdpdGggYW4gaW50ZXJuYWwgY2FudmFzLgogY2xh
c3MgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
IHsKIHB1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwor
CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3Rl
eHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJ
bnRSZWN0JiAvKiBkZXN0UmVjdCAqLyk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGV4cGxp
Y2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgfTsKKwogICAg
IHZpcnR1YWwgfkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKTsKIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4pOwogCi0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBm
bG9hdCBjb250ZW50c1NjYWxlKTsKICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudFJlY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcAppbmRleCAyYTI0NjZkOTEyOWFlYzM2NDA5MzIyOWNiOTM1YWY4
MmQ1MDcyNGI2Li5kZDc0OTY3N2NiNzEyZDA0ZjdkZTIwNTExMDMyY2U3NzM1OTI5ZDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09w
dGlvbigpOwogCkBAIC0xMDksNiArMTA5LDIwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQog
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7Cisg
ICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiBib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RlbGVnYXRl
ICYmIG1fZGVsZWdhdGUtPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJh
d3NDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBiODM0ZTY3
NmJkNjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBmMzgwOWMxLi5jNWU5ZmNjZWJmNDc2ZWI3ZDAyYmM5
ODIyMTcwYjY2NTNhNTEzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAg
LTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21p
dW0oKTsKIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGYyZDdlMmRkZGFhNmZkOTlmYmU2MDNjM2I4ZTM3
M2U5OThhMzM4MzUuLjllZWZiNDZiNWU1MjRmN2VlMjM1OTgzNzg1MDViNGYyZTRhMjllYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgRnJhbWVCdWZmZXIoKTsKICAgICB+RnJhbWVCdWZmZXIoKTsKIAotICAgIFNrQ2FudmFzKiBp
bml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRU
ZXh0dXJlKik7CisgICAgU2tDYW52YXMqIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqLCBN
YW5hZ2VkVGV4dHVyZSopOwogCiBwcml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2Nv
bnRleHQ7CkBAIC02NiwxMiArNjYsMTIgQEAgRnJhbWVCdWZmZXI6On5GcmFtZUJ1ZmZlcigpCiAg
ICAgICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pOwogfQogCi1Ta0NhbnZh
cyogRnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCitTa0Nh
bnZhcyogRnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQogewogICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CiAg
ICAgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgbV9jb250ZXh0
LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7
Ci0gICAgdGV4dHVyZS0+ZnJhbWVidWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LCBhbGxvY2F0b3Ip
OworICAgIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS0+dGV4dHVyZUlkKCksIDApOwogCiAgICAg
Ly8gQ3JlYXRlIGEgc2tpYSBncHUgY2FudmFzLgogICAgIEdyQ29udGV4dCogZ3JDb250ZXh0ID0g
bV9jb250ZXh0LT5nckNvbnRleHQoKTsKQEAgLTk2LDcgKzk2LDcgQEAgU2tDYW52YXMqIEZyYW1l
QnVmZmVyOjppbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKgogfSAvLyBuYW1lc3BhY2UKIAogRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRl
eHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUp
CiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtMTA1LDkg
KzEwNSwyMyBAQCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKKyAgICAvLyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQu
CisgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgLy8gTm90aWZ5IFNLSUEg
dG8gc3luYyBpdHMgaW50ZXJuYWwgR0wgc3RhdGUuCisgICAgY29udGV4dC0+Z3JDb250ZXh0KCkt
PnJlc2V0Q29udGV4dCgpOworCisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwor
CisgICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgorICAgIEZy
YW1lQnVmZmVyIGJ1ZmZlcjsKKyAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmluaXRpYWxp
emUoY29udGV4dCwgdGV4dHVyZSgpKTsKKworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIGNhbnZhcywgc291cmNlUmVjdCwgZGVzdFJlY3QpOworCisgICAg
Ly8gRmx1c2ggU0tJQSBjb250ZXh0IHNvIHRoYXQgYWxsIHRoZSByZW5kZXJlZCBzdHVmZiBhcHBl
YXJzIG9uIHRoZSB0ZXh0dXJlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5mbHVzaCgpOwog
fQogCiBQYXNzUmVmUHRyPEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcj4gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKQEAgLTEzNSwyNiAr
MTQ5LDE0IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQogewotICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNvcnJlY3Qg
R0wgY29udGV4dC4KLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICAvLyBO
b3RpZnkgU0tJQSB0byBzeW5jIGl0cyBpbnRlcm5hbCBHTCBzdGF0ZS4KLSAgICBjb250ZXh0LT5n
ckNvbnRleHQoKS0+cmVzZXRDb250ZXh0KCk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0
ZWQgY2FudmFzIHRvIGRyYXcgb24uCi0gICAgRnJhbWVCdWZmZXIgYnVmZmVyOwotICAgIFNrQ2Fu
dmFzKiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1
cmUpOwotCiAgICAgY2FudmFzLT5jbGlwUmVjdChTa1JlY3QoZGVzdFJlY3QpKTsKICAgICAvLyBU
cmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIGRlc3RSZWN0Lgog
ICAgIC8vIE5vdGUgdGhhdCBkZXN0UmVjdCBpcyBkZWZpbmVkIHJlbGF0aXZlIHRvIHNvdXJjZVJl
Y3QuCiAgICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3VyY2VSZWN0
LngoKSArIGRlc3RSZWN0LngoKSwKICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgp
LnkoKSAtIHNvdXJjZVJlY3QueSgpICsgZGVzdFJlY3QueSgpKTsKICAgICBkcmF3UGljdHVyZShj
YW52YXMpOwotCi0gICAgLy8gRmx1c2ggU0tJQSBjb250ZXh0IHNvIHRoYXQgYWxsIHRoZSByZW5k
ZXJlZCBzdHVmZiBhcHBlYXJzIG9uIHRoZSB0ZXh0dXJlLgotICAgIGNvbnRleHQtPmdyQ29udGV4
dCgpLT5mbHVzaCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCmluZGV4IDA2YjYyZDE5OTliNTYyMzUwNDFjYzBkYmIyMjI0OTEwNTFmOTU5ZWIu
LmE4ZmY4NWZmNWJiZTQ3OGEyZDU4NWRmYTY3NWNlZDM4Y2EwNDk0MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC0zMiwxNiArMzIsMTggQEAKIAogI2luY2x1ZGUgIlNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewog
cHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01NSw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1
YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVy
OjpUb3BEb3duT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBz
YW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5h
Z2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
U2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDRmYjk1NzRkNDhlZTAwMjg3Mjhl
OTIyZTE0ZTMxNjcwOWE2MDRkZGEuLjFlMzNjNmQyNjk3YmYwMTAyMDZkZTQxMzgzMTMzMTcyZDY5
ZmMzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNDksMTkgKzQ5LDM0
IEBAIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0
ZXh0dXJlKQotICAgICAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCisgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAgLCBtX3Rl
eHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1f
dGV4dHVyZS0+dGV4dHVyZUlkKCk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4dHVy
ZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0
dXJlSWQoKSk7CisgICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVj
dChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
ciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CiAKKyAgICAg
ICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgICAgIEltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCkBAIC04NSwxNSArMTAw
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0QkdSQTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJv
cmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRl
bnRzU2NhbGUgKi8pCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6
ZSh0aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewotICAgICAgICB0
ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCiAgICAgICAgIC8vIFNv
dXJjZSByZWN0IHNob3VsZCBuZXZlciBnbyBvdXRzaWRlIHRoZSBpbWFnZSBwaXhlbHMsIGV2ZW4g
aWYgdGhpcwogICAgICAgICAvLyBpcyByZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4dHVyZSBleHRl
bmRzIG91dHNpZGUgdGhlIGltYWdlLgogICAgICAgICBJbnRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0
ID0gc291cmNlUmVjdDsKQEAgLTEwMyw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBw
ZWREZXN0UmVjdC5tb3ZlKGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VSZWN0
LmxvY2F0aW9uKCkpOwogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVkU291
cmNlUmVjdC5zaXplKCkpOwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2Uu
cGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0
LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgICAgIG1fdGV4U3ViSW1hZ2UudXBs
b2FkKG1faW1hZ2UucGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xp
cHBlZERlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgdXBkYXRl
RnJvbUltYWdlKE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKQpAQCAtMTY2LDcgKzE3OSw3IEBA
IHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAg
ICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CiAgICAgICAgIG1fdGV4
dHVyZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggNWZlNGYyNjY2
OGJkY2MzZTI5ZjA0Y2ZmY2RhODgyYTczYzMxZTMyNy4uZjZlYmM4YTdlOGI5MDczMThjZjUyMDZj
NGZiNGU4N2ZhZWExZTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KCk7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDVlMDVjMTU3Yzc5NWNlMWUwNjRkZjJkZjk2NDQwN2FkYmZlNTUwYjAuLmZkMDQzZjA5NWQx
YTYwMjNmNWQ2NmRiOGU4NzdkYzNmNzQ3YzU0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM2
LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUg
IlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAtNTMsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwotY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBD
Q0xheWVyRGVsZWdhdGUgewpAQCAtMTYwLDggKzE2MCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBj
bGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4
dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYmY3NWNmMjlhODllMzg5ZTI3Njc3YjEx
OTIwNmVmMjlhNGUzMDE0Ni4uMjI2YmMyMTgxZDMxNjQ4MGRiOTkwYzYzMDgyZDU1ODg5YWM3YjE4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMjksNyArMjksNiBAQAogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1
cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC0zOCw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFzcyBN
YW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlTWFu
YWdlcjsKIApAQCAtNDgsMTQgKzQ4LDIzIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9
IDA7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAg
ICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gMDsgfQogCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAg
ICAgIC8vIHByZXBhcmVSZWN0KCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGlzIHJldHVybnMg
dHJ1ZS4KKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBzeW5jaHJvbm91c2x5IG9uIHRoZSBpbXBsIHRo
cmVhZCB3aXRoIHNhZmUgYWNjZXNzIHRvIG1haW4gdGhyZWFkIHJlc291cmNlcy4KKyAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8q
IGRlc3RSZWN0ICovKSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIG9uIHRoZSBtYWluIHRocmVh
ZCBhZnRlciBjYWxscyB0byBuZWVkUHJlcGFyZVJlY3QoKSBhbmQgcHJlcGFyZVJlY3QoKSBidXQg
YmVmb3JlIHVwZGF0ZVJlY3QoKS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNS
ZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQorICAgICAgICAvLyBUaGlz
IHJ1bnMgYXN5bmNocm9ub3VzbHkgb24gdGhlIGltcGwgdGhyZWFkLiBBY2Nlc3MgdG8gbWFpbiB0
aHJlYWQgcmVzb3VyY2VzIGlzIHVuc2FmZS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgPSAwOworICAgIH07CisKKyAgICBjbGFzcyBIYW5kbGVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkhhbmRsZXIoKSB7IH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIH07CiAK
ICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC03OCw3ICs4Nyw3IEBA
IHB1YmxpYzoKICAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRl
ciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9y
bWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBT
YW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3Jt
YXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8q
IGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8s
IGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBm
bG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAppbmRleCBjYmRmZTAzYzJjNTQ0M2JjZWFmNDNjYTZh
ZjAyYTczYzU3MWQwMzMzLi5lZTE4MDI1ZmFhMWRlNWIwZjA2MjUwMzE3ZDg4OWRhOGQ2OWFkN2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9N
YW5hZ2VkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCkBAIC04MCwxMSArODAsMTYgQEAgdm9pZCBNYW5h
Z2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RU
ZXh0dXJlKG1fdG9rZW4pOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQor
dm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKG1fdGV4
dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOwogICAgIGlmICghbV90ZXh0dXJlSWQp
CiAgICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVUZXh0dXJl
KGFsbG9jYXRvciwgbV90b2tlbik7Cit9CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCit7CisgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAgICAgY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVy
ZUlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggNGQ0MzgwOTU5NTM0MGY1ZDczM2Q1
Njc5MjkxYTkyMDY0YzdiMWFlNS4uZDczYzg3NDJkNzg0MGUyMjkwMTRlMDFhZmVkMjU2NmQ3Yzk5
YmMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTWFuYWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAg
IH0KIAorICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciopOwogICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmNwcAppbmRleCBlM2M1YzQ4Zjc5MjBmZWVjNzA4ZTRkYWM3YWVmNjRlMjNlOGFhZjAw
Li42MDMyNjhhNjJlM2YyZDA0NzA5YjZjZGI2MjlkYWJlYzM3NmZjYmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBQbHVnaW5MYXllckNocm9t
aXVtOjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiB9
CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3Zv
aWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAg
aWYgKCFtX25lZWRzRGlzcGxheSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDI3N2E5NjljNThjYzNmNTgzNDU4N2UwNzc4ZmZkMWM2Mjc3ZDY2ZjYu
LjE2ZjNmYzFiM2NlODI1NDJmZGY0MDcwNmRhNjA4ODcyOTM1YzNlNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgUGx1Z2luTGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRl
Q0NMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1MzdlMTM3ZThkOGVjNTE4YjkzNGFhNWNkMmQ3
MDBjNzRiMTlmZTRiLi41NWExZGI4ZmI2MDNlNmQwNDkwMmFhY2ZjZmZmODcwOWU4OTVlYjRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9p
ZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBp
bnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRl
clRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBTa0NhbnZhcyogY2FudmFz
ID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRS
ZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChj
YW52YXMpOwogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBHcmFw
aGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwotICAgIHBhaW50
Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7Cisg
ICAgcGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAg
ICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNDQwZjhiMDNlYTRmMjcz
OWE5NzU0Mzg2N2FjN2ViMTU0MDMwZDBjMi4uYWVmYmZjM2Y2YTRhMmEzYWE3MWE1YjFmYjQzZWRl
YWYxY2JmNmRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKICAgICB2
b2lkIGRyYXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcAppbmRleCA1YzU1ZjU5YmYzZTczNzJmZTllYzUxMmVmNjM2MTEwMWFjNWEw
NWU1Li4yYTY4MTU4MmIzNjVmNGM0YWVhZDFmMjNiZWY2Y2Q5MTZjYTc0N2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE3MiwxNCArMTcyLDE0IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpjcmVhdGVUaWxlcihDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxP
cHRpb24gYm9yZGVyCiAgICAgbV90aWxlciA9IENDTGF5ZXJUaWxpbmdEYXRhOjpjcmVhdGUobV90
aWxlU2l6ZSwgYm9yZGVyVGV4ZWxPcHRpb24pOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVy
ZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewog
ICAgIC8vIElmIHRoaXMgYXNzZXJ0IGlzIGhpdCwgaXQgbWVhbnMgdGhhdCBwYWludENvbnRlbnRz
SWZEaXJ0eSBoYXNuJ3QgYmVlbgogICAgIC8vIGNhbGxlZCBvbiB0aGlzIGxheWVyLiBBbnkgbGF5
ZXIgdGhhdCBpcyB1cGRhdGVkIHNob3VsZCBiZSBwYWludGVkIGZpcnN0LgogICAgIEFTU0VSVCht
X3RpbGVyKTsKIAogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRvIGdl
dCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZhbGlk
YXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0
ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQorICAg
IGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFt
X3RpbGVyIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAg
LTIxOSwxMSArMjE5LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlm
IChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdo
dCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBw
ZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAg
aGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAg
ICAgICAgIH0KICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+
Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwogfQogCiB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRpb24pCkBA
IC0zOTksMTUgKzM5Nyw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0
ID0gY29udGVudFJlY3Q7CiAKICAgICBtX3BhaW50UmVjdCA9IG1fdGlsZXItPmxheWVyUmVjdFRv
Q29udGVudFJlY3QoZGlydHlMYXllclJlY3QpOwotICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0Vt
cHR5KCkpCisgICAgaWYgKG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBw
YWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5n
IGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1
cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUg
bWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNo
ZXMsCi0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhl
IHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KLSAgICBSZWZQdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIHRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNp
emUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSk7CiAgICAg
bV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVkVXBkYXRlUmVjdCwg
bGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJv
dHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kp
IHsKQEAgLTQzMiwxMyArNDI0LDI1IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICB0aWxlLT5j
bGVhckRpcnR5KCk7CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJl
Y3Q7Ci0gICAgICAgICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qo
c291cmNlUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQoreworICAgIGlm
IChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3Rp
bGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50byBXZWJLaXQgdG8g
cGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGlu
ZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUg
dXBkYXRlciB0byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhl
IG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlz
aGVzLAorICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRo
ZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICB0ZXh0
dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6
ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgpKTsKKworICAg
IG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0
KG1fcGFpbnRSZWN0KSk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggMjhlN2QxZDBjNTY5Njgw
MGYzZDYyMTI0MDhkZDhkMThiY2VkYmVjMi4uZTQ3ODE4ZjY0MjA2NjE3MzE3ZmU5NWEzMzE5MTdj
NzdmODQwZWM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKik7CkBAIC03NSw4ICs3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBTZXQg
aW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgp
LgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwot
ICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJz
ZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMg
dGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29udGVudHMgbmVl
ZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0Lgor
ICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtOTMsNyAr
OTUsNyBAQCBwcml2YXRlOgogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29u
c3Q7CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBU
ZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2Vl
biBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9V
cGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEK
ICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVjOTNmMTY4ZGExNGVhNDFl
M2MxNmRmNmQ3YzQ5YmVlNDUxM2VhY2UuLjdiZWM3YzBhMTgwMDNkYzkxZTFkNGNiYWFkZGU5ZDNi
MmQ0MWZlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNDAsMTEgKzQw
LDYxIEBACiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9G
cmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OlVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisg
ICAgOiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fbWFwcGVkQnVmZmVyKDApCit7Cit9CisK
K1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7
CisgICAgQVNTRVJUKCFtX21hcHBlZEJ1ZmZlcik7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNl
UmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgSW50U2l6ZSBk
aW1lbnNpb25zID0gbV90ZXh0dXJlLT5zaXplKCk7CisKKyAgICBFeHRlbnNpb25zM0RDaHJvbWl1
bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihleHRlbnNpb25zLT5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9u
cy5oZWlnaHQoKSwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CisKKyAgICBpZiAo
IW1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVyZU1h
bmFnZXI6Om1lbW9yeVVzZUJ5dGVzKGRpbWVuc2lvbnMsIG1fdGV4dHVyZS0+Zm9ybWF0KCkpOwor
ICAgICAgICBtX2J1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IHVpbnQ4X3RbYnVmZmVyU2l6ZV0p
OworICAgIH0KKworICAgIG1fdGV4dHVyZS0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9j
YXRvcik7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6ZGF0
YVJlY3QoY29uc3Qgdm9pZCogZGF0YSkKK3sKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1
cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhtX3RleHR1cmUtPnNpemUoKSwgbV90ZXh0dXJlLT5m
b3JtYXQoKSk7CisKKyAgICBpZiAobV9tYXBwZWRCdWZmZXIpCisgICAgICAgIG1lbWNweShtX21h
cHBlZEJ1ZmZlciwgZGF0YSwgYnVmZmVyU2l6ZSk7CisgICAgZWxzZQorICAgICAgICBtZW1jcHko
bV9idWZmZXIuZ2V0KCksIGRhdGEsIGJ1ZmZlclNpemUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8q
IGRlc3RSZWN0ICovKQoreworICAgIEFTU0VSVChtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAg
ICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90
ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKSB7CisgICAgICAg
IEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9u
czNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgICAgICBHTEMoY29u
dGV4dCwgZXh0ZW5zaW9ucy0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0obV9tYXBwZWRCdWZm
ZXIpKTsKKyAgICAgICAgbV9tYXBwZWRCdWZmZXIgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAg
IEludFNpemUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgpOworICAgICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBtX3Rl
eHR1cmUtPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgbV9idWZm
ZXIuZ2V0KCkpKTsKKyAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICB9Cit9CisKIFBhc3NS
ZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7
CkBAIC01OCw2ICsxMDgsNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1
bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdgogICAgICwgbV9wcm92
aWRlcihwcm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCiAgICAgLCBtX25hdGl2ZVRleHR1cmVJ
ZCgwKQorICAgICwgbV9mcmFtZSgwKQogewogfQogCkBAIC03NSwxNyArMTI2LDE5IEBAIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsKICAgICBMYXllckNocm9t
aXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1h
eFBsYW5lczsgKytpKQotICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOwor
ICAgICAgICBtX3RleHR1cmVzW2ldLmNsZWFyKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogeworICAgIG1fZnJhbWUgPSAwOworCiAgICAgaWYgKCFt
X2RlbGVnYXRlIHx8ICFtX3Byb3ZpZGVyIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSAmJiB0ZXh0dXJlc1ZhbGlkKCkpIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKysp
IHsKLSAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS5t
X3RleHR1cmUuZ2V0KCk7CisgICAgICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4ID0gbV90ZXh0
dXJlc1twbGFuZV0tPnRleHR1cmUoKTsKICAgICAgICAgICAgIGlmICghdGV4LT5yZXNlcnZlKHRl
eC0+c2l6ZSgpLCB0ZXgtPmZvcm1hdCgpKSkgewogICAgICAgICAgICAgICAgIG1fc2tpcHNEcmF3
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyMyw4ICsxNzYsMTAgQEAgdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFs
bG9jYXRlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBhbHJl
YWR5LCBvcgotICAgIC8vIHJlYWxsb2NhdGUgdGV4dHVyZXMgdGhhdCBhcmUgdGhlIHdyb25nIHNp
emUgZm9yIHRoZSBmcmFtZS4KKyAgICBpZiAoZnJhbWUtPnBsYW5lcygpID4gTWF4UGxhbmVzKQor
ICAgICAgICBDUkFTSCgpOworCisgICAgLy8gUmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlm
IHRoZXkgYXJlIG5vdCByZXNlcnZlZCBhbHJlYWR5LgogICAgIGJvb2wgdGV4dHVyZXNSZXNlcnZl
ZCA9IHJlc2VydmVUZXh0dXJlcyhmcmFtZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgaWYgKCF0ZXh0
dXJlc1Jlc2VydmVkKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKQEAgLTEzMiwyMSAr
MTg3LDM0IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICAvLyBVcGRhdGUgdGV4dHVyZSBwbGFuZXMuCi0gICAgZm9yICh1bnNpZ25lZCBwbGFu
ZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7Ci0gICAgICAgIFRleHR1
cmUmIHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKLSAgICAgICAgQVNTRVJUKHRleHR1cmUu
bV90ZXh0dXJlKTsKLSAgICAgICAgQVNTRVJUKGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBs
YW5lKSA9PSB0ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpKTsKLSAgICAgICAgdXBkYXRlVGV4dHVy
ZShjb250ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpLCB0ZXh0dXJlLCBmcmFtZS0+ZGF0YShwbGFu
ZSkpOwotICAgIH0KLQorICAgIG1fZnJhbWUgPSBmcmFtZTsKICAgICBtX3BsYW5lcyA9IGZyYW1l
LT5wbGFuZXMoKTsKLSAgICBBU1NFUlQobV9wbGFuZXMgPD0gTWF4UGxhbmVzKTsKIAogICAgIG1f
dXBkYXRlUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJvdW5kcygpKTsKICAgICBtX25l
ZWRzRGlzcGxheSA9IGZhbHNlOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAvLyBDb3B5IHBs
YW5lcyB0byBtYXBwZWQgYnVmZmVycy4KKyAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxh
bmUgPCBtX2ZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykKKyAgICAgICAgbV90ZXh0dXJlc1twbGFu
ZV0tPmRhdGFSZWN0KG1fZnJhbWUtPmRhdGEocGxhbmUpKTsKKworICAgIG1fcHJvdmlkZXItPnB1
dEN1cnJlbnRGcmFtZShtX2ZyYW1lKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFu
ZGxlcikKK3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAo
dW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7CisgICAgICAg
IEludFJlY3QgcmVjdChJbnRQb2ludCgpLCBtX3RleHR1cmVzW3BsYW5lXS0+dmlzaWJsZVNpemUo
KSk7CisgICAgICAgIGhhbmRsZXIuaGFuZGxlKG1fdGV4dHVyZXNbcGxhbmVdLmdldCgpLCByZWN0
LCByZWN0KTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKQEAgLTE1NywxMSArMjI1LDExIEBAIHZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAg
ICB2aWRlb0xheWVyLT5zZXRTa2lwc0RyYXcobV9za2lwc0RyYXcpOwogICAgIHZpZGVvTGF5ZXIt
PnNldEZyYW1lRm9ybWF0KG1fZnJhbWVGb3JtYXQpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3BsYW5lczsgKytpKSB7Ci0gICAgICAgIGlmICghbV90ZXh0dXJlc1tpXS5tX3RleHR1
cmUpIHsKKyAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ldKSB7CiAgICAgICAgICAgICB2aWRlb0xh
eWVyLT5zZXRTa2lwc0RyYXcodHJ1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJl
LT50ZXh0dXJlSWQoKSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnNpemUoKSwgbV90ZXh0dXJl
c1tpXS5tX3Zpc2libGVTaXplKTsKKyAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCBt
X3RleHR1cmVzW2ldLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLT50ZXh0
dXJlKCktPnNpemUoKSwgbV90ZXh0dXJlc1tpXS0+dmlzaWJsZVNpemUoKSk7CiAgICAgfQogICAg
IGZvciAodW5zaWduZWQgaSA9IG1fcGxhbmVzOyBpIDwgTWF4UGxhbmVzOyArK2kpCiAgICAgICAg
IHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgMCwgSW50U2l6ZSgpLCBJbnRTaXplKCkpOwpAQCAt
MTcyLDEwICsyNDAsOCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAgICAgaWYgKGhvc3QgJiYgbGF5ZXJU
cmVlSG9zdCgpICE9IGhvc3QpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1h
eFBsYW5lczsgKytpKSB7Ci0gICAgICAgICAgICBtX3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUg
PSBJbnRTaXplKCk7Ci0gICAgICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSA9IE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKLSAgICAg
ICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpCisg
ICAgICAgICAgICBtX3RleHR1cmVzW2ldID0gVXBkYXRlclRleHR1cmU6OmNyZWF0ZShNYW5hZ2Vk
VGV4dHVyZTo6Y3JlYXRlKGhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSkpOwogICAgIH0K
IAogICAgIExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoaG9zdCk7CkBAIC0xOTksOCAr
MjY1LDEwIEBAIEdDM0RlbnVtIFZpZGVvTGF5ZXJDaHJvbWl1bTo6ZGV0ZXJtaW5lVGV4dHVyZUZv
cm1hdChjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyCiAKIGJvb2wgVmlkZW9MYXllckNocm9t
aXVtOjp0ZXh0dXJlc1ZhbGlkKCkKIHsKKyAgICBBU1NFUlQobGF5ZXJUcmVlSG9zdCgpKTsKKwog
ICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fcGxhbmVzOyBwbGFuZSsrKSB7
Ci0gICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1
cmUuZ2V0KCk7CisgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5l
XS0+dGV4dHVyZSgpOwogICAgICAgICBpZiAoIXRleC0+aXNWYWxpZCh0ZXgtPnNpemUoKSwgdGV4
LT5mb3JtYXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjE3LDE5
ICsyODUsMjAgQEAgYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcyhjb25z
dCBWaWRlb0ZyYW1lQ2hyb21pdW0qIGZyYW1lLCBHQzNEZW4KIAogICAgIGZvciAodW5zaWduZWQg
cGxhbmUgPSAwOyBwbGFuZSA8IGZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewogICAgICAgICBJ
bnRTaXplIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShw
bGFuZSk7CisgICAgICAgIEFTU0VSVChtX3RleHR1cmVzW3BsYW5lXSk7CisgICAgICAgIEFTU0VS
VChtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVu
ZGVyZXIgY2Fubm90IGhhbmRsZSB0aGlzIGxhcmdlIG9mIGEgdGV4dHVyZSwgcmV0dXJuIGZhbHNl
LgogICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdGVzdCB3aGVuIHRpbGVkIGxheWVycyBh
cmUgaW1wbGVtZW50ZWQuCiAgICAgICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplLmlzWmVybygp
IHx8IHJlcXVpcmVkVGV4dHVyZVNpemUud2lkdGgoKSA+IG1heFRleHR1cmVTaXplIHx8IHJlcXVp
cmVkVGV4dHVyZVNpemUuaGVpZ2h0KCkgPiBtYXhUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoIW1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFu
ZV0ubV90ZXh0dXJlLT5zaXplKCkgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSkKLSAgICAgICAgICAg
IG1fdGV4dHVyZXNbcGxhbmVdLm1fdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJh
bWUsIHBsYW5lKTsKKyAgICAgICAgaWYgKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCktPnNp
emUoKSAhPSByZXF1aXJlZFRleHR1cmVTaXplKSB7CisgICAgICAgICAgICBJbnRTaXplIHZpc2li
bGVTaXplID0gY29tcHV0ZVZpc2libGVTaXplKGZyYW1lLCBwbGFuZSk7CisgICAgICAgICAgICBt
X3RleHR1cmVzW3BsYW5lXS0+c2V0VmlzaWJsZVNpemUodmlzaWJsZVNpemUpOworICAgICAgICB9
CiAKLSAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlLT5yZXNlcnZlKHJlcXVpcmVk
VGV4dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOworICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS0+
dGV4dHVyZSgpLT5yZXNlcnZlKHJlcXVpcmVkVGV4dHVyZVNpemUsIHRleHR1cmVGb3JtYXQpOwog
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjU5LDI4ICszMjgsNiBAQCBJbnRTaXplIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6Y29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJv
bWl1bSogZnJhbWUsCiAgICAgcmV0dXJuIEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVp
Z2h0KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVy
ZSYgdGV4dHVyZSwgY29uc3Qgdm9pZCogZGF0YSkgY29uc3QKLXsKLSAgICBBU1NFUlQoY29udGV4
dCk7Ci0gICAgQVNTRVJUKHRleHR1cmUubV90ZXh0dXJlKTsKLQotICAgIHRleHR1cmUubV90ZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCi0gICAgR0MzRGVudW0gZm9y
bWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1hdCgpOwotICAgIEludFNpemUgZGltZW5zaW9u
cyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7Ci0KLSAgICB2b2lkKiBtZW0gPSBzdGF0aWNf
Y2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSktPm1h
cFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwg
MCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBmb3JtYXQsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJ
VEVfT05MWSk7Ci0gICAgaWYgKG1lbSkgewotICAgICAgICBtZW1jcHkobWVtLCBkYXRhLCBkaW1l
bnNpb25zLndpZHRoKCkgKiBkaW1lbnNpb25zLmhlaWdodCgpKTsKLSAgICAgICAgR0xDKGNvbnRl
eHQsIHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpKS0+dW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0obWVtKSk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gSWYgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNIGZhaWxzLCB0aGVuIGRvIHRo
ZSBzbG93ZXIgdGV4U3ViSW1hZ2UyRAotICAgICAgICAvLyB1cGxvYWQuIFRoaXMgZG9lcyB0d2lj
ZSB0aGUgY29waWVzIGFzIG1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSwgb25lCi0gICAgICAgIC8v
IGluIHRoZSBjb21tYW5kIGJ1ZmZlciBhbmQgYW5vdGhlciB0byB0aGUgdGV4dHVyZS4KLSAgICAg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWln
aHQoKSwgZm9ybWF0LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgZGF0YSkpOwot
ICAgIH0KLX0KLQogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnJlbGVhc2VQcm92aWRlcigpCiB7
CiAgICAgbV9wcm92aWRlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDUx
NmM4ZDM4NDdjMmFkYjY0YzViYmVmYjdjOTljYWI1ZjVhZmFiYTMuLjM1MWY4ZjhkMTU2MTMxNzIw
ZjNlNmIzODRlYjM0MmY4MDc0ZTUwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBA
IC00Myw2ICs0MywzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQgY29u
dGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGlj
IExheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAg
c3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFVwZGF0ZXJUZXh0dXJlKHRleHR1cmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZp
cnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1
YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7Cisg
ICAgICAgIHZvaWQgZGF0YVJlY3QoY29uc3Qgdm9pZCopOworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICB2b2lkIHNldFZpc2libGVTaXpl
KEludFNpemUmIHNpemUpIHsgbV92aXNpYmxlU2l6ZSA9IHNpemU7IH0KKyAgICAgICAgSW50U2l6
ZSYgdmlzaWJsZVNpemUoKSB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPik7CisKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAg
ICAgIEludFNpemUgbV92aXNpYmxlU2l6ZTsKKyAgICAgICAgdWludDhfdCogbV9tYXBwZWRCdWZm
ZXI7CisgICAgICAgIE93bkFycmF5UHRyPHVpbnQ4X3Q+IG1fYnVmZmVyOworICAgIH07CiAKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVs
ZWdhdGUqID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CkBAIC01MCw3ICs3Nyw5IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGVJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5
KCk7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHJlbGVhc2VQcm92aWRlcigpOwpAQCAt
NjMsMTggKzkyLDEyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291
cmNlcygpOwogCiBwcml2YXRlOgotICAgIHN0cnVjdCBUZXh0dXJlIHsKLSAgICAgICAgSW50U2l6
ZSBtX3Zpc2libGVTaXplOwotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVy
ZTsKLSAgICB9OwotCiAgICAgVmlkZW9MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSosIFZp
ZGVvRnJhbWVQcm92aWRlciopOwogCiAgICAgc3RhdGljIEdDM0RlbnVtIGRldGVybWluZVRleHR1
cmVGb3JtYXQoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKik7CiAgICAgc3RhdGljIEludFNpemUg
Y29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2lnbmVkIHBs
YW5lKTsKICAgICBib29sIHRleHR1cmVzVmFsaWQoKTsKICAgICBib29sIHJlc2VydmVUZXh0dXJl
cyhjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAg
ICB2b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgVGV4dHVyZSYsIGNvbnN0IHZvaWQqKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRGcmFtZVBh
cmFtZXRlcnMoKTsKIApAQCAtODMsMTIgKzEwNiwxNCBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJh
bWVQcm92aWRlciogbV9wcm92aWRlcjsKIAogICAgIGVudW0geyBNYXhQbGFuZXMgPSAzIH07Ci0g
ICAgVGV4dHVyZSBtX3RleHR1cmVzW01heFBsYW5lc107CisgICAgT3duUHRyPFVwZGF0ZXJUZXh0
dXJlPiBtX3RleHR1cmVzW01heFBsYW5lc107CiAgICAgdW5zaWduZWQgbV9wbGFuZXM7CiAKICAg
ICB1bnNpZ25lZCBtX25hdGl2ZVRleHR1cmVJZDsKICAgICBJbnRTaXplIG1fbmF0aXZlVGV4dHVy
ZVNpemU7CiAgICAgSW50U2l6ZSBtX25hdGl2ZVRleHR1cmVWaXNpYmxlU2l6ZTsKKworICAgIFZp
ZGVvRnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uY3BwCmluZGV4IGRlYjhjOTQ3NDIyYTEzZTFmMTc0NWRhYWY0NjM4MGE4MDNmYmQ2NWQu
LjNmNGIwNWI2YTQ5NzJhNGQ1NmU3ZmVkMWI0YmFjOTcyMzI4NDk3ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmNwcApAQCAtMzksOSArMzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIo
bGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRh
dGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKK30KKwogUGFz
c1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEND
TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
TExheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKQEAgLTUyLDYgKzY3LDcgQEAgV2ViR0xMYXllckNo
cm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAg
ICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2Up
CiAgICAgLCBtX2RyYXdpbmdCdWZmZXIoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRl
clRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjYsNyArODIsNyBAQCBib29sIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gKGNvbnRl
eHQoKSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1
c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBXZWJHTExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRl
cmVyQ29udGV4dCkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47
CkBAIC05NSw2ICsxMTEsMTEgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ28KICAgICB9CiB9CiAK
K3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUo
bV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiBib29s
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVy
UmVuZGVyZXJDb250ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uaAppbmRleCA2Mzc0YjllZjZiMTE3YWQyMzU1YTFmYWRiNjlkZGI0MTA3YTY5MzEwLi41
NGIyN2Q0NzY2NTUxMWQ3MDNmZTY2NmFhYjNkNWMxYmNhYmY2ZGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRl
eHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMTIgKzQ2LDMw
IEBAIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNv
bnRhaW5pbmcgYSBXZWJHTCBjYW52YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1Ymxp
YyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVy
ZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoV2ViR0xMYXll
ckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVh
bCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJU
ZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1
bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNo
cm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmlydHVhbCB+V2Vi
R0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZp
cnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3Vs
dHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03MSw2ICs5MCw4IEBAIHByaXZhdGU6CiAg
ICAgLy8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1
ZmZlciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJD
aHJvbWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisKKyAgICBPd25Q
dHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAyN2Q5NTZhN2M3YWZiZDA5NWRiOTQ1YjkzNGExNjZl
ZmE1NWYzNzRmLi5jNjU4NDUyOGM4MGQzMDNlYTVlYTY2NjA1MGY1YjY5YWRmNjdlMzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIApAQCAtNDgsNiArNDksNTIgQEAgYm9vbCBDQ0xheWVy
VHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpCiAgICAgcmV0dXJuIG51
bUxheWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAKK0NDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291
cmNlSGFuZGxlcjo6TmVlZFJlc291cmNlSGFuZGxlcigpCisgICAgOiBtX3Jlc291cmNlcygwKQor
eworfQorCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6On5OZWVkUmVzb3Vy
Y2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhh
bmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAq
LykKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIG1fcmVz
b3VyY2VzKys7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6
UHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBt
X2FsbG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJl
c291cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKQoreworfQorCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlmICh0ZXh0dXJlLT5uZWVkUHJlcGFyZVJl
Y3QoKSkKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRv
ciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFu
ZGxlcjo6UGFpbnRIYW5kbGVyKENDUHJveHkqIHByb3h5KQorICAgIDogbV9wcm94eShwcm94eSkK
K3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIoKQor
eworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpoYW5kbGUoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZS0+cGFpbnRDb250ZW50
c1JlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1Nl
dHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRy
ZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7
CkBAIC0zMTQsNyArMzYxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAg
ICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21w
b3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoKQogewogICAgIGlm
ICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMyMiwxMiArMzY5LDEyIEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3cG9ydFNpemUo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5
ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsKIH0KIAotdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0
aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRh
dGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAg
ICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtMzM2LDI0ICszODMs
NzcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRT
aXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsKIAotICAg
IC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0
IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRlIGNhbiBi
ZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVMaXN0LnNp
emUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIC8vIFRoaXMg
YXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAv
LyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkg
Z2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgp
ICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJv
b3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJl
bmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91
cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xh
eWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAg
ICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVy
TGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAg
IH0KKworICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwg
bV9sYXllclVwZGF0ZUxpc3QpOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJV
cGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgewor
ICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5k
ZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAg
IH0KK30KKworYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzQ29tcG9zaXRvclJlc291cmNlcygp
Cit7CisgICAgTmVlZFJlc291cmNlSGFuZGxlciBoYW5kbGVyOworICAgIGZvckVhY2hDb21wb3Np
dG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgcmV0dXJuIGhhbmRsZXIucmVzb3VyY2VzKCk7Cit9
CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorewor
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3Vy
Y2VzIiwgdGhpcywgMCk7CisgICAgUHJlcGFyZVJlc291cmNlSGFuZGxlciBoYW5kbGVyKGNvbnRl
eHQsIGFsbG9jYXRvcik7CisgICAgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsK
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoKQoreworICAgIGlmICgh
cm9vdExheWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWV3cG9ydFNpemUoKS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMocm9vdExheWVy
KCkpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyhMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRDb250ZW50cyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5
ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkg
eworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVy
SW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKwor
ICAgICAgICBQYWludEhhbmRsZXIgaGFuZGxlcihtX3Byb3h5LmdldCgpKTsKKyAgICAgICAgbGF5
ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQorfQogCi0gICAg
cGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCk7Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
YXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckxpc3QmIHVwZGF0
ZUxpc3QpCit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hv
dWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBz
dXJmYWNlIGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZl
ciwgd2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+
Ym91bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3ND
b250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVy
KTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllcikKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAg
Ly8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93
biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2Rl
LCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBp
bnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtMzYyLDMzICs0NjIsMzMgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExh
eWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXll
clRyZWVIb3N0KHRoaXMpOwogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigp
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNr
TGF5ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxh
eWVyKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgIH0K
IAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+
cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FMYXllcikgewogCiAgICAgICAgIHJlcGxp
Y2FMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcmVwbGljYUxheWVyLT5w
YWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGlj
YUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJU
cmVlSG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNl
dFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5ZXItPm1hc2tM
YXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFz
a0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgICAgICBhcHBlbmRWaXNp
YmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRlTGlzdCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMo
Y29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewotICAgIGZvciAoaW50IHN1cmZh
Y2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4
ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJT
dXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7
CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6
ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBM
YXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJl
bmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAg
ICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+
ZHJhd09wYWNpdHkoKSk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5zZXRMYXllclRy
ZWVIb3N0KHRoaXMpOwotICAgICAgICBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFj
ZShyZW5kZXJTdXJmYWNlTGF5ZXIpOworICAgICAgICBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBj
b25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJM
aXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7CkBAIC00MDQsNDkgKzUwNCwyOSBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKGxheWVyLT5vcGFjaXR5KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKIAotICAgICAg
ICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgICAgICBhcHBlbmRW
aXNpYmxlTGF5ZXIobGF5ZXIsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXImIGhhbmRsZXIpCiB7Ci0gICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gbV91cGRh
dGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsK
LSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gbV91cGRhdGVMaXN0
W3N1cmZhY2VJbmRleF0uZ2V0KCk7Ci0gICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVu
ZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOwotICAgICAg
ICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5k
cmF3T3BhY2l0eSgpKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgaWYgKHJl
bmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlclN1
cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29u
dGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyZW5kZXJTdXJm
YWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXll
ckxpc3QoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRl
eCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgTGF5ZXJD
aHJvbWl1bSogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7Ci0KLSAgICAgICAg
ICAgIGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1Rv
VGFyZ2V0PExheWVyQ2hyb21pdW0+KGxheWVyLCByZW5kZXJTdXJmYWNlTGF5ZXItPmlkKCkpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQorICAgIGZvciAo
aW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4
ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBt
X2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQogfQogCiB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNl
SW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJ
bmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJm
YWNlSW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNsZWFyKCk7CisKKyAgICBm
b3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3JlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0
KCk7CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgbGF5
ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIo
KTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVT
ZXQmIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGFhYWQxNDIyOWQzNTEw
ZWUxOTEwMjFjNzY0Yzc1YjRmYjQ3M2FiNTUuLmMzMmUyMTBiZmE0N2Y4ZmE5YWIxMTU1MTgwM2My
ZWRhYjg3Y2M5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw3ICs0NSw2
IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9j
YXRvcjsKQEAgLTc0LDcgKzczLDggQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAg
LCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKGZhbHNlKQogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQotICAgICAgICAgICAgLCBw
ZXJUaWxlUGFpbnRpbmcoZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmco
ZmFsc2UpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAg
ICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47
CkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHNob3dQbGF0
Zm9ybUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9vbCBwZXJUaWxl
UGFpbnRpbmc7CisgICAgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlk
ZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0
byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xODYsOSArMTg3LDEyIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAotICAgIHZvaWQgdXBkYXRl
TGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAgICBib29sIG5lZWRzQ29t
cG9zaXRvclJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBwYWludENv
bnRlbnRzKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3Rh
cnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1p
dGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xOTgsMTIgKzIwMiw1MCBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgTmVlZFJlc291
cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAgICAgICAgdmlydHVhbCB+
TmVlZFJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVzb3VyY2VzKCkgeyByZXR1
cm4gbV9yZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX3Jlc291cmNl
czsKKyAgICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFByZXBh
cmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7
CisgICAgICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgICAgICBUZXh0
dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAgY2xhc3MgUGFpbnRIYW5k
bGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAgdmlydHVhbCB+UGFpbnRI
YW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94eSogbV9wcm94eTsKKyAg
ICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJM
aXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jik7Ci0g
ICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
Kik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlz
dCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVy
Q2hyb21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlzaWJs
ZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxp
c3QmIHVwZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSop
OworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHBh
aW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRl
KCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAgLTIxOSw3ICsyNjEsOCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExh
eWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5n
cyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYmIzNzgwMTQ3YjE2YzI2Yjc1YTdjY2Qy
MmFhOGI4ZmU4NGU3NmJiZC4uZWVlNmQxOGMxZTgwMDhkODNmOTUzY2FiNDViZjRkNDQxNjllNDhl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNp
bmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJlIGNh
bGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAj
aWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3MmJlYzJhNzE2NjRhZjQzY2Q2NGQw
MTRkMjhiODQyNjUwOTViMjAzLi45MjczMzcwZTUyNzMyOTQ1MjI4MWNhOWI5YzliYWJmNTc0ZjUz
YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTQ3LDE1
ICsxNDcsMTkgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQog
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByZXBhcmUgY29tcG9zaXRvciByZXNvdXJj
ZXMKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50
cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVn
aW5Db21taXQoKTsKLQorICAgICAgICB3aGlsZSAobV90ZXh0dXJlVXBkYXRlci51cGRhdGUobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7
Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVw
ZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZp
c2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsK
IApAQCAtMjA4LDYgKzIxMiwxNCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQog
ICAgIG1fbGF5ZXJUcmVlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlmIChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAg
IG1fdGV4dHVyZVVwZGF0ZXIuYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
KyAgICBlbHNlCisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0
aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMg
dGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVk
aWF0ZWx5KCkKIHsKQEAgLTI3Miw3ICsyODQsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogCiAgICAgZG9Db21taXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCAwZDVhNGEyZDhhNTE2YjFkN2JjZjk5MWE5
OWUxYzc4Nzg5OTQzZWM1Li43ODNhOGRiODU3NDAxMjhhNGQ2MDA5ZWI1ODE4NGUzMGNkMDE3ZGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgog
ICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3VsZEZh
aWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlD
b21taXR0ZWRGcmFtZTsKKworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRlcjsK
IH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBi
dWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIuLmE2MWMz
YmIzM2Y2ZTI5Y2JlZmFiNzMwMDI1MDg1ZDEyMDc1MzZjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKQEAgLTM3LDExICszOCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJl
VXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi0gICAgOiBtX2FsbG9jYXRvcihh
bGxvY2F0b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKK0NDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4
dHVyZVVwZGF0ZXIoKQogewotICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9CiAKIENDVGV4dHVy
ZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKQEAgLTY2LDIzICs2NCwyMCBAQCBib29sIEND
VGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIAogYm9vbCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkK
IHsKLSAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50
cmllcy5zaXplKCkpOwotICAgIGZvciAoOyBtX2VudHJ5SW5kZXggPCBtYXhJbmRleDsgKyttX2Vu
dHJ5SW5kZXgpIHsKLSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50
cnlJbmRleF07Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBt
X2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKLSAgICB9
CisgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVj
dChjb250ZXh0LCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOworICAgIH0KIAotICAgIC8vIElmIG5vIGVudHJpZXMg
bGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpID4gMDsKIH0KIAogdm9pZCBDQ1RleHR1
cmVVcGRhdGVyOjpjbGVhcigpCiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2VudHJp
ZXMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzlh
YzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNjZWMxNWJiMzAuLmFiNjU5ZWNlZWFkNmRjY2Y1NmJk
ODMwOGE4NjRkODM0ZDBlYzg4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAg
LTMzLDExICszMywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQzRDsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiAKIGNsYXNzIENDVGV4dHVyZVVwZGF0
ZXIgewogcHVibGljOgotICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciopOwor
ICAgIENDVGV4dHVyZVVwZGF0ZXIoKTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAg
dm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDggKzQ4LDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KLQogcHJpdmF0ZToKICAgICBzdHJ1Y3Qg
VXBkYXRlRW50cnkgewogICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3Rl
eHR1cmU7CkBAIC01OCw4ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgbV9kZXN0
UmVjdDsKICAgICB9OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAg
c2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOGU3NzQyNWU0NDBhNGVkY2Yy
OWYyNjVhYzNlOWVlZmRiZTIxNWQ4Ny4uNzRlNzNjYTNlYzkwZDg4MTY5OGMyMmY1ODE1NGZkYzhh
NTg1NWYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI4NSw2ICsyODUsMjAg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKIH0K
IAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMs
IDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7
CisKKyAgICBPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVwZGF0ZUVu
dHJ5KTsKKyAgICBlbnRyeS0+bV90ZXh0dXJlID0gdGV4dHVyZTsKKyAgICBlbnRyeS0+bV9zb3Vy
Y2VSZWN0ID0gc291cmNlUmVjdDsKKyAgICBlbnRyeS0+bV9kZXN0UmVjdCA9IGRlc3RSZWN0Owor
CisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQsIGVudHJ5LnJl
bGVhc2UoKSkpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhp
cywgMCk7CkBAIC0zNzMsNyArMzg3LDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAg
Ly8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CiAKLSAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJl
cGFyZVRvVXBkYXRlKCk7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0
b3JSZXNvdXJjZXMoKSkgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAg
Q0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZCwgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxldGlvbi53YWl0
KCk7CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAg
ICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQg
bV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBp
dCBtZWFucyBzZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29t
bWl0CkBAIC0zOTcsMTMgKzQyMSwzNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFT
U0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBz
ZXF1ZW5jZU51bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVz
b3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbk9uSW1w
bFRocmVhZCIsIHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRv
clJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIGNvbXBsZXRpb24tPnNp
Z25hbCgpOworfQorCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJUKCFtX2NvbW1p
dENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgp
KTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuYXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVu
dHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKK30KKwogdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7
CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQobV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJl
ZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1
cm47CkBAIC00MTEsMzYgKzQ1OSwyOCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAg
bV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAg
QVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBk
YXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCk7Ci0KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7
CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywg
MCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAg
ICBzdGF0aWMgY29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5OwotICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZy
YW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQog
ewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQi
LCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpOwotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhh
c01vcmVVcGRhdGVzKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQu
Y2xlYXIoKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAKIAog
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKaW5kZXggMWRmMzc0NmM1ZGMwMTM0YTMyNGU0YWM4NjQyMzA0NTI5MzNhOThmYi4uZjEy
NDRjMmExOWNkZjRiMmNjOTMxZWE1NjY3Y2Y4MGQ0YmY4NjE3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIu
aCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJl
YWQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29t
cGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTc4LDYgKzgwLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAgIHN0
cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IG1fdGV4dHVyZTsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJl
Y3QgbV9kZXN0UmVjdDsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCiAg
ICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZy
YW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lk
IGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwpAQCAtOTIsNiArMTAwLDggQEAgcHJpdmF0ZToKICAg
ICB9OwogICAgIFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRD
b21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29t
bWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNrKiop
OworICAgIHZvaWQgcHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50Kik7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8
VXBkYXRlRW50cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFk
KFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CkBAIC0xMjcsMTAgKzEzNywxMSBAQCBwcml2YXRlOgog
CiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBjb21taXQg
dG8gY29tcGxldGUuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fY29tbWl0Q29tcGxldGlvbkV2
ZW50T25JbXBsVGhyZWFkOwotICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRy
YXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4K
ICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOwor
CisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
ZTJlNzQzYTEwZGIxOTZjZDk3MjBiODM4OTg4ZTg3Yjg3NzZiOWY0MC4uZjBmMjgwMTZjNzliNDgy
MWRkN2I2ZWE1NjdmOGRjNmVmM2JlMDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMzUsNiArMTM1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cGVyVGlsZVBhaW50aW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRl
eHR1cmVVcGRhdGVzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBk
YXRlcygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXgg
MDZlZTAxMDEyOGE4NTZmMmVjNzNkNWQyM2VkYWQ4MjE0MWZmNjdiOC4uMjQwMTJlMzUxNTdiNzUw
NjY3ZDIyYzAxYzBhMGI3OTkwNWNlYmJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlNldHRpbmdzSW1w
bDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fc2hvd0ZQU0Nv
dW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKICAgICAs
IG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQorICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVzKGZh
bHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC00OTgsMTAgKzQ5OSwxNCBAQCB2
b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9v
bCBlbmFibGVkKQogI2VuZGlmCiB9CiAKLQogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRp
bGVQYWludGluZyhib29sIGVuYWJsZWQpCiB7CiAgICAgbV9wZXJUaWxlUGFpbnRpbmcgPSBlbmFi
bGVkOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhi
b29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5oCmluZGV4IDg4ZTI1ZTk2ZWZjYWZlNTI0ZTA4YTc2NjYxMTYxY2I3NTkz
NDRlZTUuLmYyZmRkMzUwMGZjNjA0M2YyMzYwZTZmYTg0OTBhODBhNTI1NWFmZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMzAsNiArMTMw
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREaXNwbGF5VGV4dERlc2Ny
aXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wp
OwogICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Bl
clRpbGVQYWludGluZzsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVz
KGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWxheVRleHR1cmVVcGRhdGVzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkBAIC0xMzcsNiArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsK
ICAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOworICAgIGJvb2wgbV9kZWxheVRleHR1cmVVcGRh
dGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMmUzOWZjZTQwZDJhZjg2MzBlODkzMTA3NzdiNzlk
MzUwNmIzZTU5NS4uNDRmZjRkNjMwZDQ4ZjBhOTQ4NmJlZWNiZGJmMTA5ZTU5Y2NiOTJkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjk0MCw2ICsy
OTQwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAgY2NTZXR0aW5ncy5yZWZyZXNoUmF0ZSA9IGRl
ZmF1bHRSZWZyZXNoUmF0ZTsKIAogICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9
IHNldHRpbmdzKCktPnBlclRpbGVQYWludGluZygpOworICAgICAgICBjY1NldHRpbmdzLmRlbGF5
VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRleHR1cmVVcGRhdGVzKCk7CiAKICAg
ICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBjY1Nl
dHRpbmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCmluZGV4IDM2ZmQ3ZGJkMDdiZGM3Y2YxYzg2MWZkODJhZWJjMmIwODRh
MDNhMzMuLjQzMTNmYTUxNGNlYzRiNGM3MTg4ODViYWZmYjE3MTgxNzM0Nzc4NjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJv
bWl1bS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTW9ja1dlYkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJDb21wb3NpdG9yLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsK
IH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0K
K307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xh
eWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0
ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTQ1LDM3ICs5NTQsMTE2IEBAIHByaXZh
dGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nIDogcHVi
bGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJE
ZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVi
bGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRM
YXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAg
ICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgICAgICB2
aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFByZXBhcmVSZWN0KCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVj
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wYWludENvbnRlbnRz
UmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8s
IGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciog
bV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAg
ICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRl
bnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3BhaW50
Q29udGVudHNDb3VudCA9IDA7IH0KKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFn
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0
aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAgICAgIH0KIAotICAg
IGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJl
c2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwg
T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpC
b3R0b21VcE9yaWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoKQorICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGlu
dCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsg
cmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nKiBsYXllcikgOiBtX2xheWVyKGxheWVyKSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0
ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICB7
Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOwot
ICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlLCBuZWVk
UHJlcGFyZVJlY3QpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYg
dXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NM
YXllclRyZWVIb3N0KikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0
ZUNvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2aXJ0dWFsIExh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRz
KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3Vu
dCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVS
ZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50
KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVu
dHNSZWN0KCkgeyBtX3BhaW50Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAgIGludCBwYWludENv
bnRlbnRzUmVjdENvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVjdENvdW50OyB9CisK
KyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQg
dXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKworICAgIGlu
dCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVjdDsgfQogCiBwcml2
YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
KENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCisgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSwgYm9vbCBu
ZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUp
CisgICAgICAgICwgbV9uZWVkUHJlcGFyZVJlY3QobmVlZFByZXBhcmVSZWN0KQogICAgICAgICAs
IG1fcGFpbnRDb250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAg
ICAgICAsIG1fcHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fcGFpbnRDb250ZW50c1Jl
Y3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAgewogICAgICAg
ICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICB9CiAKKyAgICBSZWZQdHI8Q29udGVu
dExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAg
Ym9vbCBtX25lZWRQcmVwYXJlUmVjdDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7Ci0g
ICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBp
bnQgbV9wYWludENvbnRlbnRzUmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsK
IH07CiAKIC8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHBy
ZXZlbnQgY29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21t
aXQuCkBAIC05ODMsNyArMTA3MSw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5
Q2hhbmdlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5
ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKCkKICAgICAgICAgOiBtX3Rlc3RPcGFjaXR5Q2hh
bmdlRGVsZWdhdGUodGhpcykKLSAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5n
ZURlbGVnYXRlKSkKKyAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVn
YXRlLCB0cnVlKSkKICAgICB7CiAgICAgfQogCkBAIC0xMDAyLDEzICsxMDkwLDE4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQogICAgIHsKLSAgICAgICAgLy8gcGFp
bnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAg
ICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KICAgICAg
ICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkp
OwogCi0gICAgICAgIC8vIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCB0aGUgc2FtZQotICAgICAgICAvLyBhbW91dCBvZiB0aW1lcyBhcyBwYWludENv
bnRlbnRzSWZEaXJ0eSgpLgotICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5w
YWludENvbnRlbnRzQ291bnQoKSwKLSAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXll
ci0+dXBkYXRlQ291bnQoKSk7CisgICAgICAgIC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFz
IHByZXBhcmVSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBy
ZXBhcmVSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+
cGFpbnRDb250ZW50c1JlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVz
IGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNr
TGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBk
YXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOwogCiAgICAgICAgIC8vIGNsZWFyIG1f
dXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xheWVyVHJlZUhvc3QgZGllcy4KICAgICAgICAgbV91cGRh
dGVDaGVja0xheWVyLmNsZWFyKCk7CkBAIC0xMDI0LDQgKzExMTcsNDkgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0
KHRydWUpOwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4g
bmVlZFByZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRl
c3ROb1ByZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgor
ICAgIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0KCkKKyAgICAgICAgOiBtX3VwZGF0
ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0
ZSgmbV9kZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVy
KG1fdXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3Bv
cnQoSW50U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5U
aHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICAgICAgLy8gcGFp
bnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVD
VF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKworICAg
ICAgICAvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICAg
ICAgRVhQRUNUX0VRKDAsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpKTsK
KworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNh
bWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisg
ICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291
bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENv
dW50KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxlZ2F0ZSBtX2RlbGVn
YXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4g
bV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3ROb1By
ZXBhcmVSZWN0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiB9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjNhYTQ1NmFkOGQ4Y2NiM2ZlMDRmYWZj
MTYyMGJmMGYyNGU2N2Y0My4uOTNjZmI1Nzg4M2E1ZjE1NDBiNGNjOThlYTU4M2E5OTE2YjE2ZTU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiVGlsZWRMYXll
ckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVk
ZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1
ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZAotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAtMzgsMjAgKzM4
LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1cmVBbGxvY2F0b3IgeworY2xhc3MgRmFrZUhh
bmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51
bSkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVk
LCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRS
ZWN0JikgeyB9CiB9OwogCiBjbGFzcyBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4
dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9Ci0gICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7
IH0KKyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6
IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0
dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIHsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiBtX3RleHR1cmU7CiAgICAgfTsKIAogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9
CkBAIC02MCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFu
YWdlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0
ZShtYW5hZ2VyKSkpOyB9CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsg
cmV0dXJuIEJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZv
cm1hdFJHQkE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmLCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KSB7
IH0KIH07CiAKIGNsYXNzIEZha2VDQ1RpbGVkTGF5ZXJJbXBsIDogcHVibGljIENDVGlsZWRMYXll
ckltcGwgewpAQCAtOTgsNiArMTAxLDExIEBAIHB1YmxpYzoKICAgICAgICAgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUocmVjdCk7CiAgICAgfQogCisgICAgdm9pZCBwYWludENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBUaWxlZExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHMocmVjdCk7CisgICAgfQorCiAgICAgdmlydHVhbCBUZXh0dXJl
TWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2Vy
OyB9CiAKIHByaXZhdGU6CkBAIC0xMTksMTMgKzEyNywxMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0g
YWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJl
QWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBh
aW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Cisg
ICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBo
YXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTEzOCw3ICsxNDYsOCBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVu
IG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVy
KTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGls
ZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118593</attachid>
            <date>2011-12-09 10:19:00 -0800</date>
            <delta_ts>2011-12-11 13:14:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111209131859.patch</filename>
            <type>text/plain</type>
            <size>123912</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM5NzJjMWJlOGM0YjNk
ZjkxOTIzYjYxYTFjZmVkODViZjlmYWNmMS4uMmI1MDY0MzlhNTFkNDdmNzhmYWZhYWZkNzUxMzg0
MDQ3ODc1NDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MCBAQAorMjAxMS0xMi0wOSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMgYmVlbgor
ICAgICAgICBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorCisgICAgICAg
IFNwbGl0IGxheWVyIHVwZGF0ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMg
dHJhbnNmb3JtcworICAgICAgICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFp
bnRzIGxheWVyIGNvbnRlbnRzLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEg
Y29tcG9zaXRvciByZXNvdXJjZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2li
bGUgbGF5ZXIgYXJlYXMgaGF2ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5n
CisgICAgICAgIGhhcyBvY2N1cnJlZC4gTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyBpcyByZXBsYWNlZAorICAgICAgICBieSBMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlIHdoaWNoIGFsbG93cyB1cyB0byBpdGVyYXRlCisgICAgICAgIG92ZXIg
Y29tcG9zaXRvciByZXNvdXJjZXMgZm9yIHZhcmlvdXMgcHVycG9zZXMuCisKKyAgICAgICAgQWRk
IG5ldyB1bml0IHRlc3Q6IENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6flRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnVw
ZGF0ZVRleHR1cmVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9t
aXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwYWludENvbnRl
bnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
Ojp+SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2Vk
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVy
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjpkYXRhUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6c2V0TGF5
ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1
cmVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpyZXNlcnZl
VGV4dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnNldFZpc2libGVTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OnZpc2libGVTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VI
YW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJj
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVz
b3VyY2VIYW5kbGVyOjp+UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFp
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5k
bGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
VG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBv
c2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRWaXNpYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojph
cHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6cmVzb3VyY2VzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpwcmVw
YXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNv
bW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oOgorCiAyMDExLTEyLTA5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgaW5zcGVjdG9yIHV0aWxpdGllcyBzeW50YXggZml4
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkOTA1YzZjYjIxYWI4OGEzMzkyYjA1YmJj
ZjNiN2JlMTUyYzQ2NDgzLi5lMmY3MzJjNmIyNzcyNWFjNzZjZWQyNjIyODMxM2UzYzRlYzU2YzIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDExLTEyLTA5
ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9t
aXVtXSBVcGxvYWQgdGV4dHVyZXMgaW4gcGFyYWxsZWwgd2l0aCBwYWludGluZyBjb250ZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIENDTGF5
ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IHRlc3QuIFRyYWNrIGNoYW5nZXMgdG8gdGV4dHVy
ZQorICAgICAgICB1cGxvYWRzLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6Cisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
dHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6ZGVsYXlUZXh0dXJl
VXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAg
ICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllckRlbGVnYXRlOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVs
ZWdhdGU6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpw
cmVzZXJ2ZXMzRCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpub3RpZnlTeW5j
UmVxdWlyZWQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnBhaW50Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVk
VGV4ZWxGb3JtYXQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmxheWVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVy
OjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzQ291bnQpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVJl
Y3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6cHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzUmVjdENv
dW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6Om5lZWRQcmVwYXJlUmVjdCk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjphZnRlclRl
c3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6Q0NM
YXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXll
clRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0OjphZnRlclRlc3Qp
OgorICAgICAgICAoV1RGOjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAg
ICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6Cisg
ICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMp
OgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKFdURjo6VEVTVCk6CisKIDIwMTEtMTItMDggIEZhZHkgU2FtdWVsICA8ZnNhbXVl
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgdmlld3BvcnQgbWV0
YXRhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAppbmRleCBkZDkzMTkxM2Y3MDk3NzYyNjM1ZmU2NDE5ZDM4NzUxYWZmODYxNzlkLi4wNzkw
NWMxODk3MDc0ODA0YjU1ZDgxMDY1ZTBlNmUwYTM5OTY1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzYsNyArMzYsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0
dXJlVXBkYXRlcikKIHsKIH0KQEAgLTQ1LDkgKzQ1LDExIEBAIEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0
LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIEFTU0VS
VCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5m
b3JtYXQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVz
ZU1hcFRleFN1YkltYWdlKQpAQCAtNzcsNyArNzksNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpT
YW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxl
ZAogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdC
QSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZv
aWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRl
clRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogCkBA
IC04OCwxNSArOTAsMTMgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAgICAgYm9yZGVyVGV4
ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
IGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwor
ICAgIHBhaW50KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRz
U2NhbGUpOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHVuc2lnbmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2Vy
KCZtX2NhbnZhcyk7Ci0KLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0
b3IpOwotICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJl
Y3QoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsK
KyAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCks
IHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKaW5kZXggOTc1NTIyY2JhYWEzNDE0NzU4NTZkYjZjYmVkYTMxMmMxNDlkODdiYS4u
MmU5MWRiYTA0ZTMwZDgxMDIxNmM2NjY5OGZmYTljZWRmZjRhNjg4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDAsMTIgKzQwLDEy
IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogLy8gQSBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyIHdpdGggYW4gaW50ZXJuYWwgYml0bWFwLgogY2xhc3MgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1Ymxp
YzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAg
IHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0
dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJl
dHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
LCBmbG9hdCBjb250ZW50c1NjYWxlKTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIHVuc2lnbmVk
IGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogCiBwcml2YXRlOgogICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAppbmRleCA4MjIxZGQyZTUyMWJkNjNmZTBlNmYwZjlkNjIyNGUzOGRm
YjM0Mjk4Li5kZjAwZTRhOWVhZWU5NDk1ZjY1YTBhNmQ3YTU2NjExY2E2OThlYmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcFNrUGljdHVyZUNhbnZhcwog
ewogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit2b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnBhaW50Q29udGVu
dHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNp
emUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc291cmNlUmVjdC5zaXplKCksIHRl
eHR1cmUoKS0+Zm9ybWF0KCkpOwogICAgIG1fcGl4ZWxEYXRhID0gYWRvcHRBcnJheVB0cihuZXcg
dWludDhfdFtidWZmZXJTaXplXSk7CkBAIC01MSw5ICs1MSwxMCBAQCB2b2lkIEJpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KGNvbnN0
IEludFJlYwogICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KGNhbnZhcy5n
ZXQoKSwgc291cmNlUmVjdCk7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7Ci0gICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3Ip
OworICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJl
SWQoKSk7CiAgICAgQVNTRVJUKG1fcGl4ZWxEYXRhLmdldCgpKTsKICAgICB0ZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0
UmVjdCwgbV9waXhlbERhdGEuZ2V0KCkpOwogICAgIG1fcGl4ZWxEYXRhLmNsZWFyKCk7CkBAIC04
NiwxMCArODcsMTAgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAgICAgICAgIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxl
KQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLSAgICBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29udGVu
dFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOworICAgIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJlY3Qs
IHRpbGVTaXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOwogfQogCiB2b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNr
Q2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggYzMwZjMwNzU1NWJkMzcyMWIxMTRmZmI4YjdiMGQ2Yzg2ZDVmNDQyYi4uZWM3YWM2Yzky
NjRkOTI1MTBhMmE1ZjlkMDhkMjBmMTZkZTc0OTQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDIs
OCArNDIsOCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVU
ZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRh
dGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247
IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxl
U2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBw
YWludENvbnRlbnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwog
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBHQzNEZW51bSBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCBiMGM0ZTA3Mzk0NmJh
NWU1MWUzZGM2YTI1MzczNmEwZWNhMzhjYWNjLi5lMDRmMThkMDA2MmY3ZTRhNjkzODRiYjg0YTEw
MzkyMDNmM2ZlMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTQ0LDYgKzQ0LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNo
cm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9t
aXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQg
Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJl
Y3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoKTsKK30KKwogUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQpKTsKQEAg
LTUyLDYgKzY2LDcgQEAgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDMKIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQog
ICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bSgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9
CiAKQEAgLTY1LDcgKzgwLDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpIGNvbnN0CiAgICAgICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1IpKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBp
ZiAoIW1fbmVlZHNEaXNwbGF5IHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtODUsNiArMTAwLDExIEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0CiAgICAgbV9uZWVkc0Rp
c3BsYXkgPSBmYWxzZTsKIH0KIAordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikK
K3sKKyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCks
IEludFJlY3QoKSk7Cit9CisKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpjb250ZW50Q2hh
bmdlZCgpCiB7CiAgICAgaWYgKGxheWVyVHJlZUhvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmgKaW5kZXggNDU3YmQ1NjRkNzc4ZGFiOTRhYzk5MTEzZjgxZWJmZTc1ZGVmZGQ0
Zi4uZTg2YTYxYTRlZWU0NTIwYWJhNjg2YzQxOTNhNmY3OGYwZmM1MGYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQzLDE2ICs0MywzNiBAQCBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52
YXMKIGNsYXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9t
aXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNz
T3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXll
cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4
dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKENhbnZhczJE
TGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIENhbnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXll
cjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVt
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVy
Q2hyb21pdW0oKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KCk7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2Vk
KCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ2FudmFzMkRMYXllckNocm9taXVtKEdyYXBo
aWNzQ29udGV4dDNEKik7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKworICAg
IE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRjNmJk
N2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uYzYxZWMzM2Q2N2U2NTM3MTJkMmI5MjExM2Zi
NzliYWJmODM5YjVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTM2LDYgKzM2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKK2Jvb2wgQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sKKyAgICBy
ZXR1cm4gIW1fdGV4dHVyZS0+dGV4dHVyZUlkKCk7Cit9CisKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNl
UmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwogQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPiBwYWludGVyKQogICAgIDogbV9wYWludGVyKHBhaW50ZXIpCiB7CkBA
IC00NSw3ICs2Myw3IEBAIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5DYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpCiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUo
LWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0LnkoKSk7CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGE4ZmVmZjM0MjJiMWI4NTMwYjhmNjg5
ZmYyYzU2Njc2NjBiZWQ1Y2YuLjg4NmQxMDEyZDhlNTMyNzljZTc0ZTUxYTEwMzQ5ZGI4MWE4OWZl
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJM
YXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSwxMiArNDAsMjggQEAgY2xhc3MgTGF5ZXJQYWludGVy
Q2hyb21pdW07CiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBjYW52
YXMuCiBjbGFzcyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXIgewogcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFy
ZVJlY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8s
IGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9
OworCiAgICAgdmlydHVhbCB+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
OworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDJhMjQ2NmQ5MTI5YWVjMzY0MDkzMjI5
Y2I5MzVhZjgyZDUwNzI0YjYuLmRkNzQ5Njc3Y2I3MTJkMDRmN2RlMjA1MTEwMzJjZTc3MzU5Mjlk
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGls
ZWRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5k
VGlsaW5nT3B0aW9uKCk7CiAKQEAgLTEwOSw2ICsxMDksMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFs
c2U7CiB9CiAKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KCkKK3sKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOworCisgICAgY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOworICAgIGlmIChsYXllclJlY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKGxheWVyUmVjdCk7Cit9CisKIGJvb2wgQ29u
dGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNocm9t
aXVtOjpkcmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4
IGI4MzRlNjc2YmQ2MzQ0NWFhNDUzYjM2NWVlZTI4MDI0MGYzODA5YzEuLmM1ZTlmY2NlYmY0NzZl
YjdkMDJiYzk4MjIxNzBiNjY1M2E1MTNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5
ZXJDaHJvbWl1bSgpOwogCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZjJkN2UyZGRkYWE2ZmQ5OWZiZTYw
M2MzYjhlMzczZTk5OGEzMzgzNS4uOWVlZmI0NmI1ZTUyNGY3ZWUyMzU5ODM3ODUwNWI0ZjJlNGEy
OWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBGcmFtZUJ1ZmZlcigpOwogICAgIH5GcmFtZUJ1ZmZlcigpOwogCi0gICAgU2tD
YW52YXMqIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
TWFuYWdlZFRleHR1cmUqKTsKKyAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIE1hbmFnZWRUZXh0dXJlKik7CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIG1fY29udGV4dDsKQEAgLTY2LDEyICs2NiwxMiBAQCBGcmFtZUJ1ZmZlcjo6fkZyYW1lQnVm
ZmVyKCkKICAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7CiB9CiAK
LVNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKK1NrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCiB7CiAgICAgbV9jb250ZXh0ID0gY29u
dGV4dDsKICAgICBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fZmJvKTsKLSAgICB0ZXh0dXJlLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQsIGFs
bG9jYXRvcik7CisgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLT50ZXh0dXJlSWQoKSwgMCk7
CiAKICAgICAvLyBDcmVhdGUgYSBza2lhIGdwdSBjYW52YXMuCiAgICAgR3JDb250ZXh0KiBnckNv
bnRleHQgPSBtX2NvbnRleHQtPmdyQ29udGV4dCgpOwpAQCAtOTYsNyArOTYsNyBAQCBTa0NhbnZh
cyogRnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqCiB9IC8vIG5hbWVzcGFjZQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUo
dGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CkBA
IC0xMDUsOSArMTA1LDIzIEBAIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNvcnJlY3QgR0wg
Y29udGV4dC4KKyAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAvLyBOb3Rp
ZnkgU0tJQSB0byBzeW5jIGl0cyBpbnRlcm5hbCBHTCBzdGF0ZS4KKyAgICBjb250ZXh0LT5nckNv
bnRleHQoKS0+cmVzZXRDb250ZXh0KCk7CisKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJl
SWQoKSk7CisKKyAgICAvLyBDcmVhdGUgYW4gYWNjZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24u
CisgICAgRnJhbWVCdWZmZXIgYnVmZmVyOworICAgIFNrQ2FudmFzKiBjYW52YXMgPSBidWZmZXIu
aW5pdGlhbGl6ZShjb250ZXh0LCB0ZXh0dXJlKCkpOworCisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgY2FudmFzLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CisKKyAgICAvLyBGbHVzaCBTS0lBIGNvbnRleHQgc28gdGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0
dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCisgICAgY29udGV4dC0+Z3JDb250ZXh0KCktPmZs
dXNoKCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAt
MTM1LDI2ICsxNDksMTQgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXAKICAgICByZXR1cm4gTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKIH0KIAotdm9pZCBGcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgU2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUg
Y29ycmVjdCBHTCBjb250ZXh0LgotICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgotICAgIGNv
bnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKLQotICAgIC8vIENyZWF0ZSBhbiBh
Y2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KLSAgICBGcmFtZUJ1ZmZlciBidWZmZXI7Ci0g
ICAgU2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIGFsbG9jYXRv
ciwgdGV4dHVyZSk7Ci0KICAgICBjYW52YXMtPmNsaXBSZWN0KFNrUmVjdChkZXN0UmVjdCkpOwog
ICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2YgZGVz
dFJlY3QuCiAgICAgLy8gTm90ZSB0aGF0IGRlc3RSZWN0IGlzIGRlZmluZWQgcmVsYXRpdmUgdG8g
c291cmNlUmVjdC4KICAgICBjYW52YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNv
dXJjZVJlY3QueCgpICsgZGVzdFJlY3QueCgpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
bnRSZWN0KCkueSgpIC0gc291cmNlUmVjdC55KCkgKyBkZXN0UmVjdC55KCkpOwogICAgIGRyYXdQ
aWN0dXJlKGNhbnZhcyk7Ci0KLSAgICAvLyBGbHVzaCBTS0lBIGNvbnRleHQgc28gdGhhdCBhbGwg
dGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCi0gICAgY29udGV4dC0+
Z3JDb250ZXh0KCktPmZsdXNoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKaW5kZXggMDZiNjJkMTk5OWI1NjIzNTA0MWNjMGRiYjIyMjQ5MTA1
MWY5NTllYi4uYThmZjg1ZmY1YmJlNDc4YTJkNTg1ZGZhNjc1Y2VkMzhjYTA0OTQwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDE2ICszMiwxOCBAQAogCiAjaW5jbHVkZSAiU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCitjbGFzcyBTa0NhbnZhczsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0K
QEAgLTU1LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAg
ICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVs
Rm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2
b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNGZiOTU3NGQ0OGVl
MDAyODcyOGU5MjJlMTRlMzE2NzA5YTYwNGRkYS4uMWUzM2M2ZDI2OTdiZjAxMDIwNmRlNDEzODMx
MzMxNzJkNjlmYzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC00OSwx
OSArNDksMzQgQEAgcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdl
TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRl
eHR1cmU+IHRleHR1cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUodGV4dHVyZSkKKyAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCiAgICAgICAgICAg
ICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRU
ZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAg
dmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25z
dCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKICAgICAgICAgewotICAgICAgICAgICAgdGV4dHVy
ZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJl
KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIG1fdGV4dHVyZS0+YWxsb2Nh
dGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJl
KCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0K
IAorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICAgICAgSW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAKQEAgLTg1
LDE1ICsxMDAsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBp
bnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQorICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICov
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQg
LyogY29udGVudHNTY2FsZSAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3Vi
SW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgZm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0g
ICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICAg
ICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91dHNpZGUgdGhlIGltYWdlIHBpeGVs
cywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0
dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCiAgICAgICAgIEludFJlY3QgY2xpcHBlZFNv
dXJjZVJlY3QgPSBzb3VyY2VSZWN0OwpAQCAtMTAzLDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2xpcHBlZERlc3RSZWN0Lm1vdmUoY2xpcHBlZFNvdXJjZVJlY3QubG9jYXRpb24oKSAtIHNv
dXJjZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNs
aXBwZWRTb3VyY2VSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQo
bV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVk
RGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICAgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VS
ZWN0LCBjbGlwcGVkRGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiAgICAgfQogCiAgICAgdm9p
ZCB1cGRhdGVGcm9tSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UpCkBAIC0xNjYsNyAr
MTc5LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250
ZW50cykKICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAg
ICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1
ZmU0ZjI2NjY4YmRjYzNlMjlmMDRjZmZjZGE4ODJhNzNjMzFlMzI3Li5mNmViYzhhN2U4YjkwNzMx
OGNmNTIwNmM0ZmI0ZTg3ZmFlYTFlMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVt
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKaW5kZXggOWM3YTRmOGY0NzkyODlkYTA1OTEzN2I3OWJiMTVkNmJkMTdkNTFlZS4uYzdm
Y2I0YzkzNTRmYjFiYzcxMTYzYzE2ODRmOThmYmYwNDMxYmI2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAK
IGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0xNjAsOCArMTYwLDkgQEAgcHVibGljOgogCiAg
ICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBk
ZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29u
dGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc1Y2YyOWE4OWUzODll
Mjc2NzdiMTE5MjA2ZWYyOWE0ZTMwMTQ2Li4yMjZiYzIxODFkMzE2NDgwZGI5OTBjNjMwODJkNTU4
ODlhYzdiMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0yOSw3ICsyOSw2
IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJNYW5h
Z2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsK
K2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRl
eHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMjMgQEAgcHVibGljOgogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAgICAgIE1hbmFnZWRUZXh0dXJl
KiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9
CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiAwOyB9
CiAKLSAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVy
ZTsKKyAgICAgICAgLy8gcHJlcGFyZVJlY3QoKSB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoaXMg
cmV0dXJucyB0cnVlLgorICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIHN5bmNocm9ub3VzbHkgb24gdGhl
IGltcGwgdGhyZWFkIHdpdGggc2FmZSBhY2Nlc3MgdG8gbWFpbiB0aHJlYWQgcmVzb3VyY2VzLgor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50
UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICAvLyBUaGlzIHJ1bnMgb24gdGhlIG1h
aW4gdGhyZWFkIGFmdGVyIGNhbGxzIHRvIG5lZWRQcmVwYXJlUmVjdCgpIGFuZCBwcmVwYXJlUmVj
dCgpIGJ1dCBiZWZvcmUgdXBkYXRlUmVjdCgpLgorICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CisgICAgICAg
IC8vIFRoaXMgcnVucyBhc3luY2hyb25vdXNseSBvbiB0aGUgaW1wbCB0aHJlYWQuIEFjY2VzcyB0
byBtYWluIHRocmVhZCByZXNvdXJjZXMgaXMgdW5zYWZlLgorICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgfTsKKworICAgIGNsYXNzIEhhbmRs
ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGFuZGxlcigpIHsgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAg
ICAgfTsKIAogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9u
ZW50IG9yZGVyIGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMg
VGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2
aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4
dHVyZUZvcm1hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICov
LCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50
UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhl
bHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4IGNiZGZlMDNjMmM1NDQzYmNl
YWY0M2NhNmFmMDJhNzNjNTcxZDAzMzMuLmVlMTgwMjVmYWExZGU1YjBmMDYyNTAzMTdkODg5ZGE4
ZDY5YWQ3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTgwLDExICs4MCwxNiBAQCB2
b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQogICAgIG1fdGV4dHVyZU1hbmFnZXItPnVu
cHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKLXZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBBU1NF
UlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZShtX3Rva2VuKSk7CiAgICAgaWYgKCFtX3Rl
eHR1cmVJZCkKICAgICAgICAgbV90ZXh0dXJlSWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0
ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKK30KKwordm9pZCBNYW5hZ2VkVGV4dHVyZTo6
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKK3sKKyAgICBhbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
ICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV90ZXh0dXJlSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAppbmRleCA0ZDQzODA5NTk1MzQw
ZjVkNzMzZDU2NzkyOTFhOTIwNjRjN2IxYWU1Li5kNzNjODc0MmQ3ODQwZTIyOTAxNGUwMWFmZWQy
NTY2ZDdjOTliYzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQcm90ZWN0ZWQobV90b2tl
bik7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGUzYzVjNDhmNzkyMGZlZWM3MDhlNGRhYzdhZWY2NGUy
M2U4YWFmMDAuLjYwMzI2OGE2MmUzZjJkMDQ3MDliNmNkYjYyOWRhYmVjMzc2ZmNiZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBsdWdpbkxh
eWVyQ2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0
ZSkKIHsKIH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0
ZXImKQordm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkK
IHsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmgKaW5kZXggMjc3YTk2OWM1OGNjM2Y1ODM0NTg3ZTA3NzhmZmQxYzYy
NzdkNjZmNi4uMTZmM2ZjMWIzY2U4MjU0MmZkZjQwNzA2ZGE2MDg4NzI5MzVjM2U2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQbHVnaW5M
YXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUq
ID0gMCk7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVDQ0xheWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDUzN2UxMzdlOGQ4ZWM1MThiOTM0
YWE1Y2QyZDcwMGM3NGIxOWZlNGIuLjU1YTFkYjhmYjYwM2U2ZDA0OTAyYWFjZmNmZmY4NzA5ZTg5
NWViNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewog
fQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNp
emUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lk
IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQg
LyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIFNrQ2FudmFz
KiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwg
Y29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1D
b250ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVkKHRydWUpOwog
ICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0g
ICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1Nj
YWxlKTsKKyAgICBwYWludChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1Nj
YWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0NDBmOGIw
M2VhNGYyNzM5YTk3NTQzODY3YWM3ZWIxNTQwMzBkMGMyLi5hZWZiZmMzZjZhNGEyYTNhYTcxYTVi
MWZiNDNlZGVhZjFjYmY2ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
OwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVjNTVmNTliZjNlNzM3MmZlOWVjNTEyZWY2MzYx
MTAxYWM1YTA1ZTUuLjJhNjgxNTgyYjM2NWY0YzRhZWFkMWYyM2JlZjZjZDkxNmNhNzQ3YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTcyLDE0ICsxNzIsMTQgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3Jk
ZXJUZXhlbE9wdGlvbiBib3JkZXIKICAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNy
ZWF0ZShtX3RpbGVTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiB9CiAKLXZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRs
ZXIpCiB7CiAgICAgLy8gSWYgdGhpcyBhc3NlcnQgaXMgaGl0LCBpdCBtZWFucyB0aGF0IHBhaW50
Q29udGVudHNJZkRpcnR5IGhhc24ndCBiZWVuCiAgICAgLy8gY2FsbGVkIG9uIHRoaXMgbGF5ZXIu
IEFueSBsYXllciB0aGF0IGlzIHVwZGF0ZWQgc2hvdWxkIGJlIHBhaW50ZWQgZmlyc3QuCiAgICAg
QVNTRVJUKG1fdGlsZXIpOwogCiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRp
bmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21l
IGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVz
dGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXIgfHwgIW1fdGlsZXItPm51bVRpbGVz
KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5
KCkgfHwgIW1fdGlsZXIgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90
dG9tOwpAQCAtMjE5LDExICsyMTksOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZQogICAgICAg
ICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJl
Y3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgdXBk
YXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAg
ICAgICAgICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdCht
X3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7CiB9CiAKIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09w
dGlvbikKQEAgLTM5OSwxNSArMzk3LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBtX3JlcXVlc3RlZFVw
ZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0gbV90aWxlci0+bGF5
ZXJSZWN0VG9Db250ZW50UmVjdChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYgKGRpcnR5TGF5ZXJS
ZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2Vi
S2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBvZiBk
aXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0
ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBm
cmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWlu
dCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8g
aG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAgIFJl
ZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0g
ICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVy
LT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2FsZSgp
KTsKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRh
dGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7
IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmln
aHQ7ICsraSkgewpAQCAtNDMyLDEzICs0MjQsMjUgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICAgICAgICAg
IHRpbGUtPmNsZWFyRGlydHkoKTsKIAogICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0g
c291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVw
YXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit7
CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkg
fHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBjYWxscyBpbnRvIFdl
YktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qgb2Yg
ZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUg
dGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3Qg
ZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFp
bnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRv
IGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KKyAgICBS
ZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwor
ICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCkp
OworCisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9M
YXllclJlY3QobV9wYWludFJlY3QpKTsKK30KKworCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCAyOGU3ZDFk
MGM1Njk2ODAwZjNkNjIxMjQwOGRkOGQxOGJjZWRiZWMyLi5lNDc4MThmNjQyMDY2MTczMTdmZTk1
YTMzMTkxN2M3N2Y4NDBlYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsK
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqKTsKQEAgLTc1LDggKzc1LDEwIEBAIHByb3RlY3RlZDoKIAogICAg
IC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcg
dXBkYXRlKCkuCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCk7Ci0gICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhh
dCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0
ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgogICAgIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICAvLyBQYWludCBjb250
ZW50cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVu
dFJlY3QuCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCkBA
IC05Myw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwg
aW50KSBjb25zdDsKICAgICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50KTsKIAot
ICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5k
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVs
ZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAgSW50
UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVuIHBy
ZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVwcmVzZW50cyB0
aGUgYXJlYQogICAgIC8vIG9mIHRoZSBsYXllciB0aGF0IGlzIGFjdHVhbGx5IHJlLXBhaW50ZWQg
YnkgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWM5M2YxNjhk
YTE0ZWE0MWUzYzE2ZGY2ZDdjNDliZWU0NTEzZWFjZS4uN2JlYzdjMGExODAwM2RjOTFlMWQ0Y2Jh
YWRkZTlkM2IyZDQxZmVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00
MCwxMSArNDAsNjEgQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJWaWRlb0ZyYW1lUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgotI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVmlkZW9MYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkKKyAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV9tYXBwZWRCdWZmZXIoMCkK
K3sKK30KKworVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0
dXJlKCkKK3sKKyAgICBBU1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKK30KKwordm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBJ
bnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKworICAgIEV4dGVuc2lvbnMz
RENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0q
Pihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBk
aW1lbnNpb25zLmhlaWdodCgpLCBtX3RleHR1cmUtPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKwor
ICAgIGlmICghbV9tYXBwZWRCdWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBU
ZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoZGltZW5zaW9ucywgbV90ZXh0dXJlLT5mb3Jt
YXQoKSk7CisgICAgICAgIG1fYnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFtidWZm
ZXJTaXplXSk7CisgICAgfQorCisgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1cmUoY29udGV4
dCwgYWxsb2NhdG9yKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjpkYXRhUmVjdChjb25zdCB2b2lkKiBkYXRhKQoreworICAgIHNpemVfdCBidWZmZXJTaXpl
ID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZS0+c2l6ZSgpLCBtX3Rl
eHR1cmUtPmZvcm1hdCgpKTsKKworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikKKyAgICAgICAgbWVt
Y3B5KG1fbWFwcGVkQnVmZmVyLCBkYXRhLCBidWZmZXJTaXplKTsKKyAgICBlbHNlCisgICAgICAg
IG1lbWNweShtX2J1ZmZlci5nZXQoKSwgZGF0YSwgYnVmZmVyU2l6ZSk7Cit9CisKK3ZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50
UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZS0+dGV4dHVyZUlk
KCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBpZiAobV9tYXBwZWRCdWZmZXIpIHsK
KyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgICAg
IEdMQyhjb250ZXh0LCBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtX21h
cHBlZEJ1ZmZlcikpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IDA7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gbV90ZXh0dXJlLT5zaXplKCk7CisgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0
KCksIG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCBtX2J1ZmZlci5nZXQoKSkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIH0KK30K
KwogUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92
aWRlcikKIHsKQEAgLTU4LDYgKzEwOCw3IEBAIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXll
ckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIFZpZGVvRnJhbWVQcm92CiAgICAg
LCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICwgbV9wbGFuZXMoMCkKICAgICAsIG1fbmF0aXZl
VGV4dHVyZUlkKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CiB9CiAKQEAgLTc1LDE3ICsxMjYsMTkg
QEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogewogICAgIExh
eWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNs
ZWFyKCk7CisgICAgICAgIG1fdGV4dHVyZXNbaV0uY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CisgICAgbV9mcmFtZSA9IDA7CisKICAg
ICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5ICYmIHRleHR1cmVzVmFsaWQo
KSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsg
cGxhbmUrKykgewotICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNb
cGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXgg
PSBtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwogICAgICAgICAgICAgaWYgKCF0ZXgtPnJl
c2VydmUodGV4LT5zaXplKCksIHRleC0+Zm9ybWF0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9z
a2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIzLDggKzE3Niwx
MCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBub3QgYWxsb2Nh
dGVkIGFscmVhZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJlcyB0aGF0IGFyZSB0aGUg
d3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlmIChmcmFtZS0+cGxhbmVzKCkgPiBNYXhQ
bGFuZXMpCisgICAgICAgIENSQVNIKCk7CisKKyAgICAvLyBSZXNlcnZlIHRleHR1cmVzIGZvciBw
bGFuZXMgaWYgdGhleSBhcmUgbm90IHJlc2VydmVkIGFscmVhZHkuCiAgICAgYm9vbCB0ZXh0dXJl
c1Jlc2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1lLCB0ZXh0dXJlRm9ybWF0KTsKICAgICBp
ZiAoIXRleHR1cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwpAQCAt
MTMyLDIxICsxODcsMzQgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KLSAgICBmb3IgKHVuc2ln
bmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAg
ICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwotICAgICAgICBBU1NFUlQo
dGV4dHVyZS5tX3RleHR1cmUpOwotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVy
ZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRh
dGVUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5k
YXRhKHBsYW5lKSk7Ci0gICAgfQotCisgICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIG1fcGxhbmVz
ID0gZnJhbWUtPnBsYW5lcygpOwotICAgIEFTU0VSVChtX3BsYW5lcyA8PSBNYXhQbGFuZXMpOwog
CiAgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm91bmRzKCkpOwog
ICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOworICAgIC8v
IENvcHkgcGxhbmVzIHRvIG1hcHBlZCBidWZmZXJzLgorICAgIGZvciAodW5zaWduZWQgcGxhbmUg
PSAwOyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKQorICAgICAgICBtX3RleHR1
cmVzW3BsYW5lXS0+ZGF0YVJlY3QobV9mcmFtZS0+ZGF0YShwbGFuZSkpOworCisgICAgbV9wcm92
aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5k
bGVyJiBoYW5kbGVyKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsK
KyAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIG1fdGV4dHVyZXNbcGxhbmVdLT52aXNp
YmxlU2l6ZSgpKTsKKyAgICAgICAgaGFuZGxlci5oYW5kbGUobV90ZXh0dXJlc1twbGFuZV0uZ2V0
KCksIHJlY3QsIHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTU3LDExICsyMjUsMTEgQEAg
dm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxh
eWVyKQogICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyhtX3NraXBzRHJhdyk7CiAgICAgdmlk
ZW9MYXllci0+c2V0RnJhbWVGb3JtYXQobV9mcmFtZUZvcm1hdCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fcGxhbmVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ld
Lm1fdGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0pIHsKICAgICAgICAgICAg
IHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90ZXh0dXJlc1tpXS5t
X3RleHR1cmUtPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS0+c2l6ZSgpLCBt
X3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUpOworICAgICAgICB2aWRlb0xheWVyLT5zZXRUZXh0
dXJlKGksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNb
aV0tPnRleHR1cmUoKS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLT52aXNpYmxlU2l6ZSgpKTsKICAg
ICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFuZXM7IGkgPCBNYXhQbGFuZXM7ICsraSkK
ICAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCAwLCBJbnRTaXplKCksIEludFNpemUo
KSk7CkBAIC0xNzIsMTAgKzI0MCw4IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpz
ZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKICAgICBpZiAoaG9zdCAm
JiBsYXllclRyZWVIb3N0KCkgIT0gaG9zdCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTWF4UGxhbmVzOyArK2kpIHsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV92aXNp
YmxlU2l6ZSA9IEludFNpemUoKTsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJl
ID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkp
OwotICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7
ICsraSkKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0gPSBVcGRhdGVyVGV4dHVyZTo6Y3JlYXRl
KE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7
CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChob3N0KTsKQEAg
LTE5OSw4ICsyNjUsMTAgQEAgR0MzRGVudW0gVmlkZW9MYXllckNocm9taXVtOjpkZXRlcm1pbmVU
ZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnIKIAogYm9vbCBWaWRlb0xh
eWVyQ2hyb21pdW06OnRleHR1cmVzVmFsaWQoKQogeworICAgIEFTU0VSVChsYXllclRyZWVIb3N0
KCkpOworCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBs
YW5lKyspIHsKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVd
Lm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVy
ZXNbcGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgIGlmICghdGV4LT5pc1ZhbGlkKHRleC0+c2l6
ZSgpLCB0ZXgtPmZvcm1hdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0yMTcsMTkgKzI4NSwyMCBAQCBib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1
cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0RlbgogCiAgICAgZm9yICh1
bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CiAg
ICAgICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1
cmVTaXplKHBsYW5lKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCkpOwogCiAgICAgICAgIC8vIElm
IHRoZSByZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFyZ2Ugb2YgYSB0ZXh0dXJlLCByZXR1
cm4gZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQg
bGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KICAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUu
aXNaZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUg
fHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90
ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX3RleHR1
cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFRleHR1cmVTaXplKQotICAg
ICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxl
U2l6ZShmcmFtZSwgcGxhbmUpOworICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0tPnRleHR1
cmUoKS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpIHsKKyAgICAgICAgICAgIEludFNp
emUgdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKKyAgICAg
ICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5zZXRWaXNpYmxlU2l6ZSh2aXNpYmxlU2l6ZSk7Cisg
ICAgICAgIH0KIAotICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnJlc2VydmUo
cmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CisgICAgICAgIG1fdGV4dHVyZXNb
cGxhbmVdLT50ZXh0dXJlKCktPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZv
cm1hdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNTksMjggKzMyOCw2IEBAIElu
dFNpemUgVmlkZW9MYXllckNocm9taXVtOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9G
cmFtZUNocm9taXVtKiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZp
c2libGVIZWlnaHQpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
LCBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdAotewotICAgIEFTU0VS
VChjb250ZXh0KTsKLSAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotCi0gICAgdGV4dHVy
ZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KLSAgICBHQzNE
ZW51bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7Ci0gICAgSW50U2l6ZSBk
aW1lbnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKLQotICAgIHZvaWQqIG1lbSA9
IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpKS0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIGZv
cm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9t
aXVtOjpXUklURV9PTkxZKTsKLSAgICBpZiAobWVtKSB7Ci0gICAgICAgIG1lbWNweShtZW0sIGRh
dGEsIGRpbWVuc2lvbnMud2lkdGgoKSAqIGRpbWVuc2lvbnMuaGVpZ2h0KCkpOwotICAgICAgICBH
TEMoY29udGV4dCwgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkpLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtZW0pKTsKLSAgICB9
IGVsc2UgewotICAgICAgICAvLyBJZiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0gZmFpbHMsIHRo
ZW4gZG8gdGhlIHNsb3dlciB0ZXhTdWJJbWFnZTJECi0gICAgICAgIC8vIHVwbG9hZC4gVGhpcyBk
b2VzIHR3aWNlIHRoZSBjb3BpZXMgYXMgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBvbmUKLSAg
ICAgICAgLy8gaW4gdGhlIGNvbW1hbmQgYnVmZmVyIGFuZCBhbm90aGVyIHRvIHRoZSB0ZXh0dXJl
LgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNp
b25zLmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBk
YXRhKSk7Ci0gICAgfQotfQotCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVsZWFzZVByb3Zp
ZGVyKCkKIHsKICAgICBtX3Byb3ZpZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgK
aW5kZXggNTE2YzhkMzg0N2MyYWRiNjRjNWJiZWZiN2M5OWNhYjVmNWFmYWJhMy4uMzUxZjhmOGQx
NTYxMzE3MjBmM2U2YjM4NGViMzQyZjgwNzRlNTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmgKQEAgLTQzLDYgKzQzLDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIg
dGhhdCBjb250YWlucyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0g
OiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1
cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUodGV4dHVyZSkpOworICAgICAgICB9CisKKyAg
ICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAg
ICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKyAgICAgICAgdm9pZCBkYXRhUmVjdChjb25zdCB2b2lkKik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIHZvaWQgc2V0Vmlz
aWJsZVNpemUoSW50U2l6ZSYgc2l6ZSkgeyBtX3Zpc2libGVTaXplID0gc2l6ZTsgfQorICAgICAg
ICBJbnRTaXplJiB2aXNpYmxlU2l6ZSgpIHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKKworICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVy
ZTsKKyAgICAgICAgSW50U2l6ZSBtX3Zpc2libGVTaXplOworICAgICAgICB1aW50OF90KiBtX21h
cHBlZEJ1ZmZlcjsKKyAgICAgICAgT3duQXJyYXlQdHI8dWludDhfdD4gbV9idWZmZXI7CisgICAg
fTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEND
TGF5ZXJEZWxlZ2F0ZSogPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZpZGVvRnJhbWVQcm92aWRlciogPSAwKTsKQEAgLTUwLDcgKzc3LDkgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xh
eWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcmVsZWFzZVByb3ZpZGVy
KCk7CkBAIC02MywxOCArOTIsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjbGVh
bnVwUmVzb3VyY2VzKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RydWN0IFRleHR1cmUgewotICAgICAg
ICBJbnRTaXplIG1fdmlzaWJsZVNpemU7Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4g
bV90ZXh0dXJlOwotICAgIH07Ci0KICAgICBWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVn
YXRlKiwgVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAKICAgICBzdGF0aWMgR0MzRGVudW0gZGV0ZXJt
aW5lVGV4dHVyZUZvcm1hdChjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qKTsKICAgICBzdGF0aWMg
SW50U2l6ZSBjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5z
aWduZWQgcGxhbmUpOwogICAgIGJvb2wgdGV4dHVyZXNWYWxpZCgpOwogICAgIGJvb2wgcmVzZXJ2
ZVRleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIEdDM0RlbnVtIHRleHR1cmVGb3Jt
YXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBUZXh0dXJlJiwgY29uc3Qgdm9pZCopIGNvbnN0OwogCiAgICAgdm9pZCByZXNl
dEZyYW1lUGFyYW1ldGVycygpOwogCkBAIC04MywxMiArMTA2LDE0IEBAIHByaXZhdGU6CiAgICAg
VmlkZW9GcmFtZVByb3ZpZGVyKiBtX3Byb3ZpZGVyOwogCiAgICAgZW51bSB7IE1heFBsYW5lcyA9
IDMgfTsKLSAgICBUZXh0dXJlIG1fdGV4dHVyZXNbTWF4UGxhbmVzXTsKKyAgICBPd25QdHI8VXBk
YXRlclRleHR1cmU+IG1fdGV4dHVyZXNbTWF4UGxhbmVzXTsKICAgICB1bnNpZ25lZCBtX3BsYW5l
czsKIAogICAgIHVuc2lnbmVkIG1fbmF0aXZlVGV4dHVyZUlkOwogICAgIEludFNpemUgbV9uYXRp
dmVUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIG1fbmF0aXZlVGV4dHVyZVZpc2libGVTaXplOwor
CisgICAgVmlkZW9GcmFtZUNocm9taXVtKiBtX2ZyYW1lOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZGViOGM5NDc0MjJhMTNlMWYxNzQ1ZGFhZjQ2MzgwYTgw
M2ZiZDY1ZC4uM2Y0YjA1YjZhNDk3MmE0ZDU2ZTdmZWQxYjRiYWM5NzIzMjg0OTc4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC0zOSw5ICszOSwyNCBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDog
bV9sYXllcihsYXllcikKK3sKK30KKworV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAq
LykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQpOwor
fQorCiBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpj
cmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwpAQCAtNTIsNiArNjcsNyBAQCBXZWJH
TExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVn
YXRlKQogICAgICwgbV90ZXh0dXJlQ2hhbmdlZCh0cnVlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
ZChmYWxzZSkKICAgICAsIG1fZHJhd2luZ0J1ZmZlcigwKQorICAgICwgbV91cGRhdGVyVGV4dHVy
ZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMpKQogewogfQogCkBAIC02Niw3ICs4Miw3IEBA
IGJvb2wgV2ViR0xMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVy
biAoY29udGV4dCgpICYmIGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKTsKIH0KIAotdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogcmVuZGVyZXJDb250ZXh0KQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTk1LDYgKzExMSwxMSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAg
IH0KIH0KIAordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVy
LmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSk7Cit9
CisKIGJvb2wgV2ViR0xMYXllckNocm9taXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKIHsKICAgICBpZiAobV90ZXh0dXJlVXBkYXRlZCB8
fCAhbGF5ZXJSZW5kZXJlckNvbnRleHQoKSB8fCAhZHJhd3NDb250ZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDYzNzRiOWVmNmIxMTdhZDIzNTVhMWZhZGI2OWRkYjQxMDdh
NjkzMTAuLjU0YjI3ZDQ3NjY1NTExZDcwM2ZlNjY2YWFiM2Q1YzFiY2FiZjZkZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJDYW52
YXNMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgorI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSwx
MiArNDYsMzAgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEg
TGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9taXVt
IDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0
ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShX
ZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAg
ICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQg
VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKik7CisKKyAgICAgICAgV2ViR0xMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJH
TExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7CiAKICAgICB2aXJ0
dWFsIH5XZWJHTExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgYm9vbCBwYWludFJlbmRl
cmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CiAKQEAgLTcxLDYgKzkwLDggQEAgcHJp
dmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNhdXNlIHRoZSBE
cmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJlZmVyZW5jZSB0byB0aGUgV2Vi
R0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKKwor
ICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDI3ZDk1NmE3YzdhZmJkMDk1ZGI5NDVi
OTM0YTE2NmVmYTU1ZjM3NGYuLmM2NTg0NTI4YzgwZDMwM2VhNWVhNjY2MDUwZjViNjlhZGY2N2Uz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCkBAIC00OCw2ICs0OSw1MiBAQCBib29s
IENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKICAgICBy
ZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAorQ0NMYXllclRyZWVIb3N0OjpO
ZWVkUmVzb3VyY2VIYW5kbGVyOjpOZWVkUmVzb3VyY2VIYW5kbGVyKCkKKyAgICA6IG1fcmVzb3Vy
Y2VzKDApCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6fk5l
ZWRSZXNvdXJjZUhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6TmVlZFJl
c291cmNlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKQoreworICAgIGlmICh0ZXh0dXJlLT5uZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAg
ICAgbV9yZXNvdXJjZXMrKzsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VI
YW5kbGVyOjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkK
KyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpQ
cmVwYXJlUmVzb3VyY2VIYW5kbGVyOjp+UHJlcGFyZVJlc291cmNlSGFuZGxlcigpCit7Cit9CisK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQ
cmVwYXJlUmVjdCgpKQorICAgICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChtX2NvbnRleHQsIG1f
YWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6
UGFpbnRIYW5kbGVyOjpQYWludEhhbmRsZXIoQ0NQcm94eSogcHJveHkpCisgICAgOiBtX3Byb3h5
KHByb3h5KQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6flBhaW50SGFu
ZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT5wYWlu
dENvbnRlbnRzUmVjdChzb3VyY2VSZWN0KTsKKyAgICBtX3Byb3h5LT51cGRhdGUodGV4dHVyZSwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4g
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+
IGxheWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0
dGluZ3MpKTsKQEAgLTMxNCw3ICszNjEsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9z
aXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQo
KSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7
CiAgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzIyLDEyICszNjks
MTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdw
b3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJz
KHJvb3RMYXllcigpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUocm9vdExheWVyKCkpOwogfQogCi12
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSog
cm9vdExheWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVycyIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBh
cmVUb1VwZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0zMzYs
MjQgKzM4Myw3NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKICAgICBJbnRSZWN0IHJvb3RDbGlwUmVjdChJbnRQb2ludCgpLCB2
aWV3cG9ydFNpemUoKSk7CiAgICAgcm9vdExheWVyLT5zZXRDbGlwUmVjdChyb290Q2xpcFJlY3Qp
OwogCi0gICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyB3YXNuJ3QgY2FsbGVkIGFmdGVyCi0gICAgLy8gdXBkYXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRh
dGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0
ZUxpc3Quc2l6ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAg
Ly8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgY29tbWl0Q29tcGxldGUgd2Fzbid0IGNhbGxlZCBhZnRl
cgorICAgIC8vIHByZXBhcmVUb1VwZGF0ZS4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5n
IGF0IGFueSBnaXZlbiB0aW1lLgorICAgIEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dC5zaXplKCkgJiYgIW1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSk7CisgICAgbV9yZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogcm9vdFJlbmRlclN1cmZhY2UgPSByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAg
ICByb290UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJS
ZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICAgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlOjpjYWxjRHJhd0V0YyIsIHRoaXMs
IDApOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFj
ZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6
ZSk7CisgICAgfQorCisgICAgYXBwZW5kVmlzaWJsZUxheWVycyhtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCBtX2xheWVyVXBkYXRlTGlzdCk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0g
bV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllcklu
ZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3Rb
bGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZkRpcnR5
KCk7CisgICAgfQorfQorCitib29sIENDTGF5ZXJUcmVlSG9zdDo6bmVlZHNDb21wb3NpdG9yUmVz
b3VyY2VzKCkKK3sKKyAgICBOZWVkUmVzb3VyY2VIYW5kbGVyIGhhbmRsZXI7CisgICAgZm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICByZXR1cm4gaGFuZGxlci5yZXNvdXJj
ZXMoKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0
b3JSZXNvdXJjZXMiLCB0aGlzLCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhhbmRs
ZXIoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhh
bmRsZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygpCit7Cisg
ICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZpZXdwb3J0
U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50cyhy
b290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0OjpwYWludENvbnRlbnRzIiwgdGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4
ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXll
ckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxp
c3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0
eSgpOworCisgICAgICAgIFBhaW50SGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOworICAg
ICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICB9Cit9
CiAKLSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFsIGxheWVycywgdGhlc2UgY29uZGl0
aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB3aGlsZSBjcmVhdGluZyB0aGUg
cmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8gRm9yIG1hc2tzIGFuZCByZXBsaWNh
cyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVjayB0aGVtIGhlcmUuCisgICAgaWYg
KGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5vcGFjaXR5KCkgfHwgIWxheWVy
LT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlTGlzdC5hcHBl
bmQobGF5ZXIpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGlj
YUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShM
YXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkK
IHsKICAgICAvLyBOb3RlOiBNYXNrcyBhbmQgcmVwbGljYXMgb25seSBleGlzdCBmb3IgbGF5ZXJz
IHRoYXQgb3duIHJlbmRlciBzdXJmYWNlcy4gSWYgd2UgcmVhY2ggdGhpcyBwb2ludAogICAgIC8v
IGluIGNvZGUsIHdlIGFscmVhZHkga25vdyB0aGF0IGF0IGxlYXN0IHNvbWV0aGluZyB3aWxsIGJl
IGRyYXduIGludG8gdGhpcyByZW5kZXIgc3VyZmFjZSwgc28gdGhlCkBAIC0zNjIsMzMgKzQ2Miwz
MyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1
cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkt
PnNldExheWVyVHJlZUhvc3QodGhpcyk7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFz
a0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJT
dXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICByZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBhcHBlbmRW
aXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRlTGlzdCk7
CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3VyZmFj
ZUxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKICAgICBpZiAocmVwbGljYUxheWVyKSB7CiAKICAgICAg
ICAgcmVwbGljYUxheWVyLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICByZXBsaWNh
TGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXll
cihyZXBsaWNhTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5z
ZXRMYXllclRyZWVIb3N0KHRoaXMpOwogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXll
ci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICAgICAgcmVwbGljYUxh
eWVyLT5tYXNrTGF5ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgICAgIGFw
cGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsK
ICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7Ci0gICAgZm9yIChp
bnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJm
YWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0q
IHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4
XS5nZXQoKTsKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Cisg
ICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VV
cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJT
dXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNl
dExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBs
aWNhRm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAg
ICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXgg
PCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKQEAgLTQwNCw0OSArNTA0LDI5IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0
JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQobGF5ZXItPm9wYWNp
dHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpOwog
Ci0gICAgICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgICAg
IGFwcGVuZFZpc2libGVMYXllcihsYXllciwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXgg
PSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJ
bmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSBtX3Vw
ZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7
Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1
cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwotCi0gICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpKQotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIo
KS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLQotICAgICAg
ICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewotICAgICAgICAgICAg
cmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHJl
bmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQotICAgICAgICAg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZh
Y2UtPmxheWVyTGlzdCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBs
YXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgICAg
ICBMYXllckNocm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKLQot
ICAgICAgICAgICAgaWYgKENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRy
aWJ1dGVzVG9UYXJnZXQ8TGF5ZXJDaHJvbWl1bT4obGF5ZXIsIHJlbmRlclN1cmZhY2VMYXllci0+
aWQoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9Cisg
ICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxh
eWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBs
YXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXll
ci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICB9CiB9CiAKIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUoKQogewotICAgIGZvciAoc2l6ZV90
IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fdXBkYXRlTGlzdC5zaXplKCk7ICsr
c3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVM
aXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgbV9sYXllclVwZGF0ZUxpc3QuY2xlYXIoKTsK
KworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgeworICAgICAgICBM
YXllckNocm9taXVtKiBsYXllciA9IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUlu
ZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAg
ICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQotICAgIG1fdXBkYXRlTGlz
dC5jbGVhcigpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxB
bmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggYWFhZDE0
MjI5ZDM1MTBlZTE5MTAyMWM3NjRjNzViNGZiNDczYWI1NS4uYzMyZTIxMGJmYTQ3ZjhmYTlhYjEx
NTUxODAzYzJlZGFiODdjYzllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQ1
LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiBjbGFzcyBUZXh0
dXJlQWxsb2NhdG9yOwpAQCAtNzQsNyArNzMsOCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAg
ICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZv
cm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCi0gICAgICAg
ICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkgeyB9CisgICAgICAgICAgICAsIHBlclRpbGVQ
YWludGluZyhmYWxzZSkKKyAgICAgICAgICAgICwgZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkg
eyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9m
ZnNjcmVlbjsKQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgIGJvb2wg
c2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICBib29s
IHBlclRpbGVQYWludGluZzsKKyAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiAv
LyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGll
cyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE4Niw5ICsxODcsMTIgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwogCi0gICAgdm9p
ZCB1cGRhdGVMYXllcnMoKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZSgpOworICAgIGJvb2wg
bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCk7CisgICAgdm9pZCBwcmVwYXJlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lk
IHBhaW50Q29udGVudHMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZv
aWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAg
dm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9w
UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKQEAgLTE5OCwxMiArMjAyLDUwIEBAIHBy
b3RlY3RlZDoKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBO
ZWVkUmVzb3VyY2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIg
eworICAgIHB1YmxpYzoKKyAgICAgICAgTmVlZFJlc291cmNlSGFuZGxlcigpOworICAgICAgICB2
aXJ0dWFsIH5OZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIGludCByZXNvdXJjZXMo
KSB7IHJldHVybiBtX3Jlc291cmNlczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1f
cmVzb3VyY2VzOworICAgIH07CisKKyAgICBjbGFzcyBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgUHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKKyAgICAgICAgdmlydHVhbCB+UHJlcGFyZVJlc291cmNlSGFuZGxlcigpOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAg
ICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIH07CisKKyAgICBjbGFzcyBQ
YWludEhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAg
cHVibGljOgorICAgICAgICBQYWludEhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFs
IH5QYWludEhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3By
b3h5OworICAgIH07CisKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBMYXllckxpc3Q7CiAKLSAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxp
c3QmKTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVy
Q2hyb21pdW0qKTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiwg
TGF5ZXJMaXN0Jik7CisgICAgdm9pZCBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZh
Y2UoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBhcHBl
bmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qs
IExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKik7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSopOworICAg
IHZvaWQgcGFpbnRDb250ZW50cyhMYXllckNocm9taXVtKik7CiAgICAgdm9pZCBjbGVhclBlbmRp
bmdVcGRhdGUoKTsKIAogICAgIGludCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwpAQCAtMjE5LDcg
KzI2MSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVy
OwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwog
Ci0gICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlzdDsKKyAgICBMYXllckxpc3QgbV9yZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdDsKKyAgICBMYXllckxpc3QgbV9sYXllclVwZGF0ZUxpc3Q7CiAKICAgICBD
Q1NldHRpbmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBiYjM3ODAxNDdiMTZjMjZi
NzVhN2NjZDIyYWE4YjhmZTg0ZTc2YmJkLi5lZWU2ZDE4YzFlODAwOGQ4M2Y5NTNjYWI0NWJmNGQ0
NDE2OWU0OGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIENDUHJv
eHlfaAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC03OSw2ICs4MCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSA9IDA7IC8vIE11c3QgYmUgY2FsbGVkIGJl
Zm9yZSB1c2luZyB0aGUgcHJveHkuCiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7IC8vIE11
c3QgYmUgY2FsbGVkIGJlZm9yZSBkZWxldGluZyB0aGUgcHJveHkuCiAKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworCiAgICAgLy8gRGVidWcg
aG9va3MKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGJvb2wgaXNNYWluVGhyZWFkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDcyYmVjMmE3MTY2NGFm
NDNjZDY0ZDAxNGQyOGI4NDI2NTA5NWIyMDMuLjkyNzMzNzBlNTI3MzI5NDUyMjgxY2E5YjljOWJh
YmY1NzRmNTNiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBA
IC0xNDcsMTUgKzE0NywxOSBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQW5p
bWF0ZSgpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NF
UlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gUHJlcGFyZSBjb21wb3NpdG9y
IHJlc291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291
cmNlcygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3Vy
Y2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWlu
dENvbnRlbnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAgICB7CiAgICAgICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5iZWdpbkNvbW1pdCgpOwotCisgICAgICAgIHdoaWxlIChtX3RleHR1cmVVcGRhdGVyLnVw
ZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwu
Z2V0KCkpOwogCkBAIC0yMDgsNiArMjEyLDE0IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RvcCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAg
aWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykK
KyAgICAgICAgbV90ZXh0dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOworICAgIGVsc2UKKyAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogLy8gQ2Fs
bGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRn
ZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9z
aXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMjcyLDcgKzI4NCw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CiAKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAKICAgICBkb0NvbW1pdCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDBkNWE0YTJkOGE1MTZiMWQ3
YmNmOTkxYTk5ZTFjNzg3ODk5NDNlYzUuLjc4M2E4ZGI4NTc0MDEyOGE0ZDYwMDllYjU4MTg0ZTMw
Y2QwMTdkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJjYy9DQ0NvbXBsZXRpb25FdmVudC5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCisjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVu
dGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KQEAgLTgyLDYgKzg0LDggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZ3JhcGhpY3NDb250ZXh0TG9zdDsKICAgICBpbnQgbV90aW1lc1JlY3JlYXRl
U2hvdWxkRmFpbDsgLy8gVXNlZCBkdXJpbmcgdGVzdGluZy4KICAgICBib29sIG1fbmV4dEZyYW1l
SXNOZXdseUNvbW1pdHRlZEZyYW1lOworCisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3RleHR1cmVV
cGRhdGVyOwogfTsKIAogLy8gRm9yIHVzZSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNhc2UuIElu
IGRlYnVnIGJ1aWxkcywgaXQgcHJldGVuZHMgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggODc0NWM0ZWEwYTcxMGJkZTE4ZWRlMTgyMGYzMTRmZGI4Y2M4NzJh
Yi4uYTYxYzNiYjMzZjZlMjljYmVmYWI3MzAwMjUwODVkMTIwNzUzNmMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgpAQCAtMzcsMTEgKzM4LDggQEAgdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQ1RleHR1cmVVcGRhdGVyOjpD
Q1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKLSAgICA6IG1fYWxs
b2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fZW50cnlJbmRleCgwKQorQ0NUZXh0dXJlVXBkYXRl
cjo6Q0NUZXh0dXJlVXBkYXRlcigpCiB7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KIAog
Q0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4dHVyZVVwZGF0ZXIoKQpAQCAtNjYsMjMgKzY0LDIwIEBA
IGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogCiBib29sIEND
VGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90
IGNvdW50KQogewotICAgIHNpemVfdCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3Vu
dCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAgZm9yICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4
OyArK21fZW50cnlJbmRleCkgewotICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJp
ZXNbbV9lbnRyeUluZGV4XTsKLSAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNv
bnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3Qp
OwotICAgIH0KKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIW1fZW50cmllcy5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobWF4SW5kZXggPCBt
X2VudHJpZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgVXBkYXRlRW50
cnkmIGVudHJ5ID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51
cGRhdGVSZWN0KGNvbnRleHQsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7
CisgICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CisgICAgfQogCi0gICAgLy8gSWYgbm8g
ZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCi0gICAgY2xlYXIoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgPiAwOwogfQogCiB2b2lk
IENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKIHsKLSAgICBtX2VudHJ5SW5kZXggPSAwOwogICAg
IG1fZW50cmllcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5k
ZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIzMC4uYWI2NTllY2VlYWQ2
ZGNjZjU2YmQ4MzA4YTg2NGQ4MzRkMGVjODg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaApAQCAtMzMsMTEgKzMzLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NUZXh0
dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgQ0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2Nh
dG9yKik7CisgICAgQ0NUZXh0dXJlVXBkYXRlcigpOwogICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7
CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwpAQCAtNDksOCAr
NDgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IoKSB7IHJldHVybiBtX2FsbG9jYXRvcjsgfQotCiBwcml2YXRlOgogICAg
IHN0cnVjdCBVcGRhdGVFbnRyeSB7CiAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIG1fdGV4dHVyZTsKQEAgLTU4LDggKzU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgSW50UmVj
dCBtX2Rlc3RSZWN0OwogICAgIH07CiAKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRv
cjsKLSAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9l
bnRyaWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA4ZTc3NDI1ZTQ0
MGE0ZWRjZjI5ZjI2NWFjM2U5ZWVmZGJlMjE1ZDg3Li43NGU3M2NhM2VjOTBkODgxNjk4YzIyZjU4
MTU0ZmRjOGE1ODU1ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjg1LDYg
KzI4NSwyMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fc3RhcnRlZCA9IGZh
bHNlOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRl
IiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9z
dGFydGVkKTsKKworICAgIE93blB0cjxVcGRhdGVFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcg
VXBkYXRlRW50cnkpOworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5
LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVz
dFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwg
ZW50cnkucmVsZWFzZSgpKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVu
ZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJl
YWQiLCB0aGlzLCAwKTsKQEAgLTM3Myw3ICszODcsMTcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5U
aW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsK
IAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVI
b3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKKworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRz
Q29tcG9zaXRvclJlc291cmNlcygpKSB7CisgICAgICAgIC8vIEluaXRpYWxpemUgY29tcG9zaXRv
ciByZXNvdXJjZXMgcmVxdWlyZSBmb3IgZnJhbWUuCisgICAgICAgIFRSQUNFX0VWRU5UKCJhbGxv
Y2F0ZSIsIHRoaXMsIDApOworICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwor
ICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFk
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBjb21wbGV0
aW9uLndhaXQoKTsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMo
KTsKIAogICAgIC8vIEJlZm9yZSBhcHBseWluZyBzY3JvbGxzIGFuZCBjYWxsaW5nIGFuaW1hdGUs
IHdlIHNldCBtX2FuaW1hdGVSZXF1ZXN0ZWQgdG8gZmFsc2UuCiAgICAgLy8gSWYgaXQgaXMgdHJ1
ZSBub3csIGl0IG1lYW5zIHNldE5lZWRBbmltYXRlIHdhcyBjYWxsZWQgYWdhaW4uIENhbGwgc2V0
TmVlZHNDb21taXQKQEAgLTM5NywxMyArNDIxLDM3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGlt
CiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVt
YmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpwcmVwYXJl
RnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24p
Cit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNl
c09uT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKKyAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVD
b21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgY29tcGxl
dGlvbi0+c2lnbmFsKCk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9u
SW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSkKK3sKKyAgICBBU1NFUlQo
IW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5hcHBlbmQoZW50cnktPm1fdGV4
dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOworfQorCiB2b2lk
IENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFt
X2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRo
cmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VS
VChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1f
bGF5ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTQxMSwzNiArNDU5LDI4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
CiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247
CiAKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1Rl
eHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkKTsKLQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29t
cGxldGUoKTsKIH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVz
KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX3RleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLmhhc01vcmVVcGRhdGVzKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
LCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgVXBkYXRlc1BlckZyYW1lID0gOTk5OTk7Ci0gICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CisgICAgbV90ZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRh
dGVzUGVyRnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNv
bW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkLmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCk7CiAKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC5jbGVhcigpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIo
KTsKIAogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuaAppbmRleCAxZGYzNzQ2YzVkYzAxMzRhMzI0ZTRhYzg2NDIzMDQ1MjkzM2E5
OGZiLi5mMTI0NGMyYTE5Y2RmNGIyY2M5MzFlYTU2NjdjZjgwZDRiZjg2MTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1Nj
aGVkdWxlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjIsNiArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1
ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpOwpAQCAtNzgsNiArODAsMTIgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwog
CisgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogbV90ZXh0dXJlOworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAg
ICAgSW50UmVjdCBtX2Rlc3RSZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0
aHJlYWQKICAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBk
b3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwog
ICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC05Miw2ICsxMDAsOCBAQCBwcml2
YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5G
cmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJh
bWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6
OlRhc2sqKik7CisgICAgdm9pZCBwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFz
c093blB0cjxVcGRhdGVFbnRyeT4pOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbklt
cGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKQEAgLTEyNywxMCArMTM3LDExIEBAIHBy
aXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBh
IGNvbW1pdCB0byBjb21wbGV0ZS4KICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhl
IG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4g
dGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxU
aHJlYWQ7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAppbmRleCBmYjQ3NTYyMjY2NDBhYzZkOGVkZjljMDU5ZDJlZjc5ZGM1NGYyZTY5Li4wZTA5MDMw
Yjk4ZjAxODIzYzQ5ZjllMjg2Yzg3ZTQ0M2RkMWVlMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVk
OgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggNjNmMTNjNGY1MTlhNzQ4NDhiYmZmZjkzNWQ3ZjEx
NTU2NWRhMmIxNS4uNzViM2JlOTMwNjU2Nzk4ZTBiNzEzYjE1MTlhOWY0OWQzMGU5ZDg5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01
MCw2ICs1MCw3IEBAIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBz
ZXR0aW5ncykKICAgICAsIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAs
IG1fc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShm
YWxzZSkKKyAgICAsIG1fZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkKIHsKICAgICBBU1NFUlQo
c2V0dGluZ3MpOwogfQpAQCAtNTA3LDQgKzUwOCw5IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5z
ZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJ
bXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2RlbGF5
VGV4dHVyZVVwZGF0ZXMgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggMmI5YTI1
YzcxODRkNjcxYTI0ZDViNGE2ZTU2MTg5ZTMxMmY0OWI0YS4uN2NhYTQwYjVmZDkxZjZiZWFiNWU4
ZDc1ZTRlZjBhOGEzOWJlMjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTEzMCwxMiArMTMwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1
cmVVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWxheVRleHR1cmVVcGRhdGVzOyB9CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CiAgICAgYm9vbCBtX2Nv
bXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAgICAgYm9vbCBtX3Nob3dGUFNDb3VudGVyOwogICAg
IGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CisgICAgYm9vbCBtX2RlbGF5VGV4dHVyZVVw
ZGF0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBjZjNmMTY5ZThlYmY1YTlkNTZhNGUzZjBlYTJk
ZmRmMjE1ZTQzZDczLi43OWU4YThmYzIwNzI4YzdhYjFhZWU5N2M1YmJkOGMxNjk4YjdiN2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yOTUwLDYg
KzI5NTAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgICAgICBjY1NldHRpbmdzLnJlZnJlc2hSYXRlID0g
ZGVmYXVsdFJlZnJlc2hSYXRlOwogCiAgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBhaW50aW5n
ID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKKyAgICAgICAg
Y2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0dXJl
VXBkYXRlcygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3Jl
YXRlKHRoaXMpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0Ojpj
cmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAzNmZkN2RiZDA3YmRjN2NmMWM4
NjFmZDgyYWViYzJiMDg0YTAzYTMzLi40MzEzZmE1MTRjZWM0YjRjNzE4ODg1YmFmZmIxNzE4MTcz
NDc3ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb250ZW50TGF5
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2lu
Y2x1ZGUgIk1vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgpAQCAtOTIyLDYgKzkyMywxNCBAQCBU
RVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUsIHJ1bk11bHRpVGhyZWFkKQogICAg
IHJ1blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIE1vY2tMYXllckRlbGVnYXRlIDogcHVibGljIEND
TGF5ZXJEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHBy
ZXNlcnZlczNEKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3lu
Y1JlcXVpcmVkKCkgeyB9Cit9OworCiBjbGFzcyBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdh
dGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICBUZXN0T3BhY2l0eUNo
YW5nZUxheWVyRGVsZWdhdGUoQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCkKQEAgLTk0NSwzNyAr
OTU0LDExNiBAQCBwcml2YXRlOgogCiBjbGFzcyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+
IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsgfQorICAg
IGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAg
VGV4dHVyZShDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NP
d25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAgICAgICAgICAgOiBtX3RleHR1
cmUodGV4dHVyZSkKKyAgICAgICAgICAgICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVw
ZGF0ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1
YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0K
KworICAgICAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPm5l
ZWRQcmVwYXJlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3Qg
Ki8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5
ZXIoKS0+cHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIo
KS0+cGFpbnRDb250ZW50c1JlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT51cGRhdGVS
ZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICAgICAgQ29udGVudExheWVy
VGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgICAgIH07CisKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyAqbGF5ZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIo
bGF5ZXIpKTsKKyAgICAgICAgfQogCi0gICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0
dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9Ci0gICAgdm9pZCByZXNldFBhaW50Q29udGVudHND
b3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwgUGFz
c093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1
cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFRleHR1cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOwor
ICAgICAgICB9CiAKLSAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50
OyB9Ci0gICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQor
ICAgICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3Jt
YXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIC8qIHRleHR1cmVGb3JtYXQgKi8pCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXRSR0JBOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8q
IHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1Nj
YWxlICovKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xheWVyLT5wYWludENvbnRlbnRzKCk7
CisgICAgICAgIH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZyogbGF5ZXIoKSB7IHJldHVybiBtX2xheWVyOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBleHBsaWNpdCBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZyogbGF5ZXIpIDogbV9sYXllcihsYXllcikgeyB9CisKKyAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIG1fbGF5ZXI7CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJl
cGFyZVJlY3QpCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoKTsKLSAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyhkZWxlZ2F0ZSwgbmVlZFByZXBhcmVSZWN0KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEND
VGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVV
cGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopCiAgICAgewotICAgICAgICBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsK
LSAgICAgICAgbV91cGRhdGVDb3VudCsrOworICAgICAgICBtX2NvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyID0gQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSh0aGlzKTsKICAgICB9
CisgICAgdmlydHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KKworICAgIHZv
aWQgcGFpbnRDb250ZW50cygpIHsgbV9wYWludENvbnRlbnRzQ291bnQrKzsgfQorICAgIGludCBw
YWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3BhaW50Q29udGVudHNDb3VudDsgfQorCisg
ICAgdm9pZCBwcmVwYXJlUmVjdCgpIHsgbV9wcmVwYXJlUmVjdENvdW50Kys7IH0KKyAgICBpbnQg
cHJlcGFyZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1fcHJlcGFyZVJlY3RDb3VudDsgfQorCisgICAg
dm9pZCBwYWludENvbnRlbnRzUmVjdCgpIHsgbV9wYWludENvbnRlbnRzUmVjdENvdW50Kys7IH0K
KyAgICBpbnQgcGFpbnRDb250ZW50c1JlY3RDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50
c1JlY3RDb3VudDsgfQorCisgICAgdm9pZCB1cGRhdGVSZWN0KCkgeyBtX3VwZGF0ZVJlY3RDb3Vu
dCsrOyB9CisgICAgaW50IHVwZGF0ZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlUmVjdENv
dW50OyB9CisKKyAgICBpbnQgbmVlZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gbV9uZWVkUHJlcGFy
ZVJlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlKQorICAgIGV4cGxpY2l0
IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAq
ZGVsZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0KQogICAgICAgICA6IENvbnRlbnRMYXllckNo
cm9taXVtKGRlbGVnYXRlKQorICAgICAgICAsIG1fbmVlZFByZXBhcmVSZWN0KG5lZWRQcmVwYXJl
UmVjdCkKICAgICAgICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQotICAgICAgICAsIG1fdXBk
YXRlQ291bnQoMCkKKyAgICAgICAgLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkKKyAgICAgICAgLCBt
X3BhaW50Q29udGVudHNSZWN0Q291bnQoMCkKKyAgICAgICAgLCBtX3VwZGF0ZVJlY3RDb3VudCgw
KQogICAgIHsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgfQogCisg
ICAgUmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBtX2NvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyOworICAgIGJvb2wgbV9uZWVkUHJlcGFyZVJlY3Q7CiAgICAgaW50IG1fcGFpbnRD
b250ZW50c0NvdW50OwotICAgIGludCBtX3VwZGF0ZUNvdW50OworICAgIGludCBtX3ByZXBhcmVS
ZWN0Q291bnQ7CisgICAgaW50IG1fcGFpbnRDb250ZW50c1JlY3RDb3VudDsKKyAgICBpbnQgbV91
cGRhdGVSZWN0Q291bnQ7CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFp
bnQgc2hvdWxkIG5vdCBwcmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBk
YXRlZCBkdXJpbmcgY29tbWl0LgpAQCAtOTgzLDcgKzEwNzEsNyBAQCBjbGFzcyBDQ0xheWVyVHJl
ZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKIHB1
YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSgpCiAgICAgICAgIDog
bV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKHRoaXMpCi0gICAgICAgICwgbV91cGRhdGVDaGVj
a0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1f
dGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSkpCisgICAgICAgICwgbV91cGRhdGVDaGVja0xheWVy
KENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fdGVzdE9w
YWNpdHlDaGFuZ2VEZWxlZ2F0ZSwgdHJ1ZSkpCiAgICAgewogICAgIH0KIApAQCAtMTAwMiwxMyAr
MTA5MCwxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7
Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgb25jZS4KKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIG9uY2UuCiAgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50
Q29udGVudHNDb3VudCgpKTsKIAotICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2Yg
dGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBk
YXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBt
X3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENvbnRl
bnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFt
b3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRh
dGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3Vw
ZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8g
dXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8v
IGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1Rf
RVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAg
ICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKIAogICAg
ICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMu
CiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwpAQCAtMTAyNCw0ICsxMTE3LDQ5
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSwgcnVuTXVsdGlUaHJl
YWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCB3aGVuIG5lZWRQcmVwYXJlUmVjdCgpIHJldHVybnMgZmFsc2UuCitjbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RU
ZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCgpCisg
ICAgICAgIDogbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUsIGZhbHNlKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CisKKyAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB7CisgICAgICAg
IGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7
CisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
LgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRz
Q291bnQoKSk7CisKKyAgICAgICAgLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGhhdmUgYmVl
biBjYWxsZWQuCisgICAgICAgIEVYUEVDVF9FUSgwLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBh
cmVSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENv
bnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5
ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0xheWVy
RGVsZWdhdGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc+IG1fdXBkYXRlQ2hlY2tMYXllcjsKK307CisKK1RFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVz
dCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDYzYWE0NTZh
ZDhkOGNjYjNmZTA0ZmFmYzE2MjBiZjBmMjRlNjdmNDMuLjkzY2ZiNTc4ODNhNWYxNTQwYjRjYzk4
ZWE1ODNhOTkxNmIxNmU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsOSArMjcsOSBAQAogI2lu
Y2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
CiAKQEAgLTM4LDIwICszOCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2Ug
ewogCi1jbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9y
IHsKK2NsYXNzIEZha2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJ
bnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
VGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogfTsKIAogY2xhc3MgRmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
VGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkg
OiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQotICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0
cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIH07CiAKICAgICBGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpIHsgfQpAQCAtNjAsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSB7IHJldHVybiBCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVh
bCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJldHVy
biBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXpl
JiwgaW50LCBmbG9hdCkgeyB9CiB9OwogCiBjbGFzcyBGYWtlQ0NUaWxlZExheWVySW1wbCA6IHB1
YmxpYyBDQ1RpbGVkTGF5ZXJJbXBsIHsKQEAgLTk4LDYgKzEwMSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKHJlY3QpOwogICAgIH0KIAor
ICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHsKKyAgICAg
ICAgVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKHJlY3QpOworICAgIH0KKwogICAg
IHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlTWFuYWdlcjsgfQogCiBwcml2YXRlOgpAQCAtMTE5LDEzICsxMjcsMTMgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllcklt
cGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAK
LSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFu
ZGxlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlk
YXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRs
ZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAg
ICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0xMzgs
NyArMTQ2LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAg
IC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKLSAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50
cyhJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2lu
Y2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118710</attachid>
            <date>2011-12-11 13:14:53 -0800</date>
            <delta_ts>2011-12-28 07:29:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111211161452.patch</filename>
            <type>text/plain</type>
            <size>88495</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ4OWE2ZmVhZWMxYWIz
OWZiOWQzOGNjNGJlM2VjZTYzZmFhYTUzYy4uNjdjZDNmOGQ2ZWJmOWFhY2IyM2Y5Nzg4ZmM1ZjBk
Y2FiZjQ4OGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxMS0xMi0xMSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJ
ZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OlRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXI6On5IYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpbkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpX
ZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5
ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OlVwZGF0ZUhh
bmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVy
Ojp+VXBkYXRlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVw
ZGF0ZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVw
ZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZp
c2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZE1h
c2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2V0dGluZ3M6OkNDU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2lu
Z2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5
Ojpjb21taXRJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0
dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1
cmVVcGRhdGVyOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6
Y2xlYXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Omhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0xMi0xMSAgQW5kcmVhcyBL
bGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV0syL05ldHNjYXBlUGx1Z2luOiBJ
bmNvcnJlY3QgbW91c2UgZXZlbnQgY29vcmRpbmF0ZXMgd2hlbiBmcmFtZVNjYWxlRmFjdG9yICE9
IDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZhZWIyNTM2ZWI5N2E0ZmY0YTg4YzM5
MzJmM2ZkZjc5NjRjNjdkYjkuLmRjOTBkZDcxNDA4MzRiNzIwMzY0NDBhNWM0YzNiZDNkNDkyM2Qx
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMTIt
MTEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIFVwbG9hZCB0ZXh0dXJlcyBpbiBwYXJhbGxlbCB3aXRoIHBhaW50aW5nIGNvbnRlbnRz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZGVs
YXlUZXh0dXJlVXBkYXRlcyBzZXR0aW5nIHRoYXQgaXMgdXNlZCBieSBjb21wb3NpdG9yIHRvIGRl
dGVybWluZQorICAgICAgICBpZiB0ZXh0dXJlIHVwbG9hZHMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50
aWwgYWxsIHBhaW50aW5nIGhhcyBjb21wbGV0ZWQuCisgICAgICAgIFVwZGF0ZSB1bml0IHRlc3Rz
OiBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSBhbmQKKyAgICAgICAgVGlsZWRMYXll
ckNocm9taXVtVGVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAg
ICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5n
c0ltcGw6OldlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1w
bDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1w
bC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OmRlbGF5VGV4dHVyZVVwZGF0
ZXMpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJE
ZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRl
OjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6cHJlc2Vy
dmVzM0QpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6bm90aWZ5U3luY1JlcXVp
cmVkKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyOjpvcmllbnRhdGlvbik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxl
ZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OnRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVS
ZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJl
ZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUhhbmRsZXI6OmhhbmRs
ZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRl
eHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAoV1RGOjpURVNUKToKKwogMjAxMS0xMi0wOSAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGZvcndh
cmRpbmcgaGVhZGVycyBmb3IgV2ViTGF5ZXIgQVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBkZDkzMTkxM2Y3MDk3NzYyNjM1
ZmU2NDE5ZDM4NzUxYWZmODYxNzlkLi4zN2JhMzQ2MjU2ZDExMTljZDYxZmU2YmIyN2E2N2MxNzBj
MzNkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0
dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQog
ICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTc3LDcgKzc3
LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
Cit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0
U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsNyArODgsNyBAQCB2b2lkIEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpUZXh0T3B0aW9uIHRleHRP
cHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6
R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhlbFRleHQ7CiAg
ICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMsIHRleHRP
cHRpb24pOwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBjb250
ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250
ZW50c1NjYWxlKTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggOTc1NTIyY2JhYWEzNDE0NzU4
NTZkYjZjYmVkYTMxMmMxNDlkODdiYS4uMTMwZGVkNDczZGZkNTE0NDc1MGNhNGE1YjEzMWFjMDlh
NzBjY2RjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8v
IEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGJpdG1hcC4KIGNs
YXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAg
VGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0
b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxl
ZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CmluZGV4IDgyMjFkZDJlNTIxYmQ2M2ZlMGU2ZjBmOWQ2MjI0ZTM4ZGZiMzQyOTguLmM4MDRkNGNm
MjVjMTJmODJmMDNiYzA4ODYzYjU5NjFmMTE2OGJmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBA
IC04NiwxMCArODYsMTAgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0
IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAgICAgICAgIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1Nj
YWxlKQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLSAg
ICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29u
dGVudFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOworICAgIFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJl
Y3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUpOwogfQogCiB2b2lkIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0
KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggYzMwZjMwNzU1NWJkMzcyMWIxMTRmZmI4YjdiMGQ2Yzg2ZDVmNDQyYi4uNzQ5ODE0
OGQ0YTY3OWY4MTYwOTM3MTgzZGYyMjA4ZTFkMDE2NTk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2
aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9y
bWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2Fs
ZSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlKTsKICAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGIwYzRlMDczOTQ2YmE1ZTUxZTNkYzZhMjUzNzM2YTBlY2EzOGNhY2MuLmU0
MzIzMjYzZWU4M2RmN2ZiZDcyMzk5ZTE2NzEzNzhjZjY5YzI1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVy
VGV4dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXll
cikKK3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0
ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RS
ZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKK30K
KwogUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQpKTsKQEAgLTUyLDYgKzY2LDcg
QEAgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDMKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFz
MkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogQ2FudmFz
TGF5ZXJDaHJvbWl1bSgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VwZGF0
ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY1LDcg
KzgwLDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0
CiAgICAgICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpKTsKIH0KIAot
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBpZiAoIW1fbmVlZHNE
aXNwbGF5IHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODUsNiArMTAw
LDExIEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxz
ZTsKIH0KIAordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5k
bGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSk7
Cit9CisKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpjb250ZW50Q2hhbmdlZCgpCiB7CiAg
ICAgaWYgKGxheWVyVHJlZUhvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgK
aW5kZXggNDU3YmQ1NjRkNzc4ZGFiOTRhYzk5MTEzZjgxZWJmZTc1ZGVmZGQ0Zi4uYmViZTg3YWM4
NzNhMjM1MTk0YWFmNDE1OTJlZTc3MzRkNmIwNWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmgKQEAgLTQzLDE2ICs0MywzNiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsK
IC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENh
bnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1Ymxp
YzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0
ZXJUZXh0dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikp
OworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShD
YW52YXMyRExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0q
IG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+Q2FudmFz
MkRMYXllckNocm9taXVtKCk7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50
Q2hhbmdlZCgpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhbnZhczJETGF5ZXJDaHJvbWl1
bShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7
CisKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDVmYTY3
ODU0YzZiZDdmNTM4MmI1MmIwZWVmYmExMDMxNjZmYzA4ZmUuLjFmM2I2NDRlZTY2YmJkMDc1MTdh
YzQ4NWM5NWNiMjhkZDAxZTIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCkBAIC0zNiw2ICszNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKworQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRl
cikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBhOGZl
ZmYzNDIyYjFiODUzMGI4ZjY4OWZmMmM1NjY3NjYwYmVkNWNmLi5iZTlmZjEzM2NmZTM3NDdlNGY5
NTY3MTM3YzY5NGVlZDhjYmQ4ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCkBAIC0zOSw2ICszOSwxOSBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsK
IC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4KIGNsYXNz
IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKwor
ICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0
dXJlLmdldCgpOyB9CisKKyAgICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0dXJl
KFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0dWFsIH5D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcAppbmRleCAyYTI0NjZkOTEyOWFlYzM2NDA5MzIyOWNiOTM1YWY4
MmQ1MDcyNGI2Li5kZDc0OTY3N2NiNzEyZDA0ZjdkZTIwNTExMDMyY2U3NzM1OTI5ZDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09w
dGlvbigpOwogCkBAIC0xMDksNiArMTA5LDIwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQog
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7Cisg
ICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiBib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RlbGVnYXRl
ICYmIG1fZGVsZWdhdGUtPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJh
d3NDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBiODM0ZTY3
NmJkNjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBmMzgwOWMxLi5jNWU5ZmNjZWJmNDc2ZWI3ZDAyYmM5
ODIyMTcwYjY2NTNhNTEzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAg
LTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21p
dW0oKTsKIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGYyZDdlMmRkZGFhNmZkOTlmYmU2MDNjM2I4ZTM3
M2U5OThhMzM4MzUuLjQyNmQ2OTQyMDQ2YzllMWMzOGFmMmZkODkxZDIwYzhlNGM5MzlhNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTa0NhbnZhcyog
RnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqCiB9IC8vIG5hbWVzcGFjZQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDA2YjYyZDE5OTliNTYyMzUwNDFjYzBkYmIyMjI0OTEw
NTFmOTU5ZWIuLmIyYzE0MDE4YzVlZWY3MzJmM2ExYjBiZjFiZDMxYWNmNWMyNzcwMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
IDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgot
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4p
OwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAppbmRleCA0ZmI5NTc0ZDQ4ZWUwMDI4NzI4ZTkyMmUxNGUzMTY3MDlhNjA0ZGRhLi44NzI5
MTExMmZhMzg4OTQ2MDU5ZmU0ZjY4MmM3ZTgxODkwZTI3ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlTGF5ZXJD
aHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKLSNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIK
QEAgLTQ2LDEwICs0NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5
ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoK
LSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
eworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkK
KyAgICAgICAgICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJl
KQogICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50
c1NjYWxlICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVs
cyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3Vi
SW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBAIC0xNjYsNyArMTY2LDcg
QEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykK
ICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAgICAgbV90
ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1ZmU0ZjI2
NjY4YmRjYzNlMjlmMDRjZmZjZGE4ODJhNzNjMzFlMzI3Li5mNmViYzhhN2U4YjkwNzMxOGNmNTIw
NmM0ZmI0ZTg3ZmFlYTFlMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
aW5kZXggOWM3YTRmOGY0NzkyODlkYTA1OTEzN2I3OWJiMTVkNmJkMTdkNTFlZS4uYzdmY2I0Yzkz
NTRmYjFiYzcxMTYzYzE2ODRmOThmYmYwNDMxYmI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAt
MzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1j
bGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNz
IENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0xNjAsOCArMTYwLDkgQEAgcHVibGljOgogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVk
IGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNU
ZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc1Y2YyOWE4OWUzODllMjc2Nzdi
MTE5MjA2ZWYyOWE0ZTMwMTQ2Li5hZThmNjQ3YjMwZDZmN2U2NDU3YzVjNzkwMzkzZDFiYTMzYzBk
MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OCwxNCArNDgsMTcgQEAg
cHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0g
ICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgp
OyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiAw
OyB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6
IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9CiAKLSAgICBwcml2YXRl
OgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAgICB9Owog
CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNzgsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25lbnQgb3Jk
ZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1hdCBpcyBUZXhlbEZv
cm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgogICAgIHZpcnR1YWwg
U2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9y
bWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICov
LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywg
ZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCBlM2M1YzQ4Zjc5MjBm
ZWVjNzA4ZTRkYWM3YWVmNjRlMjNlOGFhZjAwLi42MDMyNjhhNjJlM2YyZDA0NzA5YjZjZGI2Mjlk
YWJlYzM3NmZjYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiB9CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250
ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFtX25lZWRzRGlzcGxheSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI3N2E5NjljNThjYzNm
NTgzNDU4N2UwNzc4ZmZkMWM2Mjc3ZDY2ZjYuLjE2ZjNmYzFiM2NlODI1NDJmZGY0MDcwNmRhNjA4
ODcyOTM1YzNlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgUGx1Z2luTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1
MzdlMTM3ZThkOGVjNTE4YjkzNGFhNWNkMmQ3MDBjNzRiMTlmZTRiLi5lZTc0NTIzMDQyYmVjMTA3
ODAyMDZjYWRlNDg2YmJkYzYxMmU1YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBj
b250ZW50c1NjYWxlKQordm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAv
KiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2Fs
ZSkKIHsKICAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNv
bnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNv
bnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwogICAgIHBsYXRmb3JtQ29udGV4dC5z
ZXREZWZlcnJlZCh0cnVlKTsKICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZw
bGF0Zm9ybUNvbnRleHQpOwotICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250
ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxl
KTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0NDBmOGIwM2Vh
NGYyNzM5YTk3NTQzODY3YWM3ZWIxNTQwMzBkMGMyLi5hZWZiZmMzZjZhNGEyYTNhYTcxYTViMWZi
NDNlZGVhZjFjYmY2ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwog
ICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDY0MDBiOTgzOGZkZmM0YTFkZTkzZmNjYTQyNWI1MDdi
MmNhZGUxZGUuLmZhMWU5MGRiMmY4NTJmYmE1Njc4NzM3ZTIyYjM4ZjVlMTJjMTE4ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTcyLDE0ICsxNzIsMTQgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVyKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJU
ZXhlbE9wdGlvbiBib3JkZXIKICAgICBtX3RpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0
ZShtX3RpbGVTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIp
CiB7CiAgICAgLy8gSWYgdGhpcyBhc3NlcnQgaXMgaGl0LCBpdCBtZWFucyB0aGF0IHBhaW50Q29u
dGVudHNJZkRpcnR5IGhhc24ndCBiZWVuCiAgICAgLy8gY2FsbGVkIG9uIHRoaXMgbGF5ZXIuIEFu
eSBsYXllciB0aGF0IGlzIHVwZGF0ZWQgc2hvdWxkIGJlIHBhaW50ZWQgZmlyc3QuCiAgICAgQVNT
RVJUKG1fc2tpcHNEcmF3IHx8IG1fdGlsZXIpOwogCiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1
c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGls
ZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3
IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXIgfHwgIW1fdGls
ZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRl
UmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXIgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9w
YWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tOwpAQCAtMjE5LDExICsyMTksOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZQogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgp
ID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAg
ICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CisgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9
IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7
CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0
aW9uIHRpbGluZ09wdGlvbikKQEAgLTM5OSwxNSArMzk3LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBt
X3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0g
bV90aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVjdChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYg
KGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNh
bGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8v
IGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJl
bmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVy
LCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVu
dGlsIHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJl
bmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxl
dGVzLgotICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVw
ZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRS
ZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29u
dGVudHNTY2FsZSgpKTsKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMobV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAo
aW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxl
ZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewpAQCAtNDMyLDEzICs0MjQsMjQgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkK
ICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKIAogICAgICAgICAgICAgdGlsZS0+bV91
cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGlsZS0+dGV4
dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAor
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVj
dC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBj
YWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAv
LyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVy
ZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZl
ciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1
bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVy
ZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBs
ZXRlcy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVV
cGRhdGVyKCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJl
Y3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250
ZW50c1NjYWxlKCkpOworCisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNv
bnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKK30KKwogfQogI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5k
ZXggMjhlN2QxZDBjNTY5NjgwMGYzZDYyMTI0MDhkZDhkMThiY2VkYmVjMi4uZTQ3ODE4ZjY0MjA2
NjE3MzE3ZmU5NWEzMzE5MTdjNzdmODQwZWM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNo
cm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7
CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CkBAIC03NSw4ICs3NSwxMCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50
ZWQgZHVyaW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpOwotICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRl
eHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgLy8gUHJlcGFyZSB0
byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KICAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgLy8g
UGFpbnQgY29udGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3
aXRoIGNvbnRlbnRSZWN0LgorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVy
ZXMoKTsKIApAQCAtOTMsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFVwZGF0YWJsZVRpbGUqIHRp
bGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQs
IGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1Vw
ZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5
IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygp
LgogICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQg
YmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJl
cHJlc2VudHMgdGhlIGFyZWEKICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSBy
ZS1wYWludGVkIGJ5IFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4
IGVjOTNmMTY4ZGExNGVhNDFlM2MxNmRmNmQ3YzQ5YmVlNDUxM2VhY2UuLjNkOGI0OTU3OGNhNDJh
MmRhOTBmOWVhMjZkMjMzNjJjNDE2YWQzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVt
LmNwcApAQCAtNDUsNiArNDUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShWaWRlb0xheWVyQ2hy
b21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworVmlkZW9MYXllckNo
cm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorewor
ICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgYWxsb2NhdG9y
KTsKK30KKwogUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVy
KiBwcm92aWRlcikKIHsKQEAgLTU4LDYgKzcyLDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpWaWRl
b0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3YK
ICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX3BsYW5lcygwKQogICAgICwgbV9u
YXRpdmVUZXh0dXJlSWQoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6
OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNzgsNyArOTMsNyBAQCB2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0
dXJlLmNsZWFyKCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKQordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKIHsKICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29u
dGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzcsNyArMTUyLDcgQEAgdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIEMKICAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVd
OwogICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwogICAgICAgICBBU1NFUlQoZnJh
bWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXpl
KCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCks
IHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CisgICAgICAgIHVwZGF0ZVRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlLCBmcmFtZS0+ZGF0YShwbGFuZSkpOwogICAgIH0KIAog
ICAgIG1fcGxhbmVzID0gZnJhbWUtPnBsYW5lcygpOwpAQCAtMTQ5LDYgKzE2NCwxMSBAQCB2b2lk
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgQwogICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFt
ZSk7CiB9CiAKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxl
ci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOwor
fQorCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1w
bCogbGF5ZXIpCiB7CiAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDUxNmM4ZDM4NDdjMmFkYjY0YzViYmVm
YjdjOTljYWI1ZjVhZmFiYTMuLjgzM2I3NjllZWIxNmQzNzFjY2E2ZjAxNTM5ZmFlZjE1MDY2OTEx
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0MywyMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMgYSBWaWRlbyBlbGVtZW50
LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVi
bGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBk
YXRlclRleHR1cmU+IGNyZWF0ZShWaWRlb0xheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7
CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFZp
ZGVvTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFZpZGVvTGF5ZXJDaHJvbWl1bSogbV9sYXll
cjsKKyAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBj
cmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyAr
NjYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHJlbGVhc2VQcm92aWRlcigp
OwpAQCAtODksNiArMTA2LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25hdGl2ZVRleHR1
cmVJZDsKICAgICBJbnRTaXplIG1fbmF0aXZlVGV4dHVyZVNpemU7CiAgICAgSW50U2l6ZSBtX25h
dGl2ZVRleHR1cmVWaXNpYmxlU2l6ZTsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91
cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IGRlYjhjOTQ3NDIyYTEzZTFmMTc0NWRhYWY0NjM4MGE4MDNmYmQ2NWQuLjE3YzZkMDZmMmY4
ZDlkNWNhZTE3ZTc3N2UwZDc2NzQwMGVmZjRkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcApAQCAtMzksOSArMzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1
cmUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9
CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgp
Cit7Cit9CisKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICov
KQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9
CisKIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNy
ZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdh
dGUpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVk
KGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJl
KFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcgQEAg
Ym9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IChjb250ZXh0KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lk
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAg
fQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIu
aGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30K
KwogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8
ICFsYXllclJlbmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmgKaW5kZXggNjM3NGI5ZWY2YjExN2FkMjM1NWExZmFkYjY5ZGRiNDEwN2E2
OTMxMC4uZDQ4OTFkMGJlMTRjOTdjZjAzYTJkNDBmMzI4YmNhMjdiMWFlNDdiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZh
c0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAi
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEy
ICs0NiwzMCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBM
YXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0g
OiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRl
clRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdl
YkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToK
KyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKik7CisK
KyAgICAgICAgV2ViR0xMYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUq
ID0gMCk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAg
ICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CiAKQEAg
LTcxLDYgKzkwLDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBo
ZXJlLCBiZWNhdXNlIHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJl
ZmVyZW5jZSB0byB0aGUgV2ViR0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1f
ZHJhd2luZ0J1ZmZlcjsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4
dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDI3ZDk1
NmE3YzdhZmJkMDk1ZGI5NDViOTM0YTE2NmVmYTU1ZjM3NGYuLmYzOWY3ZmQ5ZTRjMWQzYzcyOWZk
YTc2MTIyY2I1YzY1MTllNDg2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCkBAIC00
OCw2ICs0OSwyMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3Rh
bmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAor
Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVIYW5kbGVyKENDUHJveHkqIHBy
b3h5KQorICAgIDogbV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpVcGRh
dGVIYW5kbGVyOjp+VXBkYXRlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
OjpVcGRhdGVIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
Cit7CisgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+
dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxD
Q0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENs
aWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8
Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVl
SG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBAIC0zMTQsNyArMzMwLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94
eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlVG9VcGRhdGUoKQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMyMiwxMiArMzM4LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMo
KQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RM
YXllcigpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOwpAQCAtMzM2LDI0ICszNTIsNjMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJl
Y3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJl
Y3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVy
cy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAg
IEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChy
b290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdh
c24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0
ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOwor
ICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5k
ZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMi
LCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5
ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2Fs
Y0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwg
cm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkubWF4VGV4dHVyZVNpemUpOworICAgIH0KKworICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOworCisgICAgZm9yIChp
bnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXgg
Pj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1f
bGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVw
ZGF0ZUxheWVycygpCit7CisgICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisKKyAgICBmb3Ig
KGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRl
eCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0g
bV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOworCisgICAgICAgIFVwZGF0ZUhhbmRsZXIgaGFuZGxlcihtX3By
b3h5LmdldCgpKTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFu
ZGxlcik7CiAgICAgfQorfQogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCk7
Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0q
IGxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXll
cnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hp
bGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJmYWNlIGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBt
YXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwgd2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhl
bSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3Bh
Y2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1
cmZhY2VMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxp
c3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkg
ZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRo
aXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBz
b21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpA
QCAtMzYyLDMzICs0MTcsMzMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICBpZiAocmVu
ZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwogICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAg
cmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsK
KyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCksIHVwZGF0ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXll
ciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FM
YXllcikgewogCiAgICAgICAgIHJlcGxpY2FMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsK
LSAgICAgICAgcmVwbGljYUxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBh
cHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBp
ZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVy
LT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJlcGxp
Y2FMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAg
ICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7
CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIo
KSwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0
KQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
c2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAg
ICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1
cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIg
PSByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAg
ICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSk7CiAKICAgICAgICAgcmVuZGVy
U3VyZmFjZUxheWVyLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBwYWludE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIpOworICAgICAgICBh
cHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCB1
cGRhdGVMaXN0KTsKIAogICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXgg
PSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7CkBAIC00
MDQsNDkgKzQ1OSwyOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRz
KGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgQVNT
RVJUKGxheWVyLT5vcGFjaXR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKCFsYXllci0+Ym91bmRz
KCkuaXNFbXB0eSgpKTsKIAotICAgICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5
KCk7CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIobGF5ZXIsIHVwZGF0ZUxpc3QpOwog
ICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7Ci0gICAgZm9yIChp
bnQgc3VyZmFjZUluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+
PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3Vy
ZmFjZUxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Ci0gICAgICAgIFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+
cmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7Ci0gICAgICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKLQotICAgICAgICBpZiAocmVu
ZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkp
IHsKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigp
LT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVy
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxp
c3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBs
YXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRl
eCkgewotICAgICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJ
bmRleF0uZ2V0KCk7Ci0KLSAgICAgICAgICAgIGlmIChDQ0xheWVyVHJlZUhvc3RDb21tb246OnJl
bmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0PExheWVyQ2hyb21pdW0+KGxheWVyLCByZW5k
ZXJTdXJmYWNlTGF5ZXItPmlkKCkpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVy
KTsKLSAgICAgICAgfQorICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlz
dC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQo
KTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAg
ICAgfQogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsK
LSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0
ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBs
YXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRh
dGVMaXN0LmNsZWFyKCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJm
YWNlSW5kZXggPCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5k
ZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0K
LSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0
LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IGFhYWQxNDIyOWQzNTEwZWUxOTEwMjFjNzY0Yzc1YjRmYjQ3M2FiNTUuLjllNDFh
ZDIyY2JmMDY1NTEzZWNmY2MwMDU4MzlmODhjMTM0ZGFiN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKLWNsYXNzIENDVGV4dHVyZVVw
ZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9t
aXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKQEAgLTc0LDcgKzczLDggQEAgc3RydWN0IEND
U2V0dGluZ3MgewogICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAg
ICAgICwgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCByZWZyZXNo
UmF0ZSgwKQotICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpIHsgfQorICAgICAg
ICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVy
ZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAg
Ym9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBDQ1NldHRp
bmdzIHsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBkb3VibGUgcmVmcmVz
aFJhdGU7CiAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CisgICAgYm9vbCBkZWxheVRleHR1cmVV
cGRhdGVzOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRl
cmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xODYsOSAr
MTg3LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhi
b29sKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgdm9pZCB1cGRhdGVMYXll
cnMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3Jv
bGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJh
dGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIo
R3JhcGhpY3NDb250ZXh0M0QqKTsKQEAgLTE5OCwxMSArMjAwLDI0IEBAIHByb3RlY3RlZDoKICAg
ICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBVcGRhdGVIYW5kbGVy
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgVXBkYXRlSGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZUhh
bmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAg
IH07CisKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxp
c3Q7CiAKLSAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmKTsKLSAg
ICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiwgTGF5ZXJMaXN0
Jik7CisgICAgdm9pZCBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJD
aHJvbWl1bSosIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxl
TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlz
dCYgdXBkYXRlTGlzdCk7CiAKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVt
Kik7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xl
YXJQZW5kaW5nVXBkYXRlKCk7CiAKQEAgLTIxOSw3ICsyMzQsOCBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFn
ZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExheWVyTGlzdCBtX3VwZGF0ZUxp
c3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7CisgICAgTGF5ZXJM
aXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1Byb3h5LmgKaW5kZXggYmIzNzgwMTQ3YjE2YzI2Yjc1YTdjY2QyMmFhOGI4ZmU4NGU3NmJiZC4u
ZWVlNmQxOGMxZTgwMDhkODNmOTUzY2FiNDViZjRkNDQxNjllNDhlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApA
QCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRp
bmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAg
IHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcAppbmRleCA3MmJlYzJhNzE2NjRhZjQzY2Q2NGQwMTRkMjhiODQyNjUwOTViMjAz
Li4yZDNkN2MyMTgyNzk4MmVjNDM0NDgwMGM1ODQ3MzQ4ZGQwZGMwZTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTQ3LDE1ICsxNDcsMTggQEAgdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKKworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyID0gYWRvcHRQdHIobmV3IENDVGV4dHVy
ZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkp
KTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisKICAgICAvLyBDb21t
aXQgaW1tZWRpYXRlbHkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCisgICAg
ICAgIHdoaWxlIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2lu
Q29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAg
ICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5
ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hD
b21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTE3MCw2
ICsxNzMsOCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKICAgICB9CiAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogICAgIG1fbmV4dEZyYW1lSXNO
ZXdseUNvbW1pdHRlZEZyYW1lID0gdHJ1ZTsKKworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQo
KQpAQCAtMjA4LDYgKzIxMywxNiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQog
ICAgIG1fbGF5ZXJUcmVlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIEFTU0VSVCht
X2N1cnJlbnRUZXh0dXJlVXBkYXRlcik7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlci0+YXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBlbHNl
CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLCBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+YWxsb2NhdG9yKCksIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsKK30KKwogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChl
LmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMjcyLDcgKzI4Nyw3
IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFT
U0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAK
ICAgICBkb0NvbW1pdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmlu
ZGV4IDBkNWE0YTJkOGE1MTZiMWQ3YmNmOTkxYTk5ZTFjNzg3ODk5NDNlYzUuLmQ1YmMxMzE2YzYz
YjgyMWEwNzU0MDU2ZjBiNjIzZGE3YTZhNmNkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ0NMYXllclRyZWVIb3N0OworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIAogY2xhc3MgQ0NT
aW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQo
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNo
b3VsZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlz
TmV3bHlDb21taXR0ZWRGcmFtZTsKKworICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJl
YWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBm
MzE0ZmRiOGNjODcyYWIuLmRmNzcyNDQxM2QxNzNjMTgwNjI4ZDRmODliNDBjZTg5ZDNhMTFhN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKQEAgLTM5LDcgKzQwLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRh
dGVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICA6IG1fYWxsb2NhdG9yKGFsbG9j
YXRvcikKLSAgICAsIG1fZW50cnlJbmRleCgwKQogewogICAgIEFTU0VSVChtX2FsbG9jYXRvcik7
CiB9CkBAIC02NiwyMyArNjYsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBk
YXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0g
bWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsg
bV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0
ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOworICAgIHdoaWxlIChjb3Vu
dC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgp
OwogICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0
b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAgIG1fZW50
cmllcy5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBubyBlbnRyaWVzIGxl
ZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJl
VXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVz
LmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5
YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTViYjMwLi5jMzdhZjM0YmVlNjRmN2MwYWY1YjEw
MzY5NTMxMTQwMjNjNTY2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC01
OSw3ICs1OSw2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFRleHR1cmVBbGxvY2F0b3IqIG1f
YWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVu
dHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDhl
Nzc0MjVlNDQwYTRlZGNmMjlmMjY1YWMzZTllZWZkYmUyMTVkODcuLjlmYWI4ZDk2NTNlNzg5NDU3
ZDE0ZGVhODljNDcyZjY0NWRkN2FlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBA
IC0yODUsNiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFy
dGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX3N0YXJ0ZWQpOworCisgICAgT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSA9IGFkb3B0
UHRyKG5ldyBVcGRhdGVFbnRyeSk7CisgICAgZW50cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7Cisg
ICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJl
Y3QgPSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBs
VGhyZWFkLCBlbnRyeS5yZWxlYXNlKCkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5p
c2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24p
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzczLDYgKzM4Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFt
ZUJlZ2luVGltCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0g
ZmFsc2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcg
c2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRv
IGZhbHNlLgpAQCAtMzk3LDEzICs0MTIsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAg
ICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIg
PT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1
cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNT
RVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisg
ICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3
IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpKTsKKworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5h
cHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVz
dFJlY3QpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywg
MCk7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQpOwotICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGlu
ZygpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQxMSwxMCArNDM4LDYgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0g
YWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCkBAIC00MjgsMjAgKzQ1MSwyMSBAQCBib29s
IENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAogdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291
cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUgPSA5OTk5OTsK
KyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgICAgICBy
ZXR1cm47CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZSht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7Ci0g
ICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NF
UlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygp
KTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0g
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLQorICAgIGlm
IChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkgeworICAgICAgICBBU1NFUlQo
IW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsK
KyAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAg
ICB9CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKaW5kZXggMWRmMzc0NmM1ZGMwMTM0YTMyNGU0YWM4NjQyMzA0NTI5MzNh
OThmYi4uMzI2NjM5MGFlNDZkM2YzYWMzNGE3NDZiY2U1ZDljODk0ZTYyZmIzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVu
dGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpOwpAQCAtNzgsNiArNzksMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0ZUVudHJ5
IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOworICAg
ICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0Owor
ICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJlZ2luRnJh
bWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBh
c3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJh
d0ZyYW1lKCk7CkBAIC05Miw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXNzT3du
UHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRo
cmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIHVwZGF0
ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4pOwogICAgIHZvaWQg
YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAg
dm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAg
dm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGZiNDc1
NjIyNjY0MGFjNmQ4ZWRmOWMwNTlkMmVmNzlkYzU0ZjJlNjkuLjBlMDkwMzBiOThmMDE4MjNjNDlm
OWUyODZjODdlNDQzZGQxZWUwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaApAQCAtMTM1LDYgKzEzNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBk
ZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNl
dHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcAppbmRleCA2M2YxM2M0ZjUxOWE3NDg0OGJiZmZmOTM1ZDdmMTE1NTY1ZGEyYjE1Li43
NWIzYmU5MzA2NTY3OThlMGI3MTNiMTUxOWE5ZjQ5ZDMwZTlkODk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAg
V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAg
ICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291
bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwg
bV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9
CkBAIC01MDcsNCArNTA4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBlclRpbGVQYWlu
dGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldFBlclRpbGVEcmF3
aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldERlbGF5
VGV4dHVyZVVwZGF0ZXMoYm9vbCBlbmFibGVkKQoreworICAgIG1fZGVsYXlUZXh0dXJlVXBkYXRl
cyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCAyYjlhMjVjNzE4NGQ2NzFhMjRk
NWI0YTZlNTYxODllMzEyZjQ5YjRhLi43Y2FhNDBiNWZkOTFmNmJlYWI1ZThkNzVlNGVmMGE4YTM5
YmUyMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
aApAQCAtMTMwLDEyICsxMzAsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91
bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNj
ZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFBlclRp
bGVQYWludGluZ0VuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVy
ZVVwZGF0ZXMoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQ
bGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IGNmM2YxNjllOGViZjVhOWQ1NmE0ZTNmMGVhMmRmZGYyMTVlNDNkNzMu
Ljc5ZThhOGZjMjA3MjhjN2FiMWFlZTk3YzViYmQ4YzE2OThiN2I3ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI5NTAsNiArMjk1MCw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFj
dGl2ZSkKICAgICAgICAgICAgIGNjU2V0dGluZ3MucmVmcmVzaFJhdGUgPSBkZWZhdWx0UmVmcmVz
aFJhdGU7CiAKICAgICAgICAgY2NTZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBwYWdlKCktPnNl
dHRpbmdzKCktPnBlclRpbGVEcmF3aW5nRW5hYmxlZCgpOworICAgICAgICBjY1NldHRpbmdzLmRl
bGF5VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRleHR1cmVVcGRhdGVzKCk7CiAK
ICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBj
Y1NldHRpbmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDM2ZmQ3ZGJkMDdiZGM3Y2YxYzg2MWZkODJhZWJjMmIw
ODRhMDNhMzMuLjFmYzFiZjUwZTJmM2E1ZjE5MGJiMzlkYWJlMjM2NjNkZTM1OTI4YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJD
aHJvbWl1bS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTW9ja1dl
YkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNs
dWRlICJXZWJDb21wb3NpdG9yLmgiCkBAIC05MjIsNiArOTIzLDE0IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVl
KTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRl
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7
IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBD
Q0xheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxl
Z2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTQ1LDM3ICs5NTQsOTcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgOiBw
dWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7IH0KKyAgICBjbGFzcyBDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRleHR1cmUoQ29udGVu
dExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisg
ICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0
dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVy
KCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0
ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxh
eWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgor
ICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAg
ICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAg
fTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50
c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0
UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IH0KKyAgICAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0
ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRl
KG1hbmFnZXIpKSk7CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJu
IG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRl
Q291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7
IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgICAgICB2aXJ0dWFsIFNh
bXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZv
cm1hdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29u
c3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0
IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBh
aW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHBy
aXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKENvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcikgOiBtX2xheWVyKGxheWVy
KSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyog
bV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRl
KQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdh
dGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikK
KyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVI
b3N0KikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7
CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3Bh
aW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0
dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBt
X3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1
cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBk
YXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91
cGRhdGVSZWN0Q291bnQ7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlKQogICAg
ICAgICA6IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQogICAgICAgICAsIG1fcGFpbnRD
b250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1f
cHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAg
ewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICB9CiAKKyAgICBSZWZQ
dHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXI7CiAgICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50OwotICAgIGludCBtX3VwZGF0ZUNvdW50
OworICAgIGludCBtX3ByZXBhcmVSZWN0Q291bnQ7CisgICAgaW50IG1fdXBkYXRlUmVjdENvdW50
OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBub3Qg
cHJldmVudCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5nIGNv
bW1pdC4KQEAgLTEwMDIsMTMgKzEwNzEsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRh
dGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0g
ICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAg
ICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAot
ICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKKyAg
ICAgICAgLy8gcGFpbnRDb250ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUg
c2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4KKyAgICAg
ICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpLAorICAg
ICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CiAK
ICAgICAgICAgLy8gY2xlYXIgbV91cGRhdGVDaGVja0xheWVyIHNvIENDTGF5ZXJUcmVlSG9zdCBk
aWVzLgogICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDYzYWE0NTZhZDhkOGNjYjNmZTA0ZmFmYzE2MjBiZjBmMjRlNjdmNDMuLjFjMjI0MWY0ZDRl
Y2RkNDE5ZjY3Y2FkZTBhNTI1MTRhNDM3OGNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsOSAr
MjcsOSBAQAogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgi
IC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CiAKQEAgLTM4LDIwICszOCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwog
CiBuYW1lc3BhY2UgewogCi1jbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0
dXJlQWxsb2NhdG9yIHsKK2NsYXNzIEZha2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4
dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogfTsKIAogY2xhc3MgRmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6
CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQot
ICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CisgICAgICAgIFRleHR1cmUoUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CisKKyAg
ICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVy
ZS5nZXQoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikgeyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1f
dGV4dHVyZTsKICAgICB9OwogCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAg
LTYwLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2Vy
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1h
bmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1
cm4gQm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0
UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQog
fTsKIAogY2xhc3MgRmFrZUNDVGlsZWRMYXllckltcGwgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1w
bCB7CkBAIC05OCw2ICsxMDEsMTEgQEAgcHVibGljOgogICAgICAgICBUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShyZWN0KTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5h
Z2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFnZXI7IH0K
IAogcHJpdmF0ZToKQEAgLTExOSwxMyArMTI3LDEzIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9w
dFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxv
Y2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRl
eHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRz
IHR3byB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBs
YXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVz
aFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUg
Ym90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTM4LDcgKzE0Niw4IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25s
eSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
MCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwog
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBX
ZSBzaG91bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdh
cyBpbnZhbGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120668</attachid>
            <date>2011-12-28 07:29:56 -0800</date>
            <delta_ts>2012-01-04 14:51:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20111228162954.patch</filename>
            <type>text/plain</type>
            <size>93270</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQwNTcyZTJmNzM0MWU3
NGZhZTM0MWM4N2MwY2JmMjIwYmJhNzBhYy4uY2IzZWU4NGNhODIwZmMyM2IzNzI4NGZmN2M1OWUw
MTJlZDRlM2E1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMS0xMi0yOCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyOjp+SGFuZGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVy
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1
bTo6V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRh
dGVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFu
ZGxlcjo6flVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpVcGRhdGVIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjppZGxl
VXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5k
VmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5k
TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVU
aHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OmNvbW1pdElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0xMi0yNyAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29t
cGxldGUgYW5ub3RhdGluZyBTREsgY29tcG9uZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCAzMjAyNGViZThjMzk3ZGI4MjhkOTQ4MTUzMzZhZDVhN2FkY2NmOTVmLi5jNzlhZDk5ZGQw
OThkNGFiMzkyYzhkYTYzYjBjMjAwMDhjODViMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY0IEBACisyMDExLTEyLTI4ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBVcGxvYWQgdGV4dHVyZXMgaW4gcGFy
YWxsZWwgd2l0aCBwYWludGluZyBjb250ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlbGF5VGV4dHVyZVVwZGF0ZXMgc2V0dGluZyB0aGF0
IGlzIHVzZWQgYnkgY29tcG9zaXRvciB0byBkZXRlcm1pbmUKKyAgICAgICAgaWYgdGV4dHVyZSB1
cGxvYWRzIHNob3VsZCBiZSBkZWxheWVkIHVudGlsIGFsbCBwYWludGluZyBoYXMgY29tcGxldGVk
LgorICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0czogQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlD
aGFuZ2UgYW5kCisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldERlbGF5VGV4dHVyZVVwZGF0ZXMpOgor
ICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0
dGluZ3NJbXBsOjpkZWxheVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdU
Rjo6TW9ja0xheWVyRGVsZWdhdGU6OnByZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6TW9ja0xh
eWVyRGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3Qp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnRleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJl
cGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9VcGRhdGUpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRs
ZVByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0NvdW50KToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBy
ZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0Q291bnQpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xh
eWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0
cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUhhbmRsZXI6OmhhbmRsZSk6
CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1
cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMp
OgorICAgICAgICAoV1RGOjpURVNUKToKKwogMjAxMS0xMi0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEwMzczNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggZGQ5MzE5MTNmNzA5Nzc2MjYzNWZlNjQxOWQzODc1MWFmZjg2MTc5
ZC4uMzdiYTM0NjI1NmQxMTE5Y2Q2MWZlNmJiMjdhNjdjMTcwYzMzZGU5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAg
ICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0
ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpzYW1wbGVkCiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsK
IH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBp
bnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29u
dGVudHNTY2FsZSkKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6
ZSk7CiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBQbGF0
Zm9ybUNhbnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAgICAgYm9y
ZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0
Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQ
YWludGVyIGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBwYWludENv
bnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2Nh
bGUpOworICAgIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoKmNhbnZh
c1BhaW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiB9CiAKIHZv
aWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFu
YWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCmluZGV4IGZhNjQ4MThhZGM3ZjZhYmI1YzgyMjE4NDc1NDdlMmY0MjVmMDJh
YWYuLmU1ZmNmNjRhYmJkNmUzY2FhNmExMmQ0MjFhZWU2MTVlNWM3ZTA0ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVi
bGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAg
ICAgdmlydHVhbCB+VGV4dHVyZSgpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4
dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNh
bXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50
c1NjYWxlKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAppbmRleCA4MjIxZGQyZTUyMWJkNjNmZTBlNmYwZjlkNjIyNGUzOGRmYjM0Mjk4Li5jODA0
ZDRjZjI1YzEyZjgyZjAzYmMwODg2M2I1OTYxZjExNjhiZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cApAQCAtODYsMTAgKzg2LDEwIEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAg
ICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4
ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSkKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7
Ci0gICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKKyAg
ICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnRl
bnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKIH0KIAogdm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
UmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGU1MTYzYzIwMjNlYzZlNzgxNDg5ZTg1NTA1MTIwMjI1ODRlNTkxZTIuLjY5
YjkwNWMwNzhiYmZlNThkMmVlN2FhODA0MThjODQ0OGRhYTNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsK
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBwYWlu
dENvbnRlbnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwogICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBHQzNEZW51bSBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCAyM2Q3MmU3YmIwNzg0MmU4
OGY4MDFkYTg0YTE1YWVhMGViYzg0YzFlLi43ZDNiZjA3ODIyZmJlYjI0ZDk1ZmE5ZWMyNjQwYjE1
YTNjOTc2ZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ3
LDYgKzQ3LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVt
KiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRS
ZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sK
KyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRv
cik7Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVy
Q2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1
bShjb250ZXh0LCBzaXplKSk7CkBAIC01OCw2ICs3Miw3IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fYmFja1RleHR1cmVJZCgwKQogICAgICwg
bV9mYm8oMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0
aGlzKSkKIHsKICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJh
bWVidWZmZXIoKSk7CiB9CkBAIC0xMjcsMTIgKzE0MiwxMiBAQCB2b2lkIENhbnZhczJETGF5ZXJD
aHJvbWl1bTo6c2V0VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2Vy
KQogICAgICAgICBtX2Zyb250VGV4dHVyZS5jbGVhcigpOwogfQogCi12b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yICphbGxvY2F0b3IpCiB7CiAgICAgaWYgKCFtX2JhY2tUZXh0
dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRl
eHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSk7CisgICAgbV9mcm9udFRleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAKICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9m
Ym8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQs
IDApKTsKQEAgLTE0MSw2ICsxNTYsMTEgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQKICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+Zmx1c2goKSk7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5n
ZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiB2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgQ2FudmFz
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFjOGZjOWI0ZThiMmJhMjA1MmNiMjI5ZmViNWU3MGNhYTkw
NzA1MDMuLmJmYzVkNThkMmE2YjA2OGVmNThmMzZmZmVkZjMyYTViMTQ5YjdjMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC00NCw2ICs0NCwyMyBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBj
YW52YXMKIGNsYXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNo
cm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBs
YXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVy
VGV4dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRl
eHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBV
cGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBDYW52YXMy
RExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50U2l6ZSYpOwogICAgIHZpcnR1YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01
NSw3ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGly
dHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9z
dCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllcklt
cGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiAgICAg
dmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKQEAgLTcyLDYgKzkwLDcgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2JhY2tUZXh0dXJlSWQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBt
X2ZibzsKICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJlOworICAgIE93
blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRjNmJkN2Y1
MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uMWYzYjY0NGVlNjZiYmQwNzUxN2FjNDg1Yzk1Y2Iy
OGRkMDFlMjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKQEAgLTM2LDYgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBh
aW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGE4ZmVmZjM0MjJiMWI4
NTMwYjhmNjg5ZmYyYzU2Njc2NjBiZWQ1Y2YuLmJlOWZmMTMzY2ZlMzc0N2U0Zjk1NjcxMzdjNjk0
ZWVkOGNiZDhmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTM5LDYgKzM5LDE5IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogLy8gQSBMYXll
clRleHR1cmVVcGRhdGVyIHdpdGggYW4gaW50ZXJuYWwgY2FudmFzLgogY2xhc3MgQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoK
KyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
eworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOworCisgICAgICAgIHZp
cnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7
IH0KKworICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCmluZGV4IGM2Mzk1NjM2ZDRjMzczMjE4NmIwY2VlZTE2YTMxMjE5N2QwYzk2YTAu
LmIxODBkM2ExOWE1ZjVjOWI0MTNlNDM2MzUxOTM1YTcxMzFhN2FkOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkoKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7CiAK
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eSgpCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0KIAotdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVu
dExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAo
IWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjIsNiArMTIyLDIwIEBAIHZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAg
ICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOworCisg
ICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOworICAgIGlm
IChsYXllclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRyYXdz
Q29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKGxheWVyUmVj
dCk7Cit9CisKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkg
JiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDBjNTc0YjVkZmRjMGE1NzFiODExYmUwMzk3NjRhYzc1YjFjMmUz
ZWUuLjk2MmI0OGZhMTRlOWIyNDQyNmRlMmYwZGI0OTU1ZTJjOTQ2NzgzOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDksOCArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwogCisgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDE5ZGZhMmYwMDZjOTg4NDc3MGU2NzZjNDU4
NWJlOTQ2NzEzNGYzYjMuLjhmMmRlOGEwZTg5M2Q0MWRhZjMwYjY1MWYxNTM2NTRjZDM1YTcxMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg
UGFzc093blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsCiB9CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJl
KQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAg
ICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKaW5kZXggMWIxZDExYmZhOWFkNjJkYmQ1ODcwZjc2ZDEyMDI3OGExYThlOGI5Ny4u
MjFhZTNkZDYxMTI3MGM1MTA5OWIzNmM3ODIxMTQ0M2I5MjY2Mzg0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3Mg
VGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFz
cyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAg
IHZpcnR1YWwgflRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDZlZWRjY2U3MTQzODZmMGM1OWZiYWU4MjA1ZjljZmYzMThkZmY1MWYuLjdjODFiNjVkZDgyM2Q1
ZDA4YjA5ODdkYjhkNWQwNWUyMjViMDg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiAjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgi
CiAKKyNpbmNsdWRlICJDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgotI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtNDYsMTAg
KzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNz
IFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0
ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAg
ICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAg
ICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgICAg
ICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAg
ICAgfQpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9h
dCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5zZXRT
dWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIElt
YWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5l
ZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGly
dHkoKQogewogICAgIGlmIChtX25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVmZTRmMjY2NjhiZGNjM2Uy
OWYwNGNmZmNkYTg4MmE3M2MzMWUzMjcuLmY2ZWJjOGE3ZThiOTA3MzE4Y2Y1MjA2YzRmYjRlODdm
YWVhMWUwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
OwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZv
aWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBmOTM3
NTVmMDliZjFjOGU2NjU5NGMzNzQ4YjA5NmZmM2U2ZWMwNjg3Li5hYmM4N2U1YjhkODU0NWZkYTJj
NDViN2ViOTczMWQzMDc2MzBlZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw2ICszNiw3
IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJT
dXJmYWNlQ2hyb21pdW0uaCIKQEAgLTUzLDcgKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNsYXNzIENDVGV4
dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIAogY2xhc3MgQ0NMYXllckRl
bGVnYXRlIHsKQEAgLTE1OSw5ICsxNTksMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMu
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyLmgKaW5kZXggMzRkYjcyYWE0NTJjZWMyNmEzNzYyMmQ2MzdmZDhkMWFmNDRiNGRiMy4uZDAw
NjNlYjkzMzc4ZDA0MWVmNzBiNmY0NDQ4NWY1M2RlYTA4ODZkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXIuaApAQCAtNDgsMTQgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgICAgICB2aXJ0dWFsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gMDsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KSA9IDA7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NP
d25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQor
ICAgIH07CisKKyAgICBjbGFzcyBIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgfkhhbmRsZXIoKSB7IH0KIAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5MYXllclRleHR1
cmVVcGRhdGVyKCkgeyB9CkBAIC03MSw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZv
cm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4K
ICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUg
YW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxl
ZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25z
dCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQg
LyogY29udGVudHNTY2FsZSAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVT
aXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICov
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uY3BwCmluZGV4IGUzYzVjNDhmNzkyMGZlZWM3MDhlNGRhYzdhZWY2NGUyM2U4YWFm
MDAuLjYwMzI2OGE2MmUzZjJkMDQ3MDliNmNkYjYyOWRhYmVjMzc2ZmNiZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBsdWdpbkxheWVyQ2hy
b21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsK
IH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQor
dm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAg
ICBpZiAoIW1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmgKaW5kZXggMjc3YTk2OWM1OGNjM2Y1ODM0NTg3ZTA3NzhmZmQxYzYyNzdkNjZm
Ni4uMTZmM2ZjMWIzY2U4MjU0MmZkZjQwNzA2ZGE2MDg4NzI5MzVjM2U2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBQbHVnaW5MYXllckNo
cm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVDQ0xheWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDUzN2UxMzdlOGQ4ZWM1MThiOTM0YWE1Y2Qy
ZDcwMGM3NGIxOWZlNGIuLmVlNzQ1MjMwNDJiZWMxMDc4MDIwNmNhZGU0ODZiYmRjNjEyZTViOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12
b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9y
ZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIFNrQ2FudmFzKiBjYW52
YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVu
dFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0
KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVkKHRydWUpOwogICAgIEdy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFp
bnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsK
KyAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGdyYXBoaWNzQ29u
dGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNv
cmRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MGY4YjAzZWE0ZjI3MzlhOTc1NDM4NjdhYzdlYjE1NDAz
MGQwYzIuLmFlZmJmYzNmNmE0YTJhM2FhNzFhNWIxZmI0M2VkZWFmMWNiZjZkZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZs
b2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRl
clRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0Nh
bnZhcyopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
MzI5OTMyMjkwZTdhODBlNWQ4NDkwMTk4ZDFjMWU4MTlhODgyMjBhMi4uNzdkYjQwYzIzYjBlYTlm
ZTFlZmRiMDBlMDJjMDY2MzNkMDBlMTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCkBAIC0xNzYsMTQgKzE3NiwxNCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGlsZXIoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3B0aW9uIGJvcmRlcgogICAgIG1f
dGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKG1fdGlsZVNpemUsIGJvcmRlclRleGVs
T3B0aW9uKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQor
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBJZiB0aGlzIGFzc2Vy
dCBpcyBoaXQsIGl0IG1lYW5zIHRoYXQgcGFpbnRDb250ZW50c0lmRGlydHkgaGFzbid0IGJlZW4K
ICAgICAvLyBjYWxsZWQgb24gdGhpcyBsYXllci4gQW55IGxheWVyIHRoYXQgaXMgdXBkYXRlZCBz
aG91bGQgYmUgcGFpbnRlZCBmaXJzdC4KICAgICBBU1NFUlQobV9za2lwc0RyYXcgfHwgbV90aWxl
cik7CiAKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVy
bmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQg
bWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxl
c1JlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQorICAg
IGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkg
fHwgIW1fdGlsZXIgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCA9IG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0LngoKTsKQEAgLTIyNSwxMSArMjI1LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+
IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAg
ICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBG
bG9hdFJlY3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwog
fQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlv
biB0aWxpbmdPcHRpb24pCkBAIC0zOTAsMTIgKzM4OCw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBp
bnQKICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXF1ZXN0ZWRV
cGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwgYm90
dG9tIC0gdG9wICsgMSk7CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxz
IGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVm
ZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNl
IHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3
ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGls
IHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNl
IGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVz
LgotICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0
ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0
LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVu
dHNTY2FsZSgpKTsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAg
ICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAg
IFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CkBAIC00MTksMTUgKzQxMSwxMCBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxl
LCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7
CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAg
ICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLQogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIHsKICAgICBpZiAoIW1fdGls
ZXIpIHsKQEAgLTU0Nyw1ICs1MzQsMjAgQEAgSW50UmVjdCBUaWxlZExheWVyQ2hyb21pdW06Omlk
bGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KQogICAgIHJldHVy
biBwcmVwYWludFJlY3Q7CiB9CiAKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQoreworICAgIGlmIChtX3NraXBzRHJhdyB8
fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRp
bGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hp
Y2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0
aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRv
IGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJh
Y2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAg
Ly8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIg
YWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJl
VXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCkpOworCisgICAgbV91cGRhdGVS
ZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJl
Y3QpKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNGIwY2M1NTUxY2JhMDI2OGM4NGVlMWY5NGQ1
MWY1Y2Q1ZmY2MGNlNS4uNzViMjlmYmY0NmNkYWY3NWU4YjcyM2E3YWFkNDFiN2RlMzVkMzg4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhi
b29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7
CkBAIC03Niw3ICs3Niw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0
byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCi0gICAgLy8gUHJlcGFy
ZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250
ZW50UmVjdC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2Vj
dCB3aXRoIGNvbnRlbnRSZWN0LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0KTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlzIHdpbGwg
dHJ5IHRvIHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxlLgpAQCAt
ODUsNiArODUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQWZ0ZXIgcHJlcGFyaW5nIGFuIHVwZGF0
ZSwgcmV0dXJucyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5lZWRlZC4KICAgICBib29s
IG5lZWRzSWRsZVBhaW50KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKIAorICAgIC8vIFBh
aW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0
aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpOworCiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVz
KCk7CiAKICAgICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0
OwpAQCAtMTAzLDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0
KGludCwgaW50KSBjb25zdDsKICAgICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50
KTsKIAotICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRl
KCkgYW5kIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3Rh
dGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAg
ICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdDsKIAogICAgIC8vIFN0YXRlIGhl
bGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlz
IHJlcHJlc2VudHMgdGhlIGFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDM2MjZkYzViM2RmOTk4YjI2NWE2N2IzNGQ5ZWRjYTI5MTVjNGE0ZjMuLjViZTBmYmEwZjI5NmFi
NjZiYjhlMTg1MDBmNTMxZDg4NjA5MzYyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcApAQCAtMzksOSArMzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgog
I2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQu
aCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUo
V2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisK
K1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7
Cit9CisKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQor
eworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisK
IFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0
ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01NSw2ICs3MCw3IEBAIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUp
CiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZh
bHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVw
ZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY5LDcgKzg1LDcgQEAgYm9v
bCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChj
b250ZXh0KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBy
ZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtOTgsNiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQog
fQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFu
ZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwog
dm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxh
eWVyKQogewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBlYjUxNDZlYjczOTAzMGZhYmFjNDM5
NjI3ZTVjN2MwNDE2ZjVhNTYxLi4yMGJlYzlmZmQ0ODEzNGMzZWZlMmE4MmQ1MmFlYzQ4Y2MwN2Zh
NmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAj
aW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIu
aCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDUsNiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0
VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xM
YXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAg
IGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1
cmU+IGNyZWF0ZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAg
IH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJD
aHJvbWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9
OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NM
YXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7
CkBAIC01Myw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25l
ZCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBh
aW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKQEAgLTc4LDYgKzk3LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNhdXNl
IHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJlZmVyZW5jZSB0byB0
aGUgV2ViR0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZl
cjsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGNkNzU2ZDYwMGRjMGYwZTNm
MzAxYjMyZDdlOGU4NGZjMDBhYjA3NjEuLjg2MjRhZDhmZTg2ODcyY2NkZGUxODg1MTgxNjg0MGZi
YzBhMDA3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhy
ZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCkBAIC00OCw2ICs0OSwyMSBA
QCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkK
ICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAorQ0NMYXllclRyZWVI
b3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVIYW5kbGVyKENDUHJveHkqIHByb3h5KQorICAgIDog
bV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjp+
VXBkYXRlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5k
bGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4
dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+dXBkYXRlKHRleHR1
cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhv
c3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50
LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRyZWVI
b3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQs
IHNldHRpbmdzKSk7CkBAIC0zNDUsNyArMzYxLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNv
bXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHku
Z2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUo
KQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1MywxMiAr
MzY5LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2
aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxh
eWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsKIH0K
IAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290
TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21p
dW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpw
cmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJT
dXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAt
MzY3LDIxICszODMsNjMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXll
ckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQo
KSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBS
ZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUg
dXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91
cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwor
ICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQg
YWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVu
ZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7
CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5U
KCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsK
LSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1
cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpOwogICAgIH0KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBh
aW50VmlzaWJsZSk7CisgICAgYXBwZW5kVmlzaWJsZUxheWVycyhtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCBtX2xheWVyVXBkYXRlTGlzdCk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoKQoreworICAgIGlmICghcm9vdExheWVyKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VW
RU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworCisgICAgZm9y
IChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5k
ZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9
IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKworICAgICAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7Cisg
ICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIH0K
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmlkbGVVcGRhdGVMYXllcnMoKQoreworICAgIGlm
ICghcm9vdExheWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWV3cG9ydFNpemUo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlkbGVVcGRhdGVMYXllcnMocm9v
dExheWVyKCkpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVwZGF0ZUxheWVycyhM
YXllckNocm9taXVtKiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdDo6aWRsZVVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworCiAgICAgaWYgKCFtX3RyaWdnZXJJ
ZGxlUGFpbnRzKQogICAgICAgICByZXR1cm47CiAKQEAgLTM5NSwyMiArNDUzLDMwIEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQog
ICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2FyZHMgdGhlIG1heGlt
dW0gbGltaXQuCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1p
dEJ5dGVzKHByZWZlcnJlZExpbWl0Qnl0ZXMpOwogICAgIC8vIFRoZSBzZWNvbmQgKGlkbGUpIHBh
aW50IHdpbGwgYmUgYSBuby1vcCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcgYWxyZWFkeSBvY2N1
cmVkIGFib3ZlLgotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50SWRs
ZSk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgp
IC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAg
ICAgIGxheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+
cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKworICAgICAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIo
bV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KGhhbmRsZXIpOworICAgIH0KKwogICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4
TWVtb3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKIH0KIAotLy8gc3RhdGljCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJs
ZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7Ci0g
ICAgQVNTRVJUKGxheWVyKTsKLSAgICBBU1NFUlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8
fCBQYWludElkbGUgPT0gcGFpbnRUeXBlKTsKLSAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50
VHlwZSkKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgZWxzZQot
ICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgLy8gRm9yIG5v
cm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNo
ZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJmYWNlIGxheWVyIGxpc3RzLgorICAg
IC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwgd2UgbWF5IHN0aWxsIG5lZWQgdG8g
Y2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpIHx8ICFs
YXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
IHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8g
Tm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biBy
ZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3
ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRv
IHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtNDE4LDI5ICs0ODQsMjkgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVy
Q2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXll
cigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRl
bnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNl
TGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUpOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5
ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRlTGlzdCk7CiAgICAgfQog
CiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyLT5y
ZXBsaWNhTGF5ZXIoKTsKICAgICBpZiAocmVwbGljYUxheWVyKSB7Ci0gICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgcGFpbnRUeXBlKTsKKyAgICAgICAgYXBwZW5kVmlz
aWJsZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxp
Y2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xh
eWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5
ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSk7CisgICAg
ICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBk
YXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojpw
YWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2li
bGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJM
aXN0JiB1cGRhdGVMaXN0KQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1
cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJ
bmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3Vy
ZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUlu
ZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiByZW5k
ZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdl
dCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1
cmZhY2UpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSk7CiAK
LSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFj
ZUxheWVyLCBwYWludFR5cGUpOworICAgICAgICBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBjb25z
dCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0
LnNpemUoKTsgKytsYXllckluZGV4KSB7CkBAIC00NTMsNDkgKzUxOSwyOSBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdAogCiAgICAgICAgICAgICBBU1NFUlQoIWxheWVyLT5ib3VuZHMoKS5pc0Vt
cHR5KCkpOwogCi0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShsYXllciwgcGFpbnRU
eXBlKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihsYXllciwgdXBkYXRlTGlzdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKLSAgICBmb3Ig
KGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4
ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJT
dXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAg
UmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLSAgICAg
ICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwotCi0gICAgICAgIGlmIChy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICAgICAgcmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1
cGRhdGVyKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIo
KSkgewotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tM
YXllcigpKQotICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVy
KCktPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0
ZXIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVy
TGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllcklu
ZGV4KSB7Ci0gICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXll
ckluZGV4XS5nZXQoKTsKLQotICAgICAgICAgICAgaWYgKENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8TGF5ZXJDaHJvbWl1bT4obGF5ZXIsIHJl
bmRlclN1cmZhY2VMYXllci0+aWQoKSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0
ZXIpOwotICAgICAgICB9CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVM
aXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAg
ICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdl
dCgpOworICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsK
ICAgICB9CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUoKQog
ewotICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fdXBk
YXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0q
IGxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgbV9sYXllclVw
ZGF0ZUxpc3QuY2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1
cmZhY2VJbmRleCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJ
bmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAg
fQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3QuY2xlYXIoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKaW5kZXggYjdkMWIxZTVmMDNkZDM5YmRjNjY4MDBmZjEyOWZiMjRlNGNiMDVlYy4uOTQ5
MWYyYWZiYzI5MzRhOGU0YTUwMzI1ZjMyYWZhMmI0MGM4NzMwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0OwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NUZXh0dXJl
VXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hy
b21pdW07CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwpAQCAtNzUsNyArNzQsOCBAQCBzdHJ1Y3Qg
Q0NTZXR0aW5ncyB7CiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkK
ICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50
aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpIHsgfQor
ICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCisgICAgICAgICAgICAsIGRl
bGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRp
bmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04NCw2ICs4NCw3IEBAIHN0cnVj
dCBDQ1NldHRpbmdzIHsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgYm9vbCBwZXJUaWxl
UGFpbnRpbmc7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7CisgICAgYm9vbCBkZWxheVRl
eHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdz
IHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0x
ODksOSArMTkwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5k
bGVycyhib29sKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnMoKTsKKyAgICB2b2lkIGlkbGVVcGRhdGVMYXllcnMoKTsKIAotICAgIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Nj
cm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29u
dGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsK
QEAgLTIwMSwxNCArMjA0LDI2IEBAIHByb3RlY3RlZDoKICAgICBib29sIGluaXRpYWxpemUoKTsK
IAogcHJpdmF0ZToKKyAgICBjbGFzcyBVcGRhdGVIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgVXBkYXRlSGFuZGxlcihD
Q1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZUhhbmRsZXIoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAgIH07CisKICAgICB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7CiAKLSAgICBlbnVtIFBhaW50
VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSk7Ci0gICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKLSAgICB2b2lkIHBh
aW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5
cGUpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBMYXllckxp
c3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXll
ckNocm9taXVtKiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2li
bGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJM
aXN0JiB1cGRhdGVMaXN0KTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21p
dW0qKTsKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CisgICAgdm9pZCBp
ZGxlVXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1Vw
ZGF0ZSgpOwogCiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMjQsNyArMjM5
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAg
ICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKLSAg
ICBMYXllckxpc3QgbV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VV
cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAogICAgIENDU2V0
dGluZ3MgbV9zZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGJiMzc4MDE0N2IxNmMyNmI3NWE3
Y2NkMjJhYThiOGZlODRlNzZiYmQuLmVlZTZkMThjMWU4MDA4ZDgzZjk1M2NhYjQ1YmY0ZDQ0MTY5
ZTQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9o
CiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTc5LDYgKzgwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3Jl
IHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBi
ZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29r
cwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMyYTcxNjY0YWY0M2Nk
NjRkMDE0ZDI4Yjg0MjY1MDk1YjIwMy4uMTQyMGY3MmFhNWI4N2I5NzU1Y2IxNDgwZDUyZWY3NzA2
ZTU3YzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0
NywxNSArMTQ3LDE5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRl
KCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciA9
IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxh
eWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+aWRsZVVwZGF0ZUxheWVycygpOworCiAgICAg
Ly8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsK
IAorICAgICAgICB3aGlsZSAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPnVwZGF0ZShtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAg
ICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRl
cik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJs
ZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCkBA
IC0xNzAsNiArMTc0LDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAg
ICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKICAgICBtX25leHRG
cmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZSA9IHRydWU7CisKKyAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlci5jbGVhcigpOwogfQogCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRz
Q29tbWl0KCkKQEAgLTIwOCw2ICsyMTQsMTYgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpz
dG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAgICAgICAgbV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXItPmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cisg
ICAgZWxzZQorICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFsbG9jYXRvcigpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcg
cGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lk
IENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCkKIHsKQEAgLTI3Miw3
ICsyODgsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0
ZSgpOwogCiAgICAgZG9Db21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaAppbmRleCAwZDVhNGEyZDhhNTE2YjFkN2JjZjk5MWE5OWUxYzc4Nzg5OTQzZWM1Li5kNWJj
MTMxNmM2M2I4MjFhMDc1NDA1NmYwYjYyM2RhN2E2YTZjZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiAKIGNs
YXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0
SW1wbENsaWVudCB7CiBwdWJsaWM6CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1w
bGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBs
VGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVj
cmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0
RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRl
cj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5n
bGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThl
ZGUxODIwZjMxNGZkYjhjYzg3MmFiLi5kZjc3MjQ0MTNkMTczYzE4MDYyOGQ0Zjg5YjQwY2U4OWQz
YTExYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2Mv
Q0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zOSw3
ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0
dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgOiBtX2FsbG9jYXRv
cihhbGxvY2F0b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKIHsKICAgICBBU1NFUlQobV9hbGxv
Y2F0b3IpOwogfQpAQCAtNjYsMjMgKzY2LDIwIEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFz
TW9yZVVwZGF0ZXMoKSBjb25zdAogCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogewotICAgIHNpemVfdCBtYXhJ
bmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAg
Zm9yICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4OyArK21fZW50cnlJbmRleCkgewotICAgICAg
ICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbbV9lbnRyeUluZGV4XTsKKyAgICB3aGls
ZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIW1fZW50cmllcy5zaXplKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVz
Lmxhc3QoKTsKICAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIG1f
YWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwogICAgIH0KIAotICAgIGlmIChtYXhJbmRleCA8IG1f
ZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgbm8gZW50
cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCi0gICAgY2xlYXIoKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgPiAwOwogfQogCiB2b2lkIEND
VGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKIHsKLSAgICBtX2VudHJ5SW5kZXggPSAwOwogICAgIG1f
ZW50cmllcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXgg
YmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIzMC4uYzM3YWYzNGJlZTY0Zjdj
MGFmNWIxMDM2OTUzMTE0MDIzYzU2NjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
aApAQCAtNTksNyArNTksNiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBtX2FsbG9jYXRvcjsKLSAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxV
cGRhdGVFbnRyeT4gbV9lbnRyaWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApp
bmRleCBjMDBkZDY2ZTUzNGFhMzQ0NGY2YmU4YWQ0YWFmMWQ4NTljZDE0ZmQ2Li40ZTA0Y2M4OWY2
YmU0OTgzNDgxZTU3MWE2ODljZjE1MDNmNGNkZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcApAQCAtMjg4LDYgKzI4OCwyMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnN0b3AoKQogICAg
IG1fc3RhcnRlZCA9IGZhbHNlOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZShMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6dXBkYXRlIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV9zdGFydGVkKTsKKworICAgIE93blB0cjxVcGRhdGVFbnRyeT4gZW50cnkg
PSBhZG9wdFB0cihuZXcgVXBkYXRlRW50cnkpOworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0
dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5t
X2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RU
YXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVy
ZU9uSW1wbFRocmVhZCwgZW50cnkucmVsZWFzZSgpKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94
eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5k
ZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTM3Niw3ICszOTAsOSBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3Vi
bGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVl
c3RlZCA9IGZhbHNlOwogCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsK
ICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9z
dC0+aWRsZVVwZGF0ZUxheWVycygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMg
YW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4K
ICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNh
bGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAtNDAwLDEzICs0MTYsMjUgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwg
ZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1l
QW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIEND
VGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVF
bnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJU
cmVlSG9zdEltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKworICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5hcHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1f
c291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVChtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdElt
cGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTQxNCwxMCArNDQyLDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCgh
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAg
ICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCkBA
IC00MzksMjAgKzQ2MywyMSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9pZCBD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUgPSA5OTk5
OTsKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgICAg
ICByZXR1cm47CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAK
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7
Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBB
U1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRl
cygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwog
Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLQorICAg
IGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkgeworICAgICAgICBBU1NF
UlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygp
KTsKKyAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsK
KyAgICB9CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYTQxYzBkNTY0YjYzODEzYmE2M2E2Y2VkNThlMDRkNjlj
MzhmMmRlYS4uYmM1MzQ4OGUxYmU0MmE0YWU0YzcwMmZmNTAyNDhkMmUzYzkyMjA2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpOwpAQCAtNzksNiArODAsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0ZUVu
dHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwor
ICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0
OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJlZ2lu
RnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUs
IFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCk7CkBAIC05Myw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFz
c093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbklt
cGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUND
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCB1
cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+KTsKICAgICB2
b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwog
ICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwog
ICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBj
NzlhYjM0NTdmMjFiMWViZjkzNDQ0Y2ZkYjAzMTdjY2UwODNiODkwLi44YzQwZmQ0NTRiZDJlZjg5
NjBiYWFjMTk0Nzc5MmU5ZTY1ZThkNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNyw2ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxh
eVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRp
bmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcAppbmRleCAxMTk1ZWExYzAzYzcxZjJhODQ1ZjA3MjNjYzNjZjdhOGRmMTMyNjc1Li41YmVl
MTA1M2NhNzQzMjY5YTRkMTM0MWUyMzgxZjAzYTBkYmJkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV2Vi
U2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwg
bV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRl
cihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV9k
ZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBA
IC01MTcsNCArNTE4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBhcnRpYWxTd2FwRW5h
YmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0UGFydGlhbFN3YXBFbmFibGVk
KGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBk
YXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxl
ZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGYwNzcwYjEzM2FhNzMzMThhY2YyYzU3NmVmMDlk
NGM3YTZkYzQ0M2UuLjRkMjc3Mzk0MWIzYTJlMGIyYjZjYjA0ODVkYjAzOTVlYTMwYzY3MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMzIs
MTIgKzEzMiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFp
bnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdF
bmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9v
bCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CisgICAg
dmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5
VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9z
ZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29s
IG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAg
ICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGE1OWNh
MmM2OGIwYmI2MzAyNjRiY2ZkM2YxMjdlZmYyMWYzNGIyNTQuLjBiOWE1ZDdjNmEyNDM3MjBkZDg4
OTQ3YTk4OTA0MmYxMTU5ZjFhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTI5NTIsNiArMjk1Miw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBjY1Nl
dHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdp
bmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFn
ZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICAgICAgY2NTZXR0aW5n
cy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRlcygp
OwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMp
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhp
cywgY2NTZXR0aW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA2MjIyMDBjOWY1MzhhNzIyNTE3MjJhNTAyMTI2
NzQ2MDhlMWJiMGYyLi41MTZiM2RjOWZkMTIyNDRiYzAzYjMzMDEyNjhhZDZjYThjOTZhNGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKQEAgLTkwNiw2ICs5MDYsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RT
ZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCitjbGFz
cyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xh
c3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGljIENDTGF5ZXJEZWxlZ2F0
ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlKENDTGF5ZXJU
cmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05MjgsNDYgKzkzNiwxMTcgQEAgcHJpdmF0ZToKIAogY2xh
c3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgOiBwdWJsaWMgQ29udGVu
dExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlICpk
ZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7IH0KKyAgICBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRleHR1cmUoQ29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0
dXJlKQorICAgICAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAg
ICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
KCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnByZXBhcmVS
ZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0
ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyBy
ZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICBpbnQgaWRsZVBhaW50Q29udGVudHND
b3VudCgpIHsgcmV0dXJuIG1faWRsZVBhaW50Q29udGVudHNDb3VudDsgfQotICAgIHZvaWQgcmVz
ZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50ID0gMDsgbV9pZGxl
UGFpbnRDb250ZW50c0NvdW50ID0gMDt9CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBt
YW5hZ2VyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1
cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOworICAgICAgICB9CisK
KyAgICAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtIC8qIHRleHR1cmVGb3JtYXQgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOworICAgICAgICB9
CiAKLSAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9Ci0gICAg
dm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAq
LywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8s
IGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5
ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KCkKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6IG1fbGF5ZXIobGF5ZXIpIHsgfQorCisg
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVyOwor
ICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKGRlbGVnYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRl
eHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopCiAgICAgewotICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKTsKLSAgICAgICAgbV9wYWlu
dENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9
IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CiAgICAgfQorICAgIHZp
cnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRs
ZVBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3Vu
dCsrOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eSgpOworICAgICAgICBwcmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Q0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBk
YXRlQ291bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KCk7CisgICAgICAgIGlkbGVQcmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAK
KyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZSgpIHsgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCsrOyB9
CisgICAgaW50IHByZXBhcmVUb1VwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlVG9VcGRh
dGVDb3VudDsgfQorCisgICAgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlKCkgeyBtX2lkbGVQcmVw
YXJlVG9VcGRhdGVDb3VudCsrOyB9CisgICAgaW50IGlkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCgp
IHsgcmV0dXJuIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OyB9CisKKyAgICB2b2lkIHBhaW50
Q29udGVudHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250
ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KKworICAgIHZvaWQg
cHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisgICAgaW50IHByZXBhcmVS
ZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBk
YXRlUmVjdCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291
bnQoKSB7IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0
ZSAqZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCisg
ICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCgwKQorICAgICAgICAsIG1faWRsZVByZXBh
cmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKLSAg
ICAgICAgLCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX3VwZGF0ZUNv
dW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAgICAgICwgbV91cGRh
dGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkp
OwogICAgIH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBpbnQgbV9wcmVwYXJlVG9VcGRhdGVDb3VudDsK
KyAgICBpbnQgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQ7CiAgICAgaW50IG1fcGFpbnRDb250
ZW50c0NvdW50OwotICAgIGludCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1f
dXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV91cGRh
dGVSZWN0Q291bnQ7CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQg
c2hvdWxkIG5vdCBwcmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRl
ZCBkdXJpbmcgY29tbWl0LgpAQCAtOTk0LDE2ICsxMDczLDE5IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBhZnRlclRlc3QoKQogICAgIHsKLSAgICAgICAgLy8gcGFpbnRDb250ZW50c0lm
RGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgotICAgICAgICBFWFBFQ1RfRVEo
MSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8v
IHByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAg
IEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVUb1VwZGF0ZUNvdW50KCkp
OworCisgICAgICAgIC8vIGlkbGVQcmVwYXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5pZGxl
UHJlcGFyZVRvVXBkYXRlQ291bnQoKSk7CiAKLSAgICAgICAgLy8gaWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZQotICAgICAgICBFWFBFQ1RfRVEo
MSwgbV91cGRhdGVDaGVja0xheWVyLT5pZGxlUGFpbnRDb250ZW50c0NvdW50KCkpOworICAgICAg
ICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdHdpY2UuCisgICAg
ICAgIEVYUEVDVF9FUSgyLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgp
KTsKIAotICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUg
YmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRD
b250ZW50c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+
cGFpbnRDb250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5
ZXItPnVwZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3Vs
ZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBh
cyBwcmVwYXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5w
cmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnVwZGF0ZVJlY3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5
ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggOTY3ZjIzNDJmMDM0ZDJlODQ2MTJjODgw
N2JjZTVhZmU1OWY5NWU0ZC4uNmZkNTZkOWJmZTQ1MDdlZmM4OWNkNjhjNjQ1ZWU1ZDgyNTBiNzA2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZh
czJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVGV4
dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0
Lmg+CkBAIC03OSw2ICs3OCwyMSBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRl
eHR1cmUsIHZvaWQodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkpOwogfTsKIAor
Y2xhc3MgTW9ja1VwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQoY29udGV4
dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHsKKyAgICAgICAgdGV4dHVy
ZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3Qo
bV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFRleHR1cmVB
bGxvY2F0b3IqIG1fYWxsb2NhdG9yOworfTsKKwogVEVTVF9GKENhbnZhczJETGF5ZXJDaHJvbWl1
bVRlc3QsIHRlc3RGdWxsTGlmZWN5Y2xlKQogewogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzOwpAQCAtOTAsNyArMTA0LDcgQEAgVEVTVF9GKENhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3QsIHRlc3RGdWxsTGlmZWN5Y2xlKQogICAgIE1vY2tDYW52YXNDb250ZXh0JiBpbXBs
TW9jayA9ICpzdGF0aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGxDb250ZXh0LmdldCgpKSk7
CiAKICAgICBNb2NrVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3JNb2NrOwotICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcigmYWxsb2NhdG9yTW9jayk7CisgICAgTW9ja1VwZGF0ZUhhbmRsZXIg
aGFuZGxlck1vY2soaW1wbENvbnRleHQuZ2V0KCksICZhbGxvY2F0b3JNb2NrKTsKIAogICAgIGNv
bnN0IEludFNpemUgc2l6ZSgzMDAsIDE1MCk7CiAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVT
aXplID0gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CkBAIC0xMzcsNyArMTUxLDcg
QEAgVEVTVF9GKENhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QsIHRlc3RGdWxsTGlmZWN5Y2xlKQog
ICAgICAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NM
YXllckltcGwoKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xh
eWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKIAotICAgICAgICBjYW52
YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIp
OworICAgICAgICBjYW52YXMtPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlck1vY2sp
OwogICAgICAgICBjYW52YXMtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAog
ICAgICAgICBFWFBFQ1RfRVEoZnJvbnRUZXh0dXJlSWQsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5
ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggOGFiNjNjODc2YmI2NWFkMWI1Y2U1NDA1NzdkYTUwMmFiOTkwOGVlMy4uZmVhMGI5YzkzNzU0
MjVkMGQ0YjM5MDYwMzEyYzUwMjJlYTYxOWFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNyw5ICsy
Nyw5IEBACiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJMYXll
clRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIg
Ly8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVw
ZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KIApAQCAtMzgsMjAgKzM4LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
IG5hbWVzcGFjZSB7CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1
cmVBbGxvY2F0b3IgeworY2xhc3MgRmFrZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0
dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiB9OwogCiBjbGFzcyBGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiB0ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9Cisg
ICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAorICAg
ICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jikg
eyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4
dHVyZTsKICAgICB9OwogCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTU5
LDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIp
IHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFu
YWdlcikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUm
LCBpbnQsIGZsb2F0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJ
bnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQogfTsKIAogY2xhc3MgRmFr
ZUNDVGlsZWRMYXllckltcGwgOiBwdWJsaWMgQ0NUaWxlZExheWVySW1wbCB7CkBAIC0xMDcsNiAr
MTEwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6bmVl
ZHNJZGxlUGFpbnQocmVjdCk7CiAgICAgfQogCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIHJlY3QpCisgICAgeworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHMocmVjdCk7CisgICAgfQorCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4
dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9CiAKIHByaXZh
dGU6CkBAIC0xMjgsMTQgKzEzNiwxNCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEaXJ0eVRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGls
ZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50
cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwg
c2lkZS4KQEAgLTE0OCw3ICsxNTYsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgog
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUg
Zmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBw
YWludGVkLgpAQCAtMTYzLDggKzE3Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludFRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRS
ZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRp
bGUgc2l6ZSBpcyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0aCBvbmUgdmlzaWJsZSB0aWxl
IGluIHRoZSBjZW50ZXIuCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKQEAg
LTE4MCw3ICsxODgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFp
bnRUaWxlcykKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGls
ZXMgaW4gdGhlIGNlbnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQo
dmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIp
OwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAv
LyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTkzLDcgKzIw
MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQog
ICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKICAgICAgICAgRVhQ
RUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAgICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKLSAgICAgICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAgIGxheWVyLT5mb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0QWxsVGV4dHVyZXMoKTsKICAgICB9CkBAIC0yMjksOCArMjM3LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+
IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAg
ICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxl
cjsKIAogICAgIC8vIFRoaXMgaW52YWxpZGF0ZXMgOSB0aWxlcyBhbmQgdGhlbiBwYWludHMgb25l
IHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwpAQCAt
MjQxLDcgKzI0OCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0
T2ZNZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRp
bGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVk
c0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBA
IC0yNTQsNyArMjYxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRP
dXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBp
ZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAgIEVYUEVDVF9GQUxTRShs
YXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121160</attachid>
            <date>2012-01-04 14:51:52 -0800</date>
            <delta_ts>2012-01-13 03:31:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120104175151.patch</filename>
            <type>text/plain</type>
            <size>94690</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMwMjQ1MGEyNWUwYjFj
NWM1ODkwNTFlMTI4YjQ0ZWQ1Yjk0YzhlYS4uYzg2Zjk2MGJjMWNhOGFkZGM0NDAxNGMxNTZlODQ3
YWEyMWU4MmJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0wMS0wNCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnQgdXBsb2FkaW5n
IHRleHR1cmUgcmVzb3VyY2VzIGFzIHNvb24gYXMgZW5vdWdoIGNvbnRlbnRzIGhhcworICAgICAg
ICBiZWVuIHBhaW50ZWQgZm9yIG9uZSB0ZXh0dXJlIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgIExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaXMgcmVwbGFjZWQgYnkKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSB3aGljaCBhbGxv
d3MgdXMgdG8KKyAgICAgICAgcmVwZWF0ZWRseSBnbyB0aHJvdWdoIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzIGZvciB2YXJpb3VzIHB1cnBvc2VzLgorCisgICAgICAgIFVwZGF0ZSB1bml0IHRlc3Q6IFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QucHVzaERpcnR5VGlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNo
cm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6On5UZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9t
aXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXI6On5IYW5kbGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGly
dHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVy
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1
bTo6V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRh
dGVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFu
ZGxlcjo6flVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpVcGRhdGVIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjppZGxl
VXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5k
VmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5k
TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVU
aHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OmNvbW1pdElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rl
eHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMi0wMS0wMyAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGFlZmQ5YmY1ZjAwMGVmMTE4Mzk3NTY3
OGNkOTFiNzczMTkzYzViYy4uYzY1OTVlNDdmODljMWQ4YTdhN2Q1YjBlMjQ1MDJmYWQ1NjEyMTAw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxMi0wMS0w
NCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJv
bWl1bV0gVXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlbGF5
VGV4dHVyZVVwZGF0ZXMgc2V0dGluZyB0aGF0IGlzIHVzZWQgYnkgY29tcG9zaXRvciB0byBkZXRl
cm1pbmUKKyAgICAgICAgaWYgdGV4dHVyZSB1cGxvYWRzIHNob3VsZCBiZSBkZWxheWVkIHVudGls
IGFsbCBwYWludGluZyBoYXMgY29tcGxldGVkLgorICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0czog
Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgYW5kCisgICAgICAgIFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAg
KiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJ
bXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6
OnNldERlbGF5VGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRleHR1cmVVcGRhdGVz
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVs
ZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6
ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OnByZXNlcnZl
czNEKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJl
ZCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAo
V1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0
ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OnRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRs
ZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUNv
dW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OmlkbGVQcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0Q291bnQpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBk
YXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6
YWZ0ZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZl
Y3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoK
KyAgICAgICAgKFdURjo6RmFrZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OkZha2VM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkZh
a2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpURVNU
KToKKwogMjAxMi0wMS0wNCAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQ6W0Nocm9taXVtXURpc2FibGUgV2ViUGFnZU5ld1NlcmlhbGl6ZVRl
c3QuQ1NTUmVzb3VyY2VzIGFuZCBXZWJQYWdlTmV3U2VyaWFsaXplVGVzdC5UZXN0TUhUTUxFbmNv
ZGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggZGQ5MzE5MTNmNzA5Nzc2MjYzNWZlNjQxOWQzODc1MWFmZjg2MTc5ZC4uMzdi
YTM0NjI1NmQxMTE5Y2Q2MWZlNmJiMjdhNjdjMTcwYzMzZGU5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0
dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4
dHVyZVVwZGF0ZXIpCiB7CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1w
bGVkCiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRS
R0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNT
Y2FsZSkKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAK
QEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAgICAgYm9yZGVyVGV4
ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
IGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwor
ICAgIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50
ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiB9CiAKIHZvaWQgQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGZhNjQ4MThhZGM3ZjZhYmI1YzgyMjE4NDc1NDdlMmY0MjVmMDJhYWYuLmU1
ZmNmNjRhYmJkNmUzY2FhNmExMmQ0MjFhZWU2MTVlNWM3ZTA0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAg
Y2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgot
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmly
dHVhbCB+VGV4dHVyZSgpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShU
ZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxl
KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA4MjIxZGQyZTUyMWJkNjNmZTBlNmYwZjlkNjIyNGUzOGRmYjM0Mjk4Li5jODA0ZDRjZjI1
YzEyZjgyZjAzYmMwODg2M2I1OTYxZjExNjhiZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAt
ODYsMTAgKzg2LDEwIEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBC
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAgICBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBm
bG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2Fs
ZSkKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAg
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKKyAgICBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnRlbnRSZWN0
LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlKTsKIH0KIAogdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChT
a0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CmluZGV4IGU1MTYzYzIwMjNlYzZlNzgxNDg5ZTg1NTA1MTIwMjI1ODRlNTkxZTIuLjY5YjkwNWMw
NzhiYmZlNThkMmVlN2FhODA0MThjODQ0OGRhYTNkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2
aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4
dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhl
bHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBwYWludENvbnRl
bnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwogICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBHQzNEZW51bSBmb3JtYXQsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCAzNDA4YWE1NmIyZTZhNGM3NWFiODA2
MDJjMTZiOTIzY2UyNDkyNWVkLi44ZTJjYmE3YTZlNjNiZmI5ZmZjMWUyODdiNzZjNzI0Yjk5NGUz
YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ3LDYgKzQ3
LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXll
cikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBt
X2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9
CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hyb21p
dW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250
ZXh0LCBzaXplKSk7CkBAIC01OSw2ICs3Myw3IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2Fu
dmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJCiAg
ICAgLCBtX2JhY2tUZXh0dXJlSWQoMCkKICAgICAsIG1fZmJvKDApCiAgICAgLCBtX3VzZURvdWJs
ZUJ1ZmZlcmluZyhDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCisgICAgLCBtX3VwZGF0ZXJUZXh0
dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgaWYgKG1fdXNlRG91Ymxl
QnVmZmVyaW5nKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3Jl
YXRlRnJhbWVidWZmZXIoKSk7CkBAIC0xMzEsMTIgKzE0NiwxMiBAQCB2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5h
Z2VyKQogICAgICAgICBtX2Zyb250VGV4dHVyZS5jbGVhcigpOwogfQogCi12b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ2FudmFzMkRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yICphbGxvY2F0b3IpCiB7CiAgICAgaWYgKCFtX2JhY2tU
ZXh0dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250VGV4dHVyZS0+aXNWYWxpZCht
X3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkp
OworICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwog
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV9iYWNrVGV4dHVyZUlkLCAwKSk7CkBAIC0xNDcsNiArMTYyLDExIEBAIHZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZsdXNoKCkpOwogfQog
Cit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFu
ZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwog
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwq
IGxheWVyKQogewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA4MzYxNWExZjIyMzU2
MTY0NjJlYjFmOGQ0MTIyZTFhZDhlNThjOTIyLi5kNDViYThjYTMyMjE5MGI5N2Y2NjA0NWQ5MzUy
MTQ2ODc0Yzk3MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDQs
NiArNDQsMjMgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5p
bmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0g
OiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRl
clRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKENh
bnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVt
Kik7CisKKyAgICAgICAgQ2FudmFzMkRMYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExh
eWVyQ2hyb21pdW0oKTsKIApAQCAtNTUsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJU
cmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNo
UHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNv
bnRlbnRzVGV4dHVyZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CkBA
IC03Niw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gc3luY2hyb25pemUgaXRzIGRyYXdzIHdp
dGggdGhlIGNhbnZhcyB1cGRhdGVzLgogICAgIGJvb2wgbV91c2VEb3VibGVCdWZmZXJpbmc7CiAg
ICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Zyb250VGV4dHVyZTsKKyAgICBPd25QdHI8VXBk
YXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDVmYTY3ODU0YzZiZDdmNTM4MmI1MmIw
ZWVmYmExMDMxNjZmYzA4ZmUuLjFmM2I2NDRlZTY2YmJkMDc1MTdhYzQ4NWM5NWNiMjhkZDAxZTIy
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0z
Niw2ICszNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCiBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRlcikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBhOGZlZmYzNDIyYjFiODUzMGI4ZjY4
OWZmMmM1NjY3NjYwYmVkNWNmLi5iZTlmZjEzM2NmZTM3NDdlNGY5NTY3MTM3YzY5NGVlZDhjYmQ4
ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zOSw2
ICszOSwxOSBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJl
VXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAg
ICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cAppbmRleCBlZjEwNWI1M2ZmZWFiMTM5OWI1MjNkOGM3ZDc5MDI1MTI1YTM2Yzk3Li5hYzJjZTIx
ZjU4M2I2YmVmYWM5Y2VkYTkxNzU2NGE4ODYwYjQ2NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIENvbnRlbnRMYXllckNocm9taXVtOjp+
Q29udGVudExheWVyQ2hyb21pdW0oKQogewogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlv
bigpOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkoKQogICAgIG1fbmVlZHNEaXNwbGF5ID0gZmFsc2U7CiB9CiAKLXZv
aWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAg
ICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2LDYgKzExNiwy
MCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHko
KQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgQVNTRVJUKGRyYXdzQ29udGVudCgp
KTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsK
KyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50cyhs
YXllclJlY3QpOworfQorCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJl
VXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAjaWYgVVNFKFNLSUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBjM2RmMWMyMGM4MGMwNTJiNWVjYjQ0
MDgwN2ViZjdjOWQ1YjU0MDNiLi43YjJhNjk1NTg3YjhiYzU0NWY4NzAwMzU5NWRkMGJkNzJmMjQz
OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQ5LDggKzQ5LDkgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21pdW0oKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIGlk
bGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KCk7Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW0oQ0NMYXll
ckRlbGVnYXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAxOWRmYTJmMDA2
Yzk4ODQ3NzBlNjc2YzQ1ODViZTk0NjcxMzRmM2IzLi44ZjJkZThhMGU4OTNkNDFkYWYzMGI2NTFm
MTUzNjU0Y2QzNWE3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTU4LDcg
KzU4LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2VsZXJhdGVkQ2Fu
dmFzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogfQogCiBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093
blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDFiMWQxMWJmYTlhZDYyZGJkNTg3MGY3NmQx
MjAyNzhhMWE4ZThiOTcuLjIxYWUzZGQ2MTEyNzBjNTEwOTliMzZjNzgyMTE0NDNiOTI2NjM4NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVi
bGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcAppbmRleCAxZDYyOTQ5NjQ2ZmFjZGYyZGIwNjI1MGVkNzA2NTZhNDY3MjA5ZDI0
Li4xZTVjOTRjNzUwZDdiOGI2Y2MzYzg4YzlhNDM5M2UwYmM0NDZiZmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIAogI2luY2x1ZGUgIkltYWdl
TGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIK
LSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1
cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKQEAgLTQ2LDEwICs0NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1
YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+
IHRleHR1cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkKKyAgICAgICAgICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0
ZXh0dXJlKQogICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQog
ICAgICAgICB7CiAgICAgICAgIH0KQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBj
b250ZW50c1NjYWxlICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRl
clRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKICAgICB7CiAgICAgICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBAIC0xNTgsNyAr
MTU4LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250
ZW50cykKICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAg
ICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCAx
MjU5YTY2M2M0Y2EzNmQ1OTA3ZDRkYWFlNjQ3MWFlOTQxNzM0Y2M2Li4wZjYxYTFkOWRiODE4NmE4
MTRkZjliNDNmNDNjYmUxNmE3MzJhZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVt
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKaW5kZXggMDk0N2E2Yzc5N2FiODdiNjY2MDVjMTJhZWZlNWFmMGEzNzNhMmI4OS4uZjY2
YzcwYjJlNzU3NzY3OWRlOGQ3ZjY1ZGZjODgxYWIzNTUwOWUzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAK
IGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0xNjAsOSArMTYwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkg
ZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzRHJhd2FibGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNU
ZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAzNGRiNzJhYTQ1MmNlYzI2YTM3NjIy
ZDYzN2ZkOGQxYWY0NGI0ZGIzLi5kMDA2M2ViOTMzNzhkMDQxZWY3MGI2ZjQ0NDg1ZjUzZGVhMDg4
NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OCwxNCArNDgsMTYgQEAg
cHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0g
ICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgp
OyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiAw
OyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBt
X3RleHR1cmUodGV4dHVyZSkgeyB9CisgICAgfTsKKworICAgIGNsYXNzIEhhbmRsZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGFuZGxlcigpIHsgfQogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTcxLDcgKzczLDcgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVy
IGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3Jt
YXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNh
bXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1h
dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
LyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyog
Ym9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywg
Y29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZs
b2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZTNjNWM0OGY3OTIwZmVl
YzcwOGU0ZGFjN2FlZjY0ZTIzZThhYWYwMC4uNjAzMjY4YTYyZTNmMmQwNDcwOWI2Y2RiNjI5ZGFi
ZWMzNzZmY2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJDaHJvbWl1bShDQ0xheWVy
RGVsZWdhdGUqIGRlbGVnYXRlKQogewogfQogCi12b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4
dCwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghbV9uZWVkc0Rpc3BsYXkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCAwZjJmNGJlN2Y0NmI3OGI2
ZTgxYjMzMjJmN2FjM2E0NzIyYWQ2NWYwLi5kMGRjODVkMjg2Mzg0M2ZkMmFjYmJmMzE2ZDg2OWY4
YTg4NzVlMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsdWdpbkxheWVyQ2hyb21pdW0gOiBwdWJs
aWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2lu
TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1w
bCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCmluZGV4IDUzN2UxMzdlOGQ4ZWM1MThiOTM0YWE1Y2QyZDcwMGM3NGIxOWZl
NGIuLmVlNzQ1MjMwNDJiZWMxMDc4MDIwNmNhZGU0ODZiYmRjNjEyZTViOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBA
IC00OCwxMyArNDgsMTMgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3Jk
ZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1
cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0
KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAg
ICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVkKHRydWUpOwogICAgIEdyYXBoaWNzQ29udGV4
dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhn
cmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVu
dFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCmluZGV4IDQ0MGY4YjAzZWE0ZjI3MzlhOTc1NDM4NjdhYzdlYjE1NDAzMGQwYzIuLmFlZmJm
YzNmNmE0YTJhM2FhNzFhNWIxZmI0M2VkZWFmMWNiZjZkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwogCi0gICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRz
U2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxv
YXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWQyY2IxM2ZjNzMw
OTM2YTljOTRkNGE4ODQ1MTM4M2MzY2QyZjEzOC4uM2FkNGJhMWMwNTY2NmQ0ZDU5Mzg1YTE5Yjg5
Y2EwNDQ1ZWFiMzEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xODcs
MTAgKzE4NywxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChD
Q0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgbV9zYW1wbGVkVGV4ZWxGb3JtYXQgPSB0ZXh0dXJl
VXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxGb3JtYXQobV90ZXh0dXJlRm9ybWF0KTsKIH0KIAotdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGlu
ZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUg
aW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0
ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0eSgpIHx8IG1fdGlsZXItPmlzRW1wdHkoKSkKKyAgICBp
ZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0eSgpIHx8
IG1fdGlsZXItPmlzRW1wdHkoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGludCBsZWZ0ID0gbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QueCgpOwpA
QCAtMjMyLDExICsyMzIsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZQogICAgICAgICAgICAg
aWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJlY3QuaGVp
Z2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgdXBkYXRlci5h
cHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAg
ICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
ICAgICAgICAgfQogICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50
UmVjdCk7CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGls
aW5nT3B0aW9uIHRpbGluZ09wdGlvbikKQEAgLTM1OSwxMiArMzU3LDYgQEAgdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBp
ZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQogewotICAgIC8v
IFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgotICAgIGZvciAoQ0NMYXllclRpbGlu
Z0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJl
Z2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAg
IFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+
c2Vjb25kLmdldCgpKTsKLSAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOwot
ICAgIH0KLQogICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5
IHJlY3QgdG8gY29udGFpbiBhbGwKICAgICAvLyB0aGUgZGlydHkgcmVnaW9ucyBjdXJyZW50bHkg
YmVpbmcgZHJhd24uCiAgICAgSW50UmVjdCBkaXJ0eUxheWVyUmVjdDsKQEAgLTQwMCwxMiArMzky
LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wg
aWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0
eSgpKQogICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QobGVmdCwg
dG9wLCByaWdodCAtIGxlZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKIAotICAgIC8vIENhbGxp
bmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1h
eSBoYXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywg
d2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBk
ZWxldGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5n
IHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNv
IHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZl
IHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXIt
Pmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCkpOwogICAgIGZvciAoaW50IGogPSB0
b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0g
cmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChp
LCBqKTsKQEAgLTQyOCwxNSArNDE0LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAg
ICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKIAogICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVS
ZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgp
LT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotCiB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCkKIHsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwpAQCAtNDQ0LDYgKzQyNSwxMiBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKICAg
ICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKIAorICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBm
b3IgYWxsIHRpbGVzLgorICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxl
ci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUg
PSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKKyAgICAg
ICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOworICAgIH0KKwogICAgIHVwZGF0ZUJv
dW5kcygpOwogCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRp
bGVzKCkpCkBAIC00NTcsOCArNDQ0LDExIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogCiB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWRsZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiB7
Ci0gICAgLy8gQWJvcnQgaWYgd2UgaGF2ZSBhbHJlYWR5IHByZXBhcmVkIGEgcGFpbnQgb3IgcnVu
IG91dCBvZiBtZW1vcnkuCi0gICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQgfHwgIW1fcGFpbnRSZWN0
LmlzRW1wdHkoKSkKKyAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsK
KyAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKKworICAgIC8vIEFib3J0IGlmIHdlIGhhdmUg
cnVuIG91dCBvZiBtZW1vcnkuCisgICAgaWYgKG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVChtX3RpbGVyKTsKQEAgLTU0MCw1ICs1MzAsMjAgQEAgSW50UmVj
dCBUaWxlZExheWVyQ2hyb21pdW06OmlkbGVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZUxheWVyUmVjdCkKICAgICByZXR1cm4gcHJlcGFpbnRSZWN0OwogfQogCit2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3sK
KyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0
eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50
byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0
IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8g
dGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNh
bid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhl
IHBhaW50IGZpbmlzaGVzLAorICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVy
ZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisg
ICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigp
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2Fs
ZSgpKTsKKworICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdCk7Cit9CisK
IH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGYwYWIwNTdlZmYyMzA2Mjc3MTUzM2QwN2Q4NzQyMGMzNThhZjVj
ZjQuLjYzMjc1YTE0YjRjMjVjYTEzYzc4NDI5MDk2MTVjYzM0OTUwOGE5NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtNzksNyAr
NzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50
aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFsaWRhdGVSZWN0
KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CiAKLSAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVk
IHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KKyAgICAv
LyBQcmVwYXJlIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVj
dC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwog
CiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRp
b25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCkBAIC04OCw2ICs4OCw5IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5zIHRydWUgaWYg
bW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxlUGFpbnQoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAorICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0
byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworCiAgICAgdmly
dHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKICAgICB2aXJ0dWFsIFRl
eHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwpAQCAtMTA2LDcgKzEwOSw3IEBA
IHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50KSBjb25zdDsKICAg
ICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50KTsKIAotICAgIC8vIFRlbXBvcmFy
eSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBh
cmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAgSW50UmVjdCBtX3JlcXVlc3Rl
ZFVwZGF0ZVRpbGVzUmVjdDsKIAogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9V
cGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDcwODRkNjZmZjFmNzFkM2ViMjlj
ZDAyZWZjYTljMmNiMmQ3OTk2ODcuLjExMWU2YzY1OThkNWQ5Mzg4ODdjMTc3M2E4ODQyNDg0NGEy
Y2Q3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzksOSArMzksMjQg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKiBs
YXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2ViR0xMYXll
ckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRl
bGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9taXVtKGRl
bGVnYXRlKSk7CkBAIC01NSw2ICs3MCw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXll
ckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1cmVDaGFu
Z2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5n
QnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUo
dGhpcykpCiB7CiB9CiAKQEAgLTY5LDcgKzg1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06
OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpICYmIGNvbnRleHQoKSAmJiAoY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwog
fQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3Zv
aWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTgsNiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJl
ckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAg
IGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVj
dCgpKTsKK30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllckltcGwqIGxheWVyKQogewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBlYjUxNDZlYjcz
OTAzMGZhYmFjNDM5NjI3ZTVjN2MwNDE2ZjVhNTYxLi4yMGJlYzlmZmQ0ODEzNGMzZWZlMmE4MmQ1
MmFlYzQ4Y2MwN2ZhNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiAr
MzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRy
YXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXllckNocm9t
aXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwog
Y2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewog
cHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8
VXBkYXRlclRleHR1cmU+IGNyZWF0ZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVy
KSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJl
KFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9s
YXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVt
PiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXll
ckNocm9taXVtKCk7CkBAIC01Myw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1
cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsK
ICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKQEAg
LTc4LDYgKzk3LDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBo
ZXJlLCBiZWNhdXNlIHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJl
ZmVyZW5jZSB0byB0aGUgV2ViR0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1f
ZHJhd2luZ0J1ZmZlcjsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4
dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGNkNzU2
ZDYwMGRjMGYwZTNmMzAxYjMyZDdlOGU4NGZjMDBhYjA3NjEuLjg2MjRhZDhmZTg2ODcyY2NkZGUx
ODg1MTgxNjg0MGZiYzBhMDA3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCkBAIC00
OCw2ICs0OSwyMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3Rh
bmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAor
Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVIYW5kbGVyKENDUHJveHkqIHBy
b3h5KQorICAgIDogbV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpVcGRh
dGVIYW5kbGVyOjp+VXBkYXRlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
OjpVcGRhdGVIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
Cit7CisgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+
dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxD
Q0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENs
aWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8
Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVl
SG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBAIC0zNDUsNyArMzYxLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94
eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlVG9VcGRhdGUoKQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTM1MywxMiArMzY5LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMo
KQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RM
YXllcigpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOwpAQCAtMzY3LDIxICszODMsNjMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJl
Y3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJl
Y3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVy
cy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAg
IEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChy
b290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdh
c24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0
ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOwor
ICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5k
ZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMi
LCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5
ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2Fs
Y0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwg
cm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3Vw
ZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7CisgICAgYXBwZW5kVmlzaWJsZUxheWVycyhtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LCBtX2xheWVyVXBkYXRlTGlzdCk7Cit9CisKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQoreworICAgIGlmICghcm9vdExheWVyKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQorewor
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDAp
OworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAt
IDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9t
aXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+cGFpbnRD
b250ZW50c0lmRGlydHkoKTsKKworICAgICAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94
eS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRs
ZXIpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmlkbGVVcGRhdGVMYXllcnMo
KQoreworICAgIGlmICghcm9vdExheWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2
aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlkbGVVcGRh
dGVMYXllcnMocm9vdExheWVyKCkpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVw
ZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6aWRsZVVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworCiAgICAgaWYg
KCFtX3RyaWdnZXJJZGxlUGFpbnRzKQogICAgICAgICByZXR1cm47CiAKQEAgLTM5NSwyMiArNDUz
LDMwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSog
cm9vdExheWVyKQogICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2Fy
ZHMgdGhlIG1heGltdW0gbGltaXQuCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRN
YXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0Qnl0ZXMpOwogICAgIC8vIFRoZSBzZWNv
bmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBuby1vcCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcg
YWxyZWFkeSBvY2N1cmVkIGFib3ZlLgotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxp
c3QsIFBhaW50SWRsZSk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0
ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAg
ICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0u
Z2V0KCk7CisgICAgICAgIGxheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAg
ICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKworICAgICAgICBVcGRhdGVIYW5k
bGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIH0KKwogICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKIH0KIAotLy8gc3Rh
dGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
YXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckxpc3QmIHVwZGF0
ZUxpc3QpCiB7Ci0gICAgQVNTRVJUKGxheWVyKTsKLSAgICBBU1NFUlQoUGFpbnRWaXNpYmxlID09
IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBlKTsKLSAgICBpZiAoUGFpbnRWaXNp
YmxlID09IHBhaW50VHlwZSkKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7
Ci0gICAgZWxzZQotICAgICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7Cisg
ICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxkIGhhdmUgYWxy
ZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJmYWNlIGxheWVy
IGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwgd2UgbWF5IHN0
aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNF
bXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250ZW50KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsKIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExh
eWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
TGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3Qp
CiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVy
cyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAv
LyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBi
ZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtNDE4LDI5ICs0ODQs
MjkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUpOworICAgICAgICBhcHBl
bmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRlTGlz
dCk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3Vy
ZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKICAgICBpZiAocmVwbGljYUxheWVyKSB7Ci0gICAg
ICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgcGFpbnRUeXBlKTsKKyAgICAg
ICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAg
ICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FM
YXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAg
ICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50
VHlwZSk7CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNr
TGF5ZXIoKSwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRl
eCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAg
OyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNl
TGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAg
Zm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpIC0g
MTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNo
cm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJm
YWNlSW5kZXhdLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1
cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQVNT
RVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+ZHJhd09w
YWNpdHkoKSk7CiAKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
cmVuZGVyU3VyZmFjZUxheWVyLCBwYWludFR5cGUpOworICAgICAgICBhcHBlbmRNYXNrQW5kUmVw
bGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyLCB1cGRhdGVMaXN0KTsKIAog
ICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVy
TGlzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4
IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7CkBAIC00NTMsNDkgKzUxOSwyOSBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlz
dCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogCiAgICAgICAgICAgICBBU1NFUlQoIWxheWVyLT5i
b3VuZHMoKS5pc0VtcHR5KCkpOwogCi0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShs
YXllciwgcGFpbnRUeXBlKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihsYXllciwg
dXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikK
IHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsg
c3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9t
aXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQo
KTsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVy
U3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJm
YWNlKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwotCi0g
ICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICAgICAg
cmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0LCB1cGRhdGVyKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5y
ZXBsaWNhTGF5ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNh
TGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxh
eWVyKCktPm1hc2tMYXllcigpKQotICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+
cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNv
bnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBMYXll
ckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUo
KTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IGxh
eWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKLQotICAgICAgICAgICAgaWYgKENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6cmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQ8TGF5ZXJDaHJvbWl1
bT4obGF5ZXIsIHJlbmRlclN1cmZhY2VMYXllci0+aWQoKSkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNv
bnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1f
bGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRl
eCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xh
eWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZShoYW5kbGVyKTsKICAgICB9CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRp
bmdVcGRhdGUoKQogewotICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJ
bmRleCA8IG1fdXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExh
eWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Cisg
ICAgbV9sYXllclVwZGF0ZUxpc3QuY2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJ
bmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgp
OyArK3N1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJU
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJm
YWNlKCk7CiAgICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVuZGVyU3Vy
ZmFjZVVwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggYjdkMWIxZTVmMDNkZDM5YmRjNjY4MDBmZjEyOWZiMjRl
NGNiMDVlYy4uOTQ5MWYyYWZiYzI5MzRhOGU0YTUwMzI1ZjMyYWZhMmI0MGM4NzMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5
ZXJQYWludGVyQ2hyb21pdW07CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwpAQCAtNzUsNyArNzQs
OCBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVy
VHJlZShmYWxzZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJhdGUoMCkKICAgICAgICAgICAgICwg
cGVyVGlsZVBhaW50aW5nKGZhbHNlKQotICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQo
ZmFsc2UpIHsgfQorICAgICAgICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCisgICAg
ICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAgYm9vbCBhY2Nl
bGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBAIC04NCw2ICs4
NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAg
Ym9vbCBwZXJUaWxlUGFpbnRpbmc7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7CisgICAg
Ym9vbCBkZWxheVRleHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24g
b24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRy
ZWVIb3N0CkBAIC0xODksOSArMTkwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CiAg
ICAgdm9pZCB1cGRhdGVMYXllcnMoKTsKKyAgICB2b2lkIGlkbGVVcGRhdGVMYXllcnMoKTsKIAot
ICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2Fs
ZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVy
KEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3ND
b250ZXh0M0QqKTsKQEAgLTIwMSwxNCArMjA0LDI2IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlu
aXRpYWxpemUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBVcGRhdGVIYW5kbGVyIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgVXBk
YXRlSGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZUhhbmRsZXIoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAgIH07CisKICAg
ICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7CiAKLSAg
ICBlbnVtIFBhaW50VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07Ci0gICAgc3RhdGlj
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSk7Ci0g
ICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsK
LSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qLCBQYWludFR5cGUpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21p
dW0qLCBMYXllckxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lk
IGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7
CisgICAgdm9pZCBpZGxlVXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGNs
ZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CkBA
IC0yMjQsNyArMjM5LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9y
b290TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXI7CiAKLSAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3Jl
bmRlclN1cmZhY2VVcGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsK
IAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGJiMzc4MDE0
N2IxNmMyNmI3NWE3Y2NkMjJhYThiOGZlODRlNzZiYmQuLmVlZTZkMThjMWU4MDA4ZDgzZjk1M2Nh
YjQ1YmY0ZDQ0MTY5ZTQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZp
bmUgQ0NQcm94eV9oCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTc5LDYgKzgw
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBj
YWxsZWQgYmVmb3JlIHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0g
MDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAv
LyBEZWJ1ZyBob29rcwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJl
YWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMy
YTcxNjY0YWY0M2NkNjRkMDE0ZDI4Yjg0MjY1MDk1YjIwMy4uMTQyMGY3MmFhNWI4N2I5NzU1Y2Ix
NDgwZDUyZWY3NzA2ZTU3YzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKQEAgLTE0NywxNSArMTQ3LDE5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0
TmVlZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+aWRsZVVwZGF0ZUxheWVy
cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVn
aW5Db21taXQoKTsKIAorICAgICAgICB3aGlsZSAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPnVw
ZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwu
Z2V0KCkpOwogCkBAIC0xNzAsNiArMTc0LDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpk
b0NvbW1pdCgpCiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsK
ICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZSA9IHRydWU7CisKKyAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlci5jbGVhcigpOwogfQogCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJv
eHk6OnNldE5lZWRzQ29tbWl0KCkKQEAgLTIwOCw2ICsyMTQsMTYgQEAgdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIEND
U2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3sKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIpOworCisgICAgaWYgKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAgICAg
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CisgICAgZWxzZQorICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFsbG9jYXRv
cigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5
IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVk
dWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCkK
IHsKQEAgLTI3Miw3ICsyODgsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElm
TmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBy
ZXBhcmVUb1VwZGF0ZSgpOwogCiAgICAgZG9Db21taXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaAppbmRleCAwZDVhNGEyZDhhNTE2YjFkN2JjZjk5MWE5OWUxYzc4Nzg5
OTQzZWM1Li5kNWJjMTMxNmM2M2I4MjFhMDc1NDA1NmYwYjYyM2RhN2E2YTZjZGZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDVGV4dHVyZVVw
ZGF0ZXI7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CkBAIC01NCw2ICs1NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0Nv
bXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiAr
ODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAgIGlu
dCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAg
IGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBPd25QdHI8Q0NU
ZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNl
IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5k
cyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRl
YTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3MmFiLi5kZjc3MjQ0MTNkMTczYzE4MDYyOGQ0
Zjg5YjQwY2U4OWQzYTExYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisj
aW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NUZXh0dXJlVXBk
YXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAg
OiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKIHsKICAgICBB
U1NFUlQobV9hbGxvY2F0b3IpOwogfQpAQCAtNjYsMjMgKzY2LDIwIEBAIGJvb2wgQ0NUZXh0dXJl
VXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogewotICAg
IHNpemVfdCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNp
emUoKSk7Ci0gICAgZm9yICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4OyArK21fZW50cnlJbmRl
eCkgewotICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbbV9lbnRyeUluZGV4
XTsKKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIW1fZW50cmllcy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5
ID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJl
Y3QpOworICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwogICAgIH0KIAotICAgIGlmICht
YXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
Ly8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCi0gICAgY2xlYXIo
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgPiAwOwog
fQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKIHsKLSAgICBtX2VudHJ5SW5kZXgg
PSAwOwogICAgIG1fZW50cmllcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmgKaW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIzMC4uYzM3
YWYzNGJlZTY0ZjdjMGFmNWIxMDM2OTUzMTE0MDIzYzU2NjY4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaApAQCAtNTksNyArNTksNiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBU
ZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAgICBzaXplX3QgbV9lbnRyeUluZGV4Owog
ICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAppbmRleCBjMDBkZDY2ZTUzNGFhMzQ0NGY2YmU4YWQ0YWFmMWQ4NTljZDE0ZmQ2
Li40ZTA0Y2M4OWY2YmU0OTgzNDgxZTU3MWE2ODljZjE1MDNmNGNkZWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcApAQCAtMjg4LDYgKzI4OCwyMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OnN0b3AoKQogICAgIG1fc3RhcnRlZCA9IGZhbHNlOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6
OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBUUkFDRV9F
VkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zdGFydGVkKTsKKworICAgIE93blB0cjxVcGRhdGVF
bnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVXBkYXRlRW50cnkpOworICAgIGVudHJ5LT5tX3Rl
eHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0Owor
ICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhy
ZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgZW50cnkucmVsZWFzZSgpKSk7Cit9CisKIHZvaWQg
Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojpm
aW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTM3Niw3ICszOTAs
OSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNl
TnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBt
X2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJl
VG9VcGRhdGUoKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1f
bGF5ZXJUcmVlSG9zdC0+aWRsZVVwZGF0ZUxheWVycygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5
aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3Rl
ZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVlZEFu
aW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAtNDAwLDEzICs0
MTYsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1
ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0
ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwog
fQogCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093
blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisgICAgICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKworICAgIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5hcHBlbmQoZW50cnktPm1fdGV4dHVy
ZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOworfQorCiB2b2lkIEND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2Nv
bW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVh
ZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCht
X3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1fbGF5
ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTQxNCwxMCArNDQyLDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAog
ICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAot
ICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVy
ZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkp
KTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0
ZSgpOwogfQogCkBAIC00MzksMjAgKzQ2MywyMSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRy
YXcoKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3Vy
Y2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
VXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVy
RnJhbWUgPSA5OTk5OTsKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkKQorICAgICAgICByZXR1cm47CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJG
cmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0
IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkKTsKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5o
YXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xl
YXIoKTsKLQorICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkgewor
ICAgICAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNN
b3JlVXBkYXRlcygpKTsKKyAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQuY2xlYXIoKTsKKyAgICB9CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1p
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYTQxYzBkNTY0YjYzODEzYmE2M2E2
Y2VkNThlMDRkNjljMzhmMmRlYS4uYmM1MzQ4OGUxYmU0MmE0YWU0YzcwMmZmNTAyNDhkMmUzYzky
MjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21w
bGV0ZU9uSW1wbFRocmVhZCgpOwpAQCAtNzksNiArODAsMTIgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3Ry
dWN0IFVwZGF0ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
bV90ZXh0dXJlOworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVj
dCBtX2Rlc3RSZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAg
ICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJh
bWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQg
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC05Myw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IH07CiAgICAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21t
aXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7
CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50
cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNr
UmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaAppbmRleCBjNzlhYjM0NTdmMjFiMWViZjkzNDQ0Y2ZkYjAzMTdjY2UwODNiODkwLi44YzQw
ZmQ0NTRiZDJlZjg5NjBiYWFjMTk0Nzc5MmU5ZTY1ZThkNmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNyw2ICsxMzcsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcAppbmRleCAxMTk1ZWExYzAzYzcxZjJhODQ1ZjA3MjNjYzNjZjdhOGRm
MTMyNjc1Li41YmVlMTA1M2NhNzQzMjY5YTRkMTM0MWUyMzgxZjAzYTBkYmJkZjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRp
bmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9z
aG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNl
KQorICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0
aW5ncyk7CiB9CkBAIC01MTcsNCArNTE4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBh
cnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0UGFydGlh
bFN3YXBFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVs
YXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRh
dGVzID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGYwNzcwYjEzM2FhNzMzMThh
Y2YyYzU3NmVmMDlkNGM3YTZkYzQ0M2UuLjRkMjc3Mzk0MWIzYTJlMGIyYjZjYjA0ODVkYjAzOTVl
YTMwYzY3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCkBAIC0xMzIsMTIgKzEzMiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFj
Y2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJU
aWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dh
cEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMo
Ym9vbCk7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpT
ZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxh
eWVyVHJlZTsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IDI0NzUxZTMyOWJjYzk4NGIxMDFjNjY5Zjc1MTExNDcyYjQ5N2Q4ZDMuLjE2OTkwMzI4
OTI4ZjhmZDI0MmVmNTdkY2U4OTJjMzRhNDZjNzgyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTI5NTIsNiArMjk1Miw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAog
ICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+
cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucGFydGlhbFN3YXBF
bmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICAg
ICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0
dXJlVXBkYXRlcygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6
Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0
OjpjcmVhdGUodGhpcywgY2NTZXR0aW5ncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBhYzc3ODEzNTQzZGMwMzBj
ZTRkNzQ5ZTEzNmViNWNhZjAyZmNiMjJjLi5lODkxODEwODk0Njk0NzBlMzRjYzNiOTI5NTFhMGUz
NWZlYzE5MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTkwNiw2ICs5MDYsMTQgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUp
OwogfQogCitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUg
eworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsg
fQorfTsKKwogY2xhc3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGljIEND
TGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVn
YXRlKENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05MjcsNDcgKzkzNSwxMTggQEAgcHJp
dmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgOiBw
dWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXll
ckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7IH0KKyAgICBjbGFzcyBDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRleHR1cmUoQ29udGVu
dExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisg
ICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0
dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVy
KCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0
ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxh
eWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgor
ICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAg
ICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAg
fTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50
c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICBpbnQgaWRsZVBh
aW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1faWRsZVBhaW50Q29udGVudHNDb3VudDsgfQot
ICAgIHZvaWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50
ID0gMDsgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50ID0gMDt9CisgICAgICAgIHZpcnR1YWwgUGFz
c093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1
cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFRleHR1cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIC8qIHRleHR1cmVGb3JtYXQgKi8pCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JB
OworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3Qg
SW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICov
LCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2xheWVyLT5wYWludENvbnRlbnRzKCk7CisgICAgICAgIH0K
IAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2
b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAgICAgIENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1f
bGF5ZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAg
cHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6IG1fbGF5ZXIobGF5
ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
KiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdh
dGUpCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoKTsKLSAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxl
Z2F0ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVy
VHJlZUhvc3QqKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWlu
dENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsK
KyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CiAgICAgfQorICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYg
dXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiAgICAg
ewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgbV91cGRhdGVDb3VudCsrOworICAgICAgICBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBw
cmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKQorICAgIHsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06Omlk
bGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgICAgIGlkbGVQcmVwYXJlVG9VcGRhdGUo
KTsKKyAgICB9CisKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZSgpIHsgbV9wcmVwYXJlVG9VcGRh
dGVDb3VudCsrOyB9CisgICAgaW50IHByZXBhcmVUb1VwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV9w
cmVwYXJlVG9VcGRhdGVDb3VudDsgfQorCisgICAgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlKCkg
eyBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCsrOyB9CisgICAgaW50IGlkbGVQcmVwYXJlVG9V
cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OyB9CisKKyAg
ICB2b2lkIHBhaW50Q29udGVudHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAgICBp
bnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0K
KworICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisgICAg
aW50IHByZXBhcmVSZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKwor
ICAgIHZvaWQgdXBkYXRlUmVjdCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAgIGludCB1
cGRhdGVSZWN0Q291bnQoKSB7IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKEND
TGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0o
ZGVsZWdhdGUpCisgICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCgwKQorICAgICAgICAs
IG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwgbV9wYWludENvbnRlbnRz
Q291bnQoMCkKLSAgICAgICAgLCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAg
LCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAg
ICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRT
aXplKDEwLCAxMCkpOwogICAgICAgICBzZXRJc0RyYXdhYmxlKHRydWUpOwogICAgIH0KIAorICAg
IFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlcjsKKyAgICBpbnQgbV9wcmVwYXJlVG9VcGRhdGVDb3VudDsKKyAgICBpbnQgbV9pZGxl
UHJlcGFyZVRvVXBkYXRlQ291bnQ7CiAgICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50OwotICAg
IGludCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7Cisg
ICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV91cGRhdGVSZWN0Q291bnQ7CiB9
OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxkIG5vdCBwcmV2
ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRlZCBkdXJpbmcgY29tbWl0
LgpAQCAtOTk0LDE2ICsxMDczLDE5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRl
clRlc3QoKQogICAgIHsKLSAgICAgICAgLy8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgotICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVj
a0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8vIHByZXBhcmVUb1VwZGF0
ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBt
X3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVUb1VwZGF0ZUNvdW50KCkpOwogCi0gICAgICAgIC8v
IGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UK
LSAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVBhaW50Q29udGVu
dHNDb3VudCgpKTsKKyAgICAgICAgLy8gaWRsZVByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5
ZXItPmlkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCgpKTsKKworICAgICAgICAvLyBwYWludENvbnRl
bnRzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEs
IG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8v
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUg
c2FtZQotICAgICAgICAvLyBhbW91dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgp
LgotICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291
bnQoKSwKLSAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQo
KSk7CisgICAgICAgIC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCku
CisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQo
KSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50
KCkpOwogCiAgICAgICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xheWVyVHJl
ZUhvc3QgZGllcy4KICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLmNsZWFyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCBmMGI1YzQxMWI2NTZhZWRlNzU5NTcxMGU0ZDhjZmQ3ZDI0ZGI1MzNj
Li43ZGY5Njk1MzlmOGU2NjU1ODFmYmEyMTc2NGMxZDZkYjUwZDI5ZjVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgog
I2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogI2luY2x1
ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTY4LDYgKzY3
LDIxIEBAIHB1YmxpYzoKICAgICBNT0NLX01FVEhPRDMoZGVsZXRlVGV4dHVyZSwgdm9pZCh1bnNp
Z25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSk7CiB9OwogCitjbGFzcyBNb2NrVXBkYXRl
SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKK3B1YmxpYzoK
KyAgICBNb2NrVXBkYXRlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yKSA6IG1fY29udGV4dChjb250ZXh0KSwgbV9hbGxvY2F0b3Io
YWxsb2NhdG9yKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCisgICAgeworICAgICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChz
b3VyY2VSZWN0KTsKKyAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2NvbnRleHQsIG1fYWxs
b2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEdy
YXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxv
Y2F0b3I7Cit9OworCiB9IC8vIG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05
MSw3ICsxMDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIE1vY2tDYW52YXNDb250ZXh0JiBpbXBs
TW9jayA9ICpzdGF0aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGxDb250ZXh0LmdldCgpKSk7
CiAKICAgICAgICAgTW9ja1RleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yTW9jazsKLSAgICAgICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZhbGxvY2F0b3JNb2NrKTsKKyAgICAgICAgTW9ja1Vw
ZGF0ZUhhbmRsZXIgdXBkYXRlSGFuZGxlck1vY2soaW1wbENvbnRleHQuZ2V0KCksICZhbGxvY2F0
b3JNb2NrKTsKIAogICAgICAgICBjb25zdCBJbnRTaXplIHNpemUoMzAwLCAxNTApOwogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZVNpemUgPSBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdo
dCgpICogNDsKQEAgLTE0Niw3ICsxNjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IGNhbnZhcy0+Y3JlYXRlQ0NMYXllckltcGwoKTsK
ICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwq
PihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CiAKLSAgICAgICAgICAgIGNhbnZhcy0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhpbXBsQ29udGV4dC5nZXQoKSwgdXBkYXRlcik7Cisg
ICAgICAgICAgICBjYW52YXMtPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UodXBkYXRlSGFuZGxl
ck1vY2spOwogICAgICAgICAgICAgY2FudmFzLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CiAKICAgICAgICAgICAgIGlmICh0aHJlYWRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDkz
ZTJlZThiZWJhZDg0NTBkZGVmZWM1MTllZmFiNjJmNzJiMGVjMGQuLjNjMzUyNGU3MjBmYmU4Y2Ux
ZmFkMjNlNmFhNWJhZmYwODc5ZjVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsOSArMjcsOSBA
QAogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZv
ciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CiAKQEAgLTM4LDIwICszOCwyMyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1l
c3BhY2UgewogCi1jbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxs
b2NhdG9yIHsKK2NsYXNzIEZha2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogfTsKIAogY2xhc3MgRmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAg
Y2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAg
ICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJl
KHRleHR1cmUpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKKyAgICAgICAg
dmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQo
KTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
CiAgICAgfTsKIAogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC01OSw3ICs2
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIp
KSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQo
R0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXplJiwgaW50
LCBmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KSB7IH0KIH07CiAKIGNsYXNzIEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsIDogcHVibGljIENDVGlsZWRMYXllckltcGwgewpAQCAtMTA4LDYgKzExMSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06Om5lZWRzSWRs
ZVBhaW50KHJlY3QpOwogICAgIH0KIAorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiByZWN0KQorICAgIHsKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzKHJlY3QpOworICAgIH0KKwogICAgIHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlTWFuYWdlcjsgfQogCiBwcml2YXRlOgpA
QCAtMTI5LDE0ICsxMzcsMTQgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGly
dHlUaWxlcykKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBS
ZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtl
Q0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJl
QWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRv
cik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMg
MTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgog
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQo
KSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUu
CkBAIC0xNDksNyArMTU3LDggQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGly
dHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBvbmUgb2YgdGhlbS4KICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFp
bnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8o
bGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0
IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRl
ZC4KQEAgLTE2NCw4ICsxNzMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJ
ZGxlUGFpbnRUaWxlcykKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
ICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0
ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFs
bG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNp
emUgaXMgMTAweDEwMC4gU2V0dXAgNXg1IHRpbGVzIHdpdGggb25lIHZpc2libGUgdGlsZSBpbiB0
aGUgY2VudGVyLgogICAgIEludFNpemUgY29udGVudEJvdW5kcyg1MDAsIDUwMCk7CkBAIC0xODEs
NyArMTg5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGls
ZXMpCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIGlu
IHRoZSBjZW50ZXIuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2li
bGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRh
dGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGltcGwgc2lkZS4KQEAgLTE5NCw3ICsyMDIsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlUmVjdCk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogICAgICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlSWRsZSh2aXNpYmxlUmVjdCk7Ci0gICAgICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgICAgICBsYXllci0+Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFs
bFRleHR1cmVzKCk7CiAgICAgfQpAQCAtMjMwLDggKzIzOCw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAK
ICAgICAvLyBUaGlzIGludmFsaWRhdGVzIDkgdGlsZXMgYW5kIHRoZW4gcGFpbnRzIG9uZSB2aXNp
YmxlIHRpbGUuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzKTsKQEAgLTI0Miw3
ICsyNDksNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVt
b3J5KQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxlcyBz
dXJvdW5kaW5nIHZpc2libGUgdGlsZS4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxl
UGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhh
bmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAK
ICAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMjU1
LDcgKzI2Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZN
ZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkbid0IHNpZ25hbCB3ZSBuZWVkIGFub3RoZXIgaWRsZSBw
YWludCBhZnRlciB3ZSBydW4gb3V0IG9mIG1lbW9yeS4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXIt
Pm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122406</attachid>
            <date>2012-01-13 03:31:18 -0800</date>
            <delta_ts>2012-01-21 15:23:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120113033116.patch</filename>
            <type>text/plain</type>
            <size>100548</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM3NzY2ZmI5OWIxZTNk
ZjAzZGUzMGFjOTVkZWVhOTBjMzIxNTFjYi4uZmQyNGVjYmNkYzQ3MWRjNzA4NjlkYjYyN2YyY2Rl
ODU5YTYzOGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0wMS0xMyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyOjp+SGFuZGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxl
cjo6flVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpV
cGRhdGVIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRD
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
Q29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMi0wMS0xMyAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFtDaHJvbWl1bV0gSmF2YVNjcmlwdE91dGxpbmVEaWFsb2cgZmFpbHMgdG8gb3Blbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiMDdhMTY1ZTA3NmM0Yjc0NzEzNjRiOTg0ZWRm
MzRiZDAzMzNkNTMzLi40ZmE5OGUxZDhkODMzOTc3YzkzODg1YjNjZDY0OWM0OTRjZmY5YjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTAxLTEzICBE
YXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBVcGxvYWQgdGV4dHVyZXMgaW4gcGFyYWxsZWwgd2l0aCBwYWludGluZyBjb250ZW50cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlbGF5VGV4
dHVyZVVwZGF0ZXMgc2V0dGluZyB0aGF0IGlzIHVzZWQgYnkgY29tcG9zaXRvciB0byBkZXRlcm1p
bmUKKyAgICAgICAgaWYgdGV4dHVyZSB1cGxvYWRzIHNob3VsZCBiZSBkZWxheWVkIHVudGlsIGFs
bCBwYWludGluZyBoYXMgY29tcGxldGVkLgorICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0czogQ0NM
YXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgYW5kCisgICAgICAgIFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBz
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBs
OjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNl
dERlbGF5VGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRleHR1cmVVcGRhdGVzKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdh
dGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6ZHJh
d3NDb250ZW50KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OnByZXNlcnZlczNE
KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OnRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUNvdW50
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OmlkbGVQcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAg
KFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0Q291bnQpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRl
UmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0
ZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZlY3lj
bGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAg
ICAgICAgKFdURjo6RmFrZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OkZha2VMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAo
V1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb3VudCk6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpjbGVhclBhaW50Q291bnQpOgorICAgICAgICAoV1RG
OjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpU
RVNUKToKKwogMjAxMi0wMS0xMiAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgSHduZERDIGlzIGEgYmV0dGVyIG5hbWUgdGhhbiBPd25HZXREQy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYWYy
ZmFlYzc4MzE1M2Y0N2ZhNjBmNWYzMDM4MDkxNWRmYzRkY2ZmMS4uN2U5MjNkODczODJhNTYxNTFi
NmJlYzE4NjBkZGYzMmJkMWE3NmJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC03Nyw3ICs3Nyw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAgICAgICAgICAg
ICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9h
dCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBt
X3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAKQEAgLTg4LDcgKzg4LDcg
QEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6
VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAgICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1D
YW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6
U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIo
Jm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBwYWludENvbnRlbnRzKCpjYW52YXNQYWludGVy
LmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBj
b250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiB9CiAKIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDcw
Y2U2ZTQyZjkyZWRkMjVjY2M5NzJiZTI2NTQ2OWE0NGNlNThiMjMuLmRlZDkyOTEzZmVkYjZiYmFk
M2QzNWQzN2M4MDI2Zjc0Mzc5YWY3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTGF5ZXJQYWlu
dGVyQ2hyb21pdW07CiAvLyBwb3NzaWJsZS4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0g
ICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsK
KyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUp
OwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJv
b2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4MjIxZGQyZTUyMWJkNjNmZTBlNmYwZjlkNjIy
NGUzOGRmYjM0Mjk4Li5jODA0ZDRjZjI1YzEyZjgyZjAzYmMwODg2M2I1OTYxZjExNjhiZjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcApAQCAtODYsMTAgKzg2LDEwIEBAIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyCiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0K
IAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1Yklt
YWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBj
b250ZW50c1NjYWxlKTsKKyAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50
c1NjYWxlKTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDZmMmYxMGQ5YjMyNTcyZGVmOTBmMTgxMzYz
Y2VmYTJkYTkyOGFhNDMuLmI1ZGY3MTkyM2RlOWFiODc5MTdhZjJmOTcxNzhjMjdiMmExYjQ3NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUo
VGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVk
VGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2Fs
ZSk7CiAgICAgdm9pZCBwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25zdCB1aW50
OF90KiBwaXhlbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRl
eCAzNDA4YWE1NmIyZTZhNGM3NWFiODA2MDJjMTZiOTIzY2UyNDkyNWVkLi44ZTJjYmE3YTZlNjNi
ZmI5ZmZjMWUyODdiNzZjNzI0Yjk5NGUzYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTQ3LDYgKzQ3LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoQ2Fu
dmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisK
K0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgp
Cit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBk
YXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAv
KiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9t
aXVtPiBDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENh
bnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0LCBzaXplKSk7CkBAIC01OSw2ICs3Myw3IEBAIENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBjb25zdCBJCiAgICAgLCBtX2JhY2tUZXh0dXJlSWQoMCkKICAgICAsIG1f
ZmJvKDApCiAgICAgLCBtX3VzZURvdWJsZUJ1ZmZlcmluZyhDQ1Byb3h5OjpoYXNJbXBsVGhyZWFk
KCkpCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykp
CiB7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQogICAgICAgICBHTEMobV9jb250ZXh0
LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CkBAIC0xMzEsMTIgKzE0
NiwxMiBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZU1hbmFnZXIoVGV4
dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKQogICAgICAgICBtX2Zyb250VGV4dHVyZS5jbGVh
cigpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlcikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yICphbGxvY2F0
b3IpCiB7CiAgICAgaWYgKCFtX2JhY2tUZXh0dXJlSWQgfHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFt
X2Zyb250VGV4dHVyZS0+aXNWYWxpZChtX3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOworICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVy
ZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKSk7CiAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9iYWNrVGV4dHVyZUlkLCAwKSk7CkBAIC0x
NDcsNiArMTYyLDExIEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0CiAgICAgR0xDKGNvbnRleHQs
IGNvbnRleHQtPmZsdXNoKCkpOwogfQogCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5k
bGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJl
Y3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIENhbnZhc0xheWVyQ2hyb21p
dW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uaAppbmRleCA4MzYxNWExZjIyMzU2MTY0NjJlYjFmOGQ0MTIyZTFhZDhlNThjOTIyLi5kNDVi
YThjYTMyMjE5MGI5N2Y2NjA0NWQ5MzUyMTQ2ODc0Yzk3MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQ2hyb21pdW0uaApAQCAtNDQsNiArNDQsMjMgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFz
cyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxV
cGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5
ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1
cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXllckNocm9t
aXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExh
eWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsK
ICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKIApAQCAtNTUsNyArNzIsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lk
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAg
dmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhbnVwUmVzb3VyY2VzKCk7CkBAIC03Niw2ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgLy8g
c3luY2hyb25pemUgaXRzIGRyYXdzIHdpdGggdGhlIGNhbnZhcyB1cGRhdGVzLgogICAgIGJvb2wg
bV91c2VEb3VibGVCdWZmZXJpbmc7CiAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Zyb250
VGV4dHVyZTsKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4
IDVmYTY3ODU0YzZiZDdmNTM4MmI1MmIwZWVmYmExMDMxNjZmYzA4ZmUuLjFmM2I2NDRlZTY2YmJk
MDc1MTdhYzQ4NWM5NWNiMjhkZDAxZTIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw2ICszNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093
blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30K
KworQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQor
CiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIo
cGFpbnRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCA0NDE1ZjY5ODY1MzNiYjg1ZDY5ZTdjZjY0NzgyYjI2YWYxMTEzNWFjLi43ZjhkM2Q1OWQ5OTll
MzY4YTVhOGVhMmI2NDEwZDY2NTJmZTRmNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC00MSw2ICs0MSwxOSBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJv
bWl1bTsKIC8vIHRoZWlyIHJlc3BlY3RpdmUgcGFpbnRDb250ZW50cyBpbXBsZW1lbnRhdGlvbnMu
CiBjbGFzcyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXIgewogcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJu
IG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGljaXQg
VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9OworCiAgICAgdmly
dHVhbCB+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDdjNjA1NjJhZWNlYTQ4MTk3NGIwYTYw
YjRmZGNlZTZhZGViNzI3MC4uNTcxZmUzZjAzZGIyOTY1M2MyYzk2OWVhZGQxYjEwNmUxYTZkNjg3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtODcsNyArODcsNyBA
QCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6fkNvbnRlbnRMYXllckNocm9taXVtKCkKIHsKIH0KIAot
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBk
YXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBtX25lZWRz
RGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFp
bnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBh
cmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTExNiw2ICsxMTYsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0K
IAordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQorewor
ICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBo
b3N0KQogewogI2lmIFVTRShTS0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5k
ZXggMDhmMDgyYWFmNTVlMDlmNDk1MTNkYmRhNjZiZTFlMDIzMzNjOGYwMS4uZGZkYTQ4ZWE5Y2M1
ZDg1ZTFmZmZlYWE2YjYzMGRkN2Q4MTY1ZmExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5oCkBAIC00OSw4ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRM
YXllckNocm9taXVtKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eSgpOworICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgIHZpcnR1YWwgdm9pZCBp
ZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUo
Ym9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDE5ZGZhMmYwMDZjOTg4
NDc3MGU2NzZjNDU4NWJlOTQ2NzEzNGYzYjMuLjhmMmRlOGEwZTg5M2Q0MWRhZjMwYjY1MWYxNTM2
NTRjZDM1YTcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTgsNyArNTgs
NyBAQCBzdGF0aWMgUGFzc093blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiB9CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0
ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGExMGM4NThlNGNkYThjMjUyYWMxNmRmYTA3ZDA5
YTVkOTA4ZWVjMy4uNzQzZWQ2ZWJhZmJjODI3ZTYyNzQ0ODQ0MWFkM2Y5OTgzNzlhYjU5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gaW50ZXJtZWRpYXRlIGZyYW1lYnVmZmVyIGFuZCB0aGVuIGlzIGNvcGllZCB0byB0
aGUgZGVzdGluYXRpb24gdGV4dHVyZSBvbmNlIGRvbmUuCiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
LCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGEwZmIzNWYwMjMwZTViYzc3
MDkyMWUxN2E5NjVhZjE0Y2Y4ZWE0ZTQuLmRiM2U2YjViOTc1NzI0MTc2ZjE0NjIxMDE4ZGM1ZTAw
OGY0Nzc5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzQsOSArMzQs
OSBAQAogCiAjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJM
YXllclRleHR1cmVTdWJJbWFnZS5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtNDYsMTAgKzQ2LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1Ymxp
YyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFRleHR1cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgICAgICAgICAsIG1fdGV4dHVyZVVw
ZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtODMsNyArODMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3Jk
ZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxl
ICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNp
emUpOwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQog
Ci12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBJ
bWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICht
X25lZWRzRGlzcGxheSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1h
Z2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDEyNTlhNjYzYzRjYTM2ZDU5MDdkNGRhYWU2NDcxYWU5NDE3
MzRjYzYuLjBmNjFhMWQ5ZGI4MTg2YTgxNGRmOWI0M2Y0M2NiZTE2YTczMmFkYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgYm9v
bCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1h
Z2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA4OTg0NWE1MThlYzc0ZGNmNDQ1NGZh
OWRlY2QxMDVhMGQzNjg5Mjg3Li42ZDM1MTlmMTM4MWEwNmExNWUzODQ5YmJjNjk3YmY4ODdhNGZl
MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIK
QEAgLTUzLDcgKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1w
bDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIAogY2xhc3MgQ0NMYXllckRlbGVnYXRlIHsKQEAgLTE1OCw5
ICsxNTgsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVl
ZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGlk
bGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZE
aXJ0eSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmlu
ZENvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IGVkY2Y3YTdhODVhZjZjMWU3ZjYzZDc2YjBjZThjZTdhYmNiMWIwMzMuLjg5MGYzMmMzODA5MzMw
MjFmMWFjZDNkNmEyNDViOTdjMjI3ZjI1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTQ4LDE0ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7
IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVS
ZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwot
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9OworCisg
ICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVy
KCkgeyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1f
dGV4dHVyZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigp
IHsgfQpAQCAtNzEsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lm
aWVzIHRoZSBjb21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYg
dGhlIGZvcm1hdCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0Lnog
aXMgcmVkLgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJl
Y3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50
IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IGUzYzVjNDhmNzkyMGZlZWM3MDhlNGRhYzdhZWY2NGUyM2U4
YWFmMDAuLjYwMzI2OGE2MmUzZjJkMDQ3MDliNmNkYjYyOWRhYmVjMzc2ZmNiZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBsdWdpbkxheWVy
Q2hyb21pdW06OlBsdWdpbkxheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkK
IHsKIH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXIm
KQordm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsK
ICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5M
YXllckNocm9taXVtLmgKaW5kZXggMGYyZjRiZTdmNDZiNzhiNmU4MWIzMzIyZjdhYzNhNDcyMmFk
NjVmMC4uZDBkYzg1ZDI4NjM4NDNmZDJhY2JiZjMxNmQ4NjlmOGE4ODc1ZTAwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0
ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1
MzdlMTM3ZThkOGVjNTE4YjkzNGFhNWNkMmQ3MDBjNzRiMTlmZTRiLi5lZTc0NTIzMDQyYmVjMTA3
ODAyMDZjYWRlNDg2YmJkYzYxMmU1YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBj
b250ZW50c1NjYWxlKQordm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAv
KiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2Fs
ZSkKIHsKICAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNv
bnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNv
bnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwogICAgIHBsYXRmb3JtQ29udGV4dC5z
ZXREZWZlcnJlZCh0cnVlKTsKICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZw
bGF0Zm9ybUNvbnRleHQpOwotICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250
ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxl
KTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NWI3OGMzYjkx
MDUyZGViMTE2NmY4NjBmZGY0Y2ZjMGUwMjY1N2QzLi5kMzc1MDg5MTQ3MzY2Zjg0NmVlY2M3YTQ3
NDExMGVmNGY0NTExMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOwog
ICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI4MTg3ZWQxMGY1MGQwMjQxNmU2ZWFhZmE3NzNhNzA3
MDQ0OWJjM2YuLjBiNzczNjAxZjM4MDdkMDVkNzRkNjMzMWVmZGM5N2QyZDI5NTQyOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTkxLDEwICsxOTEsMTAgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0
KQogICAgIG1fc2FtcGxlZFRleGVsRm9ybWF0ID0gdGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRl
eGVsRm9ybWF0KG1fdGV4dHVyZUZvcm1hdCk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7CiAg
ICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYs
IHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRh
dGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0Lmlz
RW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1f
cmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkg
fHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVm
dCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKQEAgLTIzNiwxMSArMjM2LDkgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkg
KyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAg
ICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGls
ZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0K
LSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJlY3QpOwogfQogCiB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRp
b24pCkBAIC0zNjMsMTIgKzM2MSw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcm90ZWN0
VGlsZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIAogdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0
b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkKIHsKLSAgICAvLyBSZXNldCBtX3VwZGF0ZVJlY3Qg
Zm9yIGFsbCB0aWxlcy4KLSAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25z
dF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9IG1fdGls
ZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgewotICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxl
ID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7Ci0gICAg
ICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKLSAgICB9Ci0KICAgICAvLyBDcmVh
dGUgdGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxs
CiAgICAgLy8gdGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLiBBbGwgZGly
dHkgdGlsZXMgdGhhdCBhcmUgdG8gYmUgcGFpbnRlZAogICAgIC8vIGdldCB0aGVpciBtX3VwZGF0
ZVJlY3Qgc2V0IHRvIG1fZGlydHlSZWN0IGFuZCBtX2RpcnR5UmVjdCBjbGVhcmVkLiBUaGlzIHdh
eSBpZgpAQCAtNDA3LDEyICszOTksNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgaWYg
KCFtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNS
ZWN0ID0gSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCArIDEsIGJvdHRvbSAtIHRvcCAr
IDEpOwogCi0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRvIFdlYktp
dCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qgb2YgZGlz
YWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4
dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJl
ZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQg
ZmluaXNoZXMsCi0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhv
bGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KLSAgICBSZWZQ
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAg
IHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+
dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSk7
CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3Ig
KGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVU
aWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwpAQCAtNDMzLDE1ICs0MTksMTAgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQs
IGludCB0b3AsIGludAogICAgICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QobV9wYWludFJl
Y3QpOwogCiAgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAg
ICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNvdXJjZVJl
Y3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi0KIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fc2tpcHNE
cmF3ID0gZmFsc2U7CkBAIC00NDksNiArNDMwLDEyIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIG1fcmVxdWVz
dGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVjdCgpOwogICAgIG1fcGFpbnRSZWN0ID0gSW50UmVj
dCgpOwogCisgICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCisgICAgZm9y
IChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGls
ZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJs
ZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOworICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3Qg
PSBJbnRSZWN0KCk7CisgICAgfQorCiAgICAgdXBkYXRlQm91bmRzKCk7CiAKICAgICBpZiAobGF5
ZXJSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKQEAgLTU0NSw1ICs1MzIs
MjAgQEAgSW50UmVjdCBUaWxlZExheWVyQ2hyb21pdW06OmlkbGVQYWludFJlY3QoY29uc3QgSW50
UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKICAgICByZXR1cm4gcHJlcGFpbnRSZWN0OwogfQogCit2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNS
ZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250ZW50cygp
IGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQorICAg
IC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVm
ZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyBIb3dl
dmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0
IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVm
ZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29t
cGxldGVzLgorICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVy
ZVVwZGF0ZXIoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyhtX3BhaW50
UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNv
bnRlbnRzU2NhbGUoKSk7CisKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJl
Y3QpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCBmMGFiMDU3ZWZmMjMwNjI3NzE1MzNkMDdkODc0
MjBjMzU4YWY1Y2Y0Li4yMjIzMGIwNTYyZTk5ZDQ1OTYwYzBjNGY0M2ViN2Q0ZTZmMzM5YWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBk
YXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJv
b2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsK
QEAgLTc5LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNldCBpbnZhbGlkYXRpb25zIHRv
IGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcgdXBkYXRlKCkuCiAgICAgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwogCi0gICAgLy8gUHJlcGFyZSBk
YXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJl
Y3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0
aCBsYXllclJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlzIHdpbGwgdHJ5IHRvIHBh
aW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxlLgpAQCAtODgsNiArODgs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gQWZ0ZXIgcHJlcGFyaW5nIGFuIHVwZGF0ZSwgcmV0dXJu
cyB0cnVlIGlmIG1vcmUgcHJlLXBhaW50aW5nIGlzIG5lZWRlZC4KICAgICBib29sIG5lZWRzSWRs
ZVBhaW50KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CiAKKyAgICAvLyBQYWludCBjb250ZW50
cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0
LgorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAg
ICAgdmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKICAgICB2aXJ0
dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwpAQCAtMTA2LDcgKzEw
OSw3IEBAIHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50KSBjb25z
dDsKICAgICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50KTsKIAotICAgIC8vIFRl
bXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVu
IHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAgSW50UmVjdCBtX3Jl
cXVlc3RlZFVwZGF0ZVRpbGVzUmVjdDsKIAogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVw
YXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhl
IGFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDcwODRkNjZmZjFmNzFk
M2ViMjljZDAyZWZjYTljMmNiMmQ3OTk2ODcuLjExMWU2YzY1OThkNWQ5Mzg4ODdjMTc3M2E4ODQy
NDg0NGEyY2Q3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzksOSAr
MzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9t
aXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJj
ZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9t
aXVtKGRlbGVnYXRlKSk7CkBAIC01NSw2ICs3MCw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2Vi
R0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1
cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9k
cmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpj
cmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY5LDcgKzg1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRy
YXdzQ29udGVudCgpICYmIGNvbnRleHQoKSAmJiAoY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVy
JikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTgsNiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBy
ZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQor
eworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwg
SW50UmVjdCgpKTsKK30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCBlYjUx
NDZlYjczOTAzMGZhYmFjNDM5NjI3ZTVjN2MwNDE2ZjVhNTYxLi4yMGJlYzlmZmQ0ODEzNGMzZWZl
MmE4MmQ1MmFlYzQ4Y2MwN2ZhNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAt
MzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1
ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXll
ckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNh
bnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21p
dW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJl
KGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgp
OworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwg
VGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJU
ZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1
bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNo
cm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmlydHVhbCB+V2Vi
R0xMYXllckNocm9taXVtKCk7CkBAIC01Myw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7
IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5n
ZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
KTsKQEAgLTc4LDYgKzk3LDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3Qg
aGVsZCBoZXJlLCBiZWNhdXNlIHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAv
LyBhIHJlZmVyZW5jZSB0byB0aGUgV2ViR0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZm
ZXIqIG1fZHJhd2luZ0J1ZmZlcjsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRh
dGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDg2NjNlYzBhYzJjZGYzNmIyNDcyMjgxY2ZmYWVhMTk0MDIyNWEyM2MuLmY5YzExZDJjZjE5NDY1
Yjg3NzljYjY3NWU3NDFkZWY5Mjk3M2Q0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgog
CkBAIC00OSw2ICs1MCwyMSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9z
dEluc3RhbmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsK
IH0KIAorQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVIYW5kbGVyKENDUHJv
eHkqIHByb3h5KQorICAgIDogbV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0
OjpVcGRhdGVIYW5kbGVyOjp+VXBkYXRlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit7CisgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgbV9w
cm94eS0+dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1Jl
ZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVl
SG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBS
ZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5
ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBAIC0xMzYsOCArMTUyLDggQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGhvc3RJbXBsKQogICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKIAotICAg
IGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFu
YWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKLSAgICBjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCktPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNl
TWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRT
aXplKCkpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0
dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogfQogCiAvLyBUaGlz
IGZ1bmN0aW9uIGNvbW1pdHMgdGhlIENDTGF5ZXJUcmVlSG9zdCB0byBhbiBpbXBsIHRyZWUuIFdo
ZW4gbW9kaWZ5aW5nCkBAIC0yNTMsOCArMjY5LDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNl
dFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiAgICAgaWYgKHZpZXdw
b3J0U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGVu
dHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2Vy
OjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKLSAgICBjb250ZW50c1RleHR1cmVNYW5h
Z2VyKCktPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OnJlY2xh
aW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMo
dmlld3BvcnRTaXplKSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJy
ZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3
cG9ydFNpemUpKTsKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQpAQCAtMjk5LDEwICszMTUsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBo
b3N0SW0KIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIGlmICht
X3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuY29udGV4dEhhc0NhY2hlZEZyb250
QnVmZmVyKQotICAgICAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmV2aWN0QW5kRGVsZXRl
QWxsVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5ldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKGhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAg
IGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFu
YWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKLSAgICAgICAgY29udGVu
dHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2
aWV3cG9ydFNpemUoKSkpOworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmRlbGV0
ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwog
ICAgIH0KIAogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkcm9wcGVkIHRpbGVzIGFyZSBwcm9wYWdh
dGVkIHRvIHRoZSBpbXBsIHRyZWUuCkBAIC0zNDMsNyArMzU5LDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+
KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
VG9VcGRhdGUoKQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTM1MSwxMiArMzY3LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQog
ICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXll
cigpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVy
LT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwpAQCAtMzY1LDUwICszODEsODEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3Qo
SW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qo
cm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4g
T25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFT
U0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290
TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24n
dCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBj
YW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3Vy
ZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOworICAg
IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJT
dXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0
aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAg
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0Ry
YXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50
aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9v
dFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCku
bWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0
ZUxpc3QsIFBhaW50VmlzaWJsZSk7Ci0gICAgaWYgKCFtX3RyaWdnZXJJZGxlUGFpbnRzKQorICAg
IGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9sYXllclVw
ZGF0ZUxpc3QpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3sK
KyAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcHJl
ZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhtX3Zp
ZXdwb3J0U2l6ZSk7Ci0gICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6
aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOwotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFn
ZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKLSAgICBpZiAo
Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA+PSBwcmVm
ZXJyZWRMaW1pdEJ5dGVzKQorICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBo
aXQgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCi0gICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwg
YWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUgbWF4aW11bSBsaW1pdC4KLSAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRl
cyk7Ci0gICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQgd2lsbCBiZSBhIG5vLW9wIGluIGxh
eWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQgYWJvdmUuCi0gICAgcGFpbnRMYXll
ckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRJZGxlKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7CisgICAgdXBk
YXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKIH0KIAotLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlw
ZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBBU1NFUlQobGF5ZXIpOwotICAgIEFTU0VSVChQYWlu
dFZpc2libGUgPT0gcGFpbnRUeXBlIHx8IFBhaW50SWRsZSA9PSBwYWludFR5cGUpOwotICAgIGlm
IChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlKQorICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRl
eCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5
ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVM
aXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSgpOworICAgIH0KKworICAgIGlmIChtX3RyaWdnZXJJZGxlUGFpbnRzKSB7CisgICAgICAg
IHNpemVfdCBwcmVmZXJyZWRMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1p
dEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKKyAgICAgICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOworICAgICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGlt
aXRCeXRlcyk7CisgICAgICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRN
ZW1vcnlVc2VCeXRlcygpIDwgcHJlZmVycmVkTGltaXRCeXRlcykgeworICAgICAgICAgICAgLy8g
SWRsZSBwYWludGluZyBzaG91bGQgZmFpbCB3aGVuIHdlIGhpdCB0aGUgcHJlZmVycmVkIG1lbW9y
eSBsaW1pdCwKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVz
IHRvd2FyZHMgdGhlIG1heGltdW0gbGltaXQuCisgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRlcyk7Cisg
ICAgICAgICAgICAvLyBUaGUgc2Vjb25kIChpZGxlKSBwYWludCB3aWxsIGJlIGEgbm8tb3AgaW4g
bGF5ZXJzIHdoZXJlIHBhaW50aW5nIGFscmVhZHkgb2NjdXJlZCBhYm92ZS4KKworICAgICAgICAg
ICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxh
eWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICAgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAg
ICAgICAgICAgICAgbGF5ZXItPmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVt
b3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFVw
ZGF0ZUhhbmRsZXIgaGFuZGxlcihtX3Byb3h5LmdldCgpKTsKKyAgICBmb3IgKGludCBsYXllcklu
ZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1s
YXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CiAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZE
aXJ0eSgpOwotICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsK
KyAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9y
UmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlw
ZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCit7CisgICAgLy8gRm9y
IG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJmYWNlIGxheWVyIGxpc3RzLgor
ICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwgd2UgbWF5IHN0aWxsIG5lZWQg
dG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpIHx8
ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsKK30KKwordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9t
aXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKICAgICAv
LyBOb3RlOiBNYXNrcyBhbmQgcmVwbGljYXMgb25seSBleGlzdCBmb3IgbGF5ZXJzIHRoYXQgb3du
IHJlbmRlciBzdXJmYWNlcy4gSWYgd2UgcmVhY2ggdGhpcyBwb2ludAogICAgIC8vIGluIGNvZGUs
IHdlIGFscmVhZHkga25vdyB0aGF0IGF0IGxlYXN0IHNvbWV0aGluZyB3aWxsIGJlIGRyYXduIGlu
dG8gdGhpcyByZW5kZXIgc3VyZmFjZSwgc28gdGhlCkBAIC00MTYsNjcgKzQ2Myw0NyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5
ZXJDaHJvbWl1bSogcmVuZGVyUwogCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xh
eWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29u
dGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSk7CisgICAgICAgIGFwcGVuZFZpc2libGVM
YXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9
CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRD
b250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUpOworICAgICAgICBhcHBlbmRW
aXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVw
bGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNr
TGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FM
YXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICAgICAgcGFpbnRD
b250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlKTsKKyAg
ICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCB1
cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlz
aWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXll
ckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNlIEZyb250VG9CYWNrIHRvIGFsbG93IGZv
ciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJl
ZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRl
clN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IEND
TGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5
ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgZm9yIChD
Q0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRl
clN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBDQ0xheWVySXRlcmF0
b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3QpOworICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRv
clR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSkgewogICAg
ICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5KCkpOwotICAg
ICAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5
cGUpOworICAgICAgICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCpp
dCwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigp
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwotICAgICAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKCppdCwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQotewotICAg
IC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVy
LWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250
PiBDQ0xheWVySXRlcmF0b3JUeXBlOwotCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlz
dCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJl
bmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCkt
PmRyYXdPcGFjaXR5KCkpOwotICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSkKLSAgICAg
ICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29u
dGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCkpIHsK
LSAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGl0LT5yZXBsaWNh
TGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGl0LT5yZXBsaWNhTGF5
ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0
c2VsZigpKQotICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5k
aW5nVXBkYXRlKCkKIHsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNl
SW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBM
YXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwor
ICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNsZWFyKCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNl
SW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUo
KTsgKytzdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3Jl
bmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VS
VChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3Vy
ZmFjZSgpOwogICAgIH0KLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1
cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBs
eVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDJmOTg5YmNmNmExOTFjMTBmYzc0MWM5YWYxZGU3Y2E5
MWMzMDYwNWUuLjc5OTZkMDZiMmFiMDEwODRkYjMxNWM1OGI2MDkzMWU2NDUyNjU0ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw3ICs0NSw2IEBAIGNsYXNzIEdyQ29udGV4
dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKLWNs
YXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIExh
eWVyUGFpbnRlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKQEAgLTc2LDcgKzc1
LDggQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXll
clRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAs
IHBlclRpbGVQYWludGluZyhmYWxzZSkKLSAgICAgICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVk
KGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQorICAg
ICAgICAgICAgLCBkZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKSB7IH0KIAogICAgIGJvb2wgYWNj
ZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpAQCAtODUsNiAr
ODUsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgZG91YmxlIHJlZnJlc2hSYXRlOwogICAg
IGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOworICAg
IGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9u
IG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJU
cmVlSG9zdApAQCAtMTg1LDkgKzE4Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdo
ZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CiAg
ICAgdm9pZCB1cGRhdGVMYXllcnMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIGFw
cGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQg
c3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVM
aW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xOTcsMTMgKzE5OCwyNCBAQCBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgVXBkYXRl
SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFVwZGF0ZUhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFsIH5V
cGRhdGVIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94eSogbV9wcm94
eTsKKyAgICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
TGF5ZXJMaXN0OwogCi0gICAgZW51bSBQYWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRs
ZSB9OwotICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0q
LCBQYWludFR5cGUpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlz
dCYsIFBhaW50VHlwZSk7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVM
YXllcihMYXllckNocm9taXVtKiwgTGF5ZXJMaXN0Jik7CisgICAgdm9pZCBhcHBlbmRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYgdXBkYXRl
TGlzdCk7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CiAKKyAgICB2b2lk
IHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMo
TGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKQEAgLTIy
MCw3ICsyMzIsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RM
YXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdl
cjsKIAotICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAg
ICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYmIzNzgwMTQ3YjE2
YzI2Yjc1YTdjY2QyMmFhOGI4ZmU4NGU3NmJiZC4uZWVlNmQxOGMxZTgwMDhkODNmOTUzY2FiNDVi
ZjRkNDQxNjllNDhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBD
Q1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzksNiArODAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAv
LyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERl
YnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3MmJlYzJhNzE2
NjRhZjQzY2Q2NGQwMTRkMjhiODQyNjUwOTViMjAzLi45M2JlNTVjNjNkNDNiN2IxNDE2NTAwMWMz
Yjk0N2JjMjIxYzI5YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cApAQCAtMTQ3LDE1ICsxNDcsMTUgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVk
c0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXIpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
SW1wbC0+YmVnaW5Db21taXQoKTsKIAorICAgICAgICB3aGlsZSAobV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXItPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJl
ZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZSht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVl
SG9zdEltcGwuZ2V0KCkpOwogCkBAIC0xNzAsNiArMTcwLDggQEAgdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29t
cGxldGUoKTsKICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZSA9IHRydWU7CisK
KyAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5oYXNNb3JlVXBkYXRlcygpKTsK
IH0KIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCkBAIC0yMDgs
NiArMjEwLDE2IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9sYXll
clRyZWVIb3N0ID0gMDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgQVNTRVJUKG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyKTsKKworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygp
LmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5h
cHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIGVsc2UKKyAgICAgICAg
dGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyLT5hbGxvY2F0b3IoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
fQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUg
cmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzIsNiArMjg0LDEwIEBAIHZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CiAKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVy
KQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1
cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICBkb0NvbW1pdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDBkNWE0YTJkOGE1MTZiMWQ3YmNmOTkxYTk5
ZTFjNzg3ODk5NDNlYzUuLmQ1YmMxMzE2YzYzYjgyMWEwNzU0MDU2ZjBiNjIzZGE3YTZhNmNkZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xhc3MgQ0NU
ZXh0dXJlVXBkYXRlcjsKIAogY2xhc3MgQ0NTaW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1By
b3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTU0LDYgKzU1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBC
dWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBA
IC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7
CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3VsZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3Rp
bmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZTsKKworICAgIE93
blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8v
IEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0
IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4
IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIuLmRmNzcyNDQxM2QxNzNj
MTgwNjI4ZDRmODliNDBjZTg5ZDNhMTFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdl
ZFRleHR1cmUuaCIKQEAgLTM5LDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1Rl
eHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
cikKICAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAsIG1fZW50cnlJbmRleCgwKQog
ewogICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9CkBAIC02NiwyMyArNjYsMjAgQEAgYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQp
CiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2Vu
dHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9l
bnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2Vu
dHJ5SW5kZXhdOworICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVz
LnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBVcGRhdGVFbnRy
eSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOwogICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVw
ZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnku
bV9kZXN0UmVjdCk7CisgICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0g
ICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAg
ICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUo
KSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50
cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTVi
YjMwLi5jMzdhZjM0YmVlNjRmN2MwYWY1YjEwMzY5NTMxMTQwMjNjNTY2NjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC01OSw3ICs1OSw2IEBAIHByaXZhdGU6CiAgICAgfTsK
IAogICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5
SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDkwMzMxMzUxM2E5ZDA5ODIzNDEyZTVlNzdkNjk5ODU0
NTdmOTNhNjEuLmQ5NWI0NjY2YzA4ZTFhODUxZjVjNmViOTU0YzYzOWQwYzFjYjRkYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0yODgsNiArMjg4LDIwIEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJl
YWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisgICAgT3duUHRy
PFVwZGF0ZUVudHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVcGRhdGVFbnRyeSk7CisgICAgZW50
cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7CisgICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJj
ZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkLCBlbnRyeS5yZWxlYXNlKCkpKTsKK30K
Kwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzc0
LDYgKzM4OCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgLy8gdXBkYXRlTGF5ZXJz
LgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3Qt
PnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3
ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgpAQCAtMzk4LDEzICs0MTMsMjUgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJl
ciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZy
YW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lk
IENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRh
dGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5
ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKworICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5hcHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnkt
Pm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOworfQorCiB2b2lkIENDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29t
cGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNv
bXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAg
ICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVChtX3NjaGVkdWxl
ck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9z
dEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTQxMiwxMCArNDM5LDYgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VS
VCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwot
CiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQog
CkBAIC00MzcsMjAgKzQ2MCwyMSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9p
ZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUgPSA5
OTk5OTsKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAg
ICAgICByZXR1cm47CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVw
ZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9
CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywg
MCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAg
ICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBk
YXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLQor
ICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkgeworICAgICAgICBB
U1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRl
cygpKTsKKyAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIo
KTsKKyAgICB9CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYTQxYzBkNTY0YjYzODEzYmE2M2E2Y2VkNThlMDRk
NjljMzhmMmRlYS4uYmM1MzQ4OGUxYmU0MmE0YWU0YzcwMmZmNTAyNDhkMmUzYzkyMjA2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGlt
cGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1w
bFRocmVhZCgpOwpAQCAtNzksNiArODAsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0
ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJl
OworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RS
ZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJl
Z2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRp
bWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCk7CkBAIC05Myw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAg
UGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tP
bkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJv
bUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+KTsKICAg
ICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCop
OwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRl
eCBjY2U0N2UyZTI3YTY3YTI2NmQ2ODJkN2Y1YWFlOWM1MDM1NjMyMDBjLi5iOGNlNDU5ZGJiMTEx
M2ZmMjc0MmUzODI3ZGRlMTJhYWIzYzdmNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBk
ZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNl
dHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcAppbmRleCA3NzMzZTI2OTkwODZkYmIzYjU1NTYzMGY0ZWU3YWRjYWYzNTJlMjliLi42
MjgzZjUwNWU0M2I3MzRhZTZhYTQxNGFiY2EyZjdlNjA1Zjc2N2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAg
V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAg
ICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291
bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwg
bV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9
CkBAIC01MDcsNCArNTA4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBhcnRpYWxTd2Fw
RW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0UGFydGlhbFN3YXBFbmFi
bGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJl
VXBkYXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5h
YmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGNjNzBkMTMxNmM2NGMxNjU5ZTBlMjIyOTU2
YzY4MTY0MDE1NWIzYjIuLmFjYzI1ZTQ5OTNmMjg3ZDcyYTJmMzU5NjcwYTk4MTNlNjYwZTFjN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0x
MzAsMTIgKzEzMCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVk
UGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRp
bmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQo
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7Cisg
ICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2Rl
bGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyog
bV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBi
b29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsK
KyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGEx
NDc0ODM1MzE5N2I3Mjc5Mzk3MjA0ZmE0ODBkYmEzMzQwNTk3ZDcuLjM3MWE0NTc5ZjYwODJhM2E4
OGQ0NTQxNmFkNDllNWU3ZTNkYzU0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTMwMDQsNiArMzAwNCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBj
Y1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURy
YXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0g
cGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICAgICAgY2NTZXR0
aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRl
cygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRo
aXMpKTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0Jv
cmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggYmZhMWIwODIyMmU3ZWJkMGZiZGU3Zjk4MGUxMjdkYzQwZmEwYzQyYS4uMTg3MmNjNDlhZmZk
YmZjYTYyMjIxOGUwZjliYzVkN2I0MDA1ODE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC05MTIsNiArOTEyLDE0
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQp
CiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJs
aWMgQ0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlTeW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJE
ZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFj
aXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTMz
LDQ3ICs5NDEsMTE4IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9
CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAg
ICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwg
UGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1f
dGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0
dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQo
KTsgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3Rl
eHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJ
bnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBt
X3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT51cGRhdGVSZWN0KCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXh0dXJlOworICAgICAgICAgICAgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVy
ZVVwZGF0ZXI7CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVu
dExheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyAqbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIobGF5ZXIpKTsKKyAgICAgICAgfQogCi0g
ICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50
OyB9Ci0gICAgaW50IGlkbGVQYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX2lkbGVQYWlu
dENvbnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBt
X3BhaW50Q29udGVudHNDb3VudCA9IDA7IG1faWRsZVBhaW50Q29udGVudHNDb3VudCA9IDA7fQor
ICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpj
cmVhdGUobWFuYWdlcikpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgU2FtcGxlZFRl
eGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSAvKiB0ZXh0dXJlRm9ybWF0ICov
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2Ft
cGxlZFRleGVsRm9ybWF0UkdCQTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRT
aXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29u
dGVudHNTY2FsZSAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXllci0+cGFpbnRDb250
ZW50cygpOworICAgICAgICB9CiAKLSAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3Vw
ZGF0ZUNvdW50OyB9Ci0gICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50
ID0gMDsgfQorICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyog
bGF5ZXIoKSB7IHJldHVybiBtX2xheWVyOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKQorICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXll
clRleHR1cmVVcGRhdGVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBs
YXllcikgOiBtX2xheWVyKGxheWVyKSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZyogbV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50
Kys7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaWRs
ZVBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVw
ZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKLSAgICAgICAgbV9pZGxlUGFp
bnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIg
PSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2
aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkoKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBkYXRl
Q291bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKKyAgICAgICAgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgfQogCisgICAgdmlydHVh
bCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKKyAgICB7CisgICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBp
ZGxlUHJlcGFyZVRvVXBkYXRlKCk7CisgICAgfQorCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
KSB7IG1fcHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGludCBwcmVwYXJlVG9VcGRhdGVD
b3VudCgpIHsgcmV0dXJuIG1fcHJlcGFyZVRvVXBkYXRlQ291bnQ7IH0KKworICAgIHZvaWQgaWRs
ZVByZXBhcmVUb1VwZGF0ZSgpIHsgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAg
IGludCBpZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSB7IHJldHVybiBtX2lkbGVQcmVwYXJlVG9V
cGRhdGVDb3VudDsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVu
dHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFp
bnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVS
ZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVw
YXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENv
dW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0
Q291bnQ7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlKQogICAgICAgICA6IENv
bnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQorICAgICAgICAsIG1fcHJlcGFyZVRvVXBkYXRl
Q291bnQoMCkKKyAgICAgICAgLCBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCgwKQogICAgICAg
ICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV9pZGxlUGFpbnRDb250ZW50
c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFy
ZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAgewogICAg
ICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICAgICAgc2V0SXNEcmF3YWJsZSh0
cnVlKTsKICAgICB9CiAKKyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IG1f
Y29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAgaW50IG1fcHJlcGFyZVRvVXBkYXRlQ291
bnQ7CisgICAgaW50IG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OwogICAgIGludCBtX3BhaW50
Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OwotICAgIGlu
dCBtX3VwZGF0ZUNvdW50OworICAgIGludCBtX3ByZXBhcmVSZWN0Q291bnQ7CisgICAgaW50IG1f
dXBkYXRlUmVjdENvdW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVyaW5nIHBh
aW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJlaW5nIHVw
ZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTEwMDAsMTYgKzEwNzksMTkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWludENvbnRl
bnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCi0gICAgICAgIEVYUEVD
VF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKyAgICAg
ICAgLy8gcHJlcGFyZVRvVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAg
ICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVRvVXBkYXRlQ291
bnQoKSk7CiAKLSAgICAgICAgLy8gaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgb25jZQotICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xh
eWVyLT5pZGxlUGFpbnRDb250ZW50c0NvdW50KCkpOworICAgICAgICAvLyBpZGxlUHJlcGFyZVRv
VXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VR
KDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KCkpOworCisg
ICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgor
ICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291
bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0gICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBh
aW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5
ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAotICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVj
a0xheWVyLT51cGRhdGVDb3VudCgpKTsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50c1JlY3QoKSBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGlt
ZXMgYXMgcHJlcGFyZVJlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXll
ci0+cHJlcGFyZVJlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xh
eWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CiAKICAgICAgICAgLy8gY2xlYXIgbV91cGRhdGVDaGVj
a0xheWVyIHNvIENDTGF5ZXJUcmVlSG9zdCBkaWVzLgogICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5
ZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2Fu
dmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGYwYjVjNDExYjY1NmFlZGU3NTk1
NzEwZTRkOGNmZDdkMjRkYjUzM2MuLjdkZjk2OTUzOWY4ZTY2NTU4MWZiYTIxNzY0YzFkNmRiNTBk
MjlmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRM
YXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUg
IlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NDYW52YXNMYXllckltcGwuaCIKICNp
bmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJl
VXBkYXRlci5oIgogCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgpAQCAtNjgsNiArNjcsMjEgQEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9EMyhkZWxl
dGVUZXh0dXJlLCB2b2lkKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pKTsKIH07
CiAKK2NsYXNzIE1vY2tVcGRhdGVIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXIgeworcHVibGljOgorICAgIE1vY2tVcGRhdGVIYW5kbGVyKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpIDogbV9jb250ZXh0KGNv
bnRleHQpLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICB7CisgICAgICAgIHRl
eHR1cmUtPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOworICAgICAgICB0ZXh0dXJlLT51cGRhdGVS
ZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICBUZXh0
dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKK307CisKIH0gLy8gbmFtZXNwYWNlCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTkxLDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgTW9j
a0NhbnZhc0NvbnRleHQmIGltcGxNb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0
Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0Qo
aW1wbENvbnRleHQuZ2V0KCkpKTsKIAogICAgICAgICBNb2NrVGV4dHVyZUFsbG9jYXRvciBhbGxv
Y2F0b3JNb2NrOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJmFsbG9jYXRvck1v
Y2spOworICAgICAgICBNb2NrVXBkYXRlSGFuZGxlciB1cGRhdGVIYW5kbGVyTW9jayhpbXBsQ29u
dGV4dC5nZXQoKSwgJmFsbG9jYXRvck1vY2spOwogCiAgICAgICAgIGNvbnN0IEludFNpemUgc2l6
ZSgzMDAsIDE1MCk7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlU2l6ZSA9IHNpemUu
d2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0OwpAQCAtMTQ2LDcgKzE2MCw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5j
cmVhdGVDQ0xheWVySW1wbCgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBzdGF0aWNfY2Fz
dDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKIAot
ICAgICAgICAgICAgY2FudmFzLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0
LmdldCgpLCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGNhbnZhcy0+Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSh1cGRhdGVIYW5kbGVyTW9jayk7CiAgICAgICAgICAgICBjYW52YXMtPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKHRocmVhZGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggODUyNmEwYjNmNTExNWE4MmMxOTA3NjQyZDA3MDM4MzY4OWQ4ZWZh
Zi4uZGI3ODNiM2Y0ZjU0MDdjN2Q3NWVhZDI2ZjA5ZWVkZmM3OTEyMTM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCkBAIC0yNyw5ICsyNyw5IEBACiAjaW5jbHVkZSAiVGlsZWRMYXllckNocm9taXVtLmgiCiAK
ICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1
cmUuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgi
CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAtMzgsMTAgKzM4LDkgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgRmFrZVRleHR1cmVBbGxvY2F0b3Ig
OiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CitjbGFzcyBGYWtlSGFuZGxlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2ln
bmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IHJldHVybiAwOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IEludFNpemUm
LCBHQzNEZW51bSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07CiAK
IGNsYXNzIEZha2VUaWxlZExheWVyQ2hyb21pdW07CkBAIC01MCwzMiArNDksMzYgQEAgY2xhc3Mg
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBw
dWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUp
IHsgfQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
IDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9
CiAKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIHsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiBtX3RleHR1cmU7CiAgICAgfTsKIAotICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBt
X3ByZXBhcmVDb3VudCgwKSB7IH0KKyAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9w
YWludENvdW50KDApIHsgfQogICAgIHZpcnR1YWwgfkZha2VMYXllclRleHR1cmVVcGRhdGVyKCkg
eyB9CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRvIGludmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0
IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFmdGVyIHRoZSBuZXh0CiAgICAgLy8gY2FsbCB0
byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyByZXNldC4KICAgICB2b2lkIHNldFJlY3RU
b0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VUaWxlZExheWVyQ2hyb21pdW0qKTsKIAot
ICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tlZC4K
LSAgICBpbnQgcHJlcGFyZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0K
LSAgICB2b2lkIGNsZWFyUHJlcGFyZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KKyAg
ICAvLyBOdW1iZXIgb2YgdGltZXMgcGFpbnRDb250ZW50cyBoYXMgYmVlbiBpbnZva2VkLgorICAg
IGludCBwYWludENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWludENvdW50OyB9CisgICAgdm9p
ZCBjbGVhclBhaW50Q291bnQoKSB7IG1fcGFpbnRDb3VudCA9IDA7IH0KIAogICAgIC8vIExhc3Qg
cmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRvVXBkYXRlKCkuCiAgICAgY29uc3QgSW50UmVjdCYgbGFz
dFVwZGF0ZVJlY3QoKSAgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlUmVjdDsgfQogCiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0
dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgU2Ft
cGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2Ft
cGxlZFRleGVsRm9ybWF0UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
U2l6ZSYsIGludCwgZmxvYXQpOwogCiBwcml2YXRlOgotICAgIGludCBtX3ByZXBhcmVDb3VudDsK
KyAgICBpbnQgbV9wYWludENvdW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRlOwog
ICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bT4gbV9sYXllcjsKQEAgLTEyNyw2ICsxMzAsMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpuZWVkc0lkbGVQYWludChyZWN0KTsKICAgICB9CiAK
KyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAg
ICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAg
ICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IHJl
dHVybiBtX2Zha2VUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBUZXh0dXJl
TWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2Vy
OyB9CkBAIC0xNDksOSArMTU3LDkgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2V0
UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBGYWtlVGlsZWQKICAgICBtX2xh
eWVyID0gbGF5ZXI7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwg
ZmxvYXQpCit2b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCkKIHsKLSAg
ICBtX3ByZXBhcmVDb3VudCsrOworICAgIG1fcGFpbnRDb3VudCsrOwogICAgIG1fbGFzdFVwZGF0
ZVJlY3QgPSBjb250ZW50UmVjdDsKICAgICBpZiAoIW1fcmVjdFRvSW52YWxpZGF0ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZVJlY3QobV9yZWN0VG9JbnZhbGlkYXRl
KTsKQEAgLTE2NywxNCArMTc1LDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAg
ICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcg
RmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4
dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxv
Y2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRz
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBz
aWRlLgpAQCAtMTg3LDcgKzE5NSw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxheWVyLT5mb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBoYXZlIHRoZSBm
aXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBidXQgbm90IHBh
aW50ZWQuCkBAIC0yMDIsOCArMjExLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJl
ZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0
b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1
cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGls
ZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0aWxlcyB3aXRoIG9uZSB2aXNpYmxlIHRpbGUg
aW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoNTAwLCA1MDApOwpAQCAt
MjE5LDcgKzIyNyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWlu
dFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9yIDN4MyB0aWxl
cyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2
aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwg
dXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8v
IFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0yMzIsNyArMjQw
LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAg
ICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwogICAgICAgICBFWFBF
Q1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKICAgICAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOwotICAgICAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5ZXItPmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVy
dGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3Rl
Y3RBbGxUZXh0dXJlcygpOwogICAgIH0KQEAgLTI2OCw4ICsyNzYsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4g
bGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAg
IEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBk
YXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVy
OwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBhaW50cyBvbmUg
dmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcyk7CkBAIC0y
ODAsNyArMjg3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRP
Zk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGls
ZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRz
SWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkp
OwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTI5Myw3ICszMDAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91
dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBhbm90aGVyIGlk
bGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNUX0ZBTFNFKGxh
eWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3Np
dG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJ
bXBsLmdldCgpKTsKIH0KIApAQCAtMzA0LDE0ICszMTEsMTQgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAK
ICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5k
IHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAw
LCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAg
IGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXll
ci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90
aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzIwLDIyICszMjcsMjQgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAKICAgICB0ZXh0dXJl
TWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAgIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50Q291bnQoKTsKICAgICAvLyBJbnZva2UgcHJl
cGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFyZVRvVXBkYXRl
IHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4dHVyZVVwZGF0ZXIu
CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0g
ICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
Q291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wYWludENvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmlnZ2VycyBpbnZh
bGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUuCiAgICAgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVj
dCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7Ci0gICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CisgICAgbGF5
ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIEVYUEVDVF9F
USgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAg
ICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBhcmVUb1VwZGF0
ZSBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123459</attachid>
            <date>2012-01-21 15:23:44 -0800</date>
            <delta_ts>2012-01-23 07:58:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120121182342.patch</filename>
            <type>text/plain</type>
            <size>107853</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJkNTY4YWUwOTU2YTU0
MDRlZTg0Njc0MmE3YWNkYjBiZjdmMjIxYy4uNWI4YjhhMmNlZDM1MTc1OTA2NTNjODU5MjQ2NGNm
Yjk2MzdhNjhhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0wMS0yMSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyOjp+SGFuZGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxl
cjo6flVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpV
cGRhdGVIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRD
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
Q29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMi0wMS0yMCAgQ2hy
aXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGhhcmR3
YXJlIGFjY2VsZXJhdGVkIEJyaWdodG5lc3MgYW5kIGNvbnRyYXN0IGZpbHRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMDI1MzlhZDE2YWRhNjM5YTQzNTE1MTZhMzZjNGVkYmFlMjY4
NDQzZC4uZGUzYWEyMzU3MGQ5MTEzMDg0Y2NlYWYzYTYyZGIzNzY5MWEwMjc5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MCBAQAorMjAxMi0wMS0yMSAgRGF2aWQgUmV2
ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXBsb2Fk
IHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBkZWxheVRleHR1cmVVcGRh
dGVzIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3IgdG8gZGV0ZXJtaW5lCisgICAg
ICAgIGlmIHRleHR1cmUgdXBsb2FkcyBzaG91bGQgYmUgZGVsYXllZCB1bnRpbCBhbGwgcGFpbnRp
bmcgaGFzIGNvbXBsZXRlZC4KKyAgICAgICAgVXBkYXRlIHVuaXQgdGVzdHM6IENDTGF5ZXJUcmVl
SG9zdFRlc3RPcGFjaXR5Q2hhbmdlIGFuZAorICAgICAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0
LgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0
dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXREZWxheVRl
eHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6ZGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OmRyYXdzQ29udGVu
dCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpwcmVzZXJ2ZXMzRCk6CisgICAg
ICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnNh
bXBsZWRUZXhlbEZvcm1hdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0
aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6bGF5ZXIpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6
OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVUZXh0dXJlVXBk
YXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjp0ZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlVG9VcGRhdGVDb3VudCk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjppZGxlUHJl
cGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50
Q29udGVudHNDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZVJlY3QpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBk
YXRlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKToKKyAg
ICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmFmdGVyVGVzdCk6
CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6
CisgICAgICAgICogdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5j
cHA6CisgICAgICAgIChXVEY6OkZha2VIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdU
Rjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAg
ICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q291bnQpOgorICAgICAg
ICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQYWludENvdW50KToKKyAgICAg
ICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
IChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KFdURjo6VEVTVCk6CisKIDIwMTItMDEtMjAgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29n
bGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gV3JpdGUgdW5pdCB0ZXN0cyBmb3IgY29tcG9z
aXRvci10aHJlYWQgem9vbWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3ZTUyYWVkZTBmOTgwYWRhMTVkZTBhMTRhMWQy
OGQ4NmExZTg4Li5kZDAzNTNkMTYzY2RiZjM5OWQ3ODFiZjM2ZjlkZmI1N2VlNmM1ZTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0
dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDog
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0
dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJl
c3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0
KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VT
aXplKHRpbGVTaXplKTsKIApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dAogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6R3JheXNj
YWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhlbFRleHQ7CiAgICAgUGxh
dGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMsIHRleHRPcHRpb24p
OwogICAgIGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24o
IWxheWVySXNPcGFxdWUpOwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4
dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRS
ZWN0LCBjb250ZW50c1NjYWxlKTsKIAogICAgIGlmICghbGF5ZXJJc09wYXF1ZSkKICAgICAgICAg
KnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1
ZVJlZ2lvbigpLmFzUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IDRlMTYyMjk1Yjg2ZTAwODkzYzMzZWYwM2Q0YjYyZDJjMWU1
MmJkNWYuLjJhYmFjOTZhMDMwZGIwOTI4NDk0M2NmMzhiNDk0Y2Q4MGVjOTBjNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBwb3NzaWJsZS4KIGNsYXNz
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2Vk
VGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1w
bGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQp
OwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIElu
dFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBl
MmFiNzk4Mzg2ZmNjZjA3MDEzZDY2YmIzZjI4ZmU3ZDhmNGVjMjdjLi4zNGFkMjYwOTUzMWNhMWYw
NDQ5N2YxNGI1MzcyZTYyMDVhMjIyYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtODYsMTAg
Kzg2LDEwIEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAgICBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBCaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkK
IHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRS
ZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlLCByZXN1bHRpbmdPcGFx
dWVSZWN0KTsKKyAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENv
bnRlbnRzKGNvbnRlbnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxl
LCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmFzLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDFjNTY0Y2RjMTgz
ZWE0OTU5MWY2OTA2ZWZlYmQzYThkOWI1ZjgwY2MuLjZkNzIyNWYzMjJkNmE1YTBiNjYyY2MxODJm
MGU5MTU3YmY2NjQxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+
IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhl
bEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRz
U2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCog
cmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAgdm9pZCBwYWludENvbnRlbnRzUmVjdChTa0NhbnZh
cyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqLCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBjb25zdCB1aW50OF90KiBwaXhlbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcAppbmRleCAxNTA1YWRhYzI0M2UwNzY2NWQyZGRhYjI4ZjQ3MDNmZjhlZjVi
OTQzLi44ZDEyNzZiM2I4YzUyMmQxNDc1ZWYzMzdmNTkwODAyNTk5YzIxM2RmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ3LDYgKzQ3LDIwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5
ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKIFBhc3NSZWZQdHI8
Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0LCBzaXplKSk7CkBA
IC01OSw2ICs3Myw3IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9t
aXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJCiAgICAgLCBtX2JhY2tUZXh0
dXJlSWQoMCkKICAgICAsIG1fZmJvKDApCiAgICAgLCBtX3VzZURvdWJsZUJ1ZmZlcmluZyhDQ1By
b3h5OjpoYXNJbXBsVGhyZWFkKCkpCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0
dXJlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQogICAg
ICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIo
KSk7CkBAIC0xMzIsMTIgKzE0NywxMiBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0
VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKQogICAgICAgICBt
X2Zyb250VGV4dHVyZS5jbGVhcigpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yICphbGxvY2F0b3IpCiB7CiAgICAgaWYgKCFtX2JhY2tUZXh0dXJlSWQgfHwgIW1f
ZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250VGV4dHVyZS0+aXNWYWxpZChtX3NpemUsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udFRleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOworICAgIG1fZnJvbnRU
ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCiAgICAgR0xDKGNvbnRl
eHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fZmJvKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9iYWNrVGV4
dHVyZUlkLCAwKSk7CkBAIC0xNDgsNiArMTYzLDExIEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZsdXNoKCkpOwogfQogCit2b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRl
eHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAg
IENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA4MzYxNWExZjIyMzU2MTY0NjJlYjFmOGQ0MTIy
ZTFhZDhlNThjOTIyLi5kNDViYThjYTMyMjE5MGI5N2Y2NjA0NWQ5MzUyMTQ2ODc0Yzk3MGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDQsNiArNDQsMjMgQEAgY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0
ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFz
TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
VXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVw
ZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhw
bGljaXQgVXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAg
Q2FudmFzMkRMYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCos
IGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsK
IApAQCAtNTUsNyArNzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVy
VHJlZUhvc3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7
CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CkBAIC03Niw2ICs5NCw3IEBA
IHByaXZhdGU6CiAgICAgLy8gc3luY2hyb25pemUgaXRzIGRyYXdzIHdpdGggdGhlIGNhbnZhcyB1
cGRhdGVzLgogICAgIGJvb2wgbV91c2VEb3VibGVCdWZmZXJpbmc7CiAgICAgT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiBtX2Zyb250VGV4dHVyZTsKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1f
dXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCmluZGV4IDVmYTY3ODU0YzZiZDdmNTM4MmI1MmIwZWVmYmExMDMxNjZmYzA4
ZmUuLjFmM2I2NDRlZTY2YmJkMDc1MTdhYzQ4NWM5NWNiMjhkZDAxZTIyYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw2ICszNiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1
cmUodGV4dHVyZSkKK3sKK30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
flRleHR1cmUoKQoreworfQorCiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIp
CiAgICAgOiBtX3BhaW50ZXIocGFpbnRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAppbmRleCA0NDE1ZjY5ODY1MzNiYjg1ZDY5ZTdjZjY0NzgyYjI2YWYxMTEz
NWFjLi43ZjhkM2Q1OWQ5OTllMzY4YTVhOGVhMmI2NDEwZDY2NTJmZTRmNmZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00MSw2ICs0MSwxOSBAQCBjbGFz
cyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIHRoZWlyIHJlc3BlY3RpdmUgcGFpbnRDb250ZW50
cyBpbXBsZW1lbnRhdGlvbnMuCiBjbGFzcyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5UZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgIHByb3RlY3RlZDoK
KyAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsK
KyAgICB9OworCiAgICAgdmlydHVhbCB+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggODQwMzkw
ZTAyNzkwODI1MjZiNDFmYjNkODU3YjFmODQ1YTAxOGE2OC4uYWRmNDEyNTQ3NGNiNjY1Mjg4YzJm
ZGNkMDdkYmI3NDVhMjhhODIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNw
cApAQCAtODgsNyArODgsNyBAQCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6fkNvbnRlbnRMYXllckNo
cm9taXVtKCkKIHsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKIApAQCAtMTAz
LDcgKzEwMyw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KCkKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghZHJhd3ND
b250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNyw2ICsxMTcsMjAgQEAgdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICAgICAgc2V0
TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoKQoreworICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25z
dCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVy
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30K
Kwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3Qg
Q0NMYXllclRyZWVIb3N0KiBob3N0KQogewogI2lmIFVTRShTS0lBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmgKaW5kZXggY2ZiMGZkN2M5MDY3YzIxNDBkZDEzZDM1NmZiZWY3ZGZjOTdl
MzJkZS4uMWJmM2RlNzJlNThhMTBiNTcyOTBkYTRmNzBiYTE1MWZiNzFlZDg1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01Nyw4ICs1Nyw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xlYXJEZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAorICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KCk7Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKaW5kZXggMTlkZmEyZjAwNmM5ODg0NzcwZTY3NmM0NTg1YmU5NDY3MTM0ZjNiMy4uOGYy
ZGU4YTBlODkzZDQxZGFmMzBiNjUxZjE1MzY1NGNkMzVhNzEwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPFNrQ2FudmFz
PiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwKIH0K
IAogRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
OjpUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAg
OiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVy
KHRleHR1cmVVcGRhdGVyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0YTEw
Yzg1OGU0Y2RhOGMyNTJhYzE2ZGZhMDdkMDlhNWQ5MDhlZWMzLi43NDNlZDZlYmFmYmM4MjdlNjI3
NDQ4NDQxYWQzZjk5ODM3OWFiNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBpbnRlcm1lZGlhdGUgZnJhbWVidWZm
ZXIgYW5kIHRoZW4gaXMgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIG9uY2UgZG9u
ZS4KIGNsYXNzIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6
IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAg
ICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewor
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsK
ICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggMDE1NGZiMjgzMTRmM2U2YzkyNDA0N2JiNDgzNjczNjkyZGZjZmFiNy4uMTZhODVh
NDhhYjNkOTljMzU4ODM0NmVhYmUwNzZkODAyYjFmMTYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwCkBAIC0zNCw5ICszNCw5IEBACiAKICNpbmNsdWRlICJJbWFnZUxheWVyQ2hy
b21pdW0uaCIKIAorI2luY2x1ZGUgIkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCi0jaW5jbHVk
ZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCkBA
IC00NiwxMCArNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0g
ICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsK
KyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJl
KQotICAgICAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisg
ICAgICAgICAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkK
ICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAg
ewogICAgICAgICB9CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBM
YXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNT
Y2FsZSAqLywgSW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCiAgICAgewogICAg
ICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAgfQpAQCAt
MTU4LDcgKzE1OCw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFn
ZSogY29udGVudHMpCiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7
CiAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgK
aW5kZXggZDcxMjkyNDUxYzM1NTVlYWYwYzE2Y2Y5ZjJjM2YzOTViZTA3NTMwNC4uYzM0NmNjZGMz
NzFmYzRlYjdmYzYyZDlmMGMxMjMzZjdmNzhlMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJD
aHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNT
Y2FsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDA0ZGQxZTY2MmFmNzQwMGU5OWMyNmZhZWI1ZDRlODMzZDgyYjJm
ZWUuLjhiM2E4YWU0YzFkZWZmMjJhZDhkZWM1OTBlY2QzNDRkNzYxNGFiZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGlu
Zy5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAtNTMsNyArNTQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXll
clRyZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwogCiAvLyBCYXNlIGNsYXNzIGZvciBjb21wb3NpdGVkIGxheWVycy4gU3BlY2lhbCBsYXll
ciB0eXBlcyBhcmUgZGVyaXZlZCBmcm9tCkBAIC0xNTMsOSArMTUzLDEwIEBAIHB1YmxpYzoKIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkg
ZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2lzRHJhd2FibGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNU
ZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAxNzlmZWE2ZTEyYmYxMDNjNWIwNzQz
NWNmMjRhM2E0OGY4Y2Q5MzIzLi41ZTFlOGUyNjBmMzBiM2U4NzU1ZGRmOWI5N2QwOGJiZDExYmJk
NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OCwxNCArNDgsMTYgQEAg
cHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0g
ICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgp
OyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiAw
OyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBt
X3RleHR1cmUodGV4dHVyZSkgeyB9CisgICAgfTsKKworICAgIGNsYXNzIEhhbmRsZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGFuZGxlcigpIHsgfQogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTczLDggKzc1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7CiAgICAgLy8gVGhlIHxyZXN1bHRpbmdPcGFx
dWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9mIHRoZSBsYXllciB0aGF0IHdhcyBwYWludGVk
IG9wYXF1ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtlZCBvcGFxdWUgaW4gdGhlIHVwZGF0ZXIsCiAg
ICAgLy8gdGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQgYmUgaWdub3JlZCBpbiBwcmVmZXJlbmNlIGZv
ciB0aGUgZW50aXJlIGxheWVyJ3MgYXJlYS4KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0
aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2Fs
ZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3QqIC8qIHJlc3Vs
dGluZ09wYXF1ZVJlY3QgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6
ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywg
SW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgPSAwOwogCiAgICAgLy8gU2V0IHRy
dWUgYnkgdGhlIGxheWVyIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgZW50aXJlIG91dHB1dCBp
cyBnb2luZyB0byBiZSBvcGFxdWUuCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDc5YWQyZWRlOTU0NzU1
ODJiODcwNzI5YTcxYTVkNjFiZDI4YWI0Yi4uOWZhNjdkNDEwMjNlNDUxOWM3OWU1N2FiNjcyY2Zk
ZTk5N2FhZWQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSgpCiB7CiB9
CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3Zv
aWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAg
aWYgKCFtX25lZWRzRGlzcGxheSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDg0MzY1Njk1YmIxZGRjNjUyMzFhZGQwNGY2ZjBkODMwMDA5MWUwZDAu
LjVhMDM4YjJiZjc0MzczYjdkMTEyZjY0ZGFiMWRkYTNiMjMyZTkwY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUGx1Z2luTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVDQ0xheWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBkOTc0ZmE2M2E0NDU3ZDllYWM3YzhiODcz
ZjdlOTFhNGQyNjg0M2IuLjY0ZDQ2MGUyN2Q3OWQ4ZDdhODI3Y2UyMDUyMzA2OGE0OWYxZmJiNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC00OSwxNCArNDksMTQgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12
b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJl
c3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50
c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIFNrQ2FudmFzKiBj
YW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29u
dGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250
ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVkKHRydWUpOwogICAg
IHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbighbV9sYXllcklzT3BhcXVlKTsK
ICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwot
ICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNT
Y2FsZSk7CisgICAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhncmFw
aGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUu
ZW5kUmVjb3JkaW5nKCk7CiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA3ZmNj
NjA1OWY5MGU3ZDlkMWMzMDFiZjJhNzBmNTE1MmE0OTI3YjAwLi40NjU1NDJlNTdhMjAzYjY5NDUw
MjY1MDVlMDU4ZTlkNGQzODlmMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0
KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1
ZVJlY3QpOwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRl
eCA5MmQxMDJlMzIyYTIxODM1NWUxNTY4MWU1MDA1YWQzMmEyZTJiNmU1Li5mMWEzY2M2ZGNiNGY0
ZDJjOTBhZmI4MWM1N2RlOGRmZjc3OTU1NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTE5MSwxMCArMTkxLDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRM
YXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICBtX3NhbXBsZWRUZXhlbEZv
cm1hdCA9IHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1hdChtX3RleHR1cmVGb3Jt
YXQpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNh
dXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRp
bGVyIHRvIGJlY29tZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJh
dyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkgfHwgbV90aWxlci0+aXNF
bXB0eSgpKQorICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVj
dC5pc0VtcHR5KCkgfHwgbV90aWxlci0+aXNFbXB0eSgpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IGxlZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRp
bGVzUmVjdC54KCk7CkBAIC0yMzYsMTEgKzIzNiw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
CiAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBt
X3BhaW50UmVjdC5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAg
ICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKKyAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV91cGRhdGVSZWN0ID0gRmxv
YXRSZWN0KG1fcGFpbnRSZWN0KTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRp
bGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAtMzYzLDEyICszNjEsNiBA
QCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QpCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0
b20pCiB7Ci0gICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCi0gICAgZm9y
IChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGls
ZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0
ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJs
ZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3Qg
PSBJbnRSZWN0KCk7Ci0gICAgfQotCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhw
YW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdp
b25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQgYXJlIHRvIGJl
IHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBtX2RpcnR5UmVj
dCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTQxMiwxMyArNDA0LDYg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRs
ZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QobGVmdCwgdG9w
LCByaWdodCAtIGxlZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKIAotICAgIC8vIENhbGxpbmcg
cHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBo
YXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hp
Y2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxl
dGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRo
ZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdl
IGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVu
dGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+
IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IG9wYXF1ZVJlY3Q7IC8v
IEZJWE1FOiB1bnVzZWQuIHJlbW92ZSB0aGlzIGFuZCBzdG9yZSBpbiB0aGUgbGF5ZXIgdG8gcGFz
cyB0byBpbXBsIGZvciBkcmF3IGN1bGxpbmcKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
VG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0Jv
cmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKICAgICBmb3IgKGlu
dCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0
OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0
aWxlQXQoaSwgaik7CkBAIC00MzksMTUgKzQyNCwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50
CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50UmVjdCk7CiAKICAgICAg
ICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBpZiAo
c291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLQogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiB7CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsK
QEAgLTQ1NSw2ICs0MzUsMTIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxl
c1JlY3QgPSBJbnRSZWN0KCk7CiAgICAgbV9wYWludFJlY3QgPSBJbnRSZWN0KCk7CiAKKyAgICAv
LyBSZXNldCBtX3VwZGF0ZVJlY3QgZm9yIGFsbCB0aWxlcy4KKyAgICBmb3IgKENDTGF5ZXJUaWxp
bmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5i
ZWdpbigpOyBpdGVyICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgeworICAgICAg
ICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXIt
PnNlY29uZC5nZXQoKSk7CisgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsK
KyAgICB9CisKICAgICB1cGRhdGVCb3VuZHMoKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0
eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQpAQCAtNTUxLDUgKzUzNywyMSBAQCBJbnRSZWN0
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxl
TGF5ZXJSZWN0KQogICAgIHJldHVybiBwcmVwYWludFJlY3Q7CiB9CiAKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3sKKyAg
ICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0eSgp
IHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRv
IFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qg
b2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0
aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwgd2UgY2Fu
J3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUg
cGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJl
IHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KKyAg
ICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkp
OworICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6IHVudXNlZC4gcmVtb3ZlIHRoaXMg
YW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGltcGwgZm9yIGRyYXcgY3VsbGluZwor
ICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCks
ICZvcGFxdWVSZWN0KTsKKworICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVj
dCk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGMxMmU5MWFhNGY4MjY5YmJjNTkyNTNhZjM2ZTFi
YTZlMjc0ZDAwOGMuLmMwNWI3YWI1MmZjZWE3N2IwYjA0YjQyMzM2YzUxNDAzNjM2YjJjMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRh
dGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9v
bCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpA
QCAtNzksNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8g
YmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CiAKLSAgICAvLyBQcmVwYXJlIGRh
dGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVj
dC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRo
IGxheWVyUmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFp
bnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250ZW50IGlmIGlkbGUuCkBAIC04OCw2ICs4OCw5
IEBAIHByb3RlY3RlZDoKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCByZXR1cm5z
IHRydWUgaWYgbW9yZSBwcmUtcGFpbnRpbmcgaXMgbmVlZGVkLgogICAgIGJvb2wgbmVlZHNJZGxl
UGFpbnQoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAorICAgIC8vIFBhaW50IGNvbnRlbnRz
IG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3Qu
CisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisKICAg
ICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIAogICAgIHZpcnR1
YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CkBAIC0xMDYsNyArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQpIGNvbnN0
OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0gICAgLy8gVGVt
cG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4g
cHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0OwogCiAgICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBh
cmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVwcmVzZW50cyB0aGUg
YXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNzRkYjdmMTNlYzRmOGY0
Y2FhZjY4ZTVhZDc0NzQ1YmU5M2I3MmYzYi4uN2YwZmY2ZjQyZGMwNDM3OWJkY2ZlYWIxMDJmNDNm
YjQ5MGYwYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC0zOSw5ICsz
OSwyNCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXZWJHTExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21p
dW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworV2ViR0xMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBXZWJH
TExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNl
UmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0cjxXZWJH
TExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bSgpKTsKQEAgLTU1LDYgKzcwLDcgQEAg
V2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oKQogICAgICwgbV90ZXh0dXJl
Q2hhbmdlZCh0cnVlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlZChmYWxzZSkKICAgICAsIG1fZHJh
d2luZ0J1ZmZlcigwKQorICAgICwgbV91cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3Jl
YXRlKHRoaXMpKQogewogfQogCkBAIC02OSw3ICs4NSw3IEBAIGJvb2wgV2ViR0xMYXllckNocm9t
aXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBMYXllckNocm9taXVtOjpkcmF3
c0NvbnRlbnQoKSAmJiBjb250ZXh0KCkgJiYgKGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9ucygpLT5n
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9S
KTsKIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYp
Cit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0KQogewogICAgIGlmICghZHJhd3NDb250ZW50
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTk4LDYgKzExNCwxMSBAQCB2b2lkIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVu
ZGVyZXJDbwogICAgIH0KIH0KIAordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OmZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sK
KyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCksIElu
dFJlY3QoKSk7Cit9CisKIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1Rv
KENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52YXNMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggNGRjNjhh
MzMwOGUzZjIzMzdiNGIyNjVjNDY1ZDc1ZGIyZGM2YTdmYS4uN2E3NDE2ZmI2NTU4NTc3MzZjZGRk
YzgwYWZkOTkzNzFhNTEwMjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2
LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDYgKzQ2LDIzIEBAIGNsYXNzIFdlYkdMTGF5ZXJD
aHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJHTCBjYW52
YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVt
IHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3du
UHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShs
YXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4
dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21pdW0q
IG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJv
bWl1bT4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0oKTsKQEAg
LTUzLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkIHRl
eHR1cmVJZCkgeyBtX3RleHR1cmVJZCA9IHRleHR1cmVJZDsgfQogCiAgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZv
aWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZp
cnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1w
bCopOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wgcGFpbnRS
ZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwpAQCAtNzgsNiArOTcsOCBAQCBw
cml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhl
IERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBX
ZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOwor
CisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYTJmYjgyMmM1NmJkYjM1ZmNjZDNi
OTlhNGQxNGRlZWE4ZDkxMzI4Yi4uMWFlYmE1MTMwOWVmZDY0YmVhYWYwYjk0ZjE1YjQ1Yzg3MmFh
MTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIK
KyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKQEAgLTQ5LDYgKzUwLDIxIEBAIGJv
b2wgQ0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAg
IHJldHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJlZUhvc3Q6
OlVwZGF0ZUhhbmRsZXI6OlVwZGF0ZUhhbmRsZXIoQ0NQcm94eSogcHJveHkpCisgICAgOiBtX3By
b3h5KHByb3h5KQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6On5VcGRh
dGVIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6
OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJl
LT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICBtX3Byb3h5LT51cGRhdGUodGV4dHVyZSwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4g
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+
IGxheWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0
dGluZ3MpKTsKQEAgLTEzOSw4ICsxNTUsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YmVnaW5D
b21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpCiAgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojpjb21taXRUbyIsIHRoaXMsIDApOwogCi0gICAgY29udGVudHNUZXh0dXJlTWFuYWdl
cigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUoKSkpOwotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZGVsZXRl
RXZpY3RlZFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Cisg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpOworICAgIG1fY29udGVu
dHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY29tbWl0cyB0aGUg
Q0NMYXllclRyZWVIb3N0IHRvIGFuIGltcGwgdHJlZS4gV2hlbiBtb2RpZnlpbmcKQEAgLTI1Nyw4
ICsyNzMsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKICAgICBpZiAodmlld3BvcnRTaXplID09IG1fdmlld3BvcnRT
aXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKHZpZXdw
b3J0U2l6ZSkpOwotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+c2V0UHJlZmVycmVkTWVt
b3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRT
aXplKSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5
dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKKyAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldFByZWZlcnJlZE1lbW9yeUxpbWl0Qnl0ZXMoVGV4
dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOwogICAgIG1fdmll
d3BvcnRTaXplID0gdmlld3BvcnRTaXplOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CkBAIC0z
MDMsMTAgKzMxOSwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGlkQmVjb21lSW52aXNpYmxl
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbQogewogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgaWYgKG1fcHJveHktPmxheWVyUmVuZGVyZXJD
YXBhYmlsaXRpZXMoKS5jb250ZXh0SGFzQ2FjaGVkRnJvbnRCdWZmZXIpCi0gICAgICAgIGNvbnRl
bnRzVGV4dHVyZU1hbmFnZXIoKS0+ZXZpY3RBbmREZWxldGVBbGxUZXh0dXJlcyhob3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpKTsKICAgICBlbHNlIHsKLSAgICAgICAgY29udGVudHNUZXh0dXJlTWFuYWdl
cigpLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRl
cyh2aWV3cG9ydFNpemUoKSkpOwotICAgICAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRl
bGV0ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkp
OworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQo
VGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7CisgICAg
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CiAgICAgfQogCiAgICAgLy8gRW5zdXJl
IHRoYXQgdGhlIGRyb3BwZWQgdGlsZXMgYXJlIHByb3BhZ2F0ZWQgdG8gdGhlIGltcGwgdHJlZS4K
QEAgLTM0Nyw3ICszNjMsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAg
ICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBv
c2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXll
cnMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7CiAgICAgaWYg
KCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzU1LDEyICszNzEsMTIgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXll
cigpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUocm9vdExheWVyKCkpOwogfQogCi12b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVy
KQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRo
aXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0
ZSIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAg
ICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0zNjksNTAgKzM4NSw4
MSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJv
b3RMYXllcikKICAgICBJbnRSZWN0IHJvb3RDbGlwUmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNp
emUoKSk7CiAgICAgcm9vdExheWVyLT5zZXRDbGlwUmVjdChyb290Q2xpcFJlY3QpOwogCi0gICAg
Ly8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyB3YXNuJ3Qg
Y2FsbGVkIGFmdGVyCi0gICAgLy8gdXBkYXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJl
IHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6
ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAgLy8gVGhpcyBh
c3NlcnQgZmlyZXMgaWYgY29tbWl0Q29tcGxldGUgd2Fzbid0IGNhbGxlZCBhZnRlcgorICAgIC8v
IHByZXBhcmVUb1VwZGF0ZS4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBn
aXZlbiB0aW1lLgorICAgIEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCkg
JiYgIW1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdC5hcHBlbmQocm9vdExheWVyKTsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcm9v
dFJlbmRlclN1cmZhY2UgPSByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICByb290UmVu
ZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OwogICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShy
b290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3Vw
ZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOworICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJM
aXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAg
fQogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsK
LSAgICBpZiAoIW1fdHJpZ2dlcklkbGVQYWludHMpCisgICAgYXBwZW5kVmlzaWJsZUxheWVycyht
X3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBtX2xheWVyVXBkYXRlTGlzdCk7Cit9CisKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQoreworICAgIGlmICghcm9vdExheWVyKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNpemVfdCBwcmVmZXJyZWRMaW1pdEJ5dGVzID0gVGV4
dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKLSAgICBzaXpl
X3QgbWF4TGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyhtX3ZpZXdw
b3J0U2l6ZSk7Ci0gICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5yZWR1Y2VNZW1vcnlUb0xp
bWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOwotICAgIGlmIChjb250ZW50c1RleHR1cmVNYW5hZ2Vy
KCktPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpID49IHByZWZlcnJlZExpbWl0Qnl0ZXMpCisgICAg
aWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
SWRsZSBwYWludGluZyBzaG91bGQgZmFpbCB3aGVuIHdlIGhpdCB0aGUgcHJlZmVycmVkIG1lbW9y
eSBsaW1pdCwKLSAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgcHVzaCB1cyB0b3dhcmRz
IHRoZSBtYXhpbXVtIGxpbWl0LgotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4
TWVtb3J5TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKLSAgICAvLyBUaGUgc2Vjb25k
IChpZGxlKSBwYWludCB3aWxsIGJlIGEgbm8tb3AgaW4gbGF5ZXJzIHdoZXJlIHBhaW50aW5nIGFs
cmVhZHkgb2NjdXJlZCBhYm92ZS4KLSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0
LCBQYWludElkbGUpOwotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5
TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKKyAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkp
OwogfQogCi0vLyBzdGF0aWMKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZE
aXJ0eShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewot
ICAgIEFTU0VSVChsYXllcik7Ci0gICAgQVNTRVJUKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUg
fHwgUGFpbnRJZGxlID09IHBhaW50VHlwZSk7Ci0gICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWlu
dFR5cGUpCisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwg
dGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Qu
c2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExh
eWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7
CisgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgfQorCisgICAg
aWYgKG1fdHJpZ2dlcklkbGVQYWludHMpIHsKKyAgICAgICAgc2l6ZV90IHByZWZlcnJlZExpbWl0
Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUp
OworICAgICAgICBzaXplX3QgbWF4TGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGlt
aXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdl
ci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKKyAgICAgICAgaWYg
KG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPCBwcmVm
ZXJyZWRMaW1pdEJ5dGVzKSB7CisgICAgICAgICAgICAvLyBJZGxlIHBhaW50aW5nIHNob3VsZCBm
YWlsIHdoZW4gd2UgaGl0IHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LAorICAgICAgICAgICAg
Ly8gb3RoZXJ3aXNlIGl0IHdpbGwgYWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUgbWF4aW11bSBs
aW1pdC4KKyAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5
TGltaXRCeXRlcyhwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKKyAgICAgICAgICAgIC8vIFRoZSBzZWNv
bmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBuby1vcCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcg
YWxyZWFkeSBvY2N1cmVkIGFib3ZlLgorCisgICAgICAgICAgICBmb3IgKGludCBsYXllckluZGV4
ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXll
ckluZGV4KSB7CisgICAgICAgICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVy
VXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgICAgICBsYXllci0+aWRs
ZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0
Qnl0ZXMpOworICAgICAgICB9CisgICAgfQorCisgICAgVXBkYXRlSGFuZGxlciBoYW5kbGVyKG1f
cHJveHkuZ2V0KCkpOworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlz
dC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQo
KTsKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgZWxzZQotICAg
ICAgICBsYXllci0+aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGxheWVyLT5m
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIH0KIH0KIAotdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hy
b21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExh
eWVyTGlzdCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFsIGxheWVycywgdGhlc2Ug
Y29uZGl0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB3aGlsZSBjcmVhdGlu
ZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8gRm9yIG1hc2tzIGFuZCBy
ZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVjayB0aGVtIGhlcmUuCisg
ICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5vcGFjaXR5KCkgfHwg
IWxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlTGlz
dC5hcHBlbmQobGF5ZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXll
ciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBs
aWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3
ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQg
YXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNl
LCBzbyB0aGUKQEAgLTQyMCw2NyArNDY3LDQ3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAK
ICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAg
ICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwg
cGFpbnRUeXBlKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VMYXll
ci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0q
IHJlcGxpY2FMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAg
aWYgKHJlcGxpY2FMYXllcikgewotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNh
TGF5ZXIsIHBhaW50VHlwZSk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5
ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigp
KSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29u
dGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNh
TGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJs
ZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9
CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNv
bnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgUGFpbnRUeXBlIHBhaW50VHlw
ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsK
ICAgICAvLyBVc2UgRnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFu
ZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBD
Q0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xh
eWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAot
ICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQg
PSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xh
eWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1
cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXBy
ZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJl
bmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSk7Ci0gICAgICAgICAgICBwYWludE1hc2tBbmRS
ZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSgqaXQsIHBhaW50VHlwZSk7CisgICAgICAgICAgICBhcHBl
bmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCB1cGRhdGVMaXN0KTsKICAgICAg
ICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VCghaXQtPmJvdW5kcygpLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZE
aXJ0eSgqaXQsIHBhaW50VHlwZSk7CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIoKml0
LCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi17Ci0gICAgLy8gVXNlIEJhY2tUb0Zyb250IHNp
bmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgotICAgIHR5cGVk
ZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwg
Q0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7
Ci0KLSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVu
ZCgmbV91cGRhdGVMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xh
eWVySXRlcmF0b3JUeXBlOjpiZWdpbigmbV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSk7Ci0gICAg
ICAgICAgICBpZiAoaXQtPm1hc2tMYXllcigpKQotICAgICAgICAgICAgICAgIGl0LT5tYXNrTGF5
ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLQotICAg
ICAgICAgICAgaWYgKGl0LT5yZXBsaWNhTGF5ZXIoKSkgewotICAgICAgICAgICAgICAgIGl0LT5y
ZXBsaWNhTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVy
KTsKLSAgICAgICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkK
LSAgICAgICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkpCi0gICAgICAgICAgICBp
dC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICB9Ci19
Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUoKQogewotICAgIGZv
ciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fdXBkYXRlTGlzdC5z
aXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0g
bV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgbV9sYXllclVwZGF0ZUxpc3Qu
Y2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRl
eCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewor
ICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rb
c3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQotICAgIG1f
dXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuY2xlYXIo
KTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3Qg
Q0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5k
ZXggZDkyYWRjMTY2YWU2N2UzYWYwNTQyOTUxMGM5N2QzZmUzNjgzNTA5Zi4uZjI1ZTQyMWRiZjAx
MTEwOTViMzY0YWJlZmVkYzU5MDI1ZjRiZTVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0OwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiBj
bGFzcyBUZXh0dXJlQWxsb2NhdG9yOwpAQCAtNzcsNyArNzYsOCBAQCBzdHJ1Y3QgQ0NTZXR0aW5n
cyB7CiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAsIHBlclRpbGVQ
YWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgcGFydGlhbFN3YXBFbmFibGVkKGZhbHNlKQot
ICAgICAgICAgICAgLCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXModHJ1ZSkgeyB9CisgICAgICAgICAg
ICAsIHBhcnRpYWxUZXh0dXJlVXBkYXRlcyh0cnVlKQorICAgICAgICAgICAgLCBkZWxheVRleHR1
cmVVcGRhdGVzKGZhbHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAg
IGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgQ0NTZXR0
aW5ncyB7CiAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVu
YWJsZWQ7CiAgICAgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXM7CisgICAgYm9vbCBkZWxheVRl
eHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdz
IHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0x
ODcsOSArMTg4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKGJvb2wpOwogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKICAgICB2b2lkIHVwZGF0
ZUxheWVycygpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRT
Y2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1p
dGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKQEAgLTIwMSwxNCArMjAyLDI1IEBAIHByb3RlY3RlZDoKICAgICBib29s
IGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBVcGRhdGVIYW5kbGVyIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
VXBkYXRlSGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZUhhbmRsZXIo
KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAgIH07CisK
ICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7CiAg
ICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0Owog
Ci0gICAgZW51bSBQYWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0
YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUp
OwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYsIFBhaW50VHlw
ZSk7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNo
cm9taXVtKiwgUGFpbnRUeXBlKTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcihMYXllckNo
cm9taXVtKiwgTGF5ZXJMaXN0Jik7CisgICAgdm9pZCBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAg
dm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CiAKKyAgICB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZShMYXllckNocm9taXVtKik7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1
bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKQEAgLTIyNSw3ICsyMzcsOCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExh
eWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5n
cyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggOTM3YzE1NGZmNjliYTg1M2JiZmM5MzQ1
NmQ3NzY2NzEwYzcwYTIyNC4uNzNhYjAzYTllMTIzMzMyYjI1NDBiNjVjMjliZGJiMDcyODFjMjBj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtODMsNiArODQsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gdXBkYXRlcyBhcmUgcmVxdWlyZWQuCiAgICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0
dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29rcwog
I2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzJiZWMyYTcxNjY0YWY0M2NkNjRk
MDE0ZDI4Yjg0MjY1MDk1YjIwMy4uOTNiZTU1YzYzZDQzYjdiMTQxNjUwMDFjM2I5NDdiYzIyMWMy
OWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0Nywx
NSArMTQ3LDE1IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkK
IHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVy
KTsKKwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2lu
Q29tbWl0KCk7CiAKKyAgICAgICAgd2hpbGUgKG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT51cGRh
dGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0
KCksIHVwZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdl
dCgpKTsKIApAQCAtMTcwLDYgKzE3MCw4IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9D
b21taXQoKQogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAg
ICAgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUgPSB0cnVlOworCisgICAgQVNTRVJU
KCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+aGFzTW9yZVVwZGF0ZXMoKSk7CiB9CiAKIHZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQpAQCAtMjA4LDYgKzIxMCwxNiBA
QCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fbGF5ZXJUcmVlSG9zdCA9
IDA7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
cik7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1
cmVVcGRhdGVzKQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+YXBwZW5kKHRleHR1
cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIHRleHR1cmUtPnVw
ZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlci0+YWxsb2NhdG9yKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogLy8gQ2Fs
bGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRn
ZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9z
aXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMjcyLDYgKzI4NCwxMCBAQCB2b2lkIENDU2luZ2xlVGhy
ZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkpOwogCisgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlcikKKyAgICAgICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlciht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOworCisgICAg
bV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycygpOwogCiAgICAgZG9Db21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaAppbmRleCA0ZmFhMjI5OTkxMmFlYzljNGU2YWI0YmE3MDI3ZDgxYzgwNmQ0
NWVlLi4wMjdlM2ZjYWEwNDc0MmI3OTNmOGMzOTJlY2QwMTg4NTZjMzQzMDlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDVGV4dHVyZVVwZGF0
ZXI7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NMYXll
clRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAg
IHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlv
bgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04Myw2ICs4NSw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3Vs
ZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3
bHlDb21taXR0ZWRGcmFtZTsKKworICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRl
ZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0
ZmRiOGNjODcyYWIuLmRmNzcyNDQxM2QxNzNjMTgwNjI4ZDRmODliNDBjZTg5ZDNhMTFhN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKQEAgLTM5LDcgKzQwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVy
KFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRv
cikKLSAgICAsIG1fZW50cnlJbmRleCgwKQogewogICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9
CkBAIC02NiwyMyArNjYsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRl
cygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWlu
KG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9l
bnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVu
dHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOworICAgIHdoaWxlIChjb3VudC0t
KSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOwog
ICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3Is
IGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAgIG1fZW50cmll
cy5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVzLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQg
dG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNs
ZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5YzJl
MjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTViYjMwLi5jMzdhZjM0YmVlNjRmN2MwYWY1YjEwMzY5
NTMxMTQwMjNjNTY2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC01OSw3
ICs1OSw2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxs
b2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5
PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDMyYTg2
MzBjZTMxMDI1MDE3Nzg5ZDI1MDQ0NmJmOWZmNjkwNDBkMGQuLjg3N2VmN2JlNTc2N2ViZGRhYmQx
ZWRhYWY1ZDhlYzY3MzZkOWE2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0y
OTUsNiArMjk1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVk
ID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1
cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChtX3N0YXJ0ZWQpOworCisgICAgT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSA9IGFkb3B0UHRy
KG5ldyBVcGRhdGVFbnRyeSk7CisgICAgZW50cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7CisgICAg
ZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJlY3Qg
PSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRl
Q0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhy
ZWFkLCBlbnRyeS5yZWxlYXNlKCkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hB
bGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1w
bFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzgxLDYgKzM5NSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJl
Z2luVGltCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFs
c2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Ny
b2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZh
bHNlLgpAQCAtNDA1LDEzICs0MjAsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
QW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBB
U1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0g
c2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVP
bkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNTRVJU
KCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1w
bFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisgICAg
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IEND
VGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpKTsKKworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5hcHBl
bmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJl
Y3QpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRo
cmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgi
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7
CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAg
QVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQpOwotICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygp
KTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+
c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQxOSwxMCArNDQ2LDYgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
ID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRv
cHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCkBAIC00NDQsMTkgKzQ2NywyMCBAQCBib29sIEND
VGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rp
b25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFT
U0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgaWYgKCFtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuOwogICAgIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5UKCJD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAgICBBU1NF
UlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCghbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOwogICAg
IEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKLSAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCisgICAgaWYgKG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVCghbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworICAgICAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOworICAgIH0KIAog
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAppbmRleCBhMTFiNTI3ODU5OTMxY2ZiOThmODcyNGE1MTI0M2EwOWI0ZWNjM2I5Li5l
NzRjYzZmMTgzYzkxZGRmMzY5MWZhZjM5ZjVkY2MzYjVkYzA3NzNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFs
VGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21w
bGV0ZU9uSW1wbFRocmVhZCgpOwpAQCAtODAsNiArODEsMTIgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3Ry
dWN0IFVwZGF0ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
bV90ZXh0dXJlOworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVj
dCBtX2Rlc3RSZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAg
ICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJh
bWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQg
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC05NCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAg
IH07CiAgICAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21t
aXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7
CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50
cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNr
UmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaAppbmRleCBjY2U0N2UyZTI3YTY3YTI2NmQ2ODJkN2Y1YWFlOWM1MDM1NjMyMDBjLi5iOGNl
NDU5ZGJiMTExM2ZmMjc0MmUzODI3ZGRlMTJhYWIzYzdmNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcAppbmRleCA3NzMzZTI2OTkwODZkYmIzYjU1NTYzMGY0ZWU3YWRjYWYz
NTJlMjliLi42MjgzZjUwNWU0M2I3MzRhZTZhYTQxNGFiY2EyZjdlNjA1Zjc2N2E4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRp
bmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9z
aG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNl
KQorICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0
aW5ncyk7CiB9CkBAIC01MDcsNCArNTA4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBh
cnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0UGFydGlh
bFN3YXBFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVs
YXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRh
dGVzID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGNjNzBkMTMxNmM2NGMxNjU5
ZTBlMjIyOTU2YzY4MTY0MDE1NWIzYjIuLmFjYzI1ZTQ5OTNmMjg3ZDcyYTJmMzU5NjcwYTk4MTNl
NjYwZTFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCkBAIC0xMzAsMTIgKzEzMCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFj
Y2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJU
aWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dh
cEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMo
Ym9vbCk7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpT
ZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxh
eWVyVHJlZTsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IGQ3Mzg4OTBiNGViODZlOGIyMGNiZDY1Y2Q2YWQ0ZTA3YWZkYjFkMzYuLjA0ZGI0NTgw
ZTRlZjczZjJmOWQ2MjNlZGRjZDY2OTAzMjM3ZmNhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMwMDMsNiArMzAwMyw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAog
ICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+
cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucGFydGlhbFN3YXBF
bmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICAg
ICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0
dXJlVXBkYXRlcygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9u
Q29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6
Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNo
b3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKaW5kZXggNThkZTc1OWJiMzM5M2I1ZGU3ZDk4NjIwNmI3Y2VmOTNmN2FhMmQ3MS4uMmM2
OTRkNGQ4ZTA0NTJiZTYyZjg5NzhkMmU2YjA0Nzg4YjljMjUwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC05Njcs
NiArOTY3LDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVs
dGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdh
dGUgOiBwdWJsaWMgQ29udGVudExheWVyRGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xhc3MgVGVzdE9wYWNp
dHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGljIENvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1
YmxpYzoKICAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUoQ0NMYXllclRyZWVIb3N0
VGVzdCogdGVzdCkKQEAgLTk4OCw0NyArOTk2LDExOSBAQCBwcml2YXRlOgogCiBjbGFzcyBDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSAqZGVs
ZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAg
ICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewor
ICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgICAg
ICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3BhaW50
Q29udGVudHNDb3VudDsgfQotICAgIGludCBpZGxlUGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1
cm4gbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OyB9Ci0gICAgdm9pZCByZXNldFBhaW50Q29udGVu
dHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyBtX2lkbGVQYWludENvbnRlbnRz
Q291bnQgPSAwO30KKyAgICAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUo
KSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cHJlcGFyZVJl
Y3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVz
dFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlLT5iaW5k
VGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVw
ZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBw
cml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Cisg
ICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsK
KyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
ICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmly
dHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1
cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFn
ZXIpKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBz
YW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGls
ZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUg
Ki8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1f
bGF5ZXI7IH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7
IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9Cisg
ICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIo
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6IG1fbGF5ZXIo
bGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENvbnRlbnRMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsKKyAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKQogICAgIHsKLSAgICAgICAg
Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1f
cGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAg
ICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZUlmRGlydHkoKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06
OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX2lkbGVQYWludENvbnRlbnRz
Q291bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKKyAgICAgICAgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBt
X3VwZGF0ZUNvdW50Kys7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBpZGxlUHJlcGFyZVRvVXBkYXRlKCk7CiAgICAg
fQogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKSB7IG1fcHJlcGFyZVRvVXBkYXRlQ291bnQr
KzsgfQorICAgIGludCBwcmVwYXJlVG9VcGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fcHJlcGFyZVRv
VXBkYXRlQ291bnQ7IH0KKworICAgIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZSgpIHsgbV9pZGxl
UHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGludCBpZGxlUHJlcGFyZVRvVXBkYXRlQ291
bnQoKSB7IHJldHVybiBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudDsgfQorCisgICAgdm9pZCBw
YWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50
Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2
b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVw
YXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lk
IHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVj
dENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDb250ZW50TGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVs
ZWdhdGUpCisgICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCgwKQorICAgICAgICAsIG1f
aWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291
bnQoMCkKLSAgICAgICAgLCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBt
X3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAgICAg
ICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXpl
KDEwLCAxMCkpOwogICAgICAgICBzZXRJc0RyYXdhYmxlKHRydWUpOwogICAgIH0KIAorICAgIFJl
ZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjsKKyAgICBpbnQgbV9wcmVwYXJlVG9VcGRhdGVDb3VudDsKKyAgICBpbnQgbV9pZGxlUHJl
cGFyZVRvVXBkYXRlQ291bnQ7CiAgICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50OwotICAgIGlu
dCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAg
aW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV91cGRhdGVSZWN0Q291bnQ7CiB9Owog
CiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxkIG5vdCBwcmV2ZW50
IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRlZCBkdXJpbmcgY29tbWl0LgpA
QCAtMTA1NSwxNiArMTEzNSwxOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJU
ZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgb25jZS4KLSAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tM
YXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOworICAgICAgICAvLyBwcmVwYXJlVG9VcGRhdGUo
KSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91
cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlVG9VcGRhdGVDb3VudCgpKTsKIAotICAgICAgICAvLyBp
ZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlCi0g
ICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQYWludENvbnRlbnRz
Q291bnQoKSk7CisgICAgICAgIC8vIGlkbGVQcmVwYXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBi
ZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVy
LT5pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSk7CisKKyAgICAgICAgLy8gcGFpbnRDb250ZW50
cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBt
X3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKIAotICAgICAgICAvLyB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNh
bWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4K
LSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50
KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkp
OworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgor
ICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCks
CisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgp
KTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVI
b3N0IGRpZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1OTU3MTBlNGQ4Y2ZkN2QyNGRiNTMzYy4u
N2RmOTY5NTM5ZjhlNjY1NTgxZmJhMjE3NjRjMWQ2ZGI1MGQyOWY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNp
bmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKICNpbmNsdWRl
IDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC02OCw2ICs2Nywy
MSBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUsIHZvaWQodW5zaWdu
ZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkpOwogfTsKIAorY2xhc3MgTW9ja1VwZGF0ZUhh
bmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CitwdWJsaWM6Cisg
ICAgTW9ja1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQoY29udGV4dCksIG1fYWxsb2NhdG9yKGFs
bG9jYXRvcikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQorICAgIHsKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291
cmNlUmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9j
YXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmFw
aGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOworfTsKKwogfSAvLyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEs
NyArMTA1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1v
Y2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwog
CiAgICAgICAgIE1vY2tUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvck1vY2s7Ci0gICAgICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmYWxsb2NhdG9yTW9jayk7CisgICAgICAgIE1vY2tVcGRh
dGVIYW5kbGVyIHVwZGF0ZUhhbmRsZXJNb2NrKGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9y
TW9jayk7CiAKICAgICAgICAgY29uc3QgSW50U2l6ZSBzaXplKDMwMCwgMTUwKTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IG1heFRleHR1cmVTaXplID0gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQo
KSAqIDQ7CkBAIC0xNDYsNyArMTYwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgUmVmUHRy
PENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4o
bGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAgICBjYW52YXMtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOworICAg
ICAgICAgICAgY2FudmFzLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKHVwZGF0ZUhhbmRsZXJN
b2NrKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCmluZGV4IGJk
YmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMuLjBmN2VkNTcwZWQ2ZmU0Mjc4
OTY3ZmUzYjFlNWVhZGI3NDQ0ZTA5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBAIC05NSwxOSArOTUs
MTkgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3RQcmVzZW50
QWZ0ZXJPcGFxdWVQYWludCkKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50
ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsK
ICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBh
aW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJl
Y3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCks
IEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVj
dCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50
ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2Up
OwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwg
SW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWlu
dENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFp
bnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkp
OwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwg
Jm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0
MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogfQogCkBA
IC0xMjEsMTkgKzEyMSwxOSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3Bh
cXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50KQogICAgIG9wYXF1ZVJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hy
b21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIHVwZGF0ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQw
MCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJl
Y3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3Qp
OwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwog
CiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3
IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1cGRhdGVyID0gQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVs
ZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAg
IHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUo
NDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgp
OwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZp
bGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAgdXBkYXRlci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAw
KSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVj
dCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7
CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9
CiAKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRl
c3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhCiAgICAgcGFp
bnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkp
OwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
cGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7
Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJ
bnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50
Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAx
LCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwg
b3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIg
PSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAg
ICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRy
dWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAw
KSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5w
YWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwg
MCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwg
MCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWlu
dGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7
CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUo
dHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXIt
PnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDAp
LCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAw
LCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE3NywyMSArMTc3LDIxIEBAIFRFU1QoTGF5ZXJU
ZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVy
V2l0aE5vbk9wYXF1CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVy
Q2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVwZGF0
ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7
CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50
U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRS
ZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21p
dW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVw
ZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwg
SW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hy
b21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1
cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJl
Y3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCks
IEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IDBkYWMzYWFmOGM2N2JmZGFhMTBmZTFhMWI2YmRkMmQ3NzU5NDJiMjQuLmM3MGQyMWFhYTk2
MjI5NDc0ODUzMjU0NGI3MmNlNjZmYzQ4ZmRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcsOSAr
MjcsOSBAQAogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgi
IC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CiAKQEAgLTM4LDEwICszOCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
IG5hbWVzcGFjZSB7CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVibGljIFRleHR1
cmVBbGxvY2F0b3IgeworY2xhc3MgRmFrZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBjcmVhdGVUZXh0
dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiB9OwogCiBjbGFzcyBGYWtlVGls
ZWRMYXllckNocm9taXVtOwpAQCAtNTAsMzIgKzQ5LDM2IEBAIGNsYXNzIEZha2VMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgogICAgIGNs
YXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAg
cHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICAgICAg
VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0
ZXh0dXJlKSB7IH0KICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCisgICAgICAgIHZp
cnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwog
ICAgIH07CiAKLSAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVwYXJlQ291bnQo
MCkgeyB9CisgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcGFpbnRDb3VudCgwKSB7
IH0KICAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAgLy8g
U2V0cyB0aGUgcmVjdCB0byBpbnZhbGlkYXRlIGR1cmluZyB0aGUgbmV4dCBjYWxsIHRvIHByZXBh
cmVUb1VwZGF0ZSgpLiBBZnRlciB0aGUgbmV4dAogICAgIC8vIGNhbGwgdG8gcHJlcGFyZVRvVXBk
YXRlKCkgdGhlIHJlY3QgaXMgcmVzZXQuCiAgICAgdm9pZCBzZXRSZWN0VG9JbnZhbGlkYXRlKGNv
bnN0IEludFJlY3QmLCBGYWtlVGlsZWRMYXllckNocm9taXVtKik7CiAKLSAgICAvLyBOdW1iZXIg
b2YgdGltZXMgcHJlcGFyZVRvVXBkYXRlIGhhcyBiZWVuIGludm9rZWQuCi0gICAgaW50IHByZXBh
cmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZUNvdW50OyB9Ci0gICAgdm9pZCBjbGVh
clByZXBhcmVDb3VudCgpIHsgbV9wcmVwYXJlQ291bnQgPSAwOyB9CisgICAgLy8gTnVtYmVyIG9m
IHRpbWVzIHBhaW50Q29udGVudHMgaGFzIGJlZW4gaW52b2tlZC4KKyAgICBpbnQgcGFpbnRDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRDb3VudDsgfQorICAgIHZvaWQgY2xlYXJQYWludENv
dW50KCkgeyBtX3BhaW50Q291bnQgPSAwOyB9CiAKICAgICAvLyBMYXN0IHJlY3QgcGFzc2VkIHRv
IHByZXBhcmVUb1VwZGF0ZSgpLgogICAgIGNvbnN0IEludFJlY3QmIGxhc3RVcGRhdGVSZWN0KCkg
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVJlY3Q7IH0KIAogICAgIHZpcnR1YWwgUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVN
YW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhlbEZvcm1h
dFJHQkE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCopOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRTaXpl
JiwgaW50LCBmbG9hdCwgSW50UmVjdCopOwogCiBwcml2YXRlOgotICAgIGludCBtX3ByZXBhcmVD
b3VudDsKKyAgICBpbnQgbV9wYWludENvdW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlk
YXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bT4gbV9sYXllcjsKQEAgLTEyNyw2ICsxMzAsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpuZWVkc0lkbGVQYWludChyZWN0KTsKICAg
ICB9CiAKKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7
CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9
CisKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KSB7IHJldHVybiBtX2Zha2VUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVN
YW5hZ2VyOyB9CkBAIC0xNDksOSArMTU3LDkgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6c2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBGYWtlVGlsZWQKICAg
ICBtX2xheWVyID0gbGF5ZXI7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYs
IGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEZha2VMYXll
clRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVj
dCkKIHsKLSAgICBtX3ByZXBhcmVDb3VudCsrOworICAgIG1fcGFpbnRDb3VudCsrOwogICAgIG1f
bGFzdFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKICAgICBpZiAoIW1fcmVjdFRvSW52YWxpZGF0
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZVJlY3QobV9yZWN0VG9J
bnZhbGlkYXRlKTsKQEAgLTE2OCwxNCArMTc2LDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9w
dFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxv
Y2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRl
eHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRz
IHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVy
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWlu
dENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0
aGUgaW1wbCBzaWRlLgpAQCAtMTg4LDcgKzE5Niw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9m
IHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7Cisg
ICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgIGxh
eWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25seSBo
YXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRlZCBi
dXQgbm90IHBhaW50ZWQuCkBAIC0yMDMsOCArMjEyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwg
PSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1
cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAv
LyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0aWxlcyB3aXRoIG9uZSB2aXNp
YmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoNTAwLCA1
MDApOwpAQCAtMjIwLDcgKzIyOCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVz
aElkbGVQYWludFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcgZm9y
IDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lk
bGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0y
MzMsNyArMjQxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50
VGlsZXMpCiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwogICAg
ICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKICAg
ICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOwotICAgICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAgbGF5
ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVNYW5hZ2Vy
LT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0KQEAgLTI2OSw4ICsyNzcsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDAp
KTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NU
ZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxl
ciBoYW5kbGVyOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVuIHBh
aW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5k
cyk7CkBAIC0yODEsNyArMjg4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxl
UGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZv
ciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUobGF5
ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGltcGwg
c2lkZS4KQEAgLTI5NCw3ICszMDEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlk
bGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVlZCBh
bm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApAQCAtMzA1LDE0ICszMTIsMTQgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwog
Ci0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhh
bmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxp
ZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsK
KyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxk
IGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzIxLDIyICszMjgsMjQgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAKICAg
ICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50Q291bnQoKTsKICAgICAvLyBJ
bnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJlcGFy
ZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4dHVy
ZVVwZGF0ZXIuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MjAwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wYWludENvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0cmln
Z2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRhdGUu
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRh
dGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBsYXllci0+ZmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VR
KDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7Ci0g
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7
CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAg
IEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3Vu
dCgpKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENv
dW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHByZXBh
cmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgbGF5ZXItPnBhaW50
Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIEVYUEVDVF9FUSgxLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123557</attachid>
            <date>2012-01-23 07:58:48 -0800</date>
            <delta_ts>2012-01-27 06:47:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120123105846.patch</filename>
            <type>text/plain</type>
            <size>107919</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uYmI2YTdkYWMyYWE0YTQxYjExMGI1N2UxMWM1YWFh
YzkxNTYwZjM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0wMS0yMyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyOjp+SGFuZGxlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxl
cjo6flVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpV
cGRhdGVIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTZXR0aW5nczo6Q0NTZXR0aW5ncyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NT
aW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhy
ZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRD
b21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9u
SW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
Q29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMi0wMS0yMyAgVnNl
dm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbmRleGVkREJNb2RlbCBzaG91bGQga2VlcCB0cmFjayBvZiByZXF1ZXN0cyBzZW50IHRv
IHRoZSBiYWNrZW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhZGNkZTg5NjA2ZDk1
OWZhOGIwNWZlMmVmNjFlZjEwYTZlNjNiOGE3Li4wNmJlMTY3MjI5MDFmYzE2MjRmYTZlYzZlZDdm
YzEzODhiNTI0ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBA
CisyMDEyLTAxLTIzICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0Nocm9taXVtXSBVcGxvYWQgdGV4dHVyZXMgaW4gcGFyYWxsZWwgd2l0aCBwYWludGlu
ZyBjb250ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcyNzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGRlbGF5VGV4dHVyZVVwZGF0ZXMgc2V0dGluZyB0aGF0IGlzIHVzZWQgYnkgY29tcG9z
aXRvciB0byBkZXRlcm1pbmUKKyAgICAgICAgaWYgdGV4dHVyZSB1cGxvYWRzIHNob3VsZCBiZSBk
ZWxheWVkIHVudGlsIGFsbCBwYWludGluZyBoYXMgY29tcGxldGVkLgorICAgICAgICBVcGRhdGUg
dW5pdCB0ZXN0czogQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgYW5kCisgICAgICAg
IFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3Mu
aDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nc0ltcGw6OnNldERlbGF5VGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHNyYy9XZWJT
ZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRl
eHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToK
KyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5
ZXJEZWxlZ2F0ZTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdh
dGU6OnByZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6Om5vdGlm
eVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVy
ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXll
cik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0
ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVRvVXBkYXRlKToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBh
cmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUNv
dW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0KToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVS
ZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3Bh
Y2l0eUNoYW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9MYXllclRleHR1cmVVcGRh
dGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUhhbmRsZXI6Omhh
bmRsZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpU
ZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpj
bGVhclBhaW50Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpURVNUKToKKwogMjAxMi0wMS0yMCAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UGFnZUFnZW50Lm9wZW4oKSBkb3Nlbid0IGJlbG9uZyB0byB0aGUgcHJvdG9jb2wuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBk
OTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODguLmRkMDM1M2QxNjNjZGJmMzk5
ZDc4MWJmMzZmOWRmYjU3ZWU2YzVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRl
eHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQog
ewogfQpAQCAtNzgsNyArNzgsNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAogICAgICAgICAg
ICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4
dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxv
YXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKK3ZvaWQgQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAg
ICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBs
YXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBh
aW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQ
YWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7CiAgICAgY2FudmFzUGFpbnRlci5za2lhQ29u
dGV4dCgpLT5zZXRUcmFja09wYXF1ZVJlZ2lvbighbGF5ZXJJc09wYXF1ZSk7Ci0gICAgcGFpbnRD
b250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1Nj
YWxlKTsKKyAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKCpjYW52
YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogCiAgICAg
aWYgKCFsYXllcklzT3BhcXVlKQogICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9IGNhbnZh
c1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGUxNjIy
OTViODZlMDA4OTNjMzNlZjAzZDRiNjJkMmMxZTUyYmQ1Zi4uMmFiYWM5NmEwMzBkYjA5Mjg0OTQz
Y2YzOGI0OTRjZDgwZWM5MGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIHBvc3NpYmxlLgogY2xhc3MgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBj
bGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAg
IGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwg
flRleHR1cmUoKTsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVy
ZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxG
b3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNp
emUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3Vs
dGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7
CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGUyYWI3OTgzODZmY2NmMDcwMTNkNjZiYjNmMjhm
ZTdkOGY0ZWMyN2MuLjM0YWQyNjA5NTMxY2ExZjA0NDk3ZjE0YjUzNzJlNjIwNWEyMjJhZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04NiwxMCArODYsMTAgQEAgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQog
Ci12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNp
emUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3Vs
dGluZ09wYXF1ZVJlY3QpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJ
bnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3Vi
SW1hZ2VTaXplKHRpbGVTaXplKTsKLSAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpwcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMs
IGNvbnRlbnRzU2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJlY3QsIHRpbGVTaXpl
LCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogfQog
CiB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29u
dGVudHNSZWN0KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggMWM1NjRjZGMxODNlYTQ5NTkxZjY5MDZlZmViZDNhOGQ5YjVmODBj
Yy4uNmQ3MjI1ZjMyMmQ2YTVhMGI2NjJjYzE4MmYwZTkxNTdiZjY2NDFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdl
ciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBm
bG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2
b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0Rl
bnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVs
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE1MDVhZGFj
MjQzZTA3NjY1ZDJkZGFiMjhmNDcwM2ZmOGVmNWI5NDMuLjhkMTI3NmIzYjhjNTIyZDE0NzVlZjMz
N2Y1OTA4MDI1OTljMjEzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cApAQCAtNDcsNiArNDcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDYW52YXMyRExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVy
Q2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworQ2FudmFzMkRM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwor
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNv
bnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0
ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwg
YWxsb2NhdG9yKTsKK30KKwogUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzMkRMYXll
ckNocm9taXVtKGNvbnRleHQsIHNpemUpKTsKQEAgLTU5LDYgKzczLDcgQEAgQ2FudmFzMkRMYXll
ckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEkKICAgICAsIG1fYmFja1RleHR1cmVJZCgwKQogICAgICwgbV9mYm8oMCkKICAg
ICAsIG1fdXNlRG91YmxlQnVmZmVyaW5nKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKKyAgICAs
IG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBp
ZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fZmJvID0g
bV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKTsKQEAgLTEzMiwxMiArMTQ3LDEyIEBAIHZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdl
ciogdGV4dHVyZU1hbmFnZXIpCiAgICAgICAgIG1fZnJvbnRUZXh0dXJlLmNsZWFyKCk7CiB9CiAK
LXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9p
ZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IgKmFsbG9jYXRvcikKIHsKICAg
ICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0
dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRl
ci5hbGxvY2F0b3IoKSk7CisgICAgbV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQs
IGFsbG9jYXRvcik7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKQEAgLTE0OCw2ICsxNjMs
MTEgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
Zmx1c2goKSk7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7Cisg
ICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRS
ZWN0KCkpOworfQorCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFBy
b3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDgzNjE1YTFmMjIzNTYxNjQ2MmViMWY4ZDQxMjJlMWFkOGU1OGM5MjIuLmQ0NWJhOGNhMzIyMTkw
Yjk3ZjY2MDQ1ZDkzNTIxNDY4NzRjOTcwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCkBAIC00NCw2ICs0NCwyMyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIC8vIEEg
bGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJE
TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAg
ICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0
dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMy
RExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5
ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1
bT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1
YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NSw3ICs3Miw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmly
dHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBS
ZXNvdXJjZXMoKTsKQEAgLTc2LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBzeW5jaHJvbml6
ZSBpdHMgZHJhd3Mgd2l0aCB0aGUgY2FudmFzIHVwZGF0ZXMuCiAgICAgYm9vbCBtX3VzZURvdWJs
ZUJ1ZmZlcmluZzsKICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJlOwor
ICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRj
NmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uMWYzYjY0NGVlNjZiYmQwNzUxN2FjNDg1
Yzk1Y2IyOGRkMDFlMjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTM2LDYgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxM
YXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4
NjUzM2JiODVkNjllN2NmNjQ3ODJiMjZhZjExMTM1YWMuLjdmOGQzZDU5ZDk5OWUzNjhhNWE4ZWEy
YjY0MTBkNjY1MmZlNGY2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKQEAgLTQxLDYgKzQxLDE5IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogLy8g
dGhlaXIgcmVzcGVjdGl2ZSBwYWludENvbnRlbnRzIGltcGxlbWVudGF0aW9ucy4KIGNsYXNzIENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBw
dWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAg
ICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CisKKyAgICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0
cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0dWFsIH5DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcAppbmRleCA4NDAzOTBlMDI3OTA4MjUyNmI0MWZiM2Q4NTdiMWY4NDVh
MDE4YTY4Li5hZGY0MTI1NDc0Y2I2NjUyODhjMmZkY2QwN2RiYjc0NWEyOGE4MjMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC04OCw3ICs4OCw3IEBAIENvbnRlbnRM
YXllckNocm9taXVtOjp+Q29udGVudExheWVyQ2hyb21pdW0oKQogewogfQogCi12b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICB1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogICAgIG1fbmVlZHNEaXNwbGF5ID0g
ZmFsc2U7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE3LDYgKzExNywyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRD
b250ZW50c0lmRGlydHkoKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCit2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgQVNTRVJU
KGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2li
bGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiB2b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiB7CiAj
aWYgVVNFKFNLSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBjZmIwZmQ3
YzkwNjdjMjE0MGRkMTNkMzU2ZmJlZjdkZmM5N2UzMmRlLi4xYmYzZGU3MmU1OGExMGI1NzI5MGRh
NGY3MGJhMTUxZmI3MWVkODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAg
LTU3LDggKzU3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2Rl
bGVnYXRlID0gMDsgfQogCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRs
ZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJv
b2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAxOWRmYTJmMDA2Yzk4ODQ3
NzBlNjc2YzQ1ODViZTk0NjcxMzRmM2IzLi44ZjJkZThhMGU4OTNkNDFkYWYzMGI2NTFmMTUzNjU0
Y2QzNWE3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgc3RhdGljIFBhc3NPd25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogfQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDRhMTBjODU4ZTRjZGE4YzI1MmFjMTZkZmEwN2QwOWE1
ZDkwOGVlYzMuLjc0M2VkNmViYWZiYzgyN2U2Mjc0NDg0NDFhZDNmOTk4Mzc5YWI1OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIGludGVybWVkaWF0ZSBmcmFtZWJ1ZmZlciBhbmQgdGhlbiBpcyBjb3BpZWQgdG8gdGhl
IGRlc3RpbmF0aW9uIHRleHR1cmUgb25jZSBkb25lLgogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwg
UGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAwMTU0ZmIyODMxNGYzZTZjOTI0
MDQ3YmI0ODM2NzM2OTJkZmNmYWI3Li4xNmE4NWE0OGFiM2Q5OWMzNTg4MzQ2ZWFiZTA3NmQ4MDJi
MWYxNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDkgKzM0LDkg
QEAKIAogI2luY2x1ZGUgIkltYWdlTGF5ZXJDaHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKLSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKQEAgLTQ2LDEwICs0NiwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NP
d25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgIDogQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRh
dGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTgzLDcgKzgzLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRC
R1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVy
VGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRp
bmdPcGFxdWVSZWN0ICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRl
clRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50UmVjdCogLyogcmVzdWx0
aW5nT3BhcXVlUmVjdCAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1h
Z2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBJbWFnZUxh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykKICAgICBzZXROZWVkc0Rp
c3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkK
IHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+
dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
SW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCBkNzEyOTI0NTFjMzU1NWVhZjBjMTZj
ZjlmMmMzZjM5NWJlMDc1MzA0Li5jMzQ2Y2NkYzM3MWZjNGViN2ZjNjJkOWYwYzEyMzNmN2Y3OGUy
ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggMDRkZDFlNjYy
YWY3NDAwZTk5YzI2ZmFlYjVkNGU4MzNkODJiMmZlZS4uOGIzYThhZTRjMWRlZmYyMmFkOGRlYzU5
MGVjZDM0NGQ3NjE0YWJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAog
CiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFj
ZUNocm9taXVtLmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVV
cGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNv
bXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KQEAg
LTE1Myw5ICsxNTMsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2Fs
bHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVh
bCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRl
bnRzSWZEaXJ0eSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYmluZENvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CmluZGV4IDE3OWZlYTZlMTJiZjEwM2M1YjA3NDM1Y2YyNGEzYTQ4ZjhjZDkzMjMuLjVlMWU4ZTI2
MGYzMGIzZTg3NTVkZGY5Yjk3ZDA4YmJkMTFiYmQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVV
cGRhdGVyLmgKQEAgLTQ4LDE0ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkg
PSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9
OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5I
YW5kbGVyKCkgeyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1
cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBk
YXRlcigpIHsgfQpAQCAtNzMsOCArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTYW1wbGVk
VGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0g
MDsKICAgICAvLyBUaGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24g
b2YgdGhlIGxheWVyIHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLiBJZiB0aGUgbGF5ZXIgaXMgbWFy
a2VkIG9wYXF1ZSBpbiB0aGUgdXBkYXRlciwKICAgICAvLyB0aGVuIHRoaXMgcmVnaW9uIHNob3Vs
ZCBiZSBpZ25vcmVkIGluIHByZWZlcmVuY2UgZm9yIHRoZSBlbnRpcmUgbGF5ZXIncyBhcmVhLgot
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4
ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgeyB9CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVS
ZWN0ICovKSA9IDA7CiAKICAgICAvLyBTZXQgdHJ1ZSBieSB0aGUgbGF5ZXIgd2hlbiBpdCBpcyBr
bm93biB0aGF0IHRoZSBlbnRpcmUgb3V0cHV0IGlzIGdvaW5nIHRvIGJlIG9wYXF1ZS4KICAgICB2
aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9t
aXVtLmNwcAppbmRleCAwNzlhZDJlZGU5NTQ3NTU4MmI4NzA3MjlhNzFhNWQ2MWJkMjhhYjRiLi45
ZmE2N2Q0MTAyM2U0NTE5Yzc5ZTU3YWI2NzJjZmRlOTk3YWFlZDYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBQbHVnaW5MYXllckNocm9taXVt
OjpQbHVnaW5MYXllckNocm9taXVtKCkKIHsKIH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNv
bnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKaW5kZXggODQzNjU2OTViYjFk
ZGM2NTIzMWFkZDA0ZjZmMGQ4MzAwMDkxZTBkMC4uNWEwMzhiMmJmNzQzNzNiN2QxMTJmNjRkYWIx
ZGRhM2IyMzJlOTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDog
cHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
dWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5k
ZXggMGQ5NzRmYTYzYTQ0NTdkOWVhYzdjOGI4NzNmN2U5MWE0ZDI2ODQzYi4uNjRkNDYwZTI3ZDc5
ZDhkN2E4MjdjZTIwNTIzMDY4YTQ5ZjFmYmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ5LDE0ICs0OSwxNCBA
QCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxv
YXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKK3ZvaWQgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBi
b3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09w
YXF1ZVJlY3QpCiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29y
ZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxh
dGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNv
bnRleHQuc2V0RGVmZXJyZWQodHJ1ZSk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3Bh
cXVlUmVnaW9uKCFtX2xheWVySXNPcGFxdWUpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGlj
c0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0Nv
bnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNv
bnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIAogICAgIGlmICgh
bV9sYXllcklzT3BhcXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDdmY2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUy
YTQ5MjdiMDAuLjQ2NTU0MmU1N2EyMDNiNjk0NTAyNjUwNWUwNThlOWQ0ZDM4OWYwNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNT
Y2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAgdm9pZCBkcmF3UGljdHVy
ZShTa0NhbnZhcyopOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDkyZDEwMmUzMjJhMjE4MzU1ZTE1NjgxZTUw
MDVhZDMyYTJlMmI2ZTUuLmYxYTNjYzZkY2I0ZjRkMmM5MGFmYjgxYzU3ZGU4ZGZmNzc5NTU0ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTkxLDEwICsxOTEsMTAgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0
KiBob3N0KQogICAgIG1fc2FtcGxlZFRleGVsRm9ybWF0ID0gdGV4dHVyZVVwZGF0ZXIoKS0+c2Ft
cGxlZFRleGVsRm9ybWF0KG1fdGV4dHVyZUZvcm1hdCk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIp
CiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5l
ZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1p
ZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNS
ZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3
IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0Vt
cHR5KCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
bnQgbGVmdCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKQEAgLTIzNiwxMSArMjM2
LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNl
dC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAg
ICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRl
eHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5k
bGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAg
ICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJlY3QpOwogfQogCiB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxp
bmdPcHRpb24pCkBAIC0zNjMsMTIgKzM2MSw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cm90ZWN0VGlsZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIAogdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQs
IGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkKIHsKLSAgICAvLyBSZXNldCBtX3VwZGF0
ZVJlY3QgZm9yIGFsbCB0aWxlcy4KLSAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFw
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9
IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgewotICAgICAgICBVcGRhdGFibGVUaWxl
KiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7
Ci0gICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKLSAgICB9Ci0KICAgICAv
LyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBleHBhbmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRh
aW4gYWxsCiAgICAgLy8gdGhlIGRpcnR5IHJlZ2lvbnMgY3VycmVudGx5IGJlaW5nIGRyYXduLiBB
bGwgZGlydHkgdGlsZXMgdGhhdCBhcmUgdG8gYmUgcGFpbnRlZAogICAgIC8vIGdldCB0aGVpciBt
X3VwZGF0ZVJlY3Qgc2V0IHRvIG1fZGlydHlSZWN0IGFuZCBtX2RpcnR5UmVjdCBjbGVhcmVkLiBU
aGlzIHdheSBpZgpAQCAtNDEyLDEzICs0MDQsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50CiAg
ICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0ID0gSW50UmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCArIDEsIGJvdHRvbSAt
IHRvcCArIDEpOwogCi0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRv
IFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qg
b2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0
aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8gSG93ZXZlciwgd2UgY2Fu
J3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUg
cGFpbnQgZmluaXNoZXMsCi0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJl
IHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KLSAg
ICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkp
OwotICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6IHVudXNlZC4gcmVtb3ZlIHRoaXMg
YW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGltcGwgZm9yIGRyYXcgY3VsbGluZwot
ICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxl
ci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUo
KSwgJm9wYXF1ZVJlY3QpOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2op
IHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAg
ICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKQEAgLTQzOSwxNSArNDI0
LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29s
IGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIHNvdXJjZVJlY3QuaW50
ZXJzZWN0KG1fcGFpbnRSZWN0KTsKIAogICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0g
c291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVw
YXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotCiB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkK
IHsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwpAQCAtNDU1LDYgKzQzNSwxMiBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QoKTsKICAgICBtX3Bh
aW50UmVjdCA9IEludFJlY3QoKTsKIAorICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxs
IHRpbGVzLgorICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGls
ZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0
aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgdGls
ZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOworICAgIH0KKwogICAgIHVwZGF0ZUJvdW5kcygp
OwogCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkp
CkBAIC01NTEsNSArNTM3LDIxIEBAIEludFJlY3QgVGlsZWRMYXllckNocm9taXVtOjppZGxlUGFp
bnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCiAgICAgcmV0dXJuIHByZXBh
aW50UmVjdDsKIH0KIAordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVl
c3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwg
bV9wYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5n
IHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkg
aGF2ZSB0aGUgc2lkZQorICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdo
aWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVs
ZXRlZC4KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0
aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKKyAgICAvLyBzbyB3
ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1
bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgorICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVy
PiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CisgICAgSW50UmVjdCBvcGFxdWVSZWN0OyAv
LyBGSVhNRTogdW51c2VkLiByZW1vdmUgdGhpcyBhbmQgc3RvcmUgaW4gdGhlIGxheWVyIHRvIHBh
c3MgdG8gaW1wbCBmb3IgZHJhdyBjdWxsaW5nCisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRD
b250ZW50cyhtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9y
ZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJm9wYXF1ZVJlY3QpOworCisgICAgbV91cGRh
dGVSZWN0ID0gRmxvYXRSZWN0KG1fcGFpbnRSZWN0KTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXgg
YzEyZTkxYWE0ZjgyNjliYmM1OTI1M2FmMzZlMWJhNmUyNzRkMDA4Yy4uYzA1YjdhYjUyZmNlYTc3
YjBiMDRiNDIzMzZjNTE0MDM2MzZiMmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9t
aXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAg
ICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNo
UHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CkBAIC03OSw3ICs3OSw3IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVy
aW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5
ZXJSZWN0KTsKIAotICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVz
IHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRl
IHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgogICAgIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CiAKICAgICAvLyBTYW1lIGFzIGFi
b3ZlLCBidXQgdGhpcyB3aWxsIHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNv
bnRlbnQgaWYgaWRsZS4KQEAgLTg4LDYgKzg4LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIEFmdGVy
IHByZXBhcmluZyBhbiB1cGRhdGUsIHJldHVybnMgdHJ1ZSBpZiBtb3JlIHByZS1wYWludGluZyBp
cyBuZWVkZWQuCiAgICAgYm9vbCBuZWVkc0lkbGVQYWludChjb25zdCBJbnRSZWN0JiBsYXllclJl
Y3QpOwogCisgICAgLy8gUGFpbnQgY29udGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0
aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJs
ZVRpbGVUZXh0dXJlcygpOwogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIoKSBjb25zdDsKQEAgLTEwNiw3ICsxMDksNyBAQCBwcml2YXRlOgogICAgIFVwZGF0YWJs
ZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRl
VGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHBy
ZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8g
VGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRD
b250ZW50cygpLgogICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3Q7CiAKICAg
ICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9wZXJ0
aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCA3NGRiN2YxM2VjNGY4ZjRjYWFmNjhlNWFkNzQ3NDViZTkzYjcyZjNiLi43
ZjBmZjZmNDJkYzA0Mzc5YmRjZmVhYjEwMmY0M2ZiNDkwZjBiNjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVw
ZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxh
eWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRl
clRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBk
ZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNv
bnRleHQpOworfQorCiBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNo
cm9taXVtOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNo
cm9taXVtKCkpOwpAQCAtNTUsNiArNzAsNyBAQCBXZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5
ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1
cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0
ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY5LDcg
Kzg1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIGNvbnRleHQoKSAmJiAo
Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVy
ZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRl
eHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTgs
NiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRl
clRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBXZWJHTExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAg
IENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaAppbmRleCA0ZGM2OGEzMzA4ZTNmMjMzN2I0YjI2NWM0NjVkNzVkYjJk
YzZhN2ZhLi43YTc0MTZmYjY1NTg1NzczNmNkZGRjODBhZmQ5OTM3MWE1MTAyNDRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2Fu
dmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRl
ICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUs
NiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEg
TGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9taXVt
IDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0
ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShX
ZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAg
ICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6
CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOwor
CisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoKTsKIAogICAgIHZpcnR1
YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwpAQCAtNTMsNyArNzEsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4
dHVyZUlkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRl
bnRDaGFuZ2VkKCk7CiAgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdl
QnVmZmVyKik7CkBAIC03OCw2ICs5Nyw4IEBAIHByaXZhdGU6CiAgICAgLy8gQSByZWZlcmVuY2Ug
aXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZlciBhbHJlYWR5IGhvbGRz
CiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJvbWl1bS4KICAgICBEcmF3
aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+
IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cAppbmRleCBhMmZiODIyYzU2YmRiMzVmY2NkM2I5OWE0ZDE0ZGVlYThkOTEzMjhiLi4xYWViYTUx
MzA5ZWZkNjRiZWFhZjBiOTRmMTViNDVjODcyYWExNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJv
eHkuaCIKIApAQCAtNDksNiArNTAsMjEgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVy
VHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpCiAgICAgcmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNl
cyA+IDA7CiB9CiAKK0NDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6VXBkYXRlSGFuZGxl
cihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJU
cmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6flVwZGF0ZUhhbmRsZXIoKQoreworfQorCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwor
ICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisK
IFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7
CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5l
dyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMTM5LDggKzE1NSw4IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKiBob3N0SW1wbCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkp
OwogICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OmNvbW1pdFRvIiwgdGhpcywgMCk7
CiAKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4
dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7Ci0gICAgY29u
dGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIt
PnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZp
ZXdwb3J0U2l6ZSgpKSk7CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5kZWxldGVFdmlj
dGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKIH0KIAog
Ly8gVGhpcyBmdW5jdGlvbiBjb21taXRzIHRoZSBDQ0xheWVyVHJlZUhvc3QgdG8gYW4gaW1wbCB0
cmVlLiBXaGVuIG1vZGlmeWluZwpAQCAtMjU3LDggKzI3Myw4IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpzZXRWaWV3cG9ydFNpemUoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogICAgIGlm
ICh2aWV3cG9ydFNpemUgPT0gbV92aWV3cG9ydFNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhUZXh0dXJl
TWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7Ci0gICAgY29udGVudHNUZXh0
dXJlTWFuYWdlcigpLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2Vy
OjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1p
dEJ5dGVzKHZpZXdwb3J0U2l6ZSkpOworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0
UHJlZmVycmVkTWVtb3J5TGltaXRCeXRlcyhUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0
ZXModmlld3BvcnRTaXplKSk7CiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAg
ICAgc2V0TmVlZHNDb21taXQoKTsKIH0KQEAgLTMwMywxMCArMzE5LDEwIEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpkaWRCZWNvbWVJbnZpc2libGVPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCogaG9zdEltCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKICAg
ICBpZiAobV9wcm94eS0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLmNvbnRleHRIYXNDYWNo
ZWRGcm9udEJ1ZmZlcikKLSAgICAgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5ldmljdEFu
ZERlbGV0ZUFsbFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7
CisgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmREZWxldGVBbGxUZXh0
dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgIGVsc2Ugewot
ICAgICAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQoVGV4
dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSgpKSk7Ci0gICAgICAg
IGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKGhvc3RJbXBs
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgICAgIG1fY29udGVudHNUZXh0dXJl
TWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0
Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5kZWxldGVFdmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKTsKICAgICB9CiAKICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZHJvcHBlZCB0aWxlcyBhcmUg
cHJvcGFnYXRlZCB0byB0aGUgaW1wbCB0cmVlLgpAQCAtMzQ3LDcgKzM2Myw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFk
UHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1
cm47CkBAIC0zNTUsMTIgKzM3MSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShy
b290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1Vw
ZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkND
TGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJv
b3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKQEAgLTM2OSw1MCArMzg1LDgxIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENs
aXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENs
aXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVM
YXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4K
LSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBl
bmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0
ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1
cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3Jl
bmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgp
KTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAg
ICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+
cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgp
OwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAg
ICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3
RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2Ut
PmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUp
OworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6
OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVy
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKLSAgICBwYWludExheWVyQ29udGVudHMo
bV91cGRhdGVMaXN0LCBQYWludFZpc2libGUpOwotICAgIGlmICghbV90cmlnZ2VySWRsZVBhaW50
cykKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1f
bGF5ZXJVcGRhdGVMaXN0KTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cygpCit7CisgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6
ZV90IHByZWZlcnJlZExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0
ZXMobV92aWV3cG9ydFNpemUpOwotICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1h
bmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKLSAgICBjb250ZW50c1RleHR1
cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXRCeXRlcyk7Ci0g
ICAgaWYgKGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkg
Pj0gcHJlZmVycmVkTGltaXRCeXRlcykKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZGxlIHBhaW50aW5nIHNob3VsZCBmYWlsIHdo
ZW4gd2UgaGl0IHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LAotICAgIC8vIG90aGVyd2lzZSBp
dCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2FyZHMgdGhlIG1heGltdW0gbGltaXQuCi0gICAgbV9j
b250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExp
bWl0Qnl0ZXMpOwotICAgIC8vIFRoZSBzZWNvbmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBuby1v
cCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcgYWxyZWFkeSBvY2N1cmVkIGFib3ZlLgotICAgIHBh
aW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50SWRsZSk7Ci0gICAgbV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0Qnl0ZXMpOwor
ICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CiB9CiAKLS8vIHN0YXRpYwotdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBQ
YWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhM
YXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgQVNTRVJUKGxheWVyKTsKLSAgICBBU1NF
UlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBlKTsK
LSAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKKyAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxh
eWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAg
OyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVy
VXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkoKTsKKyAgICB9CisKKyAgICBpZiAobV90cmlnZ2VySWRsZVBhaW50cykgewor
ICAgICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpyZWNs
YWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIHNpemVfdCBtYXhMaW1pdEJ5
dGVzID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKKyAg
ICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZl
cnJlZExpbWl0Qnl0ZXMpOworICAgICAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5j
dXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA8IHByZWZlcnJlZExpbWl0Qnl0ZXMpIHsKKyAgICAgICAg
ICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQgdGhlIHByZWZlcnJl
ZCBtZW1vcnkgbGltaXQsCisgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMg
cHVzaCB1cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxpbWl0LgorICAgICAgICAgICAgbV9jb250ZW50
c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0Qnl0
ZXMpOworICAgICAgICAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQgd2lsbCBiZSBhIG5v
LW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQgYWJvdmUuCisKKyAg
ICAgICAgICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkg
LSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgICAgICAgICBM
YXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgp
OworICAgICAgICAgICAgICAgIGxheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNl
dE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgZm9yIChpbnQg
bGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0g
MCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5
ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOwogICAgICAgICBsYXllci0+cGFpbnRDb250
ZW50c0lmRGlydHkoKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50
c0lmRGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFu
ZGxlcik7CisgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVw
bGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQ
YWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVM
YXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQoreworICAg
IC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNob3VsZCBoYXZlIGFscmVh
ZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5kZXIgc3VyZmFjZSBsYXllciBs
aXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2ZXIsIHdlIG1heSBzdGls
bCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAgICBpZiAobGF5ZXItPmJvdW5kcygpLmlzRW1w
dHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdzQ29udGVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0LmFwcGVuZChsYXllcik7Cit9CisKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5
ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7
CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0
aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBp
biBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBk
cmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtNDIwLDY3ICs0NjcsNDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkt
PnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5
ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUpOworICAgICAgICBhcHBlbmRW
aXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRlTGlzdCk7
CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3VyZmFj
ZUxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKICAgICBpZiAocmVwbGljYUxheWVyKSB7Ci0gICAgICAg
IHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgcGFpbnRUeXBlKTsKKyAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAg
aWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXll
ci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAg
IHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlw
ZSk7CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5
ZXIoKSwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFw
cGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBh
bGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcg
dGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9C
YWNrPiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQg
PSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAg
IGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2lu
KCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgQ0NMYXll
ckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0KTsKKyAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVy
SXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkp
IHsKICAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgp
KTsKLSAgICAgICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCppdCwg
cGFpbnRUeXBlKTsKKyAgICAgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZSgqaXQsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJ
dHNlbGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsK
LSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlKTsKKyAgICAg
ICAgICAgIGFwcGVuZFZpc2libGVMYXllcigqaXQsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAg
ICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikK
LXsKLSAgICAvLyBVc2UgQmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24n
dCBvcmRlci1kZXBlbmRlbnQuCi0gICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJv
bWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNr
VG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKLQotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUg
ZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAo
Q0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3Vw
ZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNU
YXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3Vy
ZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKLSAgICAgICAgICAgIGlmIChpdC0+bWFza0xheWVyKCkp
Ci0gICAgICAgICAgICAgICAgaXQtPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXll
cigpKSB7Ci0gICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgICAgIGlmIChpdC0+
cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQotICAgICAgICAgICAgICAgICAgICBpdC0+cmVw
bGljYUxheWVyKCktPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRl
eHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJl
c2VudHNJdHNlbGYoKSkKLSAgICAgICAgICAgIGl0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KGNvbnRleHQsIHVwZGF0ZXIpOwotICAgIH0KLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNs
ZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsg
c3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5n
ZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qg
c3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVy
ID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAg
ICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJl
bmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBkOTJhZGMxNjZhZTY3ZTNhZjA1NDI5NTEw
Yzk3ZDNmZTM2ODM1MDlmLi5mMjVlNDIxZGJmMDExMTA5NWIzNjRhYmVmZWRjNTkwMjVmNGJlNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBH
ckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdElt
cGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC03
Nyw3ICs3Niw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgcmVmcmVzaFJh
dGUoMCkKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAgICAg
LCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHBhcnRpYWxUZXh0dXJl
VXBkYXRlcyh0cnVlKSB7IH0KKyAgICAgICAgICAgICwgcGFydGlhbFRleHR1cmVVcGRhdGVzKHRy
dWUpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAgICAg
Ym9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CkBA
IC04Nyw2ICs4Nyw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHBlclRpbGVQYWlu
dGluZzsKICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKICAgICBib29sIHBhcnRpYWxUZXh0
dXJlVXBkYXRlczsKKyAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiAvLyBQcm92
aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNr
IHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE4Nyw5ICsxODgsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKKyAgICB2b2lkIHByZXBh
cmVUb1VwZGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKLSAgICB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVy
Jik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVT
ZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAg
ICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMjAxLDE0ICsy
MDIsMjUgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgor
ICAgIGNsYXNzIFVwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBVcGRhdGVIYW5kbGVyKENDUHJveHkqKTsKKyAg
ICAgICAgdmlydHVhbCB+VXBkYXRlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IExheWVyTGlzdDsKICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8TWFu
YWdlZFRleHR1cmU+ID4gVGV4dHVyZUxpc3Q7CiAKLSAgICBlbnVtIFBhaW50VHlwZSB7IFBhaW50
VmlzaWJsZSwgUGFpbnRJZGxlIH07Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRDb250ZW50c0lmRGly
dHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHZv
aWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmKTsKKyAgICB2
b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwg
TGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29u
c3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVM
aXN0KTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKICAgICB2
b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdV
cGRhdGUoKTsKIApAQCAtMjI1LDcgKzIzNyw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlzdDsKKyAgICBM
YXllckxpc3QgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdDsKKyAgICBMYXllckxpc3QgbV9sYXll
clVwZGF0ZUxpc3Q7CiAKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApp
bmRleCA5MzdjMTU0ZmY2OWJhODUzYmJmYzkzNDU2ZDc3NjY3MTBjNzBhMjI0Li43M2FiMDNhOWUx
MjMzMzJiMjU0MGI2NWMyOWJkYmIwNzI4MWMyMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjZGVmaW5lIENDUHJveHlfaAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1
ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CkBAIC04Myw2ICs4NCw4IEBAIHB1YmxpYzoKICAgICAvLyB1cGRhdGVzIGFyZSByZXF1aXJlZC4K
ICAgICB2aXJ0dWFsIGJvb2wgcGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBi
b29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cAppbmRleCA3MmJlYzJhNzE2NjRhZjQzY2Q2NGQwMTRkMjhiODQyNjUwOTViMjAzLi45M2JlNTVj
NjNkNDNiN2IxNDE2NTAwMWMzYjk0N2JjMjIxYzI5YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTQ3LDE1ICsxNDcsMTUgQEAgdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpk
b0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0
ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAorICAgICAgICB3aGlsZSAo
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1w
bFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBk
YXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxl
ICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0K
ICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3Qt
PnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBs
VGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCkBAIC0xNzAsNiArMTcwLDggQEAg
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiAgICAgfQogICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0
ZWRGcmFtZSA9IHRydWU7CisKKyAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5o
YXNNb3JlVXBkYXRlcygpKTsKIH0KIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVk
c0NvbW1pdCgpCkBAIC0yMDgsNiArMjEwLDE2IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
c3RvcCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAg
QVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyKTsKKworICAgIGlmIChtX2xheWVyVHJlZUhv
c3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyLT5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgIGVsc2UKKyAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5hbGxvY2F0b3IoKSwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5n
IHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzIs
NiArMjg0LDEwIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQog
ewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKKyAgICBpZiAoIW1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyKQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciA9IGFk
b3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1Vw
ZGF0ZSgpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICBkb0Nv
bW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDRmYWEyMjk5
OTEyYWVjOWM0ZTZhYjRiYTcwMjdkODFjODA2ZDQ1ZWUuLjAyN2UzZmNhYTA0NzQyYjc5M2Y4YzM5
MmVjZDAxODg1NmMzNDMwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
QEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0OworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIAogY2xhc3MgQ0NTaW5nbGVUaHJlYWRQ
cm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1Ymxp
YzoKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAgICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJl
VXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1
ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KQEAg
LTgzLDYgKzg1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fZ3JhcGhpY3NDb250ZXh0TG9zdDsK
ICAgICBpbnQgbV90aW1lc1JlY3JlYXRlU2hvdWxkRmFpbDsgLy8gVXNlZCBkdXJpbmcgdGVzdGlu
Zy4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lOworCisgICAgT3du
UHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyOwogfTsKIAogLy8g
Rm9yIHVzZSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNhc2UuIEluIGRlYnVnIGJ1aWxkcywgaXQg
cHJldGVuZHMgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXgg
ODc0NWM0ZWEwYTcxMGJkZTE4ZWRlMTgyMGYzMTRmZGI4Y2M4NzJhYi4uZGY3NzI0NDEzZDE3M2Mx
ODA2MjhkNGY4OWI0MGNlODlkM2ExMWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIu
aCIKIAorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2Vk
VGV4dHVyZS5oIgpAQCAtMzksNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENDVGV4
dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQogICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCiB7
CiAgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KQEAgLTY2LDIzICs2NiwyMCBAQCBib29sIEND
VGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIAogYm9vbCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkK
IHsKLSAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50
cmllcy5zaXplKCkpOwotICAgIGZvciAoOyBtX2VudHJ5SW5kZXggPCBtYXhJbmRleDsgKyttX2Vu
dHJ5SW5kZXgpIHsKLSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50
cnlJbmRleF07CisgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXMu
c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFVwZGF0ZUVudHJ5
JiBlbnRyeSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBk
YXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5t
X2Rlc3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKLSAg
ICBpZiAobWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAg
IGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgp
ID4gMDsKIH0KIAogdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcigpCiB7Ci0gICAgbV9lbnRy
eUluZGV4ID0gMDsKICAgICBtX2VudHJpZXMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oCmluZGV4IGJmNzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNjZWMxNWJi
MzAuLmMzN2FmMzRiZWU2NGY3YzBhZjViMTAzNjk1MzExNDAyM2M1NjY2ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTU5LDcgKzU5LDYgQEAgcHJpdmF0ZToKICAgICB9Owog
CiAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAgc2l6ZV90IG1fZW50cnlJ
bmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKaW5kZXggMjBhYzUzMTgwZTlhY2MxNDZkMTc2NTcxYzJmNmI0N2Qw
ZDU5ZGYzZi4uZTkyMWU4ZDYyNjM4YTY1NTQ1ODJjZDEwYTNlYzllY2E3OTcyMTFhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTI5NCw2ICsyOTQsMjAgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKIH0KIAordm9pZCBDQ1RocmVh
ZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAg
VFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMsIDApOworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7CisKKyAgICBPd25QdHI8
VXBkYXRlRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVwZGF0ZUVudHJ5KTsKKyAgICBlbnRy
eS0+bV90ZXh0dXJlID0gdGV4dHVyZTsKKyAgICBlbnRyeS0+bV9zb3VyY2VSZWN0ID0gc291cmNl
UmVjdDsKKyAgICBlbnRyeS0+bV9kZXN0UmVjdCA9IGRlc3RSZWN0OworCisgICAgQ0NQcm94eTo6
aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFk
UHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQsIGVudHJ5LnJlbGVhc2UoKSkpOworfQor
CiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC0zODAs
NiArMzk0LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBz
ZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXllcnMu
CiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAorICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
IAogICAgIC8vIEJlZm9yZSBhcHBseWluZyBzY3JvbGxzIGFuZCBjYWxsaW5nIGFuaW1hdGUsIHdl
IHNldCBtX2FuaW1hdGVSZXF1ZXN0ZWQgdG8gZmFsc2UuCkBAIC00MDQsMTMgKzQxOSwyNSBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVy
LCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJh
bWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0
ZUVudHJ5PiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXll
clRyZWVIb3N0SW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKKyAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOworCisgICAgbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+
bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29t
cGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0
SW1wbCkgewogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNDE4LDEwICs0NDUsNiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21t
aXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJU
KCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlciht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwotICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0K
ICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAK
QEAgLTQ0MywxOSArNDY2LDIwIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCiB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3Jl
UmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkKTsKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkKQorICAgICAgICByZXR1cm47CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRh
dGVzUGVyRnJhbWUgPiAwID8gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA6IDk5OTk5KTsKIH0KIAog
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsK
LSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFT
U0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVz
KCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAK
LSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCisgICAg
aWYgKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKSB7CisgICAgICAgIEFTU0VS
VCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkp
OworICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwor
ICAgIH0KIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaAppbmRleCBhMTFiNTI3ODU5OTMxY2ZiOThmODcyNGE1MTI0M2EwOWI0
ZWNjM2I5Li5lNzRjYzZmMTgzYzkxZGRmMzY5MWZhZjM5ZjVkY2MzYjVkYzA3NzNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAgIHZpcnR1YWwgYm9v
bCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJl
ZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1
ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpOwpAQCAtODAsNiArODEsMTIgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwog
CisgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogbV90ZXh0dXJlOworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAg
ICAgSW50UmVjdCBtX2Rlc3RSZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0
aHJlYWQKICAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBk
b3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwog
ICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC05NCw2ICsxMDEsNyBAQCBwcml2
YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5G
cmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJh
bWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6
OlRhc2sqKik7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8
VXBkYXRlRW50cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFk
KFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaAppbmRleCBjY2U0N2UyZTI3YTY3YTI2NmQ2ODJkN2Y1YWFlOWM1MDM1NjMy
MDBjLi5iOGNlNDU5ZGJiMTExM2ZmMjc0MmUzODI3ZGRlMTJhYWIzYzdmNzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChi
b29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90
ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA3NzMzZTI2OTkwODZkYmIzYjU1NTYzMGY0
ZWU3YWRjYWYzNTJlMjliLi42MjgzZjUwNWU0M2I3MzRhZTZhYTQxNGFiY2EyZjdlNjA1Zjc2N2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
QEAgLTUwLDYgKzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGlu
Z3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQog
ICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKGZhbHNlKQorICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFT
U0VSVChzZXR0aW5ncyk7CiB9CkBAIC01MDcsNCArNTA4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0lt
cGw6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+
c2V0UGFydGlhbFN3YXBFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1w
bDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRl
eHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGNjNzBkMTMx
NmM2NGMxNjU5ZTBlMjIyOTU2YzY4MTY0MDE1NWIzYjIuLmFjYzI1ZTQ5OTNmMjg3ZDcyYTJmMzU5
NjcwYTk4MTNlNjYwZTFjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCkBAIC0xMzAsMTIgKzEzMCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQ
YXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVy
ZVVwZGF0ZXMoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBj
b25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQ
bGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IGQ3Mzg4OTBiNGViODZlOGIyMGNiZDY1Y2Q2YWQ0ZTA3YWZkYjFkMzYu
LjA0ZGI0NTgwZTRlZjczZjJmOWQ2MjNlZGRjZDY2OTAzMjM3ZmNhOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMwMDMsNiArMzAwMyw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFj
dGl2ZSkKIAogICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0
dGluZ3MoKS0+cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucGFy
dGlhbFN3YXBFbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQo
KTsKKyAgICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+
ZGVsYXlUZXh0dXJlVXBkYXRlcygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50
UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhv
c3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3Jk
ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKaW5kZXggNThkZTc1OWJiMzM5M2I1ZGU3ZDk4NjIwNmI3Y2VmOTNmN2Fh
MmQ3MS4uMmM2OTRkNGQ4ZTA0NTJiZTYyZjg5NzhkMmU2YjA0Nzg4YjljMjUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CkBAIC05NjcsNiArOTY3LDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJs
ZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xh
eWVyRGVsZWdhdGUgOiBwdWJsaWMgQ29udGVudExheWVyRGVsZWdhdGUgeworcHVibGljOgorICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xhc3Mg
VGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGljIENvbnRlbnRMYXllckRlbGVn
YXRlIHsKIHB1YmxpYzoKICAgICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUoQ0NMYXll
clRyZWVIb3N0VGVzdCogdGVzdCkKQEAgLTk4OCw0NyArOTk2LDExOSBAQCBwcml2YXRlOgogCiBj
bGFzcyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250
ZW50TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxl
Z2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExheWVy
VGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVibGlj
OgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRMYXll
clRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVy
biBtX3BhaW50Q29udGVudHNDb3VudDsgfQotICAgIGludCBpZGxlUGFpbnRDb250ZW50c0NvdW50
KCkgeyByZXR1cm4gbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OyB9Ci0gICAgdm9pZCByZXNldFBh
aW50Q29udGVudHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyBtX2lkbGVQYWlu
dENvbnRlbnRzQ291bnQgPSAwO30KKyAgICAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+
cHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICAgICAgICAgIG1f
dGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3Rl
eHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJl
VXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CisKKyAg
ICAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNy
ZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3Jl
YXRlKG1hbmFnZXIpKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhl
bEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6
ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRl
bnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsg
cmV0dXJuIG1fbGF5ZXI7IH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBk
YXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQg
PSAwOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6
IG1fbGF5ZXIobGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENvbnRlbnRMYXll
ckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsKKyAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKQogICAgIHsK
LSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0g
ICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwog
ICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVy
Q2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX2lkbGVQYWlu
dENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKTsKKyAgICAgICAgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAgdmlydHVhbCB2b2lk
IGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwot
ICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpp
ZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBpZGxlUHJlcGFyZVRvVXBkYXRl
KCk7CiAgICAgfQogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKSB7IG1fcHJlcGFyZVRvVXBk
YXRlQ291bnQrKzsgfQorICAgIGludCBwcmVwYXJlVG9VcGRhdGVDb3VudCgpIHsgcmV0dXJuIG1f
cHJlcGFyZVRvVXBkYXRlQ291bnQ7IH0KKworICAgIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZSgp
IHsgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGludCBpZGxlUHJlcGFyZVRv
VXBkYXRlQ291bnQoKSB7IHJldHVybiBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudDsgfQorCisg
ICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAg
aW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9
CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAg
IGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisK
KyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQg
dXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhD
b250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hy
b21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCgwKQorICAg
ICAgICAsIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwgbV9wYWludENv
bnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAg
ICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDAp
CisgICAgICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5k
cyhJbnRTaXplKDEwLCAxMCkpOwogICAgICAgICBzZXRJc0RyYXdhYmxlKHRydWUpOwogICAgIH0K
IAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjsKKyAgICBpbnQgbV9wcmVwYXJlVG9VcGRhdGVDb3VudDsKKyAgICBpbnQg
bV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQ7CiAgICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50
OwotICAgIGludCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291
bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV91cGRhdGVSZWN0Q291
bnQ7CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxkIG5v
dCBwcmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRlZCBkdXJpbmcg
Y29tbWl0LgpAQCAtMTA1NSwxNiArMTEzNSwxOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkg
c2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KLSAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBk
YXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOworICAgICAgICAvLyBwcmVwYXJl
VG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1Rf
RVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlVG9VcGRhdGVDb3VudCgpKTsKIAotICAg
ICAgICAvLyBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCBvbmNlCi0gICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQYWlu
dENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8vIGlkbGVQcmVwYXJlVG9VcGRhdGUoKSBzaG91
bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVD
aGVja0xheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSk7CisKKyAgICAgICAgLy8gcGFp
bnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVD
VF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKIAotICAg
ICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lm
RGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250
ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0
ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJl
UmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVj
dENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJl
Y3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NM
YXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXll
ckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1OTU3MTBlNGQ4Y2ZkN2Qy
NGRiNTMzYy4uN2RmOTY5NTM5ZjhlNjY1NTgxZmJhMjE3NjRjMWQ2ZGI1MGQyOWY1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJD
aHJvbWl1bVRlc3QuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAK
ICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC02
OCw2ICs2NywyMSBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUsIHZv
aWQodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkpOwogfTsKIAorY2xhc3MgTW9j
a1VwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7Citw
dWJsaWM6CisgICAgTW9ja1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQoY29udGV4dCksIG1fYWxs
b2NhdG9yKGFsbG9jYXRvcikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHsKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFy
ZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0
LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFRleHR1cmVBbGxvY2F0b3Iq
IG1fYWxsb2NhdG9yOworfTsKKwogfSAvLyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtOTEsNyArMTA1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBNb2NrQ2FudmFzQ29udGV4
dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5n
ZXQoKSkpOwogCiAgICAgICAgIE1vY2tUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvck1vY2s7Ci0g
ICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmYWxsb2NhdG9yTW9jayk7CisgICAgICAg
IE1vY2tVcGRhdGVIYW5kbGVyIHVwZGF0ZUhhbmRsZXJNb2NrKGltcGxDb250ZXh0LmdldCgpLCAm
YWxsb2NhdG9yTW9jayk7CiAKICAgICAgICAgY29uc3QgSW50U2l6ZSBzaXplKDMwMCwgMTUwKTsK
ICAgICAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVTaXplID0gc2l6ZS53aWR0aCgpICogc2l6
ZS5oZWlnaHQoKSAqIDQ7CkBAIC0xNDYsNyArMTYwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAg
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJ
bXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5
ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAgICBj
YW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0
ZXIpOworICAgICAgICAgICAgY2FudmFzLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKHVwZGF0
ZUhhbmRsZXJNb2NrKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3Bw
CmluZGV4IGJkYmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMuLjBmN2VkNTcw
ZWQ2ZmU0Mjc4OTY3ZmUzYjFlNWVhZGI3NDQ0ZTA5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBAIC05
NSwxOSArOTUsMTkgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJl
Y3RQcmVzZW50QWZ0ZXJPcGFxdWVQYWludCkKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwog
ICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxP
cGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwg
Jm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0
MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAgICAg
b3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RM
YXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2Uo
KSwgZmFsc2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRh
dGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwg
NDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7
CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmls
bE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAgdXBkYXRlci0+
cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAw
KSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVj
dCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7
CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3Qp
OwogfQogCkBAIC0xMjEsMTkgKzEyMSwxOSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0
LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50KQogICAgIG9wYXF1
ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQ
YWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAg
IHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6
ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRl
bnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9w
YXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1
ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRv
cHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1cGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBh
aW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJl
Y3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCks
IEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0g
SW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNo
cm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAg
dXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXpl
KDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVu
dHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3Bh
cXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVl
UmVjdCk7CiB9CiAKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRl
clRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBh
CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmls
bE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFx
dWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0
ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0
MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAg
IHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFx
dWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0
T3BhcXVlKHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1
cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsK
ICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxs
T3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVyLT5z
ZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwg
MCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAg
IHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUo
NDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE3NywyMSArMTc3LDIxIEBAIFRF
U1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9w
YXF1ZUxheWVyV2l0aE5vbk9wYXF1CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5
ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwog
ICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3Bh
cXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwg
NDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJl
Y3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWlu
dGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2Up
OwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAm
b3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1
ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQ
YWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgp
KTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwg
Jm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0
MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDBkYWMzYWFmOGM2N2JmZGFhMTBmZTFhMWI2YmRkMmQ3NzU5NDJiMjQuLmM3
MGQyMWFhYTk2MjI5NDc0ODUzMjU0NGI3MmNlNjZmYzQ4ZmRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApA
QCAtMjcsOSArMjcsOSBAQAogI2luY2x1ZGUgIlRpbGVkTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKLSNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKQEAgLTM4LDEwICszOCw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDogcHVi
bGljIFRleHR1cmVBbGxvY2F0b3IgeworY2xhc3MgRmFrZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBj
cmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQotICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0Mz
RGVudW0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiB9OwogCiBjbGFz
cyBGYWtlVGlsZWRMYXllckNocm9taXVtOwpAQCAtNTAsMzIgKzQ5LDM2IEBAIGNsYXNzIEZha2VM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGlj
OgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+IHRleHR1cmUpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKSB7IH0K
KyAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1f
dGV4dHVyZSh0ZXh0dXJlKSB7IH0KICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCisg
ICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
KSB7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXh0dXJlOwogICAgIH07CiAKLSAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wcmVw
YXJlQ291bnQoMCkgeyB9CisgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcGFpbnRD
b3VudCgwKSB7IH0KICAgICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQog
CiAgICAgLy8gU2V0cyB0aGUgcmVjdCB0byBpbnZhbGlkYXRlIGR1cmluZyB0aGUgbmV4dCBjYWxs
IHRvIHByZXBhcmVUb1VwZGF0ZSgpLiBBZnRlciB0aGUgbmV4dAogICAgIC8vIGNhbGwgdG8gcHJl
cGFyZVRvVXBkYXRlKCkgdGhlIHJlY3QgaXMgcmVzZXQuCiAgICAgdm9pZCBzZXRSZWN0VG9JbnZh
bGlkYXRlKGNvbnN0IEludFJlY3QmLCBGYWtlVGlsZWRMYXllckNocm9taXVtKik7CiAKLSAgICAv
LyBOdW1iZXIgb2YgdGltZXMgcHJlcGFyZVRvVXBkYXRlIGhhcyBiZWVuIGludm9rZWQuCi0gICAg
aW50IHByZXBhcmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZUNvdW50OyB9Ci0gICAg
dm9pZCBjbGVhclByZXBhcmVDb3VudCgpIHsgbV9wcmVwYXJlQ291bnQgPSAwOyB9CisgICAgLy8g
TnVtYmVyIG9mIHRpbWVzIHBhaW50Q29udGVudHMgaGFzIGJlZW4gaW52b2tlZC4KKyAgICBpbnQg
cGFpbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFpbnRDb3VudDsgfQorICAgIHZvaWQgY2xl
YXJQYWludENvdW50KCkgeyBtX3BhaW50Q291bnQgPSAwOyB9CiAKICAgICAvLyBMYXN0IHJlY3Qg
cGFzc2VkIHRvIHByZXBhcmVUb1VwZGF0ZSgpLgogICAgIGNvbnN0IEludFJlY3QmIGxhc3RVcGRh
dGVSZWN0KCkgIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVJlY3Q7IH0KIAogICAgIHZpcnR1
YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJl
KFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZShN
YW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRU
ZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRU
ZXhlbEZvcm1hdFJHQkE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVj
dCopOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCopOwogCiBwcml2YXRlOgotICAgIGludCBt
X3ByZXBhcmVDb3VudDsKKyAgICBpbnQgbV9wYWludENvdW50OwogICAgIEludFJlY3QgbV9yZWN0
VG9JbnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbV9sYXllcjsKQEAgLTEyNyw2ICsxMzAsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpuZWVkc0lkbGVQYWludChy
ZWN0KTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVj
dCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhyZWN0
KTsKKyAgICB9CisKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKSB7IHJldHVybiBtX2Zha2VUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCiAgICAg
dmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmVNYW5hZ2VyOyB9CkBAIC0xNDksOSArMTU3LDkgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6c2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBGYWtl
VGlsZWQKICAgICBtX2xheWVyID0gbGF5ZXI7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lk
IEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5n
T3BhcXVlUmVjdCkKIHsKLSAgICBtX3ByZXBhcmVDb3VudCsrOworICAgIG1fcGFpbnRDb3VudCsr
OwogICAgIG1fbGFzdFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKICAgICBpZiAoIW1fcmVjdFRv
SW52YWxpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZVJlY3Qo
bV9yZWN0VG9JbnZhbGlkYXRlKTsKQEAgLTE2OCwxNCArMTc2LDE0IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRl
eHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRo
ZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAy
MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwot
ICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxh
eWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0
aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMTg4LDcgKzE5Niw4IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRh
dGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBk
YXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
OworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91
bGQgb25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZh
bGlkYXRlZCBidXQgbm90IHBhaW50ZWQuCkBAIC0yMDMsOCArMjEyLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAg
RmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7
CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0aWxlcyB3aXRo
IG9uZSB2aXNpYmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNvbnRlbnRCb3Vu
ZHMoNTAwLCA1MDApOwpAQCAtMjIwLDcgKzIyOCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFp
bnRpbmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVy
LT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNp
ZGUuCkBAIC0yMzMsNyArMjQxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNo
SWRsZVBhaW50VGlsZXMpCiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJl
Y3QpOwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOwot
ICAgICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAg
ICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1
cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0KQEAgLTI2OSw4ICsyNzcs
NyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQog
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7
Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBG
YWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFu
ZCB0aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29u
dGVudEJvdW5kcyk7CkBAIC0yODEsNyArMjg4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBh
aW50aW5nIGZvciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNU
X1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24g
dGhlIGltcGwgc2lkZS4KQEAgLTI5NCw3ICszMDEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwg
d2UgbmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAg
ICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0g
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5
ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApAQCAtMzA1LDE0ICszMTIsMTQgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllcklt
cGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAg
ICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VI
YW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRo
aXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzIxLDIyICsz
MjgsMjQgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBh
cmUpCiAKICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwor
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50Q291bnQoKTsK
ICAgICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFs
aWQgcHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExh
eWVyVGV4dHVyZVVwZGF0ZXIuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wYWludENvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxp
ZGF0ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJl
VG9VcGRhdGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RU
b0ludmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAg
RVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291
bnQoKSk7Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFy
ZUNvdW50KCk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIw
MCkpOworICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
cGFpbnRDb3VudCgpKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xl
YXJQYWludENvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlk
IGFzIHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgbGF5
ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIEVYUEVDVF9F
USgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124307</attachid>
            <date>2012-01-27 06:47:34 -0800</date>
            <delta_ts>2012-02-01 15:04:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120127094733.patch</filename>
            <type>text/plain</type>
            <size>113599</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjkzNDIyODY2ZTE2NzY2
MTYxNWU1NzlhZGYxMzYyZTJhMjJiNjE5ZC4uZGE1Mjg0MTBlZDhlZjJiZTZkYWZmYTdiYmI5NjM1
MWJiYTBlODlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxMi0wMS0yNyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5
ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChV
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoQ2FudmFzMkRMYXllckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oOgorICAg
ICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4
dHVyZSk6CisgICAgICAgIChMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlcjo6fkhhbmRs
ZXIpOgorICAgICAgICAoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFBsdWdpbkxheWVy
Q2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oOgorICAgICAgICAoU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKCk6CisgICAg
ICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hy
b21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoVXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdMTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBk
YXRlSGFuZGxlcjo6VXBkYXRlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6flVwZGF0ZUhhbmRsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpoYW5k
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlz
aWJsZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBy
ZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2li
bGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRpbmdzKToKKyAgICAgICAgKENDU2V0dGlu
Z3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFVwZGF0ZUhhbmRsZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaDoKKyAg
ICAgICAgKENDUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJl
YWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94
eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVV
cGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToK
KyAgICAgICAgKFVwZGF0ZUVudHJ5KToKKwogMjAxMi0wMS0yNyAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGV0YWlsZWQg
aGVhcCBzbmFwc2hvdDogUmVwbGFjZSAoTmF0aXZlIG9iamVjdHMpIHJvb3QgZWxlbWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5NWUyMTQyOTcyOTVjYjcxNmEyNjgwOTQwZDQyODc2
YzgzMDIxZjdhLi45OTI3YThkOGY5NWIwZWI3NDg4ZGY1ODY0N2ZiYmJhYTdmMTcxZWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTAxLTI3ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBV
cGxvYWQgdGV4dHVyZXMgaW4gcGFyYWxsZWwgd2l0aCBwYWludGluZyBjb250ZW50cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlbGF5VGV4dHVy
ZVVwZGF0ZXMgc2V0dGluZyB0aGF0IGlzIHVzZWQgYnkgY29tcG9zaXRvciB0byBkZXRlcm1pbmUK
KyAgICAgICAgaWYgdGV4dHVyZSB1cGxvYWRzIHNob3VsZCBiZSBkZWxheWVkIHVudGlsIGFsbCBw
YWludGluZyBoYXMgY29tcGxldGVkLgorICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0czogQ0NMYXll
clRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgYW5kCisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKCk6Cisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
dHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViU2V0dGluZ3NJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRleHR1cmVVcGRhdGVzKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKE1vY2tMYXllckRlbGVnYXRlKToK
KyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyRGVsZWdhdGU6OnByZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVy
RGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0
ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6
OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2Ft
cGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVyKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUlm
RGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9V
cGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAo
V1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50
c0NvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdCk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0
Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAg
ICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAg
ICAgKiB0ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAg
ICAgICAgKFdURjo6RmFrZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXVEY6OkZha2VMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoVGV4dHVyZSk6
CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcik6CisgICAgICAgIChGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChX
VEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvdW50KToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNsZWFyUGFpbnRDb3VudCk6CisgICAgICAgIChXVEY6
OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMpOgorICAgICAgICAoRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6VEVTVCk6CisKIDIw
MTItMDEtMjYgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gQ2xlYW51cCBvZiBXZWJQb3B1cE1lbnVJbXBsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBkOTdlNTJhZWRlMGY5
ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODguLmRkMDM1M2QxNjNjZGJmMzk5ZDc4MWJmMzZmOWRm
YjU3ZWU2YzVlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtNzgs
NyArNzgsNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAogICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNT
Y2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRl
bnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgbV90ZXhTdWJJ
bWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFz
OjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBp
eGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2Nh
bnZhcywgdGV4dE9wdGlvbik7CiAgICAgY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5zZXRU
cmFja09wYXF1ZVJlZ2lvbighbGF5ZXJJc09wYXF1ZSk7Ci0gICAgcGFpbnRDb250ZW50cygqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNv
bnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogCiAgICAgaWYgKCFsYXllcklz
T3BhcXVlKQogICAgICAgICAqcmVzdWx0aW5nT3BhcXVlUmVjdCA9IGNhbnZhc1BhaW50ZXIuc2tp
YUNvbnRleHQoKS0+b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGUxNjIyOTViODZlMDA4OTNj
MzNlZjAzZDRiNjJkMmMxZTUyYmQ1Zi4uMmFiYWM5NmEwMzBkYjA5Mjg0OTQzY2YzOGI0OTRjZDgw
ZWM5MGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8v
IHBvc3NpYmxlLgogY2xhc3MgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1Ymxp
YyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1
cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQ
YXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsK
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQg
Y29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBN
YW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IGUyYWI3OTgzODZmY2NmMDcwMTNkNjZiYjNmMjhmZTdkOGY0ZWMyN2Mu
LjM0YWQyNjA5NTMxY2ExZjA0NDk3ZjE0YjUzNzJlNjIwNWEyMjJhZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCkBAIC04NiwxMCArODYsMTAgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAg
ICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXll
clRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50
Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1
bHRpbmdPcGFxdWVSZWN0KQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRp
bGVTaXplKTsKLSAgICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJl
VG9VcGRhdGUoY29udGVudFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2Nh
bGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29udGVudFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhl
bHMsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogfQogCiB2b2lkIEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNr
Q2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggMWM1NjRjZGMxODNlYTQ5NTkxZjY5MDZlZmViZDNhOGQ5YjVmODBjYy4uNmQ3MjI1ZjMy
MmQ2YTVhMGI2NjJjYzE4MmYwZTkxNTdiZjY2NDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZp
cnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0
dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVs
cywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50
c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIHBhaW50Q29u
dGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE1MDVhZGFjMjQzZTA3NjY1ZDJk
ZGFiMjhmNDcwM2ZmOGVmNWI5NDMuLjhkMTI3NmIzYjhjNTIyZDE0NzVlZjMzN2Y1OTA4MDI1OTlj
MjEzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcApAQCAtNDcsNiAr
NDcsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxh
eWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAg
IG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgYWxsb2NhdG9yKTsK
K30KKwogUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBz
aXplKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzMkRMYXllckNocm9taXVtKGNv
bnRleHQsIHNpemUpKTsKQEAgLTU5LDYgKzczLDcgQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjpD
YW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEkK
ICAgICAsIG1fYmFja1RleHR1cmVJZCgwKQogICAgICwgbV9mYm8oMCkKICAgICAsIG1fdXNlRG91
YmxlQnVmZmVyaW5nKENDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSkKKyAgICAsIG1fdXBkYXRlclRl
eHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKICAgICBpZiAobV91c2VEb3Vi
bGVCdWZmZXJpbmcpCiAgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpKTsKQEAgLTEzMiwxMiArMTQ3LDEyIEBAIHZvaWQgQ2FudmFzMkRM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIpCiAgICAgICAgIG1fZnJvbnRUZXh0dXJlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ2FudmFz
MkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IgKmFsbG9jYXRvcikKIHsKICAgICBpZiAoIW1fYmFj
a1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlk
KG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2Zyb250VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3Io
KSk7CisgICAgbV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7
CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKQEAgLTE0OCw2ICsxNjMsMTEgQEAgdm9pZCBD
YW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Zmx1c2goKSk7CiB9
CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5o
YW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQor
CiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1w
bCogbGF5ZXIpCiB7CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhs
YXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDgzNjE1YTFmMjIz
NTYxNjQ2MmViMWY4ZDQxMjJlMWFkOGU1OGM5MjIuLmQ0NWJhOGNhMzIyMTkwYjk3ZjY2MDQ1ZDkz
NTIxNDY4NzRjOTcwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC00
NCw2ICs0NCwyMyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIC8vIEEgbGF5ZXIgY29udGFp
bmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJETGF5ZXJDaHJvbWl1
bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRh
dGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUo
Q2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAg
ICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMyRExheWVyQ2hyb21p
dW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsK
KwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwgfkNhbnZhczJE
TGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NSw3ICs3Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXll
clRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwor
ICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1
c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZl
Q29udGVudHNUZXh0dXJlKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsK
QEAgLTc2LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBzeW5jaHJvbml6ZSBpdHMgZHJhd3Mg
d2l0aCB0aGUgY2FudmFzIHVwZGF0ZXMuCiAgICAgYm9vbCBtX3VzZURvdWJsZUJ1ZmZlcmluZzsK
ICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJlOworICAgIE93blB0cjxV
cGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRjNmJkN2Y1MzgyYjUy
YjBlZWZiYTEwMzE2NmZjMDhmZS4uMWYzYjY0NGVlNjZiYmQwNzUxN2FjNDg1Yzk1Y2IyOGRkMDFl
MjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAg
LTM2LDYgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0
ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4NjUzM2JiODVkNjll
N2NmNjQ3ODJiMjZhZjExMTM1YWMuLjdmOGQzZDU5ZDk5OWUzNjhhNWE4ZWEyYjY0MTBkNjY1MmZl
NGY2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQx
LDYgKzQxLDE5IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogLy8gdGhlaXIgcmVzcGVj
dGl2ZSBwYWludENvbnRlbnRzIGltcGxlbWVudGF0aW9ucy4KIGNsYXNzIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CisgICAg
Y2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFs
IE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisK
KyAgICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4
dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcAppbmRleCA1MjlmY2UwMzY0YTgyODU1YWE0MDYzOTcxNTZlMGZiYjRlM2E5NTBlLi4zZGEy
ZGQyYjYyMTU4MDU3NWMzMWFkMjExMmZiMWM5Y2QyNWVmYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgQ29udGVudExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCkgJiYgbV9kZWxlZ2F0ZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxp
bmdPcHRpb24oKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwog
fQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHko
KQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMiw2
ICsxMjIsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJ
ZkRpcnR5KCkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFTU0VSVChkcmF3c0Nv
bnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJS
ZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29u
dGVudHMobGF5ZXJSZWN0KTsKK30KKwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewogI2lmIFVTRShT
S0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggNDI2Njc5Y2FmYWJiNzM5
NGMwMmU3OTAxYmUzMzJkN2JjYjVlMDgxYS4uMTFlNGZkNTVkODgzY2EwNzYzZGU3ZGNkYzEyNGU4
Y2YwYjRlZjUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01OCw4ICs1
OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSAw
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCAxOWRmYTJmMDA2Yzk4ODQ3NzBlNjc2YzQ1ODViZTk0NjcxMzRmM2IzLi44
ZjJkZThhMGU4OTNkNDFkYWYzMGI2NTFmMTUzNjU0Y2QzNWE3MTBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8U2tDYW52
YXM+IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAog
fQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAg
ICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0
ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDRh
MTBjODU4ZTRjZGE4YzI1MmFjMTZkZmEwN2QwOWE1ZDkwOGVlYzMuLjc0M2VkNmViYWZiYzgyN2U2
Mjc0NDg0NDFhZDNmOTk4Mzc5YWI1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGludGVybWVkaWF0ZSBmcmFtZWJ1
ZmZlciBhbmQgdGhlbiBpcyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgb25jZSBk
b25lLgogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
IDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgot
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4p
OwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAppbmRleCAwMTU0ZmIyODMxNGYzZTZjOTI0MDQ3YmI0ODM2NzM2OTJkZmNmYWI3Li4xNmE4
NWE0OGFiM2Q5OWMzNTg4MzQ2ZWFiZTA3NmQ4MDJiMWYxNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlTGF5ZXJD
aHJvbWl1bS5oIgogCisjaW5jbHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKLSNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIK
QEAgLTQ2LDEwICs0NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5
ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoK
LSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
eworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkK
KyAgICAgICAgICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJl
KQogICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50
c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKQorICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVu
dHNTY2FsZSAqLywgSW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKICAgICB7CiAg
ICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBA
IC0xNTgsNyArMTU4LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKElt
YWdlKiBjb250ZW50cykKICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkp
IHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aAppbmRleCBkNzEyOTI0NTFjMzU1NWVhZjBjMTZjZjlmMmMzZjM5NWJlMDc1MzA0Li5jMzQ2Y2Nk
YzM3MWZjNGViN2ZjNjJkOWYwYzEyMzNmN2Y3OGUyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXll
ckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50
c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKaW5kZXggNjg1ZGUwYzAzNGI5N2UwMzEwZWNhZTk0N2UxZGQxNTk3OTRi
NmRkNC4uOTkyMWEyMjBkYzQzNThlNTE5NmMyZjAyMTQ2ODExNmRkOWY0YTI2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5k
aW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01Myw3ICs1NCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xh
eWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxh
eWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KQEAgLTE1Myw5ICsxNTMsMTAgQEAgcHVibGljOgog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBi
eSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGVJZkRpcnR5KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50
c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZSgpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDE3OWZlYTZlMTJiZjEwM2M1YjA3
NDM1Y2YyNGEzYTQ4ZjhjZDkzMjMuLjVlMWU4ZTI2MGYzMGIzZTg3NTVkZGY5Yjk3ZDA4YmJkMTFi
YmQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ4LDE0ICs0OCwxNiBA
QCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAK
LSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0
KCk7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJu
IDA7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6
IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9CiAKLSAgICBwcml2YXRl
OgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAgICB9Owog
CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNzMsOCArNzUsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9y
bWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKICAgICAvLyBUaGUgfHJlc3VsdGluZ09w
YXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhlIGxheWVyIHRoYXQgd2FzIHBhaW50
ZWQgb3BhcXVlLiBJZiB0aGUgbGF5ZXIgaXMgbWFya2VkIG9wYXF1ZSBpbiB0aGUgdXBkYXRlciwK
ICAgICAvLyB0aGVuIHRoaXMgcmVnaW9uIHNob3VsZCBiZSBpZ25vcmVkIGluIHByZWZlcmVuY2Ug
Zm9yIHRoZSBlbnRpcmUgbGF5ZXIncyBhcmVhLgotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8q
IHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1Nj
YWxlICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogLyogcmVz
dWx0aW5nT3BhcXVlUmVjdCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVT
aXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICov
LCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKSA9IDA7CiAKICAgICAvLyBTZXQg
dHJ1ZSBieSB0aGUgbGF5ZXIgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBlbnRpcmUgb3V0cHV0
IGlzIGdvaW5nIHRvIGJlIG9wYXF1ZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCAwNzlhZDJlZGU5NTQ3
NTU4MmI4NzA3MjlhNzFhNWQ2MWJkMjhhYjRiLi45ZmE2N2Q0MTAyM2U0NTE5Yzc5ZTU3YWI2NzJj
ZmRlOTk3YWFlZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVtKCkKIHsK
IH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQor
dm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAg
ICBpZiAoIW1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmgKaW5kZXggODQzNjU2OTViYjFkZGM2NTIzMWFkZDA0ZjZmMGQ4MzAwMDkxZTBk
MC4uNWEwMzhiMmJmNzQzNzNiN2QxMTJmNjRkYWIxZGRhM2IyMzJlOTBjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZSgp
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5NzRmYTYzYTQ0NTdkOWVhYzdjOGI4
NzNmN2U5MWE0ZDI2ODQzYi4uNjRkNDYwZTI3ZDc5ZDhkN2E4MjdjZTIwNTIzMDY4YTQ5ZjFmYmI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKQEAgLTQ5LDE0ICs0OSwxNCBAQCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAK
LXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAq
LywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCog
cmVzdWx0aW5nT3BhcXVlUmVjdCkKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRl
bnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgU2tDYW52YXMq
IGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBj
b250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNv
bnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVmZXJyZWQodHJ1ZSk7CiAg
ICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKCFtX2xheWVySXNPcGFxdWUp
OwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7
Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50
c1NjYWxlKTsKKyAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGdy
YXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGljdHVy
ZS5lbmRSZWNvcmRpbmcoKTsKIAogICAgIGlmICghbV9sYXllcklzT3BhcXVlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDdm
Y2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUyYTQ5MjdiMDAuLjQ2NTU0MmU1N2EyMDNiNjk0
NTAyNjUwNWUwNThlOWQ0ZDM4OWYwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJl
Y3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldE9wYXF1ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IGYyZTMxMjJmOTc4Mjc5YzI3ZWUzMTcyMWUxZWMwMDYwMDJmMTJjZjAuLjc2ZTdiNTdmZjgy
YWIyZjA1ZjQ0ODU0ZTBmMWM2MTgzZTZmMzA3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcApAQCAtMTg4LDEwICsxODgsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNl
dExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAgIG1fc2FtcGxlZFRleGVs
Rm9ybWF0ID0gdGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KG1fdGV4dHVyZUZv
cm1hdCk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3Zv
aWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQg
Y2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUg
dGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNE
cmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5p
c0VtcHR5KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNS
ZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkgfHwgbV9wYWludFJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCA9IG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0LngoKTsKQEAgLTIzMywxNSArMjMzLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+
IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAg
ICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICAvLyBUaGUgdXBkYXRlUmVj
dCBzaG91bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29udmVydCB0aGUgcGFp
bnRSZWN0IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KLSAgICBtX3VwZGF0ZVJl
Y3QgPSBGbG9hdFJlY3QobV9wYWludFJlY3QpOwotICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBib3Vu
ZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgp
KTsKLSAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IGJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7Ci0gICAgbV91cGRhdGVSZWN0LnNj
YWxlKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAtMzY0LDEy
ICszNTgsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRpbGVUZXh0dXJlcyhj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQs
IGludCBib3R0b20pCiB7Ci0gICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMu
Ci0gICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVu
ZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0
PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICB0aWxlLT5tX3Vw
ZGF0ZVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgfQotCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5l
ZWRlZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbAogICAgIC8vIHRoZSBk
aXJ0eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxsIGRpcnR5IHRpbGVzIHRoYXQg
YXJlIHRvIGJlIHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91cGRhdGVSZWN0IHNldCB0byBt
X2RpcnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhpcyB3YXkgaWYKQEAgLTQxMywx
MyArNDAxLDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVz
KGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgIGlmICghbV9wYWludFJlY3Qu
aXNFbXB0eSgpKQogICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3Qo
bGVmdCwgdG9wLCByaWdodCAtIGxlZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKIAotICAgIC8v
IENhbGxpbmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdo
aWNoIG1heSBoYXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3Np
dGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0
byBiZSBkZWxldGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBi
YWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAg
IC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVy
IGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IG9wYXF1
ZVJlY3Q7IC8vIEZJWE1FOiB1bnVzZWQuIHJlbW92ZSB0aGlzIGFuZCBzdG9yZSBpbiB0aGUgbGF5
ZXIgdG8gcGFzcyB0byBpbXBsIGZvciBkcmF3IGN1bGxpbmcKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKICAg
ICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50
IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUq
IHRpbGUgPSB0aWxlQXQoaSwgaik7CkBAIC00NDAsMTUgKzQyMSwxMCBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50
IHRvcCwgaW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50UmVjdCk7
CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAg
ICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLQogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiB7CiAgICAgbV9za2lwc0RyYXcg
PSBmYWxzZTsKQEAgLTQ1Niw2ICs0MzIsMTIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgbV9yZXF1ZXN0ZWRV
cGRhdGVUaWxlc1JlY3QgPSBJbnRSZWN0KCk7CiAgICAgbV9wYWludFJlY3QgPSBJbnRSZWN0KCk7
CiAKKyAgICAvLyBSZXNldCBtX3VwZGF0ZVJlY3QgZm9yIGFsbCB0aWxlcy4KKyAgICBmb3IgKEND
TGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+
dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikg
eworICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGls
ZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7CisgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IElu
dFJlY3QoKTsKKyAgICB9CisKICAgICB1cGRhdGVCb3VuZHMoKTsKIAogICAgIGlmIChsYXllclJl
Y3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQpAQCAtNTUyLDUgKzUzNCwyNSBA
QCBJbnRSZWN0IFRpbGVkTGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50UmVjdChjb25zdCBJbnRSZWN0
JiB2aXNpYmxlTGF5ZXJSZWN0KQogICAgIHJldHVybiBwcmVwYWludFJlY3Q7CiB9CiAKK3ZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCkKK3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3Qu
aXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBj
YWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAv
LyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVy
ZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZl
ciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1
bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVy
ZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBs
ZXRlcy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVV
cGRhdGVyKCkpOworICAgIEludFJlY3Qgb3BhcXVlUmVjdDsgLy8gRklYTUU6IHVudXNlZC4gcmVt
b3ZlIHRoaXMgYW5kIHN0b3JlIGluIHRoZSBsYXllciB0byBwYXNzIHRvIGltcGwgZm9yIGRyYXcg
Y3VsbGluZworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3Qs
IG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50
c1NjYWxlKCksICZvcGFxdWVSZWN0KTsKKworICAgIC8vIFRoZSB1cGRhdGVSZWN0IHNob3VsZCBi
ZSBpbiBsYXllciBzcGFjZS4gU28gd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSBwYWludFJlY3QgZnJv
bSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlLgorICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0
UmVjdChtX3BhaW50UmVjdCk7CisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IGJvdW5kcygpLndpZHRo
KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpOworICAgIGZs
b2F0IGhlaWdodFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4o
Y29udGVudEJvdW5kcygpLmhlaWdodCgpKTsKKyAgICBtX3VwZGF0ZVJlY3Quc2NhbGUod2lkdGhT
Y2FsZSwgaGVpZ2h0U2NhbGUpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCAxZjlmNjk1OTM0NjI3
NTQzYTg1MDk2Mjk2N2Y2Mzk2MmQzN2RmYzg1Li5jODc2MTU2YzIxMjRlNTY0ODQ2NGE2NGZjMjZm
MzdlZWY3ZWI1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SXNNYXNrKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIFNldCBp
bnZhbGlkYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcgdXBkYXRlKCku
CiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwogCi0g
ICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNl
Y3Qgd2l0aCBsYXllclJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMgdGhh
dCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAogICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCB0aGlz
IHdpbGwgdHJ5IHRvIHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29udGVudCBpZiBpZGxl
LgpAQCAtOTAsNiArOTAsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHNraXBzRHJhdygpIGNv
bnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAKKyAgICAvLyBQYWludCBjb250ZW50cyBuZWVk
ZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgorICAg
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOworCiAgICAgdmly
dHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKICAgICB2aXJ0dWFsIFRl
eHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwpAQCAtMTA4LDcgKzExMSw3IEBA
IHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50KSBjb25zdDsKICAg
ICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50KTsKIAotICAgIC8vIFRlbXBvcmFy
eSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBh
cmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAgSW50UmVjdCBtX3JlcXVlc3Rl
ZFVwZGF0ZVRpbGVzUmVjdDsKIAogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9V
cGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc0ZGI3ZjEzZWM0ZjhmNGNhYWY2
OGU1YWQ3NDc0NWJlOTNiNzJmM2IuLjdmMGZmNmY0MmRjMDQzNzliZGNmZWFiMTAyZjQzZmI0OTBm
MGI2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzksOSArMzksMjQg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKiBs
YXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2ViR0xMYXll
ckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZSgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oKSk7CkBAIC01NSw2ICs3MCw3IEBAIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKCkKICAgICAsIG1fdGV4dHVyZUNoYW5n
ZWQodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCiAgICAgLCBtX2RyYXdpbmdC
dWZmZXIoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0
aGlzKSkKIHsKIH0KIApAQCAtNjksNyArODUsNyBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6
ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250
ZW50KCkgJiYgY29udGV4dCgpICYmIChjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9
CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQordm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQog
ICAgICAgICByZXR1cm47CkBAIC05OCw2ICsxMTQsMTEgQEAgdm9pZCBXZWJHTExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVy
Q28KICAgICB9CiB9CiAKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAg
aGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0
KCkpOworfQorCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiB7CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDRkYzY4YTMzMDhl
M2YyMzM3YjRiMjY1YzQ2NWQ3NWRiMmRjNmE3ZmEuLjdhNzQxNmZiNjU1ODU3NzM2Y2RkZGM4MGFm
ZDk5MzcxYTUxMDI0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw2ICsz
Niw3IEBACiAKICNpbmNsdWRlICJDYW52YXNMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0J1ZmZlci5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00NSw2ICs0NiwyMyBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21p
dW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBj
bGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxV
cGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUo
V2ViR0xMYXllckNocm9taXVtKik7CisKKyAgICAgICAgV2ViR0xMYXllckNocm9taXVtKiBtX2xh
eWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+
IGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CkBAIC01Myw3
ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJl
SWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3
c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5k
bGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVy
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKQEAgLTc4LDYgKzk3LDggQEAgcHJpdmF0
ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNhdXNlIHRoZSBEcmF3
aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJlZmVyZW5jZSB0byB0aGUgV2ViR0xM
YXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKKworICAg
IE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGI5OTIzNjAyYmM5OWFkNDVkMGFiNTlmMTNi
NjFjYmFkOGE3MWE2ODUuLjRhODJhNWRiNWVlNGI0YzdjNjI2YTI1OGVhNzU2YWFlM2Q4MTMzYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCkBAIC00OSw2ICs1MCwyMSBAQCBib29sIEND
TGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCkKICAgICByZXR1
cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAorQ0NMYXllclRyZWVIb3N0OjpVcGRh
dGVIYW5kbGVyOjpVcGRhdGVIYW5kbGVyKENDUHJveHkqIHByb3h5KQorICAgIDogbV9wcm94eShw
cm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjp+VXBkYXRlSGFu
ZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpoYW5k
bGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZS0+cHJl
cGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+dXBkYXRlKHRleHR1cmUsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBD
Q1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXll
clRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdz
KSk7CkBAIC0xMzksOCArMTU1LDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmJlZ2luQ29tbWl0
T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKQogICAgIEFTU0VSVChD
Q1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CiAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9z
dDo6Y29tbWl0VG8iLCB0aGlzLCAwKTsKIAotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+
cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmll
d3BvcnRTaXplKCkpKTsKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmRlbGV0ZUV2aWN0
ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworICAgIG1f
Y29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdl
cjo6cmVjbGFpbUxpbWl0Qnl0ZXModmlld3BvcnRTaXplKCkpKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpOwogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNvbW1pdHMgdGhlIENDTGF5
ZXJUcmVlSG9zdCB0byBhbiBpbXBsIHRyZWUuIFdoZW4gbW9kaWZ5aW5nCkBAIC0yNTMsOCArMjY5
LDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSA9PSBtX3ZpZXdwb3J0U2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhN
ZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNp
emUpKTsKLSAgICBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPnNldFByZWZlcnJlZE1lbW9yeUxp
bWl0Qnl0ZXMoVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKHZpZXdwb3J0U2l6ZSkp
OworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXModmlld3BvcnRTaXplKSk7CisgICAgbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRQcmVmZXJyZWRNZW1vcnlMaW1pdEJ5dGVzKFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUpKTsKICAgICBtX3ZpZXdwb3J0
U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQpAQCAtMjk5LDEw
ICszMTUsMTAgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRpZEJlY29tZUludmlzaWJsZU9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW0KIHsKICAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkpOwogICAgIGlmIChtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkuY29udGV4dEhhc0NhY2hlZEZyb250QnVmZmVyKQotICAgICAgICBjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCktPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
LT5ldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKGhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+
cmVkdWNlTWVtb3J5VG9MaW1pdChUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXModmll
d3BvcnRTaXplKCkpKTsKLSAgICAgICAgY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5kZWxldGVF
dmljdGVkVGV4dHVyZXMoaG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAg
ICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KFRleHR1
cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyh2aWV3cG9ydFNpemUoKSkpOworICAgICAgICBt
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhob3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogICAgIH0KIAogICAgIC8vIEVuc3VyZSB0aGF0
IHRoZSBkcm9wcGVkIHRpbGVzIGFyZSBwcm9wYWdhdGVkIHRvIHRoZSBpbXBsIHRyZWUuCkBAIC0z
NDMsNyArMzU5LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3Rh
dGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJ
bW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoKQogewogICAgIGlmICghcm9v
dExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM1MSwxMiArMzY3LDEyIEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7
CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsK
LSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAw
KTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0
aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAg
IHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtMzY1LDUwICszODEsODEgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5
ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkp
OwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRo
aXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxl
ZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5k
aW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7
Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0
IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVw
YXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4g
dGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFt
X2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qu
YXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5k
ZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1
cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExh
eWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVM
aXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgp
LCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAot
ICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7Ci0gICAg
aWYgKCFtX3RyaWdnZXJJZGxlUGFpbnRzKQorICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5k
ZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOworfQorCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7Ci0gICAgc2l6ZV90IG1h
eExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNp
emUpOwotICAgIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+cmVkdWNlTWVtb3J5VG9MaW1pdChw
cmVmZXJyZWRMaW1pdEJ5dGVzKTsKLSAgICBpZiAoY29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5j
dXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA+PSBwcmVmZXJyZWRMaW1pdEJ5dGVzKQorICAgIGlmICh2
aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIElkbGUg
cGFpbnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGlt
aXQsCi0gICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgYWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUg
bWF4aW11bSBsaW1pdC4KLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRlcyk7Ci0gICAgLy8gVGhlIHNlY29uZCAoaWRs
ZSkgcGFpbnQgd2lsbCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5
IG9jY3VyZWQgYWJvdmUuCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFp
bnRJZGxlKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0
Qnl0ZXMobWF4TGltaXRCeXRlcyk7CisgICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKIH0K
IAotLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHko
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBB
U1NFUlQobGF5ZXIpOwotICAgIEFTU0VSVChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlIHx8IFBh
aW50SWRsZSA9PSBwYWludFR5cGUpOwotICAgIGlmIChQYWludFZpc2libGUgPT0gcGFpbnRUeXBl
KQorICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMs
IDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUo
KSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNo
cm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAg
ICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIH0KKworICAgIGlmICht
X3RyaWdnZXJJZGxlUGFpbnRzKSB7CisgICAgICAgIHNpemVfdCBwcmVmZXJyZWRMaW1pdEJ5dGVz
ID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKKyAg
ICAgICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0
ZXMobV92aWV3cG9ydFNpemUpOworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXRCeXRlcyk7CisgICAgICAgIGlmIChtX2Nv
bnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpIDwgcHJlZmVycmVk
TGltaXRCeXRlcykgeworICAgICAgICAgICAgLy8gSWRsZSBwYWludGluZyBzaG91bGQgZmFpbCB3
aGVuIHdlIGhpdCB0aGUgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCwKKyAgICAgICAgICAgIC8vIG90
aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2FyZHMgdGhlIG1heGltdW0gbGltaXQu
CisgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0
Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRlcyk7CisgICAgICAgICAgICAvLyBUaGUgc2Vjb25kIChp
ZGxlKSBwYWludCB3aWxsIGJlIGEgbm8tb3AgaW4gbGF5ZXJzIHdoZXJlIHBhaW50aW5nIGFscmVh
ZHkgb2NjdXJlZCBhYm92ZS4KKworICAgICAgICAgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1f
bGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRl
eCkgeworICAgICAgICAgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICAgICAgbGF5ZXItPmlkbGVQcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVz
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFVwZGF0ZUhhbmRsZXIgaGFuZGxlcihtX3Byb3h5
LmdldCgpKTsKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6
ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVy
Q2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CiAg
ICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgIGVsc2UKLSAgICAgICAg
bGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVt
KiByZW5kZXJTdXJmYWNlTGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckxp
c3QmIHVwZGF0ZUxpc3QpCit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRp
dGlvbnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhl
IHJlbmRlciBzdXJmYWNlIGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGlj
YXMgaG93ZXZlciwgd2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlm
IChsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXll
ci0+ZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBw
ZW5kKGxheWVyKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBs
aWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIExh
eWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKICAgICAvLyBOb3RlOiBNYXNrcyBhbmQgcmVwbGljYXMg
b25seSBleGlzdCBmb3IgbGF5ZXJzIHRoYXQgb3duIHJlbmRlciBzdXJmYWNlcy4gSWYgd2UgcmVh
Y2ggdGhpcyBwb2ludAogICAgIC8vIGluIGNvZGUsIHdlIGFscmVhZHkga25vdyB0aGF0IGF0IGxl
YXN0IHNvbWV0aGluZyB3aWxsIGJlIGRyYXduIGludG8gdGhpcyByZW5kZXIgc3VyZmFjZSwgc28g
dGhlCkBAIC00MTYsNjcgKzQ2Myw0NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogCiAgICAg
aWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3Vy
ZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBv
aW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHBh
aW50Q29udGVudHNJZkRpcnR5KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIHBhaW50
VHlwZSk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1h
c2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBs
aWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChy
ZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVy
LCBwYWludFR5cGUpOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLCB1
cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewog
ICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVj
dChJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRC
b3VuZHMoKSkpOwotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVy
LT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXll
cihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAg
IH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFBhaW50VHlwZSBwYWludFR5cGUpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3Qm
IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAg
Ly8gVXNlIEZyb250VG9CYWNrIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVy
Zm9ybWluZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBD
Q0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NM
YXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRv
clR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOworICAgIGZvciAoQ0NMYXllckl0
ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBpZiAoaXQucmVwcmVzZW50
c1RhcmdldFJlbmRlclN1cmZhY2UoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJT
dXJmYWNlKCktPmRyYXdPcGFjaXR5KCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGlj
YUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgYXBwZW5kTWFz
a0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCppdCwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0
LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHko
Kml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKCppdCwgdXBk
YXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQotewotICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBp
dCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIEND
TGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5
ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwotCi0g
ICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1f
dXBkYXRlTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAg
ICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5KCkpOwotICAgICAgICAg
ICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBpdC0+bWFza0xheWVyKCkt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAg
ICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpdC0+cmVwbGlj
YUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpKQotICAgICAgICAgICAgaXQtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgfQotfQotCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3IgKHNp
emVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgp
OyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBk
YXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNsZWFy
KCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBt
X3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAgICAg
ICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1cmZh
Y2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
ICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3VwZGF0
ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7CiB9
CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Ny
b2xsQW5kU2NhbGVTZXQmIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGQ5
MmFkYzE2NmFlNjdlM2FmMDU0Mjk1MTBjOTdkM2ZlMzY4MzUwOWYuLmYyNWU0MjFkYmYwMTExMDk1
YjM2NGFiZWZlZGM1OTAyNWY0YmU1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBA
IC00NSw3ICs0NSw2IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogY2xhc3Mg
VGV4dHVyZUFsbG9jYXRvcjsKQEAgLTc3LDcgKzc2LDggQEAgc3RydWN0IENDU2V0dGluZ3Mgewog
ICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQogICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRp
bmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxlZChmYWxzZSkKLSAgICAg
ICAgICAgICwgcGFydGlhbFRleHR1cmVVcGRhdGVzKHRydWUpIHsgfQorICAgICAgICAgICAgLCBw
YXJ0aWFsVGV4dHVyZVVwZGF0ZXModHJ1ZSkKKyAgICAgICAgICAgICwgZGVsYXlUZXh0dXJlVXBk
YXRlcyhmYWxzZSkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29s
IGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg3LDYgKzg3LDcgQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVk
OwogICAgIGJvb2wgcGFydGlhbFRleHR1cmVVcGRhdGVzOworICAgIGJvb2wgZGVsYXlUZXh0dXJl
VXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5k
ZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhlIENDTGF5ZXJUcmVlSG9zdApAQCAtMTg3LDkg
KzE4OCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhi
b29sKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgdm9pZCB1cGRhdGVMYXll
cnMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUo
Y29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihH
cmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29u
dGV4dDNEKik7CkBAIC0yMDEsMTQgKzIwMiwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0
aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgVXBkYXRlSGFuZGxlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0
ZUhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVIYW5kbGVyKCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94eSogbV9wcm94eTsKKyAgICB9OworCiAgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwogICAgIHR5
cGVkZWYgVmVjdG9yPE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gPiBUZXh0dXJlTGlzdDsKIAotICAg
IGVudW0gUGFpbnRUeXBlIHsgUGFpbnRWaXNpYmxlLCBQYWludElkbGUgfTsKLSAgICBzdGF0aWMg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKLSAg
ICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmLCBQYWludFR5cGUpOwot
ICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSosIFBhaW50VHlwZSk7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1
bSosIExheWVyTGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQg
YXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVM
aXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
TGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsK
ICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCkBAIC0yMjUsNyArMjM3LDggQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRy
PFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKLSAgICBMYXllckxp
c3QgbV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0
OworICAgIExheWVyTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3MgbV9z
ZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDkzN2MxNTRmZjY5YmE4NTNiYmZjOTM0NTZkNzc2
NjcxMGM3MGEyMjQuLjczYWIwM2E5ZTEyMzMzMmIyNTQwYjY1YzI5YmRiYjA3MjgxYzIwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9oCiAKICNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTgzLDYgKzg0LDggQEAgcHVibGljOgogICAgIC8v
IHVwZGF0ZXMgYXJlIHJlcXVpcmVkLgogICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVw
ZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworCiAgICAgLy8gRGVidWcgaG9va3MKICNpZm5k
ZWYgTkRFQlVHCiAgICAgc3RhdGljIGJvb2wgaXNNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDcyYmVjMmE3MTY2NGFmNDNjZDY0ZDAxNGQy
OGI4NDI2NTA5NWIyMDMuLjI2N2E3ZmZkNDI1ZTg1MmIwNDQ0MGYwMGQ1YTYzMDg1NTc2M2I2MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNDcsMTUgKzE0
NywxNSBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiB2b2lk
IENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAorICAgICAgICBpZiAobV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXIpCisgICAgICAgICAgICB3aGlsZSAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdl
dCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0
KCkpOwogCkBAIC0xNzAsNiArMTcwLDggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0Nv
bW1pdCgpCiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKICAg
ICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZSA9IHRydWU7CisKKyAgICBBU1NFUlQo
IW1fY3VycmVudFRleHR1cmVVcGRhdGVyIHx8ICFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+aGFz
TW9yZVVwZGF0ZXMoKSk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHND
b21taXQoKQpAQCAtMjA4LDYgKzIxMCwxNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0
b3AoKQogICAgIG1fbGF5ZXJUcmVlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlm
ICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRh
dGVyID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJ
bXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAgIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyLT5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAg
IGVsc2UKKyAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5hbGxvY2F0b3IoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBh
dGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzIsNiAr
Mjg1LDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAorICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
KTsKIAogICAgIGRvQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
aW5kZXggNGZhYTIyOTk5MTJhZWM5YzRlNmFiNGJhNzAyN2Q4MWM4MDZkNDVlZS4uMDI3ZTNmY2Fh
MDQ3NDJiNzkzZjhjMzkyZWNkMDE4ODU2YzM0MzA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDQ0xheWVyVHJlZUhvc3Q7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogCiBjbGFzcyBD
Q1NpbmdsZVRocmVhZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxD
bGllbnQgewogcHVibGljOgpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICB2aXJ0dWFsIGJvb2wg
cGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
IC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQpAQCAtODMsNiArODUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGlj
c0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2Vk
IGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJh
bWU7CisKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVi
dWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3MmFiLi5k
Zjc3MjQ0MTNkMTczYzE4MDYyOGQ0Zjg5YjQwY2U4OWQzYTExYTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2lu
Y2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCiAgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX2Vu
dHJ5SW5kZXgoMCkKIHsKICAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQpAQCAtNjYsMjMgKzY2
LDIwIEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogCiBi
b29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
c2l6ZV90IGNvdW50KQogewotICAgIHNpemVfdCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXgg
KyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAgZm9yICg7IG1fZW50cnlJbmRleCA8IG1h
eEluZGV4OyArK21fZW50cnlJbmRleCkgewotICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBt
X2VudHJpZXNbbV9lbnRyeUluZGV4XTsKKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBp
ZiAoIW1fZW50cmllcy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgZW50cnku
bV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJj
ZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgp
OwogICAgIH0KIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1
dG8tY2xlYXIuCi0gICAgY2xlYXIoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1f
ZW50cmllcy5zaXplKCkgPiAwOwogfQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkK
IHsKLSAgICBtX2VudHJ5SW5kZXggPSAwOwogICAgIG1fZW50cmllcy5jbGVhcigpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4
MjllMmVmY2NlYzE1YmIzMC4uYzM3YWYzNGJlZTY0ZjdjMGFmNWIxMDM2OTUzMTE0MDIzYzU2NjY4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTksNyArNTksNiBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAgICBz
aXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA1ZTZhOGY4NjI2MmRmNjI0NDk0
MmU1YjQyYjQyZWJhYTg4ODMzYTJkLi4yNjI5OTg1ZGM2NTk3MWU0NmZiZjg3ODk3YTBlNmJiMjNi
YmEyMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjk0LDYgKzI5NCwyMCBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fc3RhcnRlZCA9IGZhbHNlOwogfQog
Cit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlIiwgdGhpcywg
MCk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zdGFydGVkKTsK
KworICAgIE93blB0cjxVcGRhdGVFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVXBkYXRlRW50
cnkpOworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJj
ZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisK
KyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgZW50cnkucmVs
ZWFzZSgpKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlz
LCAwKTsKQEAgLTM4MCw2ICszOTQsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8v
IHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCisgICAgbV9s
YXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxp
bmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KQEAgLTQwNCwx
MyArNDE5LDI1IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4
ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVy
KTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBh
c3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQoreworICAgIEFTU0VSVCghbV9jb21taXRDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Cisg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgICAgICBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVy
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+YXBwZW5kKGVudHJ5LT5tX3Rl
eHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKK30KKwogdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCgh
bV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxU
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NF
UlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFt
X2xheWVyVHJlZUhvc3RJbXBsKSB7CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAg
ICAgICByZXR1cm47CkBAIC00MTgsMTAgKzQ0NSw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
CiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247
CiAKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1Rl
eHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkKTsKLQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29t
cGxldGUoKTsKIH0KIApAQCAtNDQzLDE5ICs0NjYsMjAgQEAgYm9vbCBDQ1RocmVhZFByb3h5Ojpj
YW5EcmF3KCkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJl
c291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQpCisgICAgICAgIHJldHVybjsKICAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA+IDAgPyB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lIDog
OTk5OTkpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgp
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1p
dCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKIAotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNs
ZWFyKCk7Ci0KKyAgICBpZiAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpIHsK
KyAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFz
TW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLmNsZWFyKCk7CisgICAgfQogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21t
aXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IGExMWI1Mjc4NTk5MzFjZmI5OGY4
NzI0YTUxMjQzYTA5YjRlY2MzYjkuLmU3NGNjNmYxODNjOTFkZGYzNjkxZmFmMzlmNWRjYzNiNWRj
MDc3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAg
ICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
IC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CkBAIC04MCw2ICs4MSwx
MiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXll
clRyZWVIb3N0Kik7CiAKKyAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgICAgIEludFJlY3QgbV9zb3Vy
Y2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CisgICAgfTsKKwogICAgIC8vIENh
bGxlZCBvbiBtYWluIHRocmVhZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2Vx
dWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFu
ZFNjYWxlU2V0Pik7CiAgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKQEAgLTk0LDYg
KzEwMSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNr
PiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQg
b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4pOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJh
Y2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5k
ZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGNjZTQ3ZTJlMjdhNjdhMjY2ZDY4MmQ3
ZjVhYWU5YzUwMzU2MzIwMGMuLmI4Y2U0NTlkYmIxMTEzZmYyNzQyZTM4MjdkZGUxMmFhYjNjN2Y3
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAt
MTM1LDYgKzEzNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRQ
YWludGluZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFp
bnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBF
bmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRl
cyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25z
dCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDc3MzNlMjY5OTA4
NmRiYjNiNTU1NjMwZjRlZTdhZGNhZjM1MmUyOWIuLjYyODNmNTA1ZTQzYjczNGFlNmFhNDE0YWJj
YTJmN2U2MDVmNzY3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcApAQCAtNTAsNiArNTAsNyBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRp
bmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVu
YWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICwgbV9zaG93
UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCisgICAgLCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMoZmFs
c2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTUwNyw0ICs1MDgsOSBAQCB2b2lk
IFdlYlNldHRpbmdzSW1wbDo6c2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAg
ICBtX3NldHRpbmdzLT5zZXRQYXJ0aWFsU3dhcEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQg
V2ViU2V0dGluZ3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgK
aW5kZXggY2M3MGQxMzE2YzY0YzE2NTllMGUyMjI5NTZjNjgxNjQwMTU1YjNiMi4uYWNjMjVlNDk5
M2YyODdkNzJhMmYzNTk2NzBhOTgxM2U2NjBlMWM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEzMCwxMiArMTMwLDE1IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0
dXJlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsgfQogCiBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9j
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAg
ICBib29sIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOworICAgIGJvb2wgbV9kZWxheVRleHR1cmVV
cGRhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggOTRjZDQ1ZWI1MjQ4ZTljYTM1OTcwMWRjMjFm
NzA2ODJmNzg3MDgzMi4uYjJiMWRhMWI3MzA0NjAxMzRmN2E3NzYwOWI1MDg5M2MyODI2MTJiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzAxOSw2
ICszMDE5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogCiAgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBhaW50aW5n
ID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAg
Y2NTZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRp
YWxTd2FwRW5hYmxlZCgpOworICAgICAgICBjY1NldHRpbmdzLmRlbGF5VGV4dHVyZVVwZGF0ZXMg
PSBzZXR0aW5ncygpLT5kZWxheVRleHR1cmVVcGRhdGVzKCk7CiAKICAgICAgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJW
aWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCkt
PnNob3dEZWJ1Z0JvcmRlcnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAwY2IyNjA1ZThhNmQzZDMyMmZjZWIw
ZmM3M2FhN2FmZTY5NDkyMDkwLi42ZDllMzI2YTIyN2VmNmY4Yzk3NzY4MzZiYzc4YzhkNDkyOTIx
MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKQEAgLTk3NSw2ICs5NzUsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQog
CitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHByZXNlcnZlczNEKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCkgeyB9
Cit9OworCiBjbGFzcyBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ29u
dGVudExheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJE
ZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTk2LDQ3ICsxMDA0LDExOSBA
QCBwcml2YXRlOgogCiBjbGFzcyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyA6IHB1YmxpYyBDb250ZW50TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShD
b250ZW50TGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xh
c3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
ciB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0
dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0
ZXh0dXJlKQorICAgICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRl
cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRz
Q291bnQoKSB7IHJldHVybiBtX3BhaW50Q29udGVudHNDb3VudDsgfQotICAgIGludCBpZGxlUGFp
bnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OyB9Ci0g
ICAgdm9pZCByZXNldFBhaW50Q29udGVudHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQg
PSAwOyBtX2lkbGVQYWludENvbnRlbnRzQ291bnQgPSAwO30KKyAgICAgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNv
dXJjZVJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBk
YXRlci0+bGF5ZXIoKS0+cHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAq
LywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAg
ICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5h
Z2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4
dHVyZUZvcm1hdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAq
LywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8s
IGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJl
Y3QgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsK
KyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7IH0KIAotICAgIGludCB1cGRhdGVDb3VudCgp
IHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7
IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcqIGxheWVyKSA6IG1fbGF5ZXIobGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3Jl
YXRlKENvbnRlbnRMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVs
ZWdhdGUpKTsKKyAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHko
KQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJl
ZUhvc3QqKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVu
dHNJZkRpcnR5KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIG1f
Y29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRl
eHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
ci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgp
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogICAgIHsKLSAgICAg
ICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAg
ICAgICBtX2lkbGVQYWludENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICAgICAgcHJlcGFyZVRvVXBkYXRl
KCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisg
ICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKICAgICB7Ci0gICAg
ICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRl
eHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBpZGxl
UHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgfQogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKSB7
IG1fcHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGludCBwcmVwYXJlVG9VcGRhdGVDb3Vu
dCgpIHsgcmV0dXJuIG1fcHJlcGFyZVRvVXBkYXRlQ291bnQ7IH0KKworICAgIHZvaWQgaWRsZVBy
ZXBhcmVUb1VwZGF0ZSgpIHsgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGlu
dCBpZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSB7IHJldHVybiBtX2lkbGVQcmVwYXJlVG9VcGRh
dGVDb3VudDsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHND
b3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRD
b250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0
Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJl
UmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50
Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291
bnQ7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZyhDb250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDog
Q29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9wcmVwYXJlVG9VcGRh
dGVDb3VudCgwKQorICAgICAgICAsIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KDApCiAgICAg
ICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX2lkbGVQYWludENvbnRl
bnRzQ291bnQoMCkKLSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVw
YXJlUmVjdENvdW50KDApCisgICAgICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAg
ICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgICAgICBzZXRJc0RyYXdhYmxl
KHRydWUpOwogICAgIH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4g
bV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBpbnQgbV9wcmVwYXJlVG9VcGRhdGVD
b3VudDsKKyAgICBpbnQgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQ7CiAgICAgaW50IG1fcGFp
bnRDb250ZW50c0NvdW50OwotICAgIGludCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAg
aW50IG1fdXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQg
bV91cGRhdGVSZWN0Q291bnQ7CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcg
cGFpbnQgc2hvdWxkIG5vdCBwcmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcg
dXBkYXRlZCBkdXJpbmcgY29tbWl0LgpAQCAtMTA2MywxNiArMTE0MywxOSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29u
dGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KLSAgICAgICAgRVhQ
RUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOworICAg
ICAgICAvLyBwcmVwYXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgor
ICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlVG9VcGRhdGVD
b3VudCgpKTsKIAotICAgICAgICAvLyBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlCi0gICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNr
TGF5ZXItPmlkbGVQYWludENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8vIGlkbGVQcmVwYXJl
VG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1Rf
RVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSk7CisK
KyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2Uu
CisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHND
b3VudCgpKTsKIAotICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMg
cGFpbnRDb250ZW50c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tM
YXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNo
ZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgp
IHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0
aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xh
eWVyLT5wcmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNr
TGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNo
ZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tM
YXllci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
YW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggZjBiNWM0MTFiNjU2YWVkZTc1
OTU3MTBlNGQ4Y2ZkN2QyNGRiNTMzYy4uN2RmOTY5NTM5ZjhlNjY1NTgxZmJhMjE3NjRjMWQ2ZGI1
MGQyOWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMy
RExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVk
ZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CkBAIC02OCw2ICs2NywyMSBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QzKGRl
bGV0ZVRleHR1cmUsIHZvaWQodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkpOwog
fTsKIAorY2xhc3MgTW9ja1VwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQo
Y29udGV4dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHsKKyAgICAgICAg
dGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0
ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFRl
eHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworfTsKKwogfSAvLyBuYW1lc3BhY2UKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNyArMTA1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBN
b2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRl
eHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQz
RChpbXBsQ29udGV4dC5nZXQoKSkpOwogCiAgICAgICAgIE1vY2tUZXh0dXJlQWxsb2NhdG9yIGFs
bG9jYXRvck1vY2s7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmYWxsb2NhdG9y
TW9jayk7CisgICAgICAgIE1vY2tVcGRhdGVIYW5kbGVyIHVwZGF0ZUhhbmRsZXJNb2NrKGltcGxD
b250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jayk7CiAKICAgICAgICAgY29uc3QgSW50U2l6ZSBz
aXplKDMwMCwgMTUwKTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVTaXplID0gc2l6
ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CkBAIC0xNDYsNyArMTYwLDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMt
PmNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19j
YXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwog
Ci0gICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRl
eHQuZ2V0KCksIHVwZGF0ZXIpOworICAgICAgICAgICAgY2FudmFzLT5mb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKHVwZGF0ZUhhbmRsZXJNb2NrKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVw
ZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJl
VXBkYXRlclRlc3QuY3BwCmluZGV4IGJkYmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1
OGE2NzMuLjBmN2VkNTcwZWQ2ZmU0Mjc4OTY3ZmUzYjFlNWVhZGI3NDQ0ZTA5MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRl
clRlc3QuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVz
dCwgdGVzdE9wYXF1ZVJlY3RQcmVzZW50QWZ0ZXJPcGFxdWVQYWludCkKICAgICBvcGFxdWVSZWN0
ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRl
ckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBk
YXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMo
SW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVl
UmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1
ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRv
cHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBk
YXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShw
YWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVS
ZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDAp
LCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJl
Y3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWlu
dGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7
Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJ
bnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50
Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAx
LCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQw
MCksIG9wYXF1ZVJlY3QpOwogfQogCkBAIC0xMjEsMTkgKzEyMSwxOSBAQCBURVNUKExheWVyVGV4
dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBh
aW50KQogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRy
KG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2Uo
KSwgZmFsc2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRh
dGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwg
NDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAg
ICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxw
aGEpKTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwg
MCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgw
LCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAg
ICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVz
dExheWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJl
bGVhc2UoKSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0
ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0
MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIFRFU1QoTGF5
ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxh
eWVyV2l0aE9wYXF1ZVBhCiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWlu
dGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1
cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKElu
dFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJl
Y3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCks
IEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0g
SW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNo
cm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAg
ICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFx
dWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVj
dCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50
ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsK
ICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9w
YXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAs
IDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE3Nywy
MSArMTc3LDIxIEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0
Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE5vbk9wYXF1CiAgICAgcGFpbnRlciA9IGFkb3B0
UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRl
ciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVh
c2UoKSwgZmFsc2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0
MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRS
ZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0
KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsK
IAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5l
dyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJl
bGVhc2UoKSwgZmFsc2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRh
dGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAw
LCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJ
bnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVS
ZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0
KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRy
KG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBh
aW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBk
YXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMo
SW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVl
UmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVj
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGI4NTBmODI0MWNjMDgwMTQxMzhlMzgwOGMwNjE0
Y2E2MTA0ZTYzMjEuLmQ2ZDlkNzgwM2ZhMmNmMTVhNzhmNjE1YjVkYWY4OWYxNzU1MDE1NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAjaW5jbHVkZSAiQ0NMYXllclRyZWVU
ZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2lu
Y2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5o
IgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZAotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAt
NDEsMTAgKzQxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIHsKIAotY2xh
c3MgRmFrZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRvciB7CitjbGFz
cyBGYWtlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYs
IEdDM0RlbnVtKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUo
dW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFJlY3QmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUaWxlZExheWVyQ2hyb21pdW07CkBA
IC01MywzMiArNTIsMzYgQEAgY2xhc3MgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRl
eHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAgICBUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQogICAgICAg
ICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgfTsKIAotICAgIEZha2VM
YXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgwKSB7IH0KKyAgICBGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wYWludENvdW50KDApIHsgfQogICAgIHZpcnR1YWwgfkZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRzIHRoZSByZWN0IHRvIGlu
dmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkuIEFmdGVy
IHRoZSBuZXh0CiAgICAgLy8gY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyBy
ZXNldC4KICAgICB2b2lkIHNldFJlY3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VU
aWxlZExheWVyQ2hyb21pdW0qKTsKIAotICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlVG9V
cGRhdGUgaGFzIGJlZW4gaW52b2tlZC4KLSAgICBpbnQgcHJlcGFyZUNvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0KLSAgICB2b2lkIGNsZWFyUHJlcGFyZUNvdW50KCkgeyBt
X3ByZXBhcmVDb3VudCA9IDA7IH0KKyAgICAvLyBOdW1iZXIgb2YgdGltZXMgcGFpbnRDb250ZW50
cyBoYXMgYmVlbiBpbnZva2VkLgorICAgIGludCBwYWludENvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYWludENvdW50OyB9CisgICAgdm9pZCBjbGVhclBhaW50Q291bnQoKSB7IG1fcGFpbnRDb3Vu
dCA9IDA7IH0KIAogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8gcHJlcGFyZVRvVXBkYXRlKCku
CiAgICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAgY29uc3QgeyByZXR1cm4gbV9s
YXN0VXBkYXRlUmVjdDsgfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsg
cmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdl
cikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQotICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0Kik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRS
ZWN0Kik7CiAKIHByaXZhdGU6Ci0gICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3Bh
aW50Q291bnQ7CiAgICAgSW50UmVjdCBtX3JlY3RUb0ludmFsaWRhdGU7CiAgICAgSW50UmVjdCBt
X2xhc3RVcGRhdGVSZWN0OwogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBtX2xh
eWVyOwpAQCAtMTM1LDE1ICsxMzgsMjUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVGlsZWRM
YXllckNocm9taXVtOjpza2lwc0RyYXcoKTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlciogZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX2Zha2VUZXh0dXJlVXBk
YXRlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFn
ZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGVJZkRpcnR5KCkKICAgICB7CiAgICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJS
ZWN0KCkpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgp
CisgICAgeworICAgICAgICBwYWludENvbnRlbnRzKHZpc2libGVMYXllclJlY3QoKSk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25z
dCBDQ0xheWVyVHJlZUhvc3QqKSB7IH0KIApAQCAtMTc4LDkgKzE5MSw5IEBAIHZvaWQgRmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXI6OnNldFJlY3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgcmVj
dCwgRmFrZVRpbGVkCiAgICAgbV9sYXllciA9IGxheWVyOwogfQogCi12b2lkIEZha2VMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0
KQordm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJl
c3VsdGluZ09wYXF1ZVJlY3QpCiB7Ci0gICAgbV9wcmVwYXJlQ291bnQrKzsKKyAgICBtX3BhaW50
Q291bnQrKzsKICAgICBtX2xhc3RVcGRhdGVSZWN0ID0gY29udGVudFJlY3Q7CiAgICAgaWYgKCFt
X3JlY3RUb0ludmFsaWRhdGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fbGF5ZXItPmludmFsaWRh
dGVSZWN0KG1fcmVjdFRvSW52YWxpZGF0ZSk7CkBAIC0xOTcsMTQgKzIxMCwxNCBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4g
bGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAg
IEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBk
YXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVy
OwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVz
IGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
KyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAg
bGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZl
IGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTIxNyw3ICsyMzAsOCBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9u
bHkgdXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3
YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpAQCAtMjMyLDggKzI0Niw3IEBAIFRFU1Qo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsK
IAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBo
YW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLiBTZXR1cCA1eDUgdGls
ZXMgd2l0aCBvbmUgdmlzaWJsZSB0aWxlIGluIHRoZSBjZW50ZXIuCiAgICAgSW50U2l6ZSBjb250
ZW50Qm91bmRzKDUwMCwgNTAwKTsKQEAgLTI0OSw3ICsyNjIsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAvLyBXZSBzaG91bGQgbmVlZCBp
ZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhlIGNlbnRlci4KICAgICBFWFBFQ1RfVFJV
RShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxh
eWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUg
aW1wbCBzaWRlLgpAQCAtMjYyLDcgKzI3NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZp
c2libGVSZWN0KTsKICAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZp
c2libGVSZWN0KSk7CiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVS
ZWN0KTsKLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwog
ICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAg
ICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICB9CkBAIC0yOTgs
OCArMzExLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1l
bW9yeSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQ
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxs
b2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7
CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIC8vIFRoaXMgaW52YWxpZGF0ZXMgOSB0
aWxlcyBhbmQgdGhlbiBwYWludHMgb25lIHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91
bmRzKGNvbnRlbnRCb3VuZHMpOwpAQCAtMzEwLDcgKzMyMiw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQg
aWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAg
IEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0
aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0zMjMsNyArMzM1LDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGRuJ3Qg
c2lnbmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVt
b3J5LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiB9CiAKQEAgLTMzNCwxNCArMzQ2
LDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJl
KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0
b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAg
ICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAw
LCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5
ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFu
ZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAog
ICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTM1
MCwyMiArMzYyLDI0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZy
b21QcmVwYXJlKQogCiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7
CiAKLSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291
bnQoKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENv
dW50KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVy
IGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8v
IHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKIAogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUwLCA1MCkpOwogICAgIC8vIHNldFJlY3RU
b0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52YWxpZGF0ZVJlY3QoKSBiZWluZyBpbnZva2VkIGZyb20g
cHJlcGFyZVRvVXBkYXRlLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5z
ZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1LCA1MCwgNTApLCBsYXllci5nZXQoKSk7
Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50
KCk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUGFpbnRDb3Vu
dCgpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OwotICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJl
cGFyZUNvdW50KCkpOwotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clByZXBhcmVDb3VudCgpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwg
MTAwLCAyMDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnBhaW50Q291bnQoKSk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyUGFpbnRDb3VudCgpOwogICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUg
aW52YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tlZCBpbnZhbGlkYXRlLgogICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIEVYUEVDVF9F
USgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwor
ICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBF
WFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBhaW50Q291bnQo
KSk7CiB9CiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdo
ZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQpAQCAtMzc2LDggKzM5MCw3IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2Nh
bGVkKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJl
TWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAK
LSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFu
ZGxlcjsKIAogICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoMCwgMCwgMzAwLCAyMDApOwogICAgIElu
dFJlY3QgY29udGVudEJvdW5kcygwLCAwLCAyMDAsIDI1MCk7CkBAIC0zOTAsMjAgKzQwMywyMyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVu
dEJvdW5kc0FyZVNjYWxlZCkKICAgICAvLyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4g
bGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3Vu
ZHMpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOwor
ICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5mb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VR
KEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
CiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxp
ZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4KICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRz
KTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBF
WFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRl
UmVjdCgpKTsKIAogICAgIC8vIFBhcnRpYWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVz
ZW50ZWQgYnkgdGhlIHVwZGF0ZVJlY3QgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNl
LgogICAgIEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVy
LT5pbnZhbGlkYXRlUmVjdChwYXJ0aWFsRGFtYWdlKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwor
ICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIEVYUEVD
VF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJl
Y3QoKSk7CiB9CiAKQEAgLTQzMiwxOCArNDQ4LDE1IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBm
b3Igb25seSBvbmUgb2YgdGhlIHR3byBsYXllcnMuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAq
IDMwMCAqIDMwMDsgLy8gNCBieXRlcyBwZXIgcGl4ZWwuCiAKLSAgICBGYWtlVGV4dHVyZUFsbG9j
YXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4
dHVyZUFsbG9jYXRvcik7Ci0KICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290
TGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAw
LCAzMDApKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+
c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtZW1vcnlMaW1pdCk7CisgICAgY2NMYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygp
OwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVy
VHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7CiAKLSAgICAvLyBXZSdsbCBza2lwIHRoZSBy
b290IGxheWVyLgotICAgIEVYUEVDVF9UUlVFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwotICAg
IEVYUEVDVF9GQUxTRShjaGlsZExheWVyLT5za2lwc0RyYXcoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOworICAgIC8vIFdlJ2xsIHNraXAgdGhlIGNoaWxkIGxh
eWVyLgorICAgIEVYUEVDVF9UUlVFKGNoaWxkTGF5ZXItPnNraXBzRHJhdygpKTsKIAogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtNDUyLDYgKzQ2NSw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogCiAgICAgLy8g
TmVlZCB0byBzZXQgdGhlIG1heCBsaW1pdCBhZ2FpbiBhcyBpdCBnZXRzIG92ZXJ3cml0dGVuIGJ5
IHVwZGF0ZUxheWVycygpLgogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFu
YWdlcigpLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0KTsKKyAgICBjY0xheWVy
VHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125025</attachid>
            <date>2012-02-01 15:04:25 -0800</date>
            <delta_ts>2012-02-06 14:44:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120201180424.patch</filename>
            <type>text/plain</type>
            <size>122394</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uNGIxYjM4OWMwZjQ4MTA2NjU4NzQ3MWI5OWY4ZjA4
NjQ1NGRhN2M5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0wMi0wMSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoVXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKENhbnZhczJETGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKEltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAg
IChIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXI6On5IYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFBsdWdpbkxheWVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOgorICAgICAgICAoU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRpbGVkTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
OjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChV
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViR0xMYXllckNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRh
dGVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjp+VXBkYXRlSGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRp
bmdzKToKKyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToK
KyAgICAgICAgKFVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NU
ZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRh
dGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6Cisg
ICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFVwZGF0ZUVudHJ5KToKKwogMjAxMi0w
Mi0wMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBHY2MgYnVp
bGQgZml4IGFmdGVyIHIxMDY0ODIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA3NGIy
ZDE3ODc1NmE4YzM0NzYzNDNiY2NiZWNkODc2MWQ2ZTYxNzguLmE0MTA4NzJhNWZlZjdlMDY0ODBl
MjM3MzUwMWZiNGIwMjNkYjgwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODQgQEAKKzIwMTItMDItMDEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbQ2hyb21pdW1dIFVwbG9hZCB0ZXh0dXJlcyBpbiBwYXJhbGxlbCB3aXRo
IHBhaW50aW5nIGNvbnRlbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzI3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgZGVsYXlUZXh0dXJlVXBkYXRlcyBzZXR0aW5nIHRoYXQgaXMgdXNlZCBi
eSBjb21wb3NpdG9yIHRvIGRldGVybWluZQorICAgICAgICBpZiB0ZXh0dXJlIHVwbG9hZHMgc2hv
dWxkIGJlIGRlbGF5ZWQgdW50aWwgYWxsIHBhaW50aW5nIGhhcyBjb21wbGV0ZWQuCisgICAgICAg
IFVwZGF0ZSB1bml0IHRlc3RzOiBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSBhbmQK
KyAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJT
ZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYlNl
dHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6ZGVsYXlUZXh0
dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6Cisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChNb2NrTGF5
ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpwYWludENvbnRl
bnRzKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OmRyYXdzQ29udGVudCk6Cisg
ICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpwcmVzZXJ2ZXMzRCk6CisgICAgICAgIChX
VEY6Ok1vY2tMYXllckRlbGVnYXRlOjpub3RpZnlTeW5jUmVxdWlyZWQpOgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFRleHR1
cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6bGF5ZXIpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKToKKyAgICAgICAgKFdURjo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVUZXh0
dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjp0ZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlVG9VcGRhdGVDb3VudCk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpp
ZGxlUHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRz
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OnBhaW50Q29udGVudHNDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAg
ICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6dXBkYXRlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmFmdGVy
VGVzdCk6CisgICAgICAgIChXVEY6OlRlc3RMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdExheWVyT2NjbHVzaW9u
OjpiZWdpblRlc3QpOgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExp
ZmVjeWNsZVRlc3QpOgorICAgICAgICAqIHRlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwOgorICAgICAgICAoV1RGOjpGYWtlSGFuZGxlcjo6aGFuZGxlKToKKyAg
ICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgor
ICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6
CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OkZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEZha2VMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q291
bnQpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQYWludENv
dW50KToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
cyk6CisgICAgICAgIChGYWtlVGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdURjo6RmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChX
VEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoV1RGOjpURVNUKToKKwogMjAxMi0wMi0wMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNjM4
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHAKaW5kZXggMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4OC4uZGQwMzUz
ZDE2M2NkYmYzOTlkNzgxYmYzNmY5ZGZiNTdlZTZjNWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVy
ZVVwZGF0ZXIpCiB7CiB9CkBAIC03OCw3ICs3OCw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVk
CiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JB
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9p
ZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0
KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVl
UmVjdCkKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVy
VGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9y
bUNhbnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWlu
dGVyIGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWlu
dGVyLnNraWFDb250ZXh0KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsK
LSAgICBwYWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3Qs
IGNvbnRlbnRzU2NhbGUpOworICAgIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29u
dGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2Fs
ZSk7CiAKICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVS
ZWN0ID0gY2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApp
bmRleCA0ZTE2MjI5NWI4NmUwMDg5M2MzM2VmMDNkNGI2MmQyYzFlNTJiZDVmLi4yYWJhYzk2YTAz
MGRiMDkyODQ5NDNjZjM4YjQ5NGNkODBlYzkwYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIExh
eWVyUGFpbnRlckNocm9taXVtOwogLy8gcG9zc2libGUuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVi
bGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAg
ICAgdmlydHVhbCB+VGV4dHVyZSgpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4
dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNh
bXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50
UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBp
bnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdP
cGFxdWVSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dE9wYXF1ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZTJhYjc5ODM4NmZjY2YwNzAx
M2Q2NmJiM2YyOGZlN2Q4ZjRlYzI3Yy4uMzRhZDI2MDk1MzFjYTFmMDQ0OTdmMTRiNTM3MmU2MjA1
YTIyMmFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTg2LDEwICs4NiwxMCBAQCBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcgogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50
UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRl
bnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgbV90ZXhTdWJJ
bWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwotICAgIFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGlsZVNpemUsIGJv
cmRlclRleGVscywgY29udGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb250ZW50UmVj
dCwgdGlsZVNpemUsIGJvcmRlclRleGVscywgY29udGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVl
UmVjdCk7CiB9CiAKIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAxYzU2NGNkYzE4M2VhNDk1OTFmNjkwNmVmZWJk
M2E4ZDliNWY4MGNjLi42ZDcyMjVmMzIyZDZhNWEwYjY2MmNjMTgyZjBlOTE1N2JmNjY0MWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRl
eHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiBy
ZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpOwogICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgR0MzRGVudW0gZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWlu
dDhfdCogcGl4ZWxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMDkwNTQ3NDE4NmVmYzJjNDBhN2FkYTQ1ODU5NWUwYmY4M2YzNjhjOC4uZTRmNzY1YzAxMGM0
ZTBkYmEyMGQ0NmYxMmMwNzkzYzMwNDQwYjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCkBAIC00Nyw2ICs0NywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENh
bnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQor
CitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUo
KQoreworfQorCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJv
bWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YW52YXMyRExheWVyQ2hyb21pdW0oY29udGV4dCwgc2l6ZSkpOwpAQCAtNTksNiArNzMsNyBAQCBD
YW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgY29uc3QgSQogICAgICwgbV9iYWNrVGV4dHVyZUlkKDApCiAgICAgLCBt
X2ZibygwKQogICAgICwgbV91c2VEb3VibGVCdWZmZXJpbmcoQ0NQcm94eTo6aGFzSW1wbFRocmVh
ZCgpKQorICAgICwgbV91cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMp
KQogewogICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKICAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwpAQCAtOTEsNyArMTA2
LDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAg
ICAgICAgICYmIG1fY29udGV4dCAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdy
YXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwog
fQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBDYW52YXMyRExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRl
ZFNjcmVlblNwYWNlICovKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEzMiwxMiArMTQ3LDEyIEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpz
ZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCiAgICAgICAg
IG1fZnJvbnRUZXh0dXJlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IgKmFsbG9jYXRvcikKIHsKICAgICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAh
bV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250VGV4dHVy
ZS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSk7CisgICAgbV9mcm9u
dFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tU
ZXh0dXJlSWQsIDApKTsKQEAgLTE0OCw2ICsxNjMsMTEgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Zmx1c2goKSk7CiB9CiAKK3ZvaWQgQ2FudmFz
MkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVy
VGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiB2b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAg
ICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IGVjYmE5MGY0ZWQxNjJjNjhkYzRmMDhlNjEw
YmRkNGY3MmQ5YjMzOTQuLjBhZTQxOGQ2OTRjNWI2YWUxZDRlYWM1YzQ5YjMxNjE0MTY0ZjZmY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC00NSw2ICs0NSwyMyBAQCBj
bGFzcyBSZWdpb247CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2Fu
dmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJv
bWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRl
eHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0
dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBk
YXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRM
YXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
YW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFNpemUmKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKIApAQCAtNTMs
MTAgKzcwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24m
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhv
c3QoQ0NMYXllclRyZWVIb3N0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3Bl
cnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50
c1RleHR1cmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwpAQCAtNzcs
NiArOTUsNyBAQCBwcml2YXRlOgogICAgIC8vIHN5bmNocm9uaXplIGl0cyBkcmF3cyB3aXRoIHRo
ZSBjYW52YXMgdXBkYXRlcy4KICAgICBib29sIG1fdXNlRG91YmxlQnVmZmVyaW5nOwogICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9mcm9udFRleHR1cmU7CisgICAgT3duUHRyPFVwZGF0ZXJU
ZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA1ZmE2Nzg1NGM2YmQ3ZjUzODJiNTJiMGVlZmJh
MTAzMTY2ZmMwOGZlLi4xZjNiNjQ0ZWU2NmJiZDA3NTE3YWM0ODVjOTVjYjI4ZGQwMWUyMmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzYsNiAr
MzYsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
IDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKwogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
PiBwYWludGVyKQogICAgIDogbV9wYWludGVyKHBhaW50ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNDQxNWY2OTg2NTMzYmI4NWQ2OWU3Y2Y2NDc4
MmIyNmFmMTExMzVhYy4uN2Y4ZDNkNTlkOTk5ZTM2OGE1YThlYTJiNjQxMGQ2NjUyZmU0ZjZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDEsNiArNDEs
MTkgQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyB0aGVpciByZXNwZWN0aXZlIHBh
aW50Q29udGVudHMgaW1wbGVtZW50YXRpb25zLgogY2xhc3MgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBU
ZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgTWFuYWdl
ZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4pOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBt
X3RleHR1cmU7CisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDM0MzAzMTEwZmE5Y2FmZGYyNmNhOWJjZmVkNmUyNGM0ZjQwMmYyYWEuLjQ4ZjIwMmY3NmYw
OTZiMTQ3NGU1NGJhZTE2MWI4YTFjOGU0OTk5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpkcmF3
c0NvbnRlbnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UgKi8pCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5
KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKIHsKICAgICB1cGRhdGVU
aWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBv
Y2NsdWRlZFNjcmVlblMKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlm
ICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMiw2ICsxMjIsMjAgQEAg
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAg
ICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CisK
KyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAg
aWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJh
d3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMobGF5ZXJS
ZWN0KTsKK30KKwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0
ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0KQogewogI2lmIFVTRShTS0lBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggNWVmZjZhM2Q2MGExMmQxMjBlYjcyMDAwZDM1
MGIxZmI1ODM4ZWE4My4uZjc2MDJjZjE1NjAxZjA2ODY1OTgxZmI5MTc2YjM5NTVhMzVlNmRjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01OSw4ICs1OSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSAwOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAg
dmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFj
ZSk7CisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAxOWRm
YTJmMDA2Yzk4ODQ3NzBlNjc2YzQ1ODViZTk0NjcxMzRmM2IzLi44ZjJkZThhMGU4OTNkNDFkYWYz
MGI2NTFmMTUzNjU0Y2QzNWE3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2VsZXJh
dGVkQ2FudmFzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogfQogCiBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwg
UGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDRhMTBjODU4ZTRjZGE4YzI1MmFj
MTZkZmEwN2QwOWE1ZDkwOGVlYzMuLjc0M2VkNmViYWZiYzgyN2U2Mjc0NDg0NDFhZDNmOTk4Mzc5
YWI1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIGludGVybWVkaWF0ZSBmcmFtZWJ1ZmZlciBhbmQgdGhlbiBpcyBj
b3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgb25jZSBkb25lLgogY2xhc3MgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1cmUg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVy
ZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFs
IH5UZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA4MzFjYmU4
MDk2M2EzYTgwMGI4YWE0NmE2OTk0OGY0ZmM3ZjVlYzdlLi4wOTI3ZTMzNDA5YzA0NmQ0MDViZDY2
NDZlMzJiZWFiMGQyMWI4ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDkgKzM0LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlTGF5ZXJDaHJvbWl1bS5oIgogCisjaW5j
bHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKLSNpbmNsdWRlICJMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKQEAgLTQ2LDEwICs0NiwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1
cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgICAgICA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgIDogQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAgLCBt
X3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAgICB7CiAgICAgICAgIH0KQEAg
LTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBp
bnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0
KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50UmVj
dCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1h
Z2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBAIC0xNTgsNyArMTU4LDcgQEAg
dm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykKICAg
ICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykK
K3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJl
Z2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKIHsKICAgICBpZiAobV9uZWVkc0Rpc3Bs
YXkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVu
dHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaAppbmRleCBhYjVjMWIyN2IyYzc1YTc1YWUzNDM3OTNjYTUzODc5ZjI1NTFkZDE2Li5mYzU3
OWFiNDNjNjBkMjU4ZGVjYmRiYjE5NTFiZmU1M2UxMGY3OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VM
YXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGly
dHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKICAgICB2aXJ0dWFsIGJvb2wg
bmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdl
KiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzY0ZjczMDE1NWI1NDUzN2NkYTRjNzM4
MWIzZmQzYmNiNzk2MDY0ZC4uNTdjNzE2NjI1MzYzMWNjYzk3ZTc1OThhZmY4NzRiMWJmMDAyNDMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
IlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBA
IC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBSZWdpb247CiAKQEAgLTE1NCw5ICsxNTQsMTAgQEAg
cHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVy
d3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8p
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmluZENv
bnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDE3
OWZlYTZlMTJiZjEwM2M1YjA3NDM1Y2YyNGEzYTQ4ZjhjZDkzMjMuLjVlMWU4ZTI2MGYzMGIzZTg3
NTVkZGY5Yjk3ZDA4YmJkMTFiYmQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQ4LDE0ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJl
dHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0
KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwotICAg
IHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9OworCisgICAg
Y2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkg
eyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4
dHVyZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsg
fQpAQCAtNzMsOCArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3Jt
YXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKICAgICAv
LyBUaGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVzIGJhY2sgYSByZWdpb24gb2YgdGhlIGxh
eWVyIHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLiBJZiB0aGUgbGF5ZXIgaXMgbWFya2VkIG9wYXF1
ZSBpbiB0aGUgdXBkYXRlciwKICAgICAvLyB0aGVuIHRoaXMgcmVnaW9uIHNob3VsZCBiZSBpZ25v
cmVkIGluIHByZWZlcmVuY2UgZm9yIHRoZSBlbnRpcmUgbGF5ZXIncyBhcmVhLgotICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8s
IGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBm
bG9hdCAvKiBjb250ZW50c1NjYWxlICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgeyB9CisgICAgdmlydHVhbCB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0
IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAv
KiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKSA9
IDA7CiAKICAgICAvLyBTZXQgdHJ1ZSBieSB0aGUgbGF5ZXIgd2hlbiBpdCBpcyBrbm93biB0aGF0
IHRoZSBlbnRpcmUgb3V0cHV0IGlzIGdvaW5nIHRvIGJlIG9wYXF1ZS4KICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BhcXVlKGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApp
bmRleCAwNzlhZDJlZGU5NTQ3NTU4MmI4NzA3MjlhNzFhNWQ2MWJkMjhhYjRiLi45ZmE2N2Q0MTAy
M2U0NTE5Yzc5ZTU3YWI2NzJjZmRlOTk3YWFlZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNo
cm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBQbHVnaW5MYXllckNocm9taXVtOjpQbHVnaW5M
YXllckNocm9taXVtKCkKIHsKIH0KIAotdm9pZCBQbHVnaW5MYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIEND
VGV4dHVyZVVwZGF0ZXImKQordm9pZCBQbHVnaW5MYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVJZkRpcnR5KCkKIHsKICAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKaW5kZXggODQzNjU2OTViYjFkZGM2NTIzMWFk
ZDA0ZjZmMGQ4MzAwMDkxZTBkMC4uNWEwMzhiMmJmNzQzNzNiN2QxMTJmNjRkYWIxZGRhM2IyMzJl
OTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaApAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbHVnaW5MYXllckNocm9taXVtIDogcHVibGljIExh
eWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkxheWVy
Q2hyb21pdW0+IGNyZWF0ZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5NzRm
YTYzYTQ0NTdkOWVhYzdjOGI4NzNmN2U5MWE0ZDI2ODQzYi4uNjRkNDYwZTI3ZDc5ZDhkN2E4Mjdj
ZTIwNTIzMDY4YTQ5ZjFmYmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ5LDE0ICs0OSwxNCBAQCBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVu
dHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKK3ZvaWQgU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhl
bHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3Qp
CiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250
ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250
ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0
RGVmZXJyZWQodHJ1ZSk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9u
KCFtX2xheWVySXNPcGFxdWUpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQo
JnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNv
bnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2Nh
bGUpOwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIAogICAgIGlmICghbV9sYXllcklz
T3BhcXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCmluZGV4IDdmY2M2MDU5ZjkwZTdkOWQxYzMwMWJmMmE3MGY1MTUyYTQ5MjdiMDAu
LjQ2NTU0MmU1N2EyMDNiNjk0NTAyNjUwNWUwNThlOWQ0ZDM4OWYwNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwog
Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNv
bnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50
UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZh
cyopOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDI4M2FhOGRkMDliYTIzZmQ3NDQzM2FjYTMyYTY3MzUzODgz
YzlhMDAuLmJlMzc5ZGZiY2YxOTU5OTVmNDJiYWZiZmZlMzY0YmM5ZTNlMTgyZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTg5LDEwICsxODksMTAgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQog
ICAgIG1fc2FtcGxlZFRleGVsRm9ybWF0ID0gdGV4dHVyZVVwZGF0ZXIoKS0+c2FtcGxlZFRleGVs
Rm9ybWF0KG1fdGV4dHVyZUZvcm1hdCk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBk
YXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7CiAgICAg
Ly8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdo
aWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUu
Ci0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1w
dHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkgfHwg
bV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCA9
IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKQEAgLTIzNCwxNSArMjM0LDkgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBk
ZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAg
IENSQVNIKCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAg
ICAvLyBUaGUgdXBkYXRlUmVjdCBzaG91bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUg
dG8gY29udmVydCB0aGUgcGFpbnRSZWN0IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFj
ZS4KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJlY3QpOwotICAgIGZsb2F0
IHdpZHRoU2NhbGUgPSBib3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRl
bnRCb3VuZHMoKS53aWR0aCgpKTsKLSAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IGJvdW5kcygpLmhl
aWdodCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7Ci0g
ICAgbV91cGRhdGVSZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIH0KIAogdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5n
T3B0aW9uKQpAQCAtMzY1LDEyICszNTksNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJv
dGVjdFRpbGVUZXh0dXJlcyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAKIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBp
bnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pCiB7Ci0gICAgLy8gUmVzZXQgbV91cGRhdGVS
ZWN0IGZvciBhbGwgdGlsZXMuCi0gICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBt
X3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSog
dGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwot
ICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgfQotCiAgICAgLy8g
Q3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwgZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWlu
IGFsbAogICAgIC8vIHRoZSBkaXJ0eSByZWdpb25zIGN1cnJlbnRseSBiZWluZyBkcmF3bi4gQWxs
IGRpcnR5IHRpbGVzIHRoYXQgYXJlIHRvIGJlIHBhaW50ZWQKICAgICAvLyBnZXQgdGhlaXIgbV91
cGRhdGVSZWN0IHNldCB0byBtX2RpcnR5UmVjdCBhbmQgbV9kaXJ0eVJlY3QgY2xlYXJlZC4gVGhp
cyB3YXkgaWYKQEAgLTQxNywzMCArNDA1LDE0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVU
aWxlc1JlY3QgPSBJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwgYm90dG9tIC0g
dG9wICsgMSk7CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8g
V2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBv
ZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRo
ZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4n
dCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBw
YWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUg
dG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAg
IFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7
Ci0gICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXIt
Pmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVjdCk7
CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3Ig
KGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVU
aWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogCi0gICAgICAgICAgICAvLyBUaWxlcyBhcmUgY3Jl
YXRlZCBiZWZvcmUgcHJlcGFyZVRvVXBkYXRlKCkgaXMgY2FsbGVkLgorICAgICAgICAgICAgLy8g
VGlsZXMgYXJlIGNyZWF0ZWQgYWJvdmUuCiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAg
ICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGls
ZXItPnRpbGVCb3VuZHMoaSwgaik7Ci0KLSAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFp
bnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUuIElmIGV2ZXJ5dGhpbmcgcGFpbnRlZCBpbiB0aGUgdGls
ZSB3YXMgb3BhcXVlLCBhbmQgdGhlIGFyZWEgaXMgYSBzdWJzZXQgb2YgYW4KLSAgICAgICAgICAg
IC8vIGFscmVhZHkgb3BhcXVlIGFyZWEsIGtlZXAgdGhlIG9sZCBhcmVhLgotICAgICAgICAgICAg
SW50UmVjdCB0aWxlUGFpbnRlZFJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRS
ZWN0KTsKLSAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJz
ZWN0aW9uKHRpbGVSZWN0LCBwYWludGVkT3BhcXVlUmVjdCk7Ci0gICAgICAgICAgICBpZiAodGls
ZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRpbGVQYWludGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVS
ZWN0LmNvbnRhaW5zKHRpbGVQYWludGVkT3BhcXVlUmVjdCkpCi0gICAgICAgICAgICAgICAgdGls
ZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBhaW50ZWRPcGFxdWVSZWN0OwotCiAgICAgICAgICAgICAv
LyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRoZSBl
eGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdC4KICAgICAgICAgICAgIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmIChk
aXJ0eVJlY3QuaXNFbXB0eSgpKQpAQCAtNDU0LDEwICs0MjYsNiBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRv
cCwgaW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50UmVjdCk7CiAK
ICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAg
ICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC01MjQsNiArNDkyLDEyIEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAgIG1f
cmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVjdCgpOwogICAgIG1fcGFpbnRSZWN0ID0g
SW50UmVjdCgpOwogCisgICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCisg
ICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgp
OyArK2l0ZXIpIHsKKyAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVw
ZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOworICAgICAgICB0aWxlLT5tX3VwZGF0
ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgfQorCiAgICAgdXBkYXRlQm91bmRzKCk7CiAKICAgICBp
ZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKQEAgLTYyMCw1
ICs1OTQsNDcgQEAgSW50UmVjdCBUaWxlZExheWVyQ2hyb21pdW06OmlkbGVQYWludFJlY3QoY29u
c3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKICAgICByZXR1cm4gcHJlcGFpbnRSZWN0Owog
fQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVj
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcHJlcGFyZVRv
VXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBz
aWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2Vz
IG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgorICAg
IC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGlj
c0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAorICAgIC8vIHNvIHdlIGdyYWIgYSBs
b2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBw
YWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rv
cih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICBJbnRSZWN0IHBhaW50ZWRPcGFxdWVSZWN0OworICAg
IHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXItPnRp
bGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZw
YWludGVkT3BhcXVlUmVjdCk7CisgICAgaW50IGxlZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVz
UmVjdC54KCk7CisgICAgaW50IHRvcCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LnkoKTsK
KyAgICBpbnQgcmlnaHQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5tYXhYKCkgLSAxOwor
ICAgIGludCBib3R0b20gPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5tYXhZKCkgLSAxOwor
ICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKKyAgICAgICAgZm9yIChp
bnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgeworICAgICAgICAgICAgVXBkYXRhYmxlVGls
ZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKKworICAgICAgICAgICAgLy8gVGlsZXMgYXJlIGNyZWF0
ZWQgaW4gcHJlcGFyZVRvVXBkYXRlVGlsZXMoKS4KKyAgICAgICAgICAgIGlmICghdGlsZSkKKyAg
ICAgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0ID0g
bV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAgICAgICAgLy8gU2F2ZSB3aGF0IHdh
cyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZlcnl0aGluZyBwYWludGVkIGluIHRo
ZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBhIHN1YnNldCBvZiBhbgorICAgICAg
ICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0aGUgb2xkIGFyZWEuCisgICAgICAg
ICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgbV9w
YWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBp
bnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICAgICAgICAgIGlm
ICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0IHx8ICF0aWxlLT5tX29w
YXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkKKyAgICAgICAgICAgICAg
ICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBUaGUgdXBkYXRlUmVjdCBzaG91bGQgYmUgaW4gbGF5ZXIgc3BhY2Uu
IFNvIHdlIGhhdmUgdG8gY29udmVydCB0aGUgcGFpbnRSZWN0IGZyb20gY29udGVudCBzcGFjZSB0
byBsYXllciBzcGFjZS4KKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJlY3Qp
OworICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBib3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKTsKKyAgICBmbG9hdCBoZWlnaHRTY2FsZSA9
IGJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5o
ZWlnaHQoKSk7CisgICAgbV91cGRhdGVSZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxl
KTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggM2NiYmJjYmQ3YTQ1MjU0MjM1ZTM5NTU1MDIwYzMw
MzY4ZTcxZWM0Ni4uZTk3OWNjOTA2NzE3YzdmZDZhNmYxZGEzODllZTg5N2U5MzQ1OTNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29s
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CkBA
IC04NCw3ICs4NCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBi
ZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAotICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0
LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGgg
bGF5ZXJSZWN0LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxsIHRyeSB0byBwYWlu
dCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KQEAgLTk1LDYgKzk1LDkg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBtX3Nr
aXBzRHJhdzsgfQogCisgICAgLy8gUGFpbnQgY29udGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0
dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0
VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4
dHVyZU1hbmFnZXIoKSBjb25zdDsKQEAgLTExMyw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIFVw
ZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxlVGlsZSog
Y3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3
ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCisg
ICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQg
cGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3Q7
CiAKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQ
cm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcAppbmRleCA3NGRiN2YxM2VjNGY4ZjRjYWFmNjhlNWFkNzQ3NDViZTkzYjcy
ZjNiLi43ZjBmZjZmNDJkYzA0Mzc5YmRjZmVhYjEwMmY0M2ZiNDkwZjBiNjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xh
eWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+
VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0
JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGNvbnRleHQpOworfQorCiBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xM
YXllckNocm9taXVtOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xM
YXllckNocm9taXVtKCkpOwpAQCAtNTUsNiArNzAsNyBAQCBXZWJHTExheWVyQ2hyb21pdW06Oldl
YkdMTGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBt
X3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBt
X3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAg
LTY5LDcgKzg1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIGNvbnRleHQo
KSAmJiAoY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNB
UkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCog
cmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJl
ckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtOTgsNiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2
b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1f
dXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBX
ZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQog
ewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA0ZGM2OGEzMzA4ZTNmMjMzN2I0YjI2NWM0NjVk
NzVkYjJkYzZhN2ZhLi43YTc0MTZmYjY1NTg1NzczNmNkZGRjODBhZmQ5OTM3MWE1MTAyNDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJH
TExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVk
ZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNp
bmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDUsNiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsK
IC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNo
cm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNz
IFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNy
ZWF0ZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1
bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoKTsKIAogICAg
IHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwpAQCAtNTMsNyArNzEsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlk
ID0gdGV4dHVyZUlkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1
YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFz
KEltYWdlQnVmZmVyKik7CkBAIC03OCw2ICs5Nyw4IEBAIHByaXZhdGU6CiAgICAgLy8gQSByZWZl
cmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZlciBhbHJlYWR5
IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJvbWl1bS4KICAg
ICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisKKyAgICBPd25QdHI8VXBkYXRlclRl
eHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAppbmRleCA0ZmY4NDM0YjIwMGM5MmQ0OGEwOGJmOTFjMTRiMjdmODIxOWRkYWI2Li4z
MWU3MGFlMzljMjJiZmRkN2FmMzk4NjM5MzE5YWU2MmEwYTkzNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM2LDkgKzM2LDEyIEBACiAjaW5jbHVkZSAiY2MvQ0NMYXll
clRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZFByb3h5LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSB7CiBzdGF0
aWMgaW50IG51bUxheWVyVHJlZUluc3RhbmNlczsKIH0KQEAgLTUwLDYgKzUzLDIxIEBAIGJvb2wg
Q0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAgIHJl
dHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJlZUhvc3Q6OlVw
ZGF0ZUhhbmRsZXI6OlVwZGF0ZUhhbmRsZXIoQ0NQcm94eSogcHJveHkpCisgICAgOiBtX3Byb3h5
KHByb3h5KQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6On5VcGRhdGVI
YW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6Omhh
bmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT5w
cmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICBtX3Byb3h5LT51cGRhdGUodGV4dHVyZSwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NM
YXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0
IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGxh
eWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGlu
Z3MpKTsKQEAgLTM0NCw3ICszNjIsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRl
KCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSkt
PmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7CiAg
ICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzUyLDEyICszNzAsMTIg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0
U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJzKHJv
b3RMYXllcigpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUocm9vdExheWVyKCkpOwogfQogCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cyIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVU
b1VwZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0zNjYsMzgg
KzM4NCwzNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21p
dW0qIHJvb3RMYXllcikKICAgICBJbnRSZWN0IHJvb3RDbGlwUmVjdChJbnRQb2ludCgpLCB2aWV3
cG9ydFNpemUoKSk7CiAgICAgcm9vdExheWVyLT5zZXRDbGlwUmVjdChyb290Q2xpcFJlY3QpOwog
Ci0gICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyB3
YXNuJ3QgY2FsbGVkIGFmdGVyCi0gICAgLy8gdXBkYXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRhdGUg
Y2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0ZUxp
c3Quc2l6ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAgLy8g
VGhpcyBhc3NlcnQgZmlyZXMgaWYgY29tbWl0Q29tcGxldGUgd2Fzbid0IGNhbGxlZCBhZnRlcgor
ICAgIC8vIHByZXBhcmVUb1VwZGF0ZS4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0
IGFueSBnaXZlbiB0aW1lLgorICAgIEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5z
aXplKCkgJiYgIW1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSk7CisgICAgbV9yZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1
bSogcm9vdFJlbmRlclN1cmZhY2UgPSByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICBy
b290UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQo
IkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDAp
OworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+
bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7
CiAgICAgfQogCiAgICAgcmVzZXJ2ZVRleHR1cmVzKCk7CiAKLSAgICBwYWludExheWVyQ29udGVu
dHMobV91cGRhdGVMaXN0LCBQYWludFZpc2libGUpOwotICAgIGlmICghbV90cmlnZ2VySWRsZVBh
aW50cykKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qs
IG1fbGF5ZXJVcGRhdGVMaXN0KTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVycygpCit7CisgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c2l6ZV90IHByZWZlcnJlZExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0
Qnl0ZXMobV92aWV3cG9ydFNpemUpOwotICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVy
ZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKLSAgICBjb250ZW50c1Rl
eHR1cmVNYW5hZ2VyKCktPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXRCeXRlcyk7
Ci0gICAgaWYgKGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y3VycmVudE1lbW9yeVVzZUJ5dGVz
KCkgPj0gcHJlZmVycmVkTGltaXRCeXRlcykKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZGxlIHBhaW50aW5nIHNob3VsZCBmYWls
IHdoZW4gd2UgaGl0IHRoZSBwcmVmZXJyZWQgbWVtb3J5IGxpbWl0LAotICAgIC8vIG90aGVyd2lz
ZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2FyZHMgdGhlIG1heGltdW0gbGltaXQuCi0gICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJl
ZExpbWl0Qnl0ZXMpOwotICAgIC8vIFRoZSBzZWNvbmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBu
by1vcCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcgYWxyZWFkeSBvY2N1cmVkIGFib3ZlLgotICAg
IHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50SWRsZSk7Ci0gICAgbV9jb250
ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0Qnl0ZXMp
OworICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpyZXNlcnZlVGV4dHVyZXMoKQpAQCAtNDA1LDI2ICs0MTksNjEgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcygpCiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNl
IGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYg
Q0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NM
YXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAK
LSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgm
bV91cGRhdGVMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVy
SXRlcmF0b3JUeXBlOjpiZWdpbigmbV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1f
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOworICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBp
dCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpIHx8ICFpdC0+YWx3YXlzUmVzZXJ2ZVRleHR1cmVzKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaXQtPnJlc2VydmVUZXh0dXJlcygpOwogICAgIH0KIH0KIAot
Ly8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIEFTU0VSVChsYXllcik7Ci0gICAgQVNTRVJU
KFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUgfHwgUGFpbnRJZGxlID09IHBhaW50VHlwZSk7Ci0g
ICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUpCi0gICAgICAgIGxheWVyLT5wYWludENv
bnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICBlbHNlCi0gICAgICAgIGxh
eWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVy
SW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAt
LWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBk
YXRlTGlzdFtsYXllckluZGV4XS5maXJzdC5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkobV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uc2Vjb25kKTsKKyAg
ICB9CisKKyAgICBpZiAobV90cmlnZ2VySWRsZVBhaW50cykgeworICAgICAgICBzaXplX3QgcHJl
ZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhtX3Zp
ZXdwb3J0U2l6ZSk7CisgICAgICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFn
ZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKKyAgICAgICAgbV9jb250ZW50c1Rl
eHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOwor
ICAgICAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0
ZXMoKSA8IHByZWZlcnJlZExpbWl0Qnl0ZXMpIHsKKyAgICAgICAgICAgIC8vIElkbGUgcGFpbnRp
bmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCisg
ICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgcHVzaCB1cyB0b3dhcmRzIHRo
ZSBtYXhpbXVtIGxpbWl0LgorICAgICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5z
ZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0Qnl0ZXMpOworICAgICAgICAgICAg
Ly8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQgd2lsbCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVy
ZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQgYWJvdmUuCisKKyAgICAgICAgICAgIGZvciAoaW50
IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49
IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXll
ciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmZpcnN0LmdldCgpOworICAgICAgICAg
ICAgICAgIGxheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBVcGRhdGVI
YW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9
IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJ
bmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0
W2xheWVySW5kZXhdLmZpcnN0LmdldCgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lm
RGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxl
cik7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVy
KExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2Us
IExheWVyVXBkYXRlTGlzdCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFsIGxheWVy
cywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB3aGls
ZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8gRm9yIG1h
c2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVjayB0aGVt
IGhlcmUuCisgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5vcGFj
aXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
dXBkYXRlTGlzdC5hcHBlbmQocGFpcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4sIFJlZ2lvbj4obGF5
ZXIsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1
cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
cHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVy
U3VyZmFjZUxheWVyLCBMYXllclVwZGF0ZUxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90
ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5k
ZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBh
bHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRo
aXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtNDM1LDE2ICs0ODQsMTYgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hy
b21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigp
KSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVM
YXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRC
b3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgYXBwZW5k
VmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIG5vT2NjbHVzaW9u
LCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIg
PSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5
ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5
cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXll
ciwgbm9PY2NsdXNpb24sIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNr
TGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZE
aXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsK
KyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigp
LCBub09jY2x1c2lvbiwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00ODQs
NyArNTMzLDcgQEAgc3RhdGljIHZvaWQgbGVhdmVUYXJnZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxS
ZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJlbmRlclMKICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBk
YXRlTGlzdCwgTGF5ZXJVcGRhdGVMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIFVzZSBGcm9u
dFRvQmFjayB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3Vs
bGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JUeXBlOwpAQCAtNDk4LDEzICs1NDcsMTMg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxp
c3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAvLyBXZSBtZXJnZSB0aGUgb2NjbHVzaW9u
IGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIHdpdGggdGhlIG5ldyBjdXJyZW50IHN1YnRyZWUuIFRo
aXMgbmV3IHRhcmdldCBpcyBwdXNoZWQgb250byB0aGUgc3RhY2sgaWYgbm90IGFscmVhZHkgdGhl
cmUuCiAgICAgVmVjdG9yPFJlbmRlclN1cmZhY2VSZWdpb24+IHRhcmdldFN1cmZhY2VTdGFjazsK
IAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5k
KCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUg
aXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXll
ckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCk7CisgICAgZm9yIChD
Q0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRl
clN1cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5y
ZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQt
PnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSk7CiAKICAgICAgICAgICAgIGVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRTdXJmYWNlU3RhY2ssIGl0LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBw
YWludFR5cGUpOworICAgICAgICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKCppdCwgdXBkYXRlTGlzdCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSByZXBs
aWNhIGxheWVyIHRvIHRoZSBjdXJyZW50IG9jY2x1c2lvbgogCiAgICAgICAgICAgICBpZiAoaXQt
Pm1hc2tMYXllcigpIHx8IGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5KCkgPCAxKQpA
QCAtNTEzLDcgKzU2Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBB
U1NFUlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgICAgICBlbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC0+dGFyZ2V0UmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlLCB0
YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9jY2x1ZGVkSW5TY3JlZW4pOworICAgICAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKCppdCwgdGFyZ2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRl
ZEluU2NyZWVuLCB1cGRhdGVMaXN0KTsKICAgICAgICAgICAgIGl0LT5hZGRTZWxmVG9PY2NsdWRl
ZFNjcmVlblNwYWNlKHRhcmdldFN1cmZhY2VTdGFjay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZWF2ZVRhcmdldFJlbmRlclN1cmZhY2Uo
dGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVy
U3VyZmFjZSgpKTsKQEAgLTUyMSwzNiArNTcwLDE2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpw
YWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRl
cikKLXsKLSAgICAvLyBVc2UgQmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBp
c24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJD
aHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpC
YWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKLQotICAgIENDTGF5ZXJJdGVyYXRvclR5
cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZv
ciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZt
X3VwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LnJlcHJlc2Vu
dHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVy
U3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKLSAgICAgICAgICAgIGlmIChpdC0+bWFza0xheWVy
KCkpCi0gICAgICAgICAgICAgICAgaXQtPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FM
YXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaXQtPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgICAgIGlmIChp
dC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQotICAgICAgICAgICAgICAgICAgICBpdC0+
cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNv
bnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGl0LnJl
cHJlc2VudHNJdHNlbGYoKSkKLSAgICAgICAgICAgIGl0LT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgIH0KLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0g
MDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsK
LSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4
XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXpl
X3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxh
eWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAg
ICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVh
clJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAg
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBmNTgyMDNkMTVlYjIwNDUwNzFjMmVm
YTQ0OGJhNDBiZjE5YTU0Y2FhLi5iNjQyOWZhMDRjZWY5MmY2NTgwMGI2NWM2NTQ3ZmQxMTM4ZTVi
MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFz
cyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9z
dEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7
CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFJlZ2lvbjsKQEAgLTc4LDcgKzc3
LDggQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQog
ICAgICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRp
YWxTd2FwRW5hYmxlZChmYWxzZSkKLSAgICAgICAgICAgICwgcGFydGlhbFRleHR1cmVVcGRhdGVz
KHRydWUpIHsgfQorICAgICAgICAgICAgLCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZXModHJ1ZSkKKyAg
ICAgICAgICAgICwgZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkgeyB9CiAKICAgICBib29sIGFj
Y2VsZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg4LDYg
Kzg4LDcgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwog
ICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwogICAgIGJvb2wgcGFydGlhbFRleHR1cmVVcGRh
dGVzOworICAgIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIC8vIFByb3ZpZGVzIGlu
Zm9ybWF0aW9uIG9uIGFuIEltcGwncyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIGJhY2sgdG8gdGhl
IENDTGF5ZXJUcmVlSG9zdApAQCAtMTg4LDkgKzE4OSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKCk7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAg
ICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwog
ICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQg
c3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0yMDIsMTQgKzIwMywyNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xh
c3MgVXBkYXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZUhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2
aXJ0dWFsIH5VcGRhdGVIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94
eSogbV9wcm94eTsKKyAgICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4sIFJlZ2lvbj4gPiBMYXllclVwZGF0ZUxpc3Q7CiAgICAgdHlwZWRlZiBW
ZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCi0gICAgZW51bSBQ
YWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0YXRpYyB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29u
c3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FG
b3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHZvaWQgYXBw
ZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UsIExheWVyVXBkYXRlTGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBMYXllclVwZGF0ZUxpc3QmKTsKKyAg
ICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdCwgTGF5ZXJVcGRhdGVMaXN0Jik7CiAKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0
ZShMYXllckNocm9taXVtKik7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSop
OwogICAgIC8vIFByZS1yZXNlcnZlIHRleHR1cmVzIGZvciBhbnkgbGF5ZXIgbWFya2VkICJhbHdh
eXMgcmVzZXJ2ZSB0ZXh0dXJlcyIKICAgICB2b2lkIHJlc2VydmVUZXh0dXJlcygpOwpAQCAtMjI4
LDcgKzI0MSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExh
eWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2Vy
OwogCi0gICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlzdDsKKyAgICBMYXllckxpc3QgbV9yZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdDsKKyAgICBMYXllclVwZGF0ZUxpc3QgbV9sYXllclVwZGF0ZUxpc3Q7
CiAKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCA5MzdjMTU0
ZmY2OWJhODUzYmJmYzkzNDU2ZDc3NjY3MTBjNzBhMjI0Li43M2FiMDNhOWUxMjMzMzJiMjU0MGI2
NWMyOWJkYmIwNzI4MWMyMGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVm
aW5lIENDUHJveHlfaAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyVGV4
dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC04Myw2ICs4
NCw4IEBAIHB1YmxpYzoKICAgICAvLyB1cGRhdGVzIGFyZSByZXF1aXJlZC4KICAgICB2aXJ0dWFs
IGJvb2wgcGFydGlhbFRleHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgPSAwOwogCisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAg
IC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRo
cmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCA3MmJl
YzJhNzE2NjRhZjQzY2Q2NGQwMTRkMjhiODQyNjUwOTViMjAzLi4yNjdhN2ZmZDQyNWU4NTJiMDQ0
NDBmMDBkNWE2MzA4NTU3NjNiNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmNwcApAQCAtMTQ3LDE1ICsxNDcsMTUgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpz
ZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKwogICAgIC8vIENvbW1pdCBp
bW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKKyAgICAgICAg
aWYgKG1fY3VycmVudFRleHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgd2hpbGUgKG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyLT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAx
KSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0g
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRl
ci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxl
KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApAQCAtMTcwLDYgKzE3MCw4IEBAIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3Qt
PmNvbW1pdENvbXBsZXRlKCk7CiAgICAgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUg
PSB0cnVlOworCisgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciB8fCAhbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXItPmhhc01vcmVVcGRhdGVzKCkpOwogfQogCiB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKQEAgLTIwOCw2ICsyMTAsMTcgQEAgdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQog
Cit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyKQorICAgICAg
ICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVy
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAg
ICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVz
KQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+YXBwZW5kKHRleHR1cmUsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3Qo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+
YWxsb2NhdG9yKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogLy8gQ2FsbGVkIGJ5IHRo
ZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0
aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlSW1tZWRp
YXRlbHkoKQogewpAQCAtMjcyLDYgKzI4NSw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6
Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICBkb0NvbW1pdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IDRmYWEyMjk5OTEyYWVjOWM0ZTZhYjRiYTcwMjdk
ODFjODA2ZDQ1ZWUuLjAyN2UzZmNhYTA0NzQyYjc5M2Y4YzM5MmVjZDAxODg1NmMzNDMwOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0OworY2xhc3MgQ0NUZXh0
dXJlVXBkYXRlcjsKIAogY2xhc3MgQ0NTaW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5
LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTU1LDYgKzU2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCk7CiAgICAgdmlydHVhbCBib29sIHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KQEAgLTgzLDYgKzg1LDggQEAgcHJpdmF0
ZToKICAgICBib29sIG1fZ3JhcGhpY3NDb250ZXh0TG9zdDsKICAgICBpbnQgbV90aW1lc1JlY3Jl
YXRlU2hvdWxkRmFpbDsgLy8gVXNlZCBkdXJpbmcgdGVzdGluZy4KICAgICBib29sIG1fbmV4dEZy
YW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lOworCisgICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyOwogfTsKIAogLy8gRm9yIHVzZSBpbiB0aGUgc2luZ2xl
LXRocmVhZGVkIGNhc2UuIEluIGRlYnVnIGJ1aWxkcywgaXQgcHJldGVuZHMgdGhhdCB0aGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggODc0NWM0ZWEwYTcxMGJkZTE4ZWRl
MTgyMGYzMTRmZGI4Y2M4NzJhYi4uZGY3NzI0NDEzZDE3M2MxODA2MjhkNGY4OWI0MGNlODlkM2Ex
MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgImNjL0ND
UHJveHkuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgpAQCAtMzksNyAr
NDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVy
ZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgIDogbV9hbGxvY2F0b3Io
YWxsb2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCiB7CiAgICAgQVNTRVJUKG1fYWxsb2Nh
dG9yKTsKIH0KQEAgLTY2LDIzICs2NiwyMCBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01v
cmVVcGRhdGVzKCkgY29uc3QKIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKLSAgICBzaXplX3QgbWF4SW5k
ZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5zaXplKCkpOwotICAgIGZv
ciAoOyBtX2VudHJ5SW5kZXggPCBtYXhJbmRleDsgKyttX2VudHJ5SW5kZXgpIHsKLSAgICAgICAg
VXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50cnlJbmRleF07CisgICAgd2hpbGUg
KGNvdW50LS0pIHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllcy5s
YXN0KCk7CiAgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2Fs
bG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAg
bV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKICAgICB9CiAKLSAgICBpZiAobWF4SW5kZXggPCBtX2Vu
dHJpZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIElmIG5vIGVudHJp
ZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpID4gMDsKIH0KIAogdm9pZCBDQ1Rl
eHR1cmVVcGRhdGVyOjpjbGVhcigpCiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2Vu
dHJpZXMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJm
NzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNjZWMxNWJiMzAuLmMzN2FmMzRiZWU2NGY3YzBh
ZjViMTAzNjk1MzExNDAyM2M1NjY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgK
QEAgLTU5LDcgKzU5LDYgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgVGV4dHVyZUFsbG9jYXRv
ciogbV9hbGxvY2F0b3I7Ci0gICAgc2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBk
YXRlRW50cnk+IG1fZW50cmllczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5k
ZXggNWU2YThmODYyNjJkZjYyNDQ5NDJlNWI0MmI0MmViYWE4ODgzM2EyZC4uMjYyOTk4NWRjNjU5
NzFlNDZmYmY4Nzg5N2EwZTZiYjIzYmJhMjIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKQEAgLTI5NCw2ICsyOTQsMjAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBt
X3N0YXJ0ZWQgPSBmYWxzZTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OnVwZGF0ZSIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKG1fc3RhcnRlZCk7CisKKyAgICBPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5ID0g
YWRvcHRQdHIobmV3IFVwZGF0ZUVudHJ5KTsKKyAgICBlbnRyeS0+bV90ZXh0dXJlID0gdGV4dHVy
ZTsKKyAgICBlbnRyeS0+bV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKKyAgICBlbnRyeS0+bV9k
ZXN0UmVjdCA9IGRlc3RSZWN0OworCisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVP
bkltcGxUaHJlYWQsIGVudHJ5LnJlbGVhc2UoKSkpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6
OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVy
aW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC0zODAsNiArMzk0LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0
ZWQgPSBmYWxzZTsKIAorICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKIAogICAgIC8vIEJlZm9yZSBhcHBs
eWluZyBzY3JvbGxzIGFuZCBjYWxsaW5nIGFuaW1hdGUsIHdlIHNldCBtX2FuaW1hdGVSZXF1ZXN0
ZWQgdG8gZmFsc2UuCkBAIC00MDQsMTMgKzQxOSwyNSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRp
bQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51
bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRl
VGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSkKK3sKKyAg
ICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NF
UlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCkKKyAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0
cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSkpOworCisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQtPmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+
bV9kZXN0UmVjdCk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9u
SW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQ
ZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAgICBjb21w
bGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDE4LDEwICs0NDUsNiBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0KICAgICBtX3NjaGVkdWxlck9uSW1w
bFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKQEAgLTQ0MywxOSArNDY2LDIwIEBA
IGJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgdGhpcywgMCk7
Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBp
ZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgICAgICByZXR1cm47
CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUgPiAwID8gdGV4
dHVyZVVwZGF0ZXNQZXJGcmFtZSA6IDk5OTk5KTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2Nv
bW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKLSAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotCisgICAgaWYgKG1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOworICAgIH0KIAogICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRl
eCBhMTFiNTI3ODU5OTMxY2ZiOThmODcyNGE1MTI0M2EwOWI0ZWNjM2I5Li5lNzRjYzZmMTgzYzkx
ZGRmMzY5MWZhZjM5ZjVkY2MzYjVkYzA3NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBA
IC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0
ZUNhcGFiaWxpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxl
bWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRo
cmVhZCgpOwpAQCAtODAsNiArODEsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0ZUVu
dHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwor
ICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0
OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJlZ2lu
RnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUs
IFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lKCk7CkBAIC05NCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFz
c093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbklt
cGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUND
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCB1
cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+KTsKICAgICB2
b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwog
ICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwog
ICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBm
Zjc4OWU2OWQ5YmEyYmM2MjdiYjNiMzA4ZDk2ZGE1NzAxZWUwYTg1Li4xNWVkYmFjNjYzNGE3ZGIy
ZGM5MTg3YzYwMDBiMDQyMDA0OWRkMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNyw2ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxh
eVRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRp
bmdzKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcAppbmRleCBkYmMwMjNhZTIyN2YxNjdkMTQ5NWI2ZDY5ZjlhOTE1ZmM2YzIwZTQwLi4wMTI0
OTlkMzg3YjUzZDEyZDExYzZhM2MxMDk2ZWRiZTU5ZWQwYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV2Vi
U2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwg
bV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRl
cihmYWxzZSkKICAgICAsIG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV9k
ZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBA
IC01MTcsNCArNTE4LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldFBhcnRpYWxTd2FwRW5h
YmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0UGFydGlhbFN3YXBFbmFibGVk
KGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBk
YXRlcyhib29sIGVuYWJsZWQpCit7CisgICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxl
ZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGE4MjczNWE1MGVhOGMyM2E0MWEwZGY0ZmRlODcw
YmEzMGVkNTg1NmIuLjI5ZTY1MTgzYjNhZTY0N2VmODhkN2FhOWI3NWZhZTVkMjM5MmI5OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMzIs
MTIgKzEzMiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFp
bnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdF
bmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9v
bCk7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CisgICAg
dmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5
VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9z
ZXR0aW5nczsKICAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29s
IG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAg
ICBib29sIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDg0ZGU3
NzI5Y2NlNWFkOTM2YjUwNjZkNzQxZDcxZmZjZWU1MTA4ODYuLmNlOWI4ZDYzYWZiMzdjZTVhZTVl
M2QzYWNkM2JkZWM4ZDJlNTU4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTMwMTAsNiArMzAxMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBjY1Nl
dHRpbmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdp
bmdFbmFibGVkKCk7CiAgICAgICAgIGNjU2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFn
ZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFsU3dhcEVuYWJsZWQoKTsKKyAgICAgICAgY2NTZXR0aW5n
cy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGluZ3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRlcygp
OwogCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMp
KTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRl
cnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXgg
NDFmZTRmYjY1OWI5NDA1MWM2N2VhYmYzZWVhOWMwODQ2NzZlZWFiNC4uNGJlMDIxNmIxNmVjYTli
ZGRlMThlZGZkYzU4MTYwMDk3YThjYTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC05NzYsNiArOTc2LDE0IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAg
ICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJsaWMg
Q29udGVudExheWVyRGVsZWdhdGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5v
dGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorfTsKKwogY2xhc3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXll
ckRlbGVnYXRlIDogcHVibGljIENvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICBU
ZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUoQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCkK
QEAgLTk5Nyw0NyArMTAwNSwxMTkgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgOiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ29udGVudExheWVyRGVsZWdhdGUgKmRlbGVnYXRlKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmco
ZGVsZWdhdGUpKTsgfQorICAgIGNsYXNzIENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICAgICAgcHVi
bGljOgorICAgICAgICAgICAgVGV4dHVyZShDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4
dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAg
ICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgICAgICAsIG1fdGV4dHVy
ZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CiAK
LSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291
bnQ7IH0KLSAgICBpbnQgaWRsZVBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1faWRsZVBh
aW50Q29udGVudHNDb3VudDsgfQotICAgIHZvaWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7
IG1fcGFpbnRDb250ZW50c0NvdW50ID0gMDsgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50ID0gMDt9
CisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4g
bV90ZXh0dXJlLmdldCgpOyB9CiAKLSAgICBpbnQgdXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3Vw
ZGF0ZUNvdW50OyB9Ci0gICAgdm9pZCByZXNldFVwZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50
ID0gMDsgfQorICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90
ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0
b3IpOworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJl
Y3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3du
UHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihs
YXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFn
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0
aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAgICAgIH0KKworICAg
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAq
LywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50
UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sYXllci0+cGFpbnRDb250ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsg
fQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6IG1f
bGF5ZXIobGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENvbnRlbnRMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVI
b3N0KikKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICAgICAgbV9wYWludENvbnRlbnRzQ291
bnQrKzsKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENvbnRlbnRMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CiAgICAgfQorICAgIHZpcnR1YWwgTGF5ZXJU
ZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRM
YXllclRleHR1cmVVcGRhdGVyLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50
Q29udGVudHNJZkRpcnR5KCkKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCiAgICAgewotICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1f
aWRsZVBhaW50Q29udGVudHNDb3VudCsrOworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgcHJl
cGFyZVRvVXBkYXRlKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXIm
IHVwZGF0ZXIpCisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkK
ICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAg
ICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwor
ICAgICAgICBpZGxlUHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgfQogCisgICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoKSB7IG1fcHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGludCBwcmVwYXJl
VG9VcGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fcHJlcGFyZVRvVXBkYXRlQ291bnQ7IH0KKworICAg
IHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZSgpIHsgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQr
KzsgfQorICAgIGludCBpZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSB7IHJldHVybiBtX2lkbGVQ
cmVwYXJlVG9VcGRhdGVDb3VudDsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3Bh
aW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0
dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBt
X3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1
cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBk
YXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91
cGRhdGVSZWN0Q291bnQ7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDb250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUp
CiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9w
cmVwYXJlVG9VcGRhdGVDb3VudCgwKQorICAgICAgICAsIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNv
dW50KDApCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX2lk
bGVQYWludENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAg
ICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAgICAgICwgbV91cGRhdGVSZWN0Q291bnQo
MCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgICAgICBz
ZXRJc0RyYXdhYmxlKHRydWUpOwogICAgIH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBpbnQgbV9wcmVw
YXJlVG9VcGRhdGVDb3VudDsKKyAgICBpbnQgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQ7CiAg
ICAgaW50IG1fcGFpbnRDb250ZW50c0NvdW50OwotICAgIGludCBtX2lkbGVQYWludENvbnRlbnRz
Q291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3Vu
dDsKKyAgICBpbnQgbV91cGRhdGVSZWN0Q291bnQ7CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNo
YW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxkIG5vdCBwcmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2Vz
IGZyb20gYmVpbmcgdXBkYXRlZCBkdXJpbmcgY29tbWl0LgpAQCAtMTA2NCwxNiArMTE0NCwxOSBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAg
IC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4K
LSAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0Nv
dW50KCkpOworICAgICAgICAvLyBwcmVwYXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wcmVw
YXJlVG9VcGRhdGVDb3VudCgpKTsKIAotICAgICAgICAvLyBpZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlCi0gICAgICAgIEVYUEVDVF9FUSgxLCBt
X3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQYWludENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8v
IGlkbGVQcmVwYXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAg
ICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRl
Q291bnQoKSk7CisKKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBh
aW50Q29udGVudHNDb3VudCgpKTsKIAotICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQg
b2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1f
dXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAg
ICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENv
bnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8v
IGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91
cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBt
X3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVh
ciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAgIG1f
dXBkYXRlQ2hlY2tMYXllci5jbGVhcigpOwpAQCAtMTIzOSw3ICsxMzIyLDcgQEAgY2xhc3MgVGVz
dExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUZXN0TGF5ZXJDaHJvbWl1bSgpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpCiAgICAgewogICAgICAgICBtX29jY2x1ZGVkU2NyZWVuU3BhY2UgPSBvY2Ns
dWRlZFNjcmVlblNwYWNlOwogICAgIH0KQEAgLTEyOTgsNiArMTM4MSw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOwogCkBAIC0xMzE1LDYgKzEzOTksNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIApAQCAtMTMzMyw2ICsxNDE4LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBs
ZXRlKCk7CiAKQEAgLTEzNTMsNiArMTQzOSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwogCkBAIC0xMzc1LDYgKzE0NjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApA
QCAtMTM5Nyw2ICsxNDg1LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE0
MjAsNiArMTUwOSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVw
YXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0xNDQzLDYg
KzE1MzMsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRv
VXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKaW5kZXggMWRmMjdjMDExMTliMjY1N2U4MmUyYTA3OTdiMWMwMWI1MGQzMDVlYi4uYjIzMjdk
MzVlOTUwMjUxNTI2YThlOTUwY2FmMzkyMzgxMDQwOTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ0NhbnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKICNpbmNsdWRlIDxnbW9j
ay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC02OSw2ICs2OCwyMSBAQCBw
dWJsaWM6CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUsIHZvaWQodW5zaWduZWQsIGNv
bnN0IEludFNpemUmLCBHQzNEZW51bSkpOwogfTsKIAorY2xhc3MgTW9ja1VwZGF0ZUhhbmRsZXIg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CitwdWJsaWM6CisgICAgTW9j
a1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQoY29udGV4dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRv
cikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQorICAgIHsKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVj
dCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0Nv
bnRleHQzRCogbV9jb250ZXh0OworICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwor
fTsKKwogfSAvLyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTIsNyArMTA2
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAq
c3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwogCiAgICAg
ICAgIE1vY2tUZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvck1vY2s7Ci0gICAgICAgIENDVGV4dHVy
ZVVwZGF0ZXIgdXBkYXRlcigmYWxsb2NhdG9yTW9jayk7CisgICAgICAgIE1vY2tVcGRhdGVIYW5k
bGVyIHVwZGF0ZUhhbmRsZXJNb2NrKGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jayk7
CiAKICAgICAgICAgY29uc3QgSW50U2l6ZSBzaXplKDMwMCwgMTUwKTsKICAgICAgICAgY29uc3Qg
c2l6ZV90IG1heFRleHR1cmVTaXplID0gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7
CkBAIC0xNDAsNyArMTU0LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPmNvbnRlbnRD
aGFuZ2VkKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwog
ICAgICAgICBSZWdpb24gb2NjbHVkZWRTY3JlZW5TcGFjZTsKLSAgICAgICAgY2FudmFzLT5wYWlu
dENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgY2FudmFzLT5w
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICBjYW52
YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShjYW52YXMt
Pm5lZWRzRGlzcGxheSgpKTsKICAgICAgICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CkBAIC0xNDgsNyArMTYzLDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNy
ZWF0ZUNDTGF5ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0
PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0g
ICAgICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQu
Z2V0KCksIHVwZGF0ZXIpOworICAgICAgICAgICAgY2FudmFzLT5mb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKHVwZGF0ZUhhbmRsZXJNb2NrKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0
ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBk
YXRlclRlc3QuY3BwCmluZGV4IGJkYmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2
NzMuLjBmN2VkNTcwZWQ2ZmU0Mjc4OTY3ZmUzYjFlNWVhZGI3NDQ0ZTA5MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRl
c3QuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwg
dGVzdE9wYXF1ZVJlY3RQcmVzZW50QWZ0ZXJPcGFxdWVQYWludCkKICAgICBvcGFxdWVSZWN0ID0g
SW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNo
cm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRl
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwg
NDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJl
Y3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQ
dHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRl
ciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWlu
dGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRS
ZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0
KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJ
bnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3Qg
PSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVy
Q2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0g
ICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRT
aXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29u
dGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAm
b3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCks
IG9wYXF1ZVJlY3QpOwogfQogCkBAIC0xMjEsMTkgKzEyMSwxOSBAQCBURVNUKExheWVyVGV4dHVy
ZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50
KQogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5l
dyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwg
ZmFsc2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwg
NDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVy
LT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAw
KSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBw
YWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEp
KTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBv
cGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExh
eWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVh
c2UoKSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXIt
PnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDAp
LCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAw
LCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIFRFU1QoTGF5ZXJU
ZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVy
V2l0aE9wYXF1ZVBhCiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVy
Q2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRh
dGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJl
Y3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3Qp
OworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIElu
dFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50
UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9t
aXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAg
dXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJ
bnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVS
ZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDAp
LCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9
IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJD
aHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAg
ICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1
ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQw
MCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE3NywyMSAr
MTc3LDIxIEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90
UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE5vbk9wYXF1CiAgICAgcGFpbnRlciA9IGFkb3B0UHRy
KG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2Uo
KSwgZmFsc2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5w
cmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDAp
LCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0
KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsK
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAog
ICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBU
ZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVh
c2UoKSwgZmFsc2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0
MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRS
ZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0
KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsK
IAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5l
dyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEZy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50
ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRl
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwg
NDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGIwMzUwZGI0OTVmYjU2MmIzNTgxNDA4N2VmNjQxMGQ3
NjE5NWJhNzUuLjQ3MzNlMTg2Y2VkZTcyYmM4MmRhZjI4NTNjZDcxZjJmNmJiZDA1NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0
Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1
ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgog
I2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIg
Ly8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVw
ZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KIApAQCAtNDgsMTAgKzQ4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAog
bmFtZXNwYWNlIHsKIAotY2xhc3MgRmFrZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVy
ZUFsbG9jYXRvciB7CitjbGFzcyBGYWtlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1
cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUaWxl
ZExheWVyQ2hyb21pdW07CkBAIC02MCwyMiArNTksMjYgQEAgY2xhc3MgRmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAgICBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRl
eHR1cmUpIHsgfQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKKyAgICAgICAgdmly
dHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAg
ICAgfTsKIAotICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgw
KSB7IH0KKyAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wYWludENvdW50KDApIHsg
fQogICAgIHZpcnR1YWwgfkZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBT
ZXRzIHRoZSByZWN0IHRvIGludmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFy
ZVRvVXBkYXRlKCkuIEFmdGVyIHRoZSBuZXh0CiAgICAgLy8gY2FsbCB0byBwcmVwYXJlVG9VcGRh
dGUoKSB0aGUgcmVjdCBpcyByZXNldC4KICAgICB2b2lkIHNldFJlY3RUb0ludmFsaWRhdGUoY29u
c3QgSW50UmVjdCYsIEZha2VUaWxlZExheWVyQ2hyb21pdW0qKTsKIAotICAgIC8vIE51bWJlciBv
ZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tlZC4KLSAgICBpbnQgcHJlcGFy
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0KLSAgICB2b2lkIGNsZWFy
UHJlcGFyZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KKyAgICAvLyBOdW1iZXIgb2Yg
dGltZXMgcGFpbnRDb250ZW50cyBoYXMgYmVlbiBpbnZva2VkLgorICAgIGludCBwYWludENvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9wYWludENvdW50OyB9CisgICAgdm9pZCBjbGVhclBhaW50Q291
bnQoKSB7IG1fcGFpbnRDb3VudCA9IDA7IH0KIAogICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0
KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9w
YXF1ZVBhaW50UmVjdDsgfQogCkBAIC04NCwxMCArODcsMTAgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1
cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJl
KE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxl
ZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxl
ZFRleGVsRm9ybWF0UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRS
ZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQs
IEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogCiBwcml2YXRlOgotICAgIGludCBtX3By
ZXBhcmVDb3VudDsKKyAgICBpbnQgbV9wYWludENvdW50OwogICAgIEludFJlY3QgbV9yZWN0VG9J
bnZhbGlkYXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBJbnRSZWN0IG1f
b3BhcXVlUGFpbnRSZWN0OwpAQCAtMTQ1LDE1ICsxNDgsMjUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpza2lwc0RyYXcoKTsKICAgICB9CiAKKyAgICB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICBGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlciogZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX2Zh
a2VUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciog
dGV4dHVyZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2Ns
dWRlZFNjcmVlblNwYWNlICovKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKICAgICB7CiAgICAg
ICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCkpOwogICAgIH0KIAorICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgeworICAgICAgICBwYWludENv
bnRlbnRzKHZpc2libGVMYXllclJlY3QoKSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKSB7IH0K
IApAQCAtMTg4LDkgKzIwMSw5IEBAIHZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnNldFJl
Y3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCwgRmFrZVRpbGVkCiAgICAgbV9sYXll
ciA9IGxheWVyOwogfQogCi12b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZs
b2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7Ci0g
ICAgbV9wcmVwYXJlQ291bnQrKzsKKyAgICBtX3BhaW50Q291bnQrKzsKICAgICBtX2xhc3RVcGRh
dGVSZWN0ID0gY29udGVudFJlY3Q7CiAgICAgaWYgKCFtX3JlY3RUb0ludmFsaWRhdGUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIG1fbGF5ZXItPmludmFsaWRhdGVSZWN0KG1fcmVjdFRvSW52YWxpZGF0
ZSk7CkBAIC0yMDcsMTQgKzIyMCwxNCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEaXJ0eVRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwog
ICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGls
ZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50
cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwg
c2lkZS4KQEAgLTIyNyw3ICsyNDAsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1
c2hEaXJ0eVRpbGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgog
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUg
Zmlyc3QgdGlsZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBw
YWludGVkLgpAQCAtMjQyLDggKzI1Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludFRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRS
ZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2Nh
dG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0
dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRp
bGUgc2l6ZSBpcyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0aCBvbmUgdmlzaWJsZSB0aWxl
IGluIHRoZSBjZW50ZXIuCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKQEAg
LTI1OSw3ICsyNzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFp
bnRUaWxlcykKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGls
ZXMgaW4gdGhlIGNlbnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQo
dmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIp
OwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAv
LyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMjcyLDcgKzI4
NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQog
ICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKICAgICAgICAgRVhQ
RUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAgICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKLSAgICAgICAgbGF5ZXItPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAgIGxheWVyLT5mb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90
ZWN0QWxsVGV4dHVyZXMoKTsKICAgICB9CkBAIC0zMDgsOCArMzIxLDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+
IGxheWVySW1wbCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAg
ICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVw
ZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxl
cjsKIAogICAgIC8vIFRoaXMgaW52YWxpZGF0ZXMgOSB0aWxlcyBhbmQgdGhlbiBwYWludHMgb25l
IHZpc2libGUgdGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwpAQCAt
MzIwLDcgKzMzMiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0
T2ZNZW1vcnkpCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRp
bGVzIHN1cm91bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVk
c0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBA
IC0zMzMsNyArMzQ1LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRP
dXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBp
ZGxlIHBhaW50IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAgIEVYUEVDVF9GQUxTRShs
YXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVy
SW1wbC5nZXQoKSk7CiB9CiAKQEAgLTM0NCwxNCArMzU2LDE0IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5
ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZh
a2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRl
ciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwog
CiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFu
ZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEw
MCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAg
ICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5
ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJv
dGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAgLTM2MCwyMiArMzcyLDI0IEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogCiAgICAgdGV4dHVy
ZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAgICAgLy8gSW52b2tlIHBy
ZXBhcmVUb1VwZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0
ZSBzaG91bGRuJ3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVy
LgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwot
ICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZUNvdW50KCkpOworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cGFpbnRDb3VudCgpKTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0
KDAsIDAsIDUwLCA1MCkpOwogICAgIC8vIHNldFJlY3RUb0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52
YWxpZGF0ZVJlY3QoKSBiZWluZyBpbnZva2VkIGZyb20gcHJlcGFyZVRvVXBkYXRlLgogICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJl
Y3QoMjUsIDI1LCA1MCwgNTApLCBsYXllci5nZXQoKSk7Ci0gICAgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CisgICAgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPmNsZWFyUGFpbnRDb3VudCgpOwogICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIEVYUEVDVF9FUSgxLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwotICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAgIGxh
eWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBhaW50Q291bnQoKSk7Cisg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUGFpbnRDb3VudCgpOwog
ICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9VcGRh
dGUgaW52b2tlZCBpbnZhbGlkYXRlLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOworICAgIGxheWVyLT5wYWludENvbnRlbnRz
KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnBhaW50Q291bnQoKSk7CiB9CiAKIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVk
KQpAQCAtMzg2LDggKzQwMCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5
VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyV2l0aFNj
YWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVk
Qm91bmRzKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRv
ciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVy
ZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIEludFJlY3QgbGF5
ZXJCb3VuZHMoMCwgMCwgMzAwLCAyMDApOwogICAgIEludFJlY3QgY29udGVudEJvdW5kcygwLCAw
LCAyMDAsIDI1MCk7CkBAIC00MDAsMjAgKzQxMywyMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICAv
LyBIb3dldmVyLCBpdCBzaG91bGQgc3RpbGwgYmUgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50
IHNwYWNlLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRz
KGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhh
bmRsZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMw
MCAqIDAuOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVz
IGFyZSB1cGRhdGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0
ZSB0aGUgYm91bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29u
dGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsK
LSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBs
YXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9h
dFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIFBhcnRp
YWwgcmUtcGFpbnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgdGhlIHVwZGF0ZVJlY3Qg
aW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIEludFJlY3QgcGFydGlhbERh
bWFnZSgzMCwgMTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChwYXJ0aWFs
RGFtYWdlKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVj
dCg0NSwgODAsIDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CiAKQEAgLTQ0MiwxOCAr
NDU4LDE1IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0
KQogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSBvbmUgb2YgdGhlIHR3byBs
YXllcnMuCiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDMwMCAqIDMwMDsgLy8gNCBieXRlcyBw
ZXIgcGl4ZWwuCiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwot
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7Ci0KICAgICBj
Y0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgIGNjTGF5ZXJUcmVl
SG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAzMDApKTsKICAgICBjY0xheWVyVHJl
ZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyht
ZW1vcnlMaW1pdCk7CisgICAgY2NMYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAg
ICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBk
YXRlcik7CiAKLSAgICAvLyBXZSdsbCBza2lwIHRoZSByb290IGxheWVyLgotICAgIEVYUEVDVF9U
UlVFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwotICAgIEVYUEVDVF9GQUxTRShjaGlsZExheWVy
LT5za2lwc0RyYXcoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkp
OworICAgIC8vIFdlJ2xsIHNraXAgdGhlIGNoaWxkIGxheWVyLgorICAgIEVYUEVDVF9UUlVFKGNo
aWxkTGF5ZXItPnNraXBzRHJhdygpKTsKIAogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29t
cGxldGUoKTsKIApAQCAtNDYyLDYgKzQ3NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogCiAgICAgLy8gTmVlZCB0byBzZXQgdGhlIG1heCBsaW1p
dCBhZ2FpbiBhcyBpdCBnZXRzIG92ZXJ3cml0dGVuIGJ5IHVwZGF0ZUxheWVycygpLgogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5zZXRNYXhNZW1vcnlMaW1p
dEJ5dGVzKG1lbW9yeUxpbWl0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0
ZSgpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgRVhQRUNUX0ZB
TFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCkBAIC00OTMsNiArNTA3LDcgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAg
ICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwor
ICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2Ns
dWRlZCk7CkBAIC01MDMsNiArNTE4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBs
YXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBsYXllci0+c2V0T3BhcXVlKGZhbHNl
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50
cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXIt
PmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTE0LDYgKzUzMCw3
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRS
ZWdpb24pCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBh
aW50UmVjdChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwor
ICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2Ns
dWRlZCk7CkBAIC01MjMsNiArNTQwLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBs
YXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3
aXRob3V0IGludmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9jY2x1ZGVkLgog
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qo
SW50UmVjdCgpKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwor
ICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQg
PSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2Ns
dWRlZCk7CkBAIC01NDAsNiArNTU4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBs
YXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50
cmFuc2xhdGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVp
Z2h0KCkgLyAyLjApOwogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5T
cGFjZVRyYW5zZm9ybSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRz
KTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1
ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uo
b2NjbHVkZWQpOwpAQCAtNTU1LDYgKzU3NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zv
cm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRz
LmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0pOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcyk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CiAKICAgICBv
Y2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNw
YWNlKG9jY2x1ZGVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125710</attachid>
            <date>2012-02-06 14:44:48 -0800</date>
            <delta_ts>2012-02-07 17:28:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120206174447.patch</filename>
            <type>text/plain</type>
            <size>122730</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2ODQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdiYjE1YjJlMWU3MThj
YWExNDg1OTRmYWVhNzY4MmYzYTgyNzUyMy4uYWFlZDRjNjI2ZDVkYWIzNjAxMDQxZTE1YzhmODY4
NGFmNWU4MTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0wMi0wNiAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN0YXJ0IHVwbG9hZGlu
ZyB0ZXh0dXJlIHJlc291cmNlcyBhcyBzb29uIGFzIGVub3VnaCBjb250ZW50cyBoYXMKKyAgICAg
ICAgYmVlbiBwYWludGVkIGZvciBvbmUgdGV4dHVyZSB0byBiZSB1cGRhdGVkLgorICAgICAgICBM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkIGJ5Cisg
ICAgICAgIExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlcGVhdGVkbHkgZ28gdGhyb3VnaCBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0OiBU
aWxlZExheWVyQ2hyb21pdW1UZXN0LnB1c2hEaXJ0eVRpbGVzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExh
eWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgor
ICAgICAgICAoVXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKENhbnZhczJETGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKEltYWdlTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAg
IChIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXI6On5IYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkxheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFBsdWdpbkxheWVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOgorICAgICAgICAoU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFRpbGVkTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXll
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
OjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6CisgICAgICAgIChV
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViR0xMYXllckNocm9taXVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRh
dGVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjp+VXBkYXRlSGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NldHRpbmdzOjpDQ1NldHRp
bmdzKToKKyAgICAgICAgKENDU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToK
KyAgICAgICAgKFVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaDoKKyAgICAgICAgKENDUHJveHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NTaW5nbGVUaHJlYWRQcm94eSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NU
ZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRh
dGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6Cisg
ICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAgICAgICAgKFVwZGF0ZUVudHJ5KToKKwogMjAxMi0w
Mi0wNiAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBC
ZWZvcmUgYWNjZXNzaW5nIGEgZnJhbWUncyBzY3JpcHQgY29udHJvbGxlciBpbiBWOCBiaW5kaW5n
cywgZmlyc3QgY2hlY2sgdGhhdCB0aGUgZnJhbWUgYWN0dWFsbHkgZXhpc3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDYyMzVjMGMyMTAyMzIxYWI2NDdkOTY1M2FhMDhlYzYwZjRiNmRi
ZTAuLmYwMTk5NmZmYmE2NmQ4NjdmN2NiNDFkYTM4MDY5ZmE2NzM2ZmFhZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTItMDItMDYgIERhdmlkIFJldmVt
YW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVwbG9hZCB0
ZXh0dXJlcyBpbiBwYXJhbGxlbCB3aXRoIHBhaW50aW5nIGNvbnRlbnRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZGVsYXlUZXh0dXJlVXBkYXRl
cyBzZXR0aW5nIHRoYXQgaXMgdXNlZCBieSBjb21wb3NpdG9yIHRvIGRldGVybWluZQorICAgICAg
ICBpZiB0ZXh0dXJlIHVwbG9hZHMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwgYWxsIHBhaW50aW5n
IGhhcyBjb21wbGV0ZWQuCisgICAgICAgIFVwZGF0ZSB1bml0IHRlc3RzOiBDQ0xheWVyVHJlZUhv
c3RUZXN0T3BhY2l0eUNoYW5nZSBhbmQKKyAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC4K
KworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRp
bmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0
dXJlVXBkYXRlcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuaDoKKyAgICAgICAgKFdlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNldHRpbmdzSW1wbDo6ZGVsYXlUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHA6CisgICAgICAgIChNb2NrTGF5ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChXVEY6Ok1vY2tM
YXllckRlbGVnYXRlOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVs
ZWdhdGU6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpw
cmVzZXJ2ZXMzRCk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVnYXRlOjpub3RpZnlTeW5j
UmVxdWlyZWQpOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1
cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRl
eHR1cmUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdCk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6bGF5ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnRleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFy
ZVRvVXBkYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OnByZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9VcGRhdGUpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBy
ZXBhcmVUb1VwZGF0ZUNvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50c0NvdW50KToKKyAg
ICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnByZXBh
cmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OnByZXBhcmVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdFNldFZpZXdwb3J0U2l6ZTo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdU
Rjo6VGVzdExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb246OmJlZ2luVGVzdCk6CisgICAg
ICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6CisgICAg
ICAgICogdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6Cisg
ICAgICAgIChXVEY6OkZha2VIYW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFRleHR1cmUp
OgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIpOgorICAgICAgICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAo
V1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb3VudCk6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpjbGVhclBhaW50Q291bnQpOgorICAgICAgICAoV1RG
OjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKEZha2VU
aWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OlRFU1QpOgorCiAy
MDEyLTAyLTAzICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBTdXBwb3J0IGRldGFjaGluZyBUZXh0dXJlTWFuYWdlciBmcm9tIE1hbmFn
ZWRUZXh0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IDBkOTdlNTJhZWRlMGY5ODBhZGExNWRlMGExNGExZDI4ZDg2YTFlODgu
LmRkMDM1M2QxNjNjZGJmMzk5ZDc4MWJmMzZmOWRmYjU3ZWU2YzVlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAg
OiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVy
KHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtNzgsNyArNzgsNyBAQCBMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
c2FtcGxlZAogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9
CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGlu
Z09wYXF1ZVJlY3QpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNp
emUpOwogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgICAg
IGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDog
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZh
czo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7CiAgICAgY2Fu
dmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5zZXRUcmFja09wYXF1ZVJlZ2lvbighbGF5ZXJJc09w
YXF1ZSk7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRl
bnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRl
bnRzU2NhbGUpOwogCiAgICAgaWYgKCFsYXllcklzT3BhcXVlKQogICAgICAgICAqcmVzdWx0aW5n
T3BhcXVlUmVjdCA9IGNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKS0+b3BhcXVlUmVnaW9uKCku
YXNSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKaW5kZXggNGUxNjIyOTViODZlMDA4OTNjMzNlZjAzZDRiNjJkMmMxZTUyYmQ1Zi4uMmFi
YWM5NmEwMzBkYjA5Mjg0OTQzY2YzOGI0OTRjZDgwZWM5MGM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBj
bGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIHBvc3NpYmxlLgogY2xhc3MgQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
IHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7
CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNy
ZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxl
U2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVz
dWx0aW5nT3BhcXVlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGUyYWI3OTgzODZm
Y2NmMDcwMTNkNjZiYjNmMjhmZTdkOGY0ZWMyN2MuLjM0YWQyNjA5NTMxY2ExZjA0NDk3ZjE0YjUz
NzJlNjIwNWEyMjJhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC04NiwxMCArODYsMTAgQEAg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4
ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2Nh
bGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9h
dCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLSAgICBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QsIHRpbGVT
aXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwor
ICAgIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29u
dGVudFJlY3QsIHRpbGVTaXplLCBib3JkZXJUZXhlbHMsIGNvbnRlbnRzU2NhbGUsIHJlc3VsdGlu
Z09wYXF1ZVJlY3QpOwogfQogCiB2b2lkIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMWM1NjRjZGMxODNlYTQ5NTkxZjY5
MDZlZmViZDNhOGQ5YjVmODBjYy4uNmQ3MjI1ZjMyMmQ2YTVhMGI2NjJjYzE4MmYwZTkxNTdiZjY2
NDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4
dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNh
bXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50
UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBp
bnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdP
cGFxdWVSZWN0KTsKICAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIEdDM0RlbnVtIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IHVpbnQ4X3QqIHBpeGVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDE2NjZiNjE4ZTExYjJmZWIxMzZkMDc1YmZlMjI3OTI4ZTBkMzNlY2MuLjY1Y2Q3
ODY0YjU1ZmUxZjJmOGEzYzJhZTBkMWViMDQ1MGQzZWM3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDUsNiArNDUsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IElu
dFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwogUGFzc1JlZlB0cjxDYW52YXMyRExh
eWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQsIHNpemUpKTsKQEAgLTU4LDYgKzcy
LDcgQEAgQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEkKICAgICAsIG1fZmJvKDApCiAgICAgLCBtX3Vz
ZURvdWJsZUJ1ZmZlcmluZyhDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkpCiAgICAgLCBtX2NhbnZh
cygwKQorICAgICwgbV91cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMp
KQogewogICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKICAgICAgICAgR0xDKG1fY29udGV4
dCwgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwpAQCAtOTUsNyArMTEw
LDcgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnNldENhbnZhcyhTa0NhbnZhcyogY2Fu
dmFzKQogICAgIG1fY2FudmFzID0gY2FudmFzOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVl
blNwYWNlICovKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQogewogICAgIGlm
ICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMywxMiArMTQ4LDEyIEBA
IHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFu
YWdlciogdGV4dHVyZU1hbmFnZXIpCiAgICAgICAgIG1fZnJvbnRUZXh0dXJlLmNsZWFyKCk7CiB9
CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQor
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IgKmFsbG9jYXRvcikKIHsK
ICAgICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRU
ZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBk
YXRlci5hbGxvY2F0b3IoKSk7CisgICAgbV9mcm9udFRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRl
eHQsIGFsbG9jYXRvcik7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKQEAgLTE0OSw2ICsx
NjQsMTEgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+Zmx1c2goKSk7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7
CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJ
bnRSZWN0KCkpOworfQorCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDg3NzIyNGY0MWVhMWI1NWNlOWUwMjBhMDhmMmU4NDE0MjM3NjhkNGYuLmRkOTdjYjQwZDhl
ZDhlYWE3MTc0NTk2OWUyM2I2MDliYWIzNjQ0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5oCkBAIC00Nyw2ICs0NywyMyBAQCBjbGFzcyBSZWdpb247CiAvLyBBIGxheWVyIGNv
bnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFzCiBjbGFzcyBDYW52YXMyRExheWVyQ2hy
b21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3Mg
VXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3Jl
YXRlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAg
cHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNo
cm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXllckNocm9taXVtKiBtX2xheWVyOworICAg
IH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFNpemUmKTsKICAgICB2aXJ0dWFsIH5DYW52
YXMyRExheWVyQ2hyb21pdW0oKTsKIApAQCAtNTUsMTAgKzcyLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0Nv
bnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZpcnR1YWwgdm9p
ZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwogICAg
IHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYW51cFJlc291cmNlcygpOwpAQCAtODIsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fdXNlRG91YmxlQnVmZmVyaW5nOwogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9m
cm9udFRleHR1cmU7CiAgICAgU2tDYW52YXMqIG1fY2FudmFzOworICAgIE93blB0cjxVcGRhdGVy
VGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRjNmJkN2Y1MzgyYjUyYjBlZWZi
YTEwMzE2NmZjMDhmZS4uMWYzYjY0NGVlNjZiYmQwNzUxN2FjNDg1Yzk1Y2IyOGRkMDFlMjJhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDYg
KzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJl
KSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4NjUzM2JiODVkNjllN2NmNjQ3
ODJiMjZhZjExMTM1YWMuLjdmOGQzZDU5ZDk5OWUzNjhhNWE4ZWEyYjY0MTBkNjY1MmZlNGY2ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQxLDYgKzQx
LDE5IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogLy8gdGhlaXIgcmVzcGVjdGl2ZSBw
YWludENvbnRlbnRzIGltcGxlbWVudGF0aW9ucy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3Mg
VGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAg
cHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRl
eHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4g
bV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApp
bmRleCBhYTdmYjVjZjQ2YjA2MjU3ZmY1YmYyMzVmYjNiZjA3ODQ1MzU0OTlmLi5mZjQ3ZTI3MmI2
YWMxOWY4ZTA3ZDVjZWFhNzVkOTNkZGM1ZjdhNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06
OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJh
d3NDb250ZW50KCkgJiYgbV9kZWxlZ2F0ZTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNw
YWNlICovKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0
eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCiB7CiAgICAgdXBkYXRl
VGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVl
ZGVkKCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblMKICAgICBt
X25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpp
ZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRs
ZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEyMyw2ICsxMjMsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICAgICAgc2V0TmVlZHNDb21taXQo
KTsKIH0KIAordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
KQoreworICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiB7CiAgICAg
aWYgKG1fdGV4dHVyZVVwZGF0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRl
eCAzZTg2ODZkMGEwZGJjZTJjMWU4YzYxYjYwMTgxNDAyNjM3NjZiZjIzLi42ODAzMDk5NjExYmE1
OTlmY2U1MmFiYTZhNmVhMzdkNzIyNTI5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKQEAgLTU5LDggKzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJEZWxlZ2F0ZSgp
IHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVu
dHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDE5ZGZhMmYwMDZjOTg4NDc3MGU2NzZjNDU4NWJlOTQ2
NzEzNGYzYjMuLjhmMmRlOGEwZTg5M2Q0MWRhZjMwYjY1MWYxNTM2NTRjZDM1YTcxMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgUGFzc093
blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsCiB9CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0
ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAg
IDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90
ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggNGExMGM4NThlNGNkYThjMjUyYWMxNmRmYTA3ZDA5YTVkOTA4ZWVjMy4uNzQzZWQ2
ZWJhZmJjODI3ZTYyNzQ0ODQ0MWFkM2Y5OTgzNzlhYjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gaW50ZXJtZWRp
YXRlIGZyYW1lYnVmZmVyIGFuZCB0aGVuIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gdGV4
dHVyZSBvbmNlIGRvbmUuCiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDFlNDRlODcwMjNmZWQ1ZjQ2OTM1ZGY3YzNmYmQzNjJlNTRh
YjA0MjkuLmY3MzY2MjQ2YTQ5OGI1NmY3YzMxNThmZDJhMGNkMDA2OWNkZGNkYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiAjaW5jbHVkZSAi
SW1hZ2VMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFn
ZS5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2Vk
VGV4dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVySW1wbC5oIgpAQCAtNDYsMTAgKzQ2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIg
ewogcHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoSW1hZ2VM
YXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKHRleHR1cmUpCiAgICAgICAgICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0
ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0
IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9h
dCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICov
KQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUp
OwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQogCi12
b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9u
JiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNl
ICovKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKICAgICBpZiAobV9u
ZWVkc0Rpc3BsYXkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggMjEyN2I4NTdj
NWMwYzllMWVmMGM0ZWUxOTA0ZWFiN2FiMWM3ZjIxZS4uOWM3ZDY1ZDE3ZGMwOWRmMjBjNDBhMDUx
NTFjYWFmZDMyNTMwM2NmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGVudHNTY2FsZSgp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IDc2NGY3MzAxNTViNTQ1MzdjZGE0YzczODFiM2ZkM2JjYjc5NjA2NGQuLjU3
YzcxNjYyNTM2MzFjY2M5N2U3NTk4YWZmODc0YjFiZjAwMjQzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5oIgog
I2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAtNTMsNyArNTQsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVI
b3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwog
Y2xhc3MgUmVnaW9uOwogCkBAIC0xNTQsOSArMTU0LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBj
bGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzRHJhd2FibGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29u
c3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVy
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVn
aW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaWRs
ZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNU
ZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAxNzlmZWE2ZTEyYmYxMDNjNWIwNzQz
NWNmMjRhM2E0OGY4Y2Q5MzIzLi41ZTFlOGUyNjBmMzBiM2U4NzU1ZGRmOWI5N2QwOGJiZDExYmJk
NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00OCwxNCArNDgsMTYgQEAg
cHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0g
ICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgp
OyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiAw
OyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBt
X3RleHR1cmUodGV4dHVyZSkgeyB9CisgICAgfTsKKworICAgIGNsYXNzIEhhbmRsZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGFuZGxlcigpIHsgfQogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTczLDggKzc1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7CiAgICAgLy8gVGhlIHxyZXN1bHRpbmdPcGFx
dWVSZWN0fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9mIHRoZSBsYXllciB0aGF0IHdhcyBwYWludGVk
IG9wYXF1ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtlZCBvcGFxdWUgaW4gdGhlIHVwZGF0ZXIsCiAg
ICAgLy8gdGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQgYmUgaWdub3JlZCBpbiBwcmVmZXJlbmNlIGZv
ciB0aGUgZW50aXJlIGxheWVyJ3MgYXJlYS4KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0
aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2Fs
ZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3QqIC8qIHJlc3Vs
dGluZ09wYXF1ZVJlY3QgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6
ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywg
SW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgPSAwOwogCiAgICAgLy8gU2V0IHRy
dWUgYnkgdGhlIGxheWVyIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgZW50aXJlIG91dHB1dCBp
cyBnb2luZyB0byBiZSBvcGFxdWUuCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDc5YWQyZWRlOTU0NzU1
ODJiODcwNzI5YTcxYTVkNjFiZDI4YWI0Yi4uOWZhNjdkNDEwMjNlNDUxOWM3OWU1N2FiNjcyY2Zk
ZTk5N2FhZWQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSgpCiB7CiB9
CiAKLXZvaWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3Zv
aWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAg
aWYgKCFtX25lZWRzRGlzcGxheSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDg0MzY1Njk1YmIxZGRjNjUyMzFhZGQwNGY2ZjBkODMwMDA5MWUwZDAu
LjVhMDM4YjJiZjc0MzczYjdkMTEyZjY0ZGFiMWRkYTNiMjMyZTkwY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUGx1Z2luTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVDQ0xheWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDBkOTc0ZmE2M2E0NDU3ZDllYWM3YzhiODcz
ZjdlOTFhNGQyNjg0M2IuLjY0ZDQ2MGUyN2Q3OWQ4ZDdhODI3Y2UyMDUyMzA2OGE0OWYxZmJiNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC00OSwxNCArNDksMTQgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12
b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJl
c3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50
c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIFNrQ2FudmFzKiBj
YW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29u
dGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250
ZXh0KGNhbnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVkKHRydWUpOwogICAg
IHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbighbV9sYXllcklzT3BhcXVlKTsK
ICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwot
ICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwgY29udGVudHNT
Y2FsZSk7CisgICAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhncmFw
aGljc0NvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUu
ZW5kUmVjb3JkaW5nKCk7CiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA3ZmNj
NjA1OWY5MGU3ZDlkMWMzMDFiZjJhNzBmNTE1MmE0OTI3YjAwLi40NjU1NDJlNTdhMjAzYjY5NDUw
MjY1MDVlMDU4ZTlkNGQzODlmMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0
KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1
ZVJlY3QpOwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRl
eCBlOTc5MzYxOTZhYzQxNmVhMzZkZTJiMDcwZTdmZTg4YmRlYjU4ZDdjLi5kYmU1M2U4OTRhMmVk
YjllNGFkZGNlMmNmNTg3NTI4MjU1MWYzOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTE3NCwxMCArMTc0LDEwIEBAIEludFNpemUgVGlsZWRMYXllckNocm9taXVtOjpj
b250ZW50Qm91bmRzKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZShscm91bmRmKGJvdW5kcygp
LndpZHRoKCkgKiBjb250ZW50c1NjYWxlKCkpLCBscm91bmRmKGJvdW5kcygpLmhlaWdodCgpICog
Y29udGVudHNTY2FsZSgpKSk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYg
dXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7CiAgICAgLy8gUGFp
bnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1h
eSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAg
aWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8
fCBtX3RpbGVyLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVk
VXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkgfHwgbV9wYWlu
dFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCA9IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKQEAgLTIxOSwxNSArMjE5LDkgQEAgdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVj
dC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNI
KCk7CiAKLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVy
ZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICAvLyBU
aGUgdXBkYXRlUmVjdCBzaG91bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29u
dmVydCB0aGUgcGFpbnRSZWN0IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KLSAg
ICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJlY3QpOwotICAgIGZsb2F0IHdpZHRo
U2NhbGUgPSBib3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3Vu
ZHMoKS53aWR0aCgpKTsKLSAgICBmbG9hdCBoZWlnaHRTY2FsZSA9IGJvdW5kcygpLmhlaWdodCgp
IC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7Ci0gICAgbV91
cGRhdGVSZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKIH0KIAogdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24gdGlsaW5nT3B0aW9u
KQpAQCAtMzUwLDEyICszNDQsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJvdGVjdFRp
bGVUZXh0dXJlcyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCiAKIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9w
LCBpbnQgcmlnaHQsIGludCBib3R0b20pCiB7Ci0gICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZv
ciBhbGwgdGlsZXMuCi0gICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVy
LT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9
IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAgICAg
ICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgfQotCiAgICAgY3JlYXRlVGV4
dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogCiAgICAgLy8gQ3JlYXRlIHRpbGVzIGFzIG5lZWRlZCwg
ZXhwYW5kaW5nIGEgZGlydHkgcmVjdCB0byBjb250YWluIGFsbApAQCAtNDA0LDMwICszOTIsMTQg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJvb2wgaWRs
ZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgIGlmICghbV9wYWludFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJlY3QobGVmdCwgdG9w
LCByaWdodCAtIGxlZnQgKyAxLCBib3R0b20gLSB0b3AgKyAxKTsKIAotICAgIC8vIENhbGxpbmcg
cHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBo
YXZlIHRoZSBzaWRlCi0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hp
Y2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxl
dGVkLgotICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRo
ZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdl
IGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVu
dGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+
IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKLSAgICBJbnRSZWN0IHBhaW50ZWRPcGFxdWVS
ZWN0OwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwg
bV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRz
U2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9
IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyAr
K2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CiAK
LSAgICAgICAgICAgIC8vIFRpbGVzIGFyZSBjcmVhdGVkIGJlZm9yZSBwcmVwYXJlVG9VcGRhdGUo
KSBpcyBjYWxsZWQuCisgICAgICAgICAgICAvLyBUaWxlcyBhcmUgY3JlYXRlZCBhYm92ZS4KICAg
ICAgICAgICAgIGlmICghdGlsZSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAg
ICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKLQotICAg
ICAgICAgICAgLy8gU2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYg
ZXZlcnl0aGluZyBwYWludGVkIGluIHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBp
cyBhIHN1YnNldCBvZiBhbgotICAgICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2Vl
cCB0aGUgb2xkIGFyZWEuCi0gICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGlu
dGVyc2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3QpOwotICAgICAgICAgICAgSW50UmVjdCB0
aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFx
dWVSZWN0KTsKLSAgICAgICAgICAgIGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBh
aW50ZWRSZWN0IHx8ICF0aWxlLT5tX29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFx
dWVSZWN0KSkKLSAgICAgICAgICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3Q7Ci0KICAgICAgICAgICAgIC8vIFVzZSBtX3VwZGF0ZVJlY3QgYXMgY29weUFu
ZENsZWFyRGlydHkgYWJvdmUgbW92ZWQgdGhlIGV4aXN0aW5nIGRpcnR5IHJlY3QgdG8gbV91cGRh
dGVSZWN0LgogICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0ID0gdGlsZS0+bV91
cGRhdGVSZWN0OwogICAgICAgICAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCkBAIC00NDEs
MTAgKzQxMyw2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxl
cyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIHNvdXJjZVJl
Y3QuaW50ZXJzZWN0KG1fcGFpbnRSZWN0KTsKIAogICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVS
ZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgp
LT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTUxMiw2
ICs0ODAsMTIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBsYXllclJlY3QpCiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgbV9wYWludFJlY3QgPSBJbnRSZWN0KCk7CiAKKyAgICAvLyBSZXNldCBt
X3VwZGF0ZVJlY3QgZm9yIGFsbCB0aWxlcy4KKyAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpU
aWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBp
dGVyICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgeworICAgICAgICBVcGRhdGFi
bGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5n
ZXQoKSk7CisgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICB9CisK
ICAgICB1cGRhdGVCb3VuZHMoKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpIHx8ICFt
X3RpbGVyLT5udW1UaWxlcygpKQpAQCAtNjA4LDUgKzU4Miw0NyBAQCBJbnRSZWN0IFRpbGVkTGF5
ZXJDaHJvbWl1bTo6aWRsZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0
KQogICAgIHJldHVybiBwcmVwYWludFJlY3Q7CiB9CiAKK3ZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKK3sKKyAgICBpZiAobV9z
a2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0eSgpIHx8ICFtX3Rp
bGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRvIFdlYktpdCB0
byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qgb2YgZGlzYWJs
aW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVy
ZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0
aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmlu
aXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQg
dGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KKyAgICBSZWZQdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOworICAgIElu
dFJlY3QgcGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250
ZW50cyhtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVy
VGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSwgJnBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICBpbnQg
bGVmdCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKKyAgICBpbnQgdG9wID0gbV9y
ZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QueSgpOworICAgIGludCByaWdodCA9IG1fcmVxdWVzdGVk
VXBkYXRlVGlsZXNSZWN0Lm1heFgoKSAtIDE7CisgICAgaW50IGJvdHRvbSA9IG1fcmVxdWVzdGVk
VXBkYXRlVGlsZXNSZWN0Lm1heFkoKSAtIDE7CisgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBi
b3R0b207ICsraikgeworICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytp
KSB7CisgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOworCisg
ICAgICAgICAgICAvLyBUaWxlcyBhcmUgY3JlYXRlZCBpbiBwcmVwYXJlVG9VcGRhdGVUaWxlcygp
LgorICAgICAgICAgICAgaWYgKCF0aWxlKQorICAgICAgICAgICAgICAgIENSQVNIKCk7CisKKyAg
ICAgICAgICAgIEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOwor
CisgICAgICAgICAgICAvLyBTYXZlIHdoYXQgd2FzIHBhaW50ZWQgb3BhcXVlIGluIHRoZSB0aWxl
LiBJZiBldmVyeXRoaW5nIHBhaW50ZWQgaW4gdGhlIHRpbGUgd2FzIG9wYXF1ZSwgYW5kIHRoZSBh
cmVhIGlzIGEgc3Vic2V0IG9mIGFuCisgICAgICAgICAgICAvLyBhbHJlYWR5IG9wYXF1ZSBhcmVh
LCBrZWVwIHRoZSBvbGQgYXJlYS4KKyAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0
ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBtX3BhaW50UmVjdCk7CisgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVQYWludGVkT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRl
ZE9wYXF1ZVJlY3QpOworICAgICAgICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0
aWxlUGFpbnRlZFJlY3QgfHwgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRl
ZE9wYXF1ZVJlY3QpKQorICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQ
YWludGVkT3BhcXVlUmVjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSB1cGRhdGVS
ZWN0IHNob3VsZCBiZSBpbiBsYXllciBzcGFjZS4gU28gd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSBw
YWludFJlY3QgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxheWVyIHNwYWNlLgorICAgIG1fdXBkYXRl
UmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdCk7CisgICAgZmxvYXQgd2lkdGhTY2FsZSA9IGJv
dW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLndpZHRo
KCkpOworICAgIGZsb2F0IGhlaWdodFNjYWxlID0gYm91bmRzKCkuaGVpZ2h0KCkgLyBzdGF0aWNf
Y2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdodCgpKTsKKyAgICBtX3VwZGF0ZVJlY3Qu
c2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCAy
OWZlY2ZlNGNiZjk1OTA3MDA4OWVkY2JlYTVhNDRjMzhmODBkNDRjLi5hMjZlZGUyNDI1MmRjZWVi
OGNiMTA1N2MyMjAwNTUwNGZlOTUxYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21p
dW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJp
bmcgdXBkYXRlKCkuCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBsYXll
clJlY3QpOwogCi0gICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMg
dGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUg
dGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXllclJlY3QuCiAgICAgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAogICAgIC8vIFNhbWUgYXMgYWJv
dmUsIGJ1dCB0aGlzIHdpbGwgdHJ5IHRvIHBhaW50IGFkZGl0aW9uYWwgc3Vycm91bmRpbmcgY29u
dGVudCBpZiBpZGxlLgpAQCAtOTYsNiArOTYsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHNr
aXBzRHJhdygpIGNvbnN0IHsgcmV0dXJuIG1fc2tpcHNEcmF3OyB9CiAKKyAgICAvLyBQYWludCBj
b250ZW50cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5
ZXJSZWN0LgorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qp
OworCiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKICAg
ICB2aXJ0dWFsIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwpAQCAtMTEy
LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgVXBkYXRhYmxlVGlsZSogdGlsZUF0KGludCwgaW50
KSBjb25zdDsKICAgICBVcGRhdGFibGVUaWxlKiBjcmVhdGVUaWxlKGludCwgaW50KTsKIAotICAg
IC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBi
ZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAgSW50UmVj
dCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdDsKIAogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2Vl
biBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2Vu
dHMgdGhlIGFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc0ZGI3ZjEz
ZWM0ZjhmNGNhYWY2OGU1YWQ3NDc0NWJlOTNiNzJmM2IuLjdmMGZmNmY0MmRjMDQzNzliZGNmZWFi
MTAyZjQzZmI0OTBmMGI2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAt
MzksOSArMzksMjQgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
IkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNs
dWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXll
ckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3Zv
aWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1f
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQ
dHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZSgpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oKSk7CkBAIC01NSw2ICs3
MCw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKCkKICAgICAsIG1f
dGV4dHVyZUNoYW5nZWQodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCiAgICAg
LCBtX2RyYXdpbmdCdWZmZXIoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjksNyArODUsNyBAQCBib29sIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCkgJiYgY29udGV4dCgpICYmIChjb250ZXh0KCktPmdldEV4dGVuc2lv
bnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpO
T19FUlJPUik7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVw
ZGF0ZXImKQordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCkKIHsKICAgICBpZiAoIWRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC05OCw2ICsxMTQsMTEgQEAgdm9pZCBXZWJH
TExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqIHJlbmRlcmVyQ28KICAgICB9CiB9CiAKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRs
ZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVj
dCgpLCBJbnRSZWN0KCkpOworfQorCiB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDRkYzY4YTMzMDhlM2YyMzM3YjRiMjY1YzQ2NWQ3NWRiMmRjNmE3ZmEuLjdhNzQxNmZiNjU1ODU3
NzM2Y2RkZGM4MGFmZDk5MzcxYTUxMDI0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJDYW52YXNMYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw2ICs0NiwyMyBAQCBjbGFzcyBXZWJH
TExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2Vi
R0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMg
UGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRl
eHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0
dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBk
YXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKik7CisKKyAgICAgICAgV2ViR0xMYXllckNo
cm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTExh
eWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVt
KCk7CkBAIC01Myw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHR1cmVJZCh1bnNp
Z25lZCB0ZXh0dXJlSWQpIHsgbV90ZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NM
YXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29s
IHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKQEAgLTc4LDYgKzk3
LDggQEAgcHJpdmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNh
dXNlIHRoZSBEcmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJlZmVyZW5jZSB0
byB0aGUgV2ViR0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1
ZmZlcjsKKworICAgIE93blB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDUwZDc2YTVlOGM1NDJk
NzYwYjFjNjkwMDUwZDY2ODM0ZmI3OTg1MTguLjUxY2E5ZjYyMjAxNTI5ZGEzMWQ4ZTA4YWZjMGU2
ODU5MzE2YWZjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzYsOSAr
MzYsMTIgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9D
Q1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAordXNpbmcgbmFtZXNw
YWNlIHN0ZDsKKwogbmFtZXNwYWNlIHsKIHN0YXRpYyBpbnQgbnVtTGF5ZXJUcmVlSW5zdGFuY2Vz
OwogfQpAQCAtNTAsNiArNTMsMjEgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJl
ZUhvc3RJbnN0YW5jZUV4aXN0cygpCiAgICAgcmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNlcyA+
IDA7CiB9CiAKK0NDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6VXBkYXRlSGFuZGxlcihD
Q1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJUcmVl
SG9zdDo6VXBkYXRlSGFuZGxlcjo6flVwZGF0ZUhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOworICAg
IG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIFBh
c3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVy
VHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAg
ICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBD
Q0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMzcxLDcgKzM4OSw3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xl
VGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0K
IAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlckluaXRp
YWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CkBAIC0zODYsMTIg
KzQwNCwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAo
dmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVM
YXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVy
U3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAg
LTQwMCwzOCArNDE4LDM2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50
KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlw
UmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25l
IHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1f
dXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsK
KyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVk
IGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBl
bmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7
Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBs
YXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwg
dGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJT
dXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1
cmVTaXplKTsKICAgICB9CiAKICAgICByZXNlcnZlVGV4dHVyZXMoKTsKIAotICAgIHBhaW50TGF5
ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7Ci0gICAgaWYgKCFtX3RyaWdn
ZXJJZGxlUGFpbnRzKQorICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBk
YXRlTGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
dXBkYXRlTGF5ZXJzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpyZWNs
YWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7Ci0gICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMg
PSBUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOwogICAgIG1f
Y29udGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1p
dEJ5dGVzKTsKICAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5
VXNlQnl0ZXMoKSA+PSBwcmVmZXJyZWRMaW1pdEJ5dGVzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBJZGxlIHBhaW50aW5nIHNob3VsZCBmYWlsIHdoZW4gd2UgaGl0IHRoZSBwcmVmZXJyZWQg
bWVtb3J5IGxpbWl0LAotICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRv
d2FyZHMgdGhlIG1heGltdW0gbGltaXQuCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5z
ZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0Qnl0ZXMpOwotICAgIC8vIFRoZSBz
ZWNvbmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBuby1vcCBpbiBsYXllcnMgd2hlcmUgcGFpbnRp
bmcgYWxyZWFkeSBvY2N1cmVkIGFib3ZlLgotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0
ZUxpc3QsIFBhaW50SWRsZSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhN
ZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0Qnl0ZXMpOworICAgIHVwZGF0ZUxheWVycyhyb290TGF5
ZXIoKSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoKQpAQCAt
NDM5LDI2ICs0NTUsNjEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcygp
CiAgICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qg
b3JkZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21p
dW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1Rv
RnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVu
ZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRhdGVMaXN0KTsKLSAgICBmb3IgKEND
TGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmbV91cGRh
dGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQg
PSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOwor
ICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJl
Z2luKCZtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpIHx8ICFpdC0+YWx3YXlz
UmVzZXJ2ZVRleHR1cmVzKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaXQtPnJl
c2VydmVUZXh0dXJlcygpOwogICAgIH0KIH0KIAotLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlw
ZSBwYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewot
ICAgIEFTU0VSVChsYXllcik7Ci0gICAgQVNTRVJUKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUg
fHwgUGFpbnRJZGxlID09IHBhaW50VHlwZSk7Ci0gICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWlu
dFR5cGUpCi0gICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVl
blNwYWNlKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0
aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5z
aXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5
ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5maXJzdC5n
ZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkobV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uc2Vjb25kKTsKKyAgICB9CisKKyAgICBpZiAobV90cmlnZ2VySWRs
ZVBhaW50cykgeworICAgICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIHNpemVf
dCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3Bv
cnRTaXplKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlU
b0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOworICAgICAgICBpZiAobV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA8IHByZWZlcnJlZExpbWl0Qnl0ZXMp
IHsKKyAgICAgICAgICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQg
dGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCisgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQg
d2lsbCBhbHdheXMgcHVzaCB1cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxpbWl0LgorICAgICAgICAg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZl
cnJlZExpbWl0Qnl0ZXMpOworICAgICAgICAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQg
d2lsbCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQg
YWJvdmUuCisKKyAgICAgICAgICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRl
TGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVy
SW5kZXhdLmZpcnN0LmdldCgpOworICAgICAgICAgICAgICAgIGxheWVyLT5pZGxlUHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQo
KSk7CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAt
IDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9t
aXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmZpcnN0LmdldCgpOwor
ICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgfQorfQorCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25z
dCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UsIExheWVyVXBkYXRlTGlzdCYgdXBkYXRlTGlz
dCkKK3sKKyAgICAvLyBGb3Igbm9ybWFsIGxheWVycywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQg
aGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZh
Y2UgbGF5ZXIgbGlzdHMuCisgICAgLy8gRm9yIG1hc2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3
ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVjayB0aGVtIGhlcmUuCisgICAgaWYgKGxheWVyLT5ib3Vu
ZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5vcGFjaXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRl
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlTGlzdC5hcHBlbmQocGFpcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4sIFJlZ2lvbj4obGF5ZXIsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpKTsK
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgUGFpbnRUeXBlIHBhaW50
VHlwZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllclVwZGF0ZUxp
c3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkg
ZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRo
aXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBz
b21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpA
QCAtNDY5LDE2ICs1MjAsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENv
bnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUs
IG5vT2NjbHVzaW9uKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCksIG5vT2NjbHVzaW9uLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAg
ICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxp
Y2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50
c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgbm9PY2NsdXNpb24sIHVwZGF0ZUxpc3Qp
OwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAg
ICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7
Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXll
cigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVM
YXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBub09jY2x1c2lvbiwgdXBkYXRlTGlzdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01MTgsNyArNTY5LDcgQEAgc3RhdGljIHZvaWQgbGVh
dmVUYXJnZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ss
IFJlbmRlclMKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUg
cGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29u
c3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJVcGRhdGVMaXN0JiB1
cGRhdGVMaXN0KQogewogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3IgdGVzdGlu
ZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4K
ICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRl
cmF0b3JUeXBlOwpAQCAtNTMyLDEzICs1ODMsMTMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QK
ICAgICAvLyBXZSBtZXJnZSB0aGUgb2NjbHVzaW9uIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIHdp
dGggdGhlIG5ldyBjdXJyZW50IHN1YnRyZWUuIFRoaXMgbmV3IHRhcmdldCBpcyBwdXNoZWQgb250
byB0aGUgc3RhY2sgaWYgbm90IGFscmVhZHkgdGhlcmUuCiAgICAgVmVjdG9yPFJlbmRlclN1cmZh
Y2VSZWdpb24+IHRhcmdldFN1cmZhY2VTdGFjazsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUg
ZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
LSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpi
ZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIEND
TGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NM
YXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFj
ZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNp
dHkoKSk7CiAKICAgICAgICAgICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRTdXJm
YWNlU3RhY2ssIGl0LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgYXBw
ZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCppdCwgdXBkYXRlTGlzdCk7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSByZXBsaWNhIGxheWVyIHRvIHRoZSBjdXJyZW50IG9j
Y2x1c2lvbgogCiAgICAgICAgICAgICBpZiAoaXQtPm1hc2tMYXllcigpIHx8IGl0LT5yZW5kZXJT
dXJmYWNlKCktPmRyYXdPcGFjaXR5KCkgPCAxKQpAQCAtNTQ3LDcgKzU5OCw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5
KCkpOwogCiAgICAgICAgICAgICBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFj
ZVN0YWNrLCBpdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlLCB0YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9j
Y2x1ZGVkSW5TY3JlZW4pOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKCppdCwgdGFy
Z2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRlZEluU2NyZWVuLCB1cGRhdGVMaXN0KTsKICAg
ICAgICAgICAgIGl0LT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKHRhcmdldFN1cmZhY2VT
dGFjay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBsZWF2ZVRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC50YXJn
ZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKQEAgLTU1NSwzNiArNjA2
LDE2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICAvLyBVc2UgQmFja1RvRnJv
bnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAg
dHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9y
VHlwZTsKLQotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsK
LSAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsK
LSAgICAgICAgICAgIGlmIChpdC0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgaXQtPm1h
c2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwot
Ci0gICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAg
aXQtPnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVw
ZGF0ZXIpOwotICAgICAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXll
cigpKQotICAgICAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigp
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkKLSAgICAgICAg
ICAgIGl0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAg
IH0KLX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0g
ICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVM
aXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5
ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRl
TGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFj
ZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4
KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0g
ICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5j
bGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShj
b25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aAppbmRleCAyMjI0ZjdjYzE2MDgyOTA2MjEwZGJkZDFiZDQyYjExZWIwY2E3NzFkLi5kNTEwZTNh
MTg2NDA0YjlmMjNjOWI0NmZmNGUwMzM1ODU5YWRhMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaApAQCAtNDEsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiBjbGFzcyBSZWdpb247
CkBAIC03NCw3ICs3Myw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgcmVm
cmVzaFJhdGUoMCkKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAg
ICAgICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHBhcnRpYWxU
ZXh0dXJlVXBkYXRlcyh0cnVlKSB7IH0KKyAgICAgICAgICAgICwgcGFydGlhbFRleHR1cmVVcGRh
dGVzKHRydWUpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQog
CiAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3Jl
ZW47CkBAIC04NCw2ICs4NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHBlclRp
bGVQYWludGluZzsKICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKICAgICBib29sIHBhcnRp
YWxUZXh0dXJlVXBkYXRlczsKKyAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiAv
LyBQcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGll
cyBiYWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE4NCw5ICsxODUsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKKyAgICB2b2lk
IHByZXBhcmVUb1VwZGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKLSAgICB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVV
cGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5k
U2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0Qq
KTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMTk4
LDE2ICsxOTksMjggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2
YXRlOgorICAgIGNsYXNzIFVwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBVcGRhdGVIYW5kbGVyKENDUHJveHkq
KTsKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IExheWVyTGlzdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6
OnBhaXI8UmVmUHRyPExheWVyQ2hyb21pdW0+LCBSZWdpb24+ID4gTGF5ZXJVcGRhdGVMaXN0Owog
ICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gPiBUZXh0dXJlTGlzdDsK
IAogICAgIHZvaWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKIAotICAgIGVudW0gUGFpbnRU
eXBlIHsgUGFpbnRWaXNpYmxlLCBQYWludElkbGUgfTsKLSAgICBzdGF0aWMgdm9pZCBwYWludENv
bnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYsIFBhaW50VHlwZSk7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKKyAgICB2b2lkIGFwcGVuZFZp
c2libGVMYXllcihMYXllckNocm9taXVtKiwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNw
YWNlLCBMYXllclVwZGF0ZUxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9y
UmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJVcGRhdGVMaXN0Jik7CisgICAgdm9p
ZCBhcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3QsIExheWVyVXBkYXRlTGlzdCYpOwogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoTGF5
ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKICAg
ICAvLyBQcmUtcmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgYW55IGxheWVyIG1hcmtlZCAiYWx3YXlzIHJl
c2VydmUgdGV4dHVyZXMiCiAgICAgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsKQEAgLTIyNyw3ICsy
NDAsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsK
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAot
ICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3Q7CisgICAgTGF5ZXJVcGRhdGVMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAg
ICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTNhYTcxNjA3MWMz
NDJhYjY5OGUzZTBlOTNkMjI5ODIzNzNlNzVmYS4uMDY1NjNiYjM5MmVlMWQyMWY2NzQ4NzE0MWJl
OGViYjE4ZjUxYTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBD
Q1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtODQsNiArODUsOCBA
QCBwdWJsaWM6CiAgICAgLy8gdXBkYXRlcyBhcmUgcmVxdWlyZWQuCiAgICAgdmlydHVhbCBib29s
IHBhcnRpYWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBE
ZWJ1ZyBob29rcwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNzBkZWMwNTRj
NTI1MjE2M2QzZGYwZDdmOTM0NWYzNzQxNjhkZmYyYS4uYTgyZmI2NGMxN2Q2NGI3ZGY4N2JhNjBi
ZmI5ODBlMTkxMzg4YjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHAKQEAgLTE2MSwxNSArMTYxLDE1IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVl
ZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKICAgICAvLyBDb21taXQgaW1tZWRp
YXRlbHkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCisgICAgICAgIGlmICht
X2N1cnJlbnRUZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHdoaWxlIChtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlci0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsg
fQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5
ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBk
YXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXll
clRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTE4NCw2ICsxODQsOCBAQCB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5jb21t
aXRDb21wbGV0ZSgpOwogICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lID0gdHJ1
ZTsKKworICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIgfHwgIW1fY3VycmVudFRl
eHR1cmVVcGRhdGVyLT5oYXNNb3JlVXBkYXRlcygpKTsKIH0KIAogdm9pZCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpzZXROZWVkc0NvbW1pdCgpCkBAIC0yMjIsNiArMjI0LDE3IEBAIHZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAordm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit7CisgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlcikKKyAgICAgICAgbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOworCisgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldHRpbmdzKCkuZGVsYXlUZXh0dXJlVXBkYXRlcykKKyAg
ICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7CisgICAgZWxzZQorICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFsbG9j
YXRvcigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0aGUgbGVn
YWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNj
aGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVkaWF0ZWx5
KCkKIHsKQEAgLTI4Niw2ICsyOTksNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1p
dElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCisg
ICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOwogCiAgICAgZG9Db21taXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaAppbmRleCA0MzQ1ZWQ2MmY2MDRiN2JjMGI4ZTFiNjE3MWViODQyYjJk
ZmY2ZDA2Li4zNmE1OGZhODExYzMwNmNjYWI5N2RiZTVlNmNiNTdjM2NiMzY4NjA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDVGV4dHVyZVVw
ZGF0ZXI7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94eSwgQ0NM
YXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CkBAIC01Niw2ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwog
ICAgIHZpcnR1YWwgYm9vbCBwYXJ0aWFsVGV4dHVyZVVwZGF0ZUNhcGFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQo
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04OSw2ICs5MSw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNo
b3VsZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlz
TmV3bHlDb21taXR0ZWRGcmFtZTsKKworICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJl
YWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBm
MzE0ZmRiOGNjODcyYWIuLmRmNzcyNDQxM2QxNzNjMTgwNjI4ZDRmODliNDBjZTg5ZDNhMTFhN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKQEAgLTM5LDcgKzQwLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRh
dGVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKICAgICA6IG1fYWxsb2NhdG9yKGFsbG9j
YXRvcikKLSAgICAsIG1fZW50cnlJbmRleCgwKQogewogICAgIEFTU0VSVChtX2FsbG9jYXRvcik7
CiB9CkBAIC02NiwyMyArNjYsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBk
YXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0g
bWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsg
bV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0
ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOworICAgIHdoaWxlIChjb3Vu
dC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgp
OwogICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0
b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAgIG1fZW50
cmllcy5yZW1vdmVMYXN0KCk7CiAgICAgfQogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBubyBlbnRyaWVzIGxl
ZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJl
VXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVz
LmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5
YzJlMjJlZmM1ZWRhOWE2NDgyOWUyZWZjY2VjMTViYjMwLi5jMzdhZjM0YmVlNjRmN2MwYWY1YjEw
MzY5NTMxMTQwMjNjNTY2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC01
OSw3ICs1OSw2IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIFRleHR1cmVBbGxvY2F0b3IqIG1f
YWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVu
dHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDRi
MjAzZjM1NGI5OTNmNjMzMTMwNmJlYzJjMGVhZWFiZDgzZjQ4ZjMuLjMzNTUwOWYyMGY3ZjE1N2I3
OWU0N2Y5N2YxZGU2OTZmNzIxMzBhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBA
IC0zMTEsNiArMzExLDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFy
dGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX3N0YXJ0ZWQpOworCisgICAgT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSA9IGFkb3B0
UHRyKG5ldyBVcGRhdGVFbnRyeSk7CisgICAgZW50cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7Cisg
ICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJl
Y3QgPSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBs
VGhyZWFkLCBlbnRyeS5yZWxlYXNlKCkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5p
c2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24p
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzk3LDYgKzQxMSw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFt
ZUJlZ2luVGltCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0g
ZmFsc2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcg
c2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRv
IGZhbHNlLgpAQCAtNDIxLDEzICs0MzYsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAg
ICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIg
PT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1
cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCit7CisgICAgQVNT
RVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisg
ICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3
IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpKTsKKworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5h
cHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVz
dFJlY3QpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywg
MCk7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAg
ICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQpOwotICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGlu
ZygpKTsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQzNSwxMCArNDYyLDYgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0g
YWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCkBAIC00NjAsMTkgKzQ4MywyMCBAQCBib29s
IENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRB
Y3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAg
IEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgaWYgKCFt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuOwogICAg
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID4gMCA/IHRleHR1cmVV
cGRhdGVzUGVyRnJhbWUgOiA5OTk5OSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1
bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLQorICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCkgeworICAgICAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICAgICAgbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICB9CiAKICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYjY1
YTZjNjA0ZTI5MjNmYzhmMDljZjlhYzdmNTU5NmQwYWIwY2RkMC4uZjU2ZDMyYTdjNWE4NzM3OGMw
ZGZmZWYzMzAxYTg0NGU0NDljNDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjQs
NiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3AoKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFydGlhbFRleHR1cmVVcGRhdGVDYXBh
YmlsaXR5KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRh
dGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQo
KTsKQEAgLTgxLDYgKzgyLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NU
aHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7
CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsKKyAgICAg
ICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKKyAg
ICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4gdGhyZWFkCiAgICAgdm9pZCBiZWdpbkZyYW1l
QW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNz
T3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpOwpAQCAtOTUsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NPd25Q
dHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhy
ZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFkOjpUYXNrKiopOworICAgIHZvaWQgdXBkYXRl
VGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5Pik7CiAgICAgdm9pZCBi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2
b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggYjVkYTRl
NmJhNjc4ZmUyOWQ4YThkNTk5N2Q1MTJkNTYyNmM4Y2E5Yi4uZTUxY2JhZWFiMWMxM2JhNDM1NjQ0
ZTVmYjA3YzU2MTVkMzhkZjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oCkBAIC0xMzgsNiArMTM4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFBlclRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0
dXJlVXBkYXRlcygpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
aW5kZXggMjcyM2NhNzhiZjQ3MmY1ZDU3ZWQ0NmNlMWU2YmU4MTQwNDMzZGMyZi4uYTY4NDExNzg1
M2M5ODM0NGYyNGZmNTM0NDcwOTRlMDgwZmRjZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC01MCw2ICs1MCw3IEBAIFdlYlNldHRp
bmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICAsIG1fY29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2hvd0ZQU0NvdW50ZXIoZmFs
c2UpCiAgICAgLCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKKyAgICAsIG1fZGVsYXlU
ZXh0dXJlVXBkYXRlcyhmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtNTIy
LDQgKzUyMyw5IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRQYXJ0aWFsU3dhcEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldFBhcnRpYWxTd2FwRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldERlbGF5VGV4dHVyZVVwZGF0ZXMo
Ym9vbCBlbmFibGVkKQoreworICAgIG1fZGVsYXlUZXh0dXJlVXBkYXRlcyA9IGVuYWJsZWQ7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAppbmRleCA2M2EwMGEwOTk5ZTMyZDA5NGNjNzg1ZGE1OGY1ZjU1YWZh
MmEwYTQzLi44YTVmNjdhNjViNjI3Zjk4YTA4MjExNWQzYWNmZDdlMThlOTA3MzE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTMzLDEyICsx
MzMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5n
RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxl
ZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wpOworICAgIHZpcnR1
YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWxheVRleHR1
cmVVcGRhdGVzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGlu
Z3M7CiAgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiAgICAgYm9vbCBtX3No
b3dGUFNDb3VudGVyOwogICAgIGJvb2wgbV9zaG93UGxhdGZvcm1MYXllclRyZWU7CisgICAgYm9v
bCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NjI5Y2JiMzJh
YmU1YjQzMjRlNTZhMDk3ZmUzN2Q2ODU3NTVlYTA0Li45NTdjNjNiOWRjMDMxMzNjNjE3Njk2NjI4
OGFkMDQ0ZGY1NjExNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0zMDEwLDYgKzMwMTAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAKICAgICAgICAgY2NTZXR0aW5n
cy5wZXJUaWxlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCktPnBlclRpbGVEcmF3aW5nRW5h
YmxlZCgpOwogICAgICAgICBjY1NldHRpbmdzLnBhcnRpYWxTd2FwRW5hYmxlZCA9IHBhZ2UoKS0+
c2V0dGluZ3MoKS0+cGFydGlhbFN3YXBFbmFibGVkKCk7CisgICAgICAgIGNjU2V0dGluZ3MuZGVs
YXlUZXh0dXJlVXBkYXRlcyA9IHNldHRpbmdzKCktPmRlbGF5VGV4dHVyZVVwZGF0ZXMoKTsKIAog
ICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCA9IE5vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdDo6Y3JlYXRlKFdlYlZpZXdJbXBsQ29udGVudFBhaW50ZXI6OmNyZWF0ZSh0aGlzKSk7CiAg
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKHBh
Z2UoKS0+c2V0dGluZ3MoKS0+c2hvd0RlYnVnQm9yZGVycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDIwMDg2
MTNjZDg5ZDUzZmE1OWRjZWE5NWY1MmU2ZjM1N2YzYWM4NmIuLjkzZDdjMGIxMWRlZjQwNGJiZDRh
ZTgwY2JiODUxYTIyMzMyYjJmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtOTc2LDYgKzk3NiwxNCBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1
blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIE1vY2tMYXllckRlbGVnYXRlIDogcHVibGljIENvbnRl
bnRMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlT
eW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxl
Z2F0ZSA6IHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9w
YWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlKENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05
OTcsNDcgKzEwMDUsMTI3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZz4gY3JlYXRlKENvbnRlbnRMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVn
YXRlKSk7IH0KKyAgICBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIFRleHR1cmUoQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVV
cGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAg
ICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRh
dGVyKHRleHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQogCi0gICAg
aW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9
Ci0gICAgaW50IGlkbGVQYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX2lkbGVQYWludENv
bnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3Bh
aW50Q29udGVudHNDb3VudCA9IDA7IG1faWRsZVBhaW50Q29udGVudHNDb3VudCA9IDA7fQorICAg
ICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4
dHVyZS5nZXQoKTsgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29u
c3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0
JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQs
IGFsbG9jYXRvcik7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+
dXBkYXRlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAg
ICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgICAgIENvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgICAgICB9OworCisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBjcmVh
dGUoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdl
ciogbWFuYWdlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
ZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSAvKiB0ZXh0dXJlRm9ybWF0ICovKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKKyAgICAg
ICAgfQogCi0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQot
ICAgIHZvaWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJl
Y3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxz
ICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFx
dWVSZWN0ICovKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xheWVyLT5wYWludENvbnRlbnRz
KCk7CisgICAgICAgIH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZyogbGF5ZXIoKSB7IHJldHVybiBtX2xheWVyOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQor
ICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVy
KENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcikgOiBtX2xheWVy
KGxheWVyKSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZyogbV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0
ZSogZGVsZWdhdGUpCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0gICAgICAgIG1fcGFpbnRDb250
ZW50c0NvdW50Kys7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCisgICAgeworICAgICAgICBpZiAo
bV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyID0gQ29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
ci0+c2V0T3BhcXVlKG9wYXF1ZSgpKTsKKworICAgICAgICBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
ID0gbGF5ZXJUcmVlSG9zdCgpLT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkuYmVzdFRleHR1
cmVGb3JtYXQ7CisgICAgICAgIHNldFRleHR1cmVGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAg
ICAgIHNldFNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlVXBkYXRlcigpLT5zYW1wbGVkVGV4ZWxG
b3JtYXQodGV4dHVyZUZvcm1hdCkpOwogICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVw
ZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRz
SWZEaXJ0eSgpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVy
Q2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX2lkbGVQYWlu
dENvbnRlbnRzQ291bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAgIHByZXBhcmVUb1Vw
ZGF0ZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
KQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiAgICAgewot
ICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhj
b250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgbV91cGRhdGVDb3VudCsrOworICAgICAgICBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICAgICAg
aWRsZVByZXBhcmVUb1VwZGF0ZSgpOwogICAgIH0KIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KCkgeyBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50Kys7IH0KKyAgICBpbnQgcHJlcGFyZVRvVXBkYXRl
Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50OyB9CisKKyAgICB2b2lkIGlk
bGVQcmVwYXJlVG9VcGRhdGUoKSB7IG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50Kys7IH0KKyAg
ICBpbnQgaWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV9pZGxlUHJlcGFyZVRv
VXBkYXRlQ291bnQ7IH0KKworICAgIHZvaWQgcGFpbnRDb250ZW50cygpIHsgbV9wYWludENvbnRl
bnRzQ291bnQrKzsgfQorICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3Bh
aW50Q29udGVudHNDb3VudDsgfQorCisgICAgdm9pZCBwcmVwYXJlUmVjdCgpIHsgbV9wcmVwYXJl
UmVjdENvdW50Kys7IH0KKyAgICBpbnQgcHJlcGFyZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1fcHJl
cGFyZVJlY3RDb3VudDsgfQorCisgICAgdm9pZCB1cGRhdGVSZWN0KCkgeyBtX3VwZGF0ZVJlY3RD
b3VudCsrOyB9CisgICAgaW50IHVwZGF0ZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlUmVj
dENvdW50OyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmcoQ29udGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgICAg
ICA6IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQorICAgICAgICAsIG1fcHJlcGFyZVRv
VXBkYXRlQ291bnQoMCkKKyAgICAgICAgLCBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCgwKQog
ICAgICAgICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV9pZGxlUGFpbnRD
b250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1f
cHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAg
ewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICAgICAgc2V0SXNEcmF3
YWJsZSh0cnVlKTsKICAgICB9CiAKKyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAgaW50IG1fcHJlcGFyZVRvVXBk
YXRlQ291bnQ7CisgICAgaW50IG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OwogICAgIGludCBt
X3BhaW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Owot
ICAgIGludCBtX3VwZGF0ZUNvdW50OworICAgIGludCBtX3ByZXBhcmVSZWN0Q291bnQ7CisgICAg
aW50IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0eSBjaGFuZ2UgZHVy
aW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291cmNlcyBmcm9tIGJl
aW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTEwNjQsMTYgKzExNTIsMTkgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWlu
dENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCi0gICAgICAg
IEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsK
KyAgICAgICAgLy8gcHJlcGFyZVRvVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25j
ZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVRvVXBk
YXRlQ291bnQoKSk7CiAKLSAgICAgICAgLy8gaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZQotICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVD
aGVja0xheWVyLT5pZGxlUGFpbnRDb250ZW50c0NvdW50KCkpOworICAgICAgICAvLyBpZGxlUHJl
cGFyZVRvVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQ
RUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KCkp
OworCisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBv
bmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRl
bnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0gICAgICAgIC8vIGFtb3V0IG9mIHRpbWVz
IGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNo
ZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAotICAgICAgICAgICAgICAgICAgbV91cGRh
dGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50c1Jl
Y3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQg
b2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hl
Y2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVD
aGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CiAKICAgICAgICAgLy8gY2xlYXIgbV91cGRh
dGVDaGVja0xheWVyIHNvIENDTGF5ZXJUcmVlSG9zdCBkaWVzLgogICAgICAgICBtX3VwZGF0ZUNo
ZWNrTGF5ZXIuY2xlYXIoKTsKQEAgLTExMDMsNiArMTE5NCw3IEBAIHB1YmxpYzoKICAgICAgICAg
SW50U2l6ZSB2aWV3cG9ydFNpemUoMTAsIDEwKTsKICAgICAgICAgbGF5ZXJUcmVlSG9zdCgpLT5z
ZXRWaWV3cG9ydFNpemUodmlld3BvcnRTaXplKTsKIAorICAgICAgICBsYXllclRyZWVIb3N0KCkt
PnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBsYXllclRyZWVIb3N0KCktPnVwZGF0ZUxheWVy
cygpOwogCiAgICAgICAgIEVYUEVDVF9FUSh2aWV3cG9ydFNpemUsIGxheWVyVHJlZUhvc3QoKS0+
dmlld3BvcnRTaXplKCkpOwpAQCAtMTI0Miw3ICsxMzM0LDcgQEAgY2xhc3MgVGVzdExheWVyQ2hy
b21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
ZXN0TGF5ZXJDaHJvbWl1bSgpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKKyAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpCiAgICAgewogICAgICAgICBtX29jY2x1ZGVkU2NyZWVuU3BhY2UgPSBvY2NsdWRlZFNjcmVl
blNwYWNlOwogICAgIH0KQEAgLTEzMDEsNiArMTM5Myw3IEBAIHB1YmxpYzoKIAogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwogCkBAIC0xMzE4LDYgKzE0MTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUo
KTsKIApAQCAtMTMzNiw2ICsxNDMwLDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
QEAgLTEzNTYsNiArMTQ1MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZp
ZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0x
Mzc4LDYgKzE0NzQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9y
dFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJl
cGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTQwMCw2
ICsxNDk3LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExh
eWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXpl
KHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVU
b1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE0MjMsNiArMTUy
MSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihy
b290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290
TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRh
dGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0xNDQ2LDYgKzE1NDUsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExh
eWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVy
LT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
MWRmMjdjMDExMTliMjY1N2U4MmUyYTA3OTdiMWMwMWI1MGQzMDVlYi4uYjIzMjdkMzVlOTUwMjUx
NTI2YThlOTUwY2FmMzkyMzgxMDQwOTQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0Nh
bnZhc0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKLSNp
bmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5o
PgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC02OSw2ICs2OCwyMSBAQCBwdWJsaWM6CiAg
ICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUsIHZvaWQodW5zaWduZWQsIGNvbnN0IEludFNp
emUmLCBHQzNEZW51bSkpOwogfTsKIAorY2xhc3MgTW9ja1VwZGF0ZUhhbmRsZXIgOiBwdWJsaWMg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1VwZGF0ZUhh
bmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikgOiBtX2NvbnRleHQoY29udGV4dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQorICAgIHsKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAg
ICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworfTsKKwogfSAv
LyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTIsNyArMTA2LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nh
c3Q8TW9ja0NhbnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RX
ZWJHcmFwaGljc0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwogCiAgICAgICAgIE1vY2tU
ZXh0dXJlQWxsb2NhdG9yIGFsbG9jYXRvck1vY2s7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIg
dXBkYXRlcigmYWxsb2NhdG9yTW9jayk7CisgICAgICAgIE1vY2tVcGRhdGVIYW5kbGVyIHVwZGF0
ZUhhbmRsZXJNb2NrKGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jayk7CiAKICAgICAg
ICAgY29uc3QgSW50U2l6ZSBzaXplKDMwMCwgMTUwKTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1h
eFRleHR1cmVTaXplID0gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CkBAIC0xNDAs
NyArMTU0LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICBS
ZWdpb24gb2NjbHVkZWRTY3JlZW5TcGFjZTsKLSAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRz
SWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgY2FudmFzLT5wcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICBjYW52YXMtPnBhaW50
Q29udGVudHNJZkRpcnR5KCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShjYW52YXMtPm5lZWRzRGlz
cGxheSgpKTsKICAgICAgICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IHNjb3BlZEltcGxUaHJlYWQ7CkBAIC0xNDgsNyArMTYzLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICAgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5
ZXJJbXBsKCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFz
TGF5ZXJJbXBsKj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAg
ICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVw
ZGF0ZXIpOworICAgICAgICAgICAgY2FudmFzLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKHVw
ZGF0ZUhhbmRsZXJNb2NrKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3Qu
Y3BwCmluZGV4IGJkYmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMuLjBmN2Vk
NTcwZWQ2ZmU0Mjc4OTY3ZmUzYjFlNWVhZGI3NDQ0ZTA5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBA
IC05NSwxOSArOTUsMTkgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1
ZVJlY3RQcmVzZW50QWZ0ZXJPcGFxdWVQYWludCkKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgp
OwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZp
bGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAg
ICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRl
c3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVh
c2UoKSwgZmFsc2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1
cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0
KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0o
ZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAgdXBkYXRl
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwg
NDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJl
Y3QpOwogfQogCkBAIC0xMjEsMTkgKzEyMSwxOSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJU
ZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50KQogICAgIG9w
YXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5
ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwot
ICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50
U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENv
bnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwg
Jm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9w
YXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0g
YWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1
cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1
ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQw
MCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0
ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRl
ckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0g
ICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRT
aXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29u
dGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAm
b3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3Bh
cXVlUmVjdCk7CiB9CiAKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBk
YXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1
ZVBhCiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0o
ZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRP
cGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwg
NDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVw
ZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAw
LCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwog
ICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxP
cGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+
c2V0T3BhcXVlKHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAs
IDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAg
ICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXpl
KDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3Qo
KTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShm
aWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVy
LT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwor
ICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNp
emUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE3NywyMSArMTc3LDIxIEBA
IFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZv
ck9wYXF1ZUxheWVyV2l0aE5vbk9wYXF1CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0
TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2Up
OwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAm
b3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1
ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQ
YWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFs
c2UpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJl
VG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAx
LCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAs
IDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9w
YXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5
ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFz
ZSgpKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCmluZGV4IDBjNTUwOTAwNjJjMGY2ZmFkNjAzY2Y0NGEwMTEzZWFmYzE5MGI3YWIu
LjRmMTUyOTU2YmEzNDNmNTQyNDAxNDgwNzNjMzU2ZjI4ZjkwOWE5YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cApAQCAtMjksMTEgKzI5LDExIEBACiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgi
CiAjaW5jbHVkZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIkxheWVy
VGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUg
IlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29t
cG9zaXRvci5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJjYy9DQ1RpbGVkTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KIApAQCAtNDgsMTAgKzQ4LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNl
IHsKIAotY2xhc3MgRmFrZVRleHR1cmVBbGxvY2F0b3IgOiBwdWJsaWMgVGV4dHVyZUFsbG9jYXRv
ciB7CitjbGFzcyBGYWtlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5k
bGVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3Qg
SW50U2l6ZSYsIEdDM0RlbnVtKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZVRleHR1cmUodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIH07CiAKIGNsYXNzIEZha2VUaWxlZExheWVyQ2hy
b21pdW07CkBAIC02MCwyMiArNTksMjYgQEAgY2xhc3MgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVy
ZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpIHsgfQorICAgICAgICBUZXh0dXJlKFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsg
fQogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKKyAgICAgICAgdmlydHVhbCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgfTsKIAot
ICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3ByZXBhcmVDb3VudCgwKSB7IH0KKyAg
ICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIDogbV9wYWludENvdW50KDApIHsgfQogICAgIHZp
cnR1YWwgfkZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICAvLyBTZXRzIHRoZSBy
ZWN0IHRvIGludmFsaWRhdGUgZHVyaW5nIHRoZSBuZXh0IGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRl
KCkuIEFmdGVyIHRoZSBuZXh0CiAgICAgLy8gY2FsbCB0byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUg
cmVjdCBpcyByZXNldC4KICAgICB2b2lkIHNldFJlY3RUb0ludmFsaWRhdGUoY29uc3QgSW50UmVj
dCYsIEZha2VUaWxlZExheWVyQ2hyb21pdW0qKTsKIAotICAgIC8vIE51bWJlciBvZiB0aW1lcyBw
cmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tlZC4KLSAgICBpbnQgcHJlcGFyZUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0KLSAgICB2b2lkIGNsZWFyUHJlcGFyZUNv
dW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KKyAgICAvLyBOdW1iZXIgb2YgdGltZXMgcGFp
bnRDb250ZW50cyBoYXMgYmVlbiBpbnZva2VkLgorICAgIGludCBwYWludENvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYWludENvdW50OyB9CisgICAgdm9pZCBjbGVhclBhaW50Q291bnQoKSB7IG1f
cGFpbnRDb3VudCA9IDA7IH0KIAogICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50
UmVjdDsgfQogCkBAIC04NCwxMCArODcsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVy
ZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRU
ZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9y
bWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9y
bWF0UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1
bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3Qq
IHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogCiBwcml2YXRlOgotICAgIGludCBtX3ByZXBhcmVDb3Vu
dDsKKyAgICBpbnQgbV9wYWludENvdW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlkYXRl
OwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKICAgICBJbnRSZWN0IG1fb3BhcXVlUGFp
bnRSZWN0OwpAQCAtMTQ1LDE1ICsxNDgsMjUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVGls
ZWRMYXllckNocm9taXVtOjpza2lwc0RyYXcoKTsKICAgICB9CiAKKyAgICB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICB7CisgICAgICAgIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50cyhyZWN0KTsKKyAgICB9CisKICAgICBGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlciogZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX2Zha2VUZXh0dXJl
VXBkYXRlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVNYW5hZ2VyOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVl
blNwYWNlICovKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0
IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKICAgICB7CiAgICAgICAgIHByZXBh
cmVUb1VwZGF0ZSh2aXNpYmxlTGF5ZXJSZWN0KCkpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpCisgICAgeworICAgICAgICBwYWludENvbnRlbnRzKHZp
c2libGVMYXllclJlY3QoKSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKSB7IH0KIApAQCAtMTkw
LDkgKzIwMyw5IEBAIHZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnNldFJlY3RUb0ludmFs
aWRhdGUoY29uc3QgSW50UmVjdCYgcmVjdCwgRmFrZVRpbGVkCiAgICAgbV9sYXllciA9IGxheWVy
OwogfQogCi12b2lkIEZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRS
ZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYs
IGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7Ci0gICAgbV9wcmVw
YXJlQ291bnQrKzsKKyAgICBtX3BhaW50Q291bnQrKzsKICAgICBtX2xhc3RVcGRhdGVSZWN0ID0g
Y29udGVudFJlY3Q7CiAgICAgaWYgKCFtX3JlY3RUb0ludmFsaWRhdGUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fbGF5ZXItPmludmFsaWRhdGVSZWN0KG1fcmVjdFRvSW52YWxpZGF0ZSk7CkBAIC0y
MDksMTQgKzIyMiwxNCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRp
bGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxv
Y2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsK
KyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4
MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMuCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMgb24gdGhlIGltcGwgc2lkZS4KQEAg
LTIyOSw3ICsyNDIsOCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRp
bGVzKQogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7
CiAgICAgLy8gLi4uLmJ1dCB0aGVuIG9ubHkgdXBkYXRlIG9uZSBvZiB0aGVtLgogICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENv
bnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaGF2ZSB0aGUgZmlyc3QgdGls
ZSBzaW5jZSB0aGUgb3RoZXIgdGlsZSB3YXMgaW52YWxpZGF0ZWQgYnV0IG5vdCBwYWludGVkLgpA
QCAtMjQ0LDggKzI1OCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQ
YWludFRpbGVzKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAg
IFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1
cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2Nh
dG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBp
cyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0aCBvbmUgdmlzaWJsZSB0aWxlIGluIHRoZSBj
ZW50ZXIuCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUwMCwgNTAwKTsKQEAgLTI2MSw3ICsy
NzQsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykK
ICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5nIGZvciAzeDMgdGlsZXMgaW4gdGhl
IGNlbnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJl
Y3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIp
OworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91
bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMjc0LDcgKzI4Nyw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsKICAgICAgICAgRVhQRUNUX1RSVUUo
bGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAgICAgICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4
dHVyZXMoKTsKICAgICB9CkBAIC0zMTAsOCArMzIzLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKICAgICBSZWZQdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1w
bCA9IGFkb3B0UmVmKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgwKSk7CiAKLSAgICBGYWtlVGV4
dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBk
YXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAg
IC8vIFRoaXMgaW52YWxpZGF0ZXMgOSB0aWxlcyBhbmQgdGhlbiBwYWludHMgb25lIHZpc2libGUg
dGlsZS4KICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMpOwpAQCAtMzIyLDcgKzMz
NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkp
CiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRpbGVzIHN1cm91
bmRpbmcgdmlzaWJsZSB0aWxlLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVkc0lkbGVQYWlu
dCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
MCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxl
cik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAg
IC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0zMzUsNyAr
MzQ3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9y
eSkKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFsIHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50
IGFmdGVyIHdlIHJ1biBvdXQgb2YgbWVtb3J5LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVl
ZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQo
KSk7CiB9CiAKQEAgLTM0NiwxNCArMzU4LDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0g
YWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJl
QWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBh
aW50cyB0d28gdGlsZXMuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMjAwKSk7
CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAg
ICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+
cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgbGF5ZXItPmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGJvdGggdGlsZXMg
b24gdGhlIGltcGwgc2lkZS4KQEAgLTM2MiwyMiArMzc0LDI0IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgaW52YWxpZGF0ZUZyb21QcmVwYXJlKQogCiAgICAgdGV4dHVyZU1hbmFnZXIt
PnVucHJvdGVjdEFsbFRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAgICAgLy8gSW52b2tlIHByZXBhcmVUb1Vw
ZGF0ZSBhZ2Fpbi4gQXMgdGhlIGxheWVyIGlzIHZhbGlkIHByZXBhcmVUb1VwZGF0ZSBzaG91bGRu
J3QgYmUgaW52b2tlZCBvbgogICAgIC8vIHRoZSBMYXllclRleHR1cmVVcGRhdGVyLgogICAgIGxh
eWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIEVYUEVD
VF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkp
OworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFp
bnRDb3VudCgpKTsKIAogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDUw
LCA1MCkpOwogICAgIC8vIHNldFJlY3RUb0ludmFsaWRhdGUgdHJpZ2dlcnMgaW52YWxpZGF0ZVJl
Y3QoKSBiZWluZyBpbnZva2VkIGZyb20gcHJlcGFyZVRvVXBkYXRlLgogICAgIGxheWVyLT5mYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMjUsIDI1
LCA1MCwgNTApLCBsYXllci5nZXQoKSk7Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyUGFpbnRDb3VudCgpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZUNvdW50KCkpOwotICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAgIGxheWVyLT5wYWlu
dENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnBhaW50Q291bnQoKSk7CisgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUGFpbnRDb3VudCgpOwogICAgIC8vIFRo
ZSBsYXllciBzaG91bGQgc3RpbGwgYmUgaW52YWxpZCBhcyBwcmVwYXJlVG9VcGRhdGUgaW52b2tl
ZCBpbnZhbGlkYXRlLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCkpOwotICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZUNvdW50KCkpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3Qo
MCwgMCwgMTAwLCAyMDApKTsKKyAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnBhaW50Q291bnQoKSk7CiB9CiAKIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQpAQCAtMzg4
LDggKzQwMiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVj
dFdoZW5Db250ZW50Qm91bmRzQXJlU2NhbGVkKQogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4g
dGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCoxMDI0LCAyKjEw
MjQqMTAyNCwgMTAyNCk7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5k
cz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzKHRl
eHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJl
QWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRv
cik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIEludFJlY3QgbGF5ZXJCb3VuZHMo
MCwgMCwgMzAwLCAyMDApOwogICAgIEludFJlY3QgY29udGVudEJvdW5kcygwLCAwLCAyMDAsIDI1
MCk7CkBAIC00MDIsMjAgKzQxNSwyMyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZl
cmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICAvLyBIb3dldmVy
LCBpdCBzaG91bGQgc3RpbGwgYmUgaW4gbGF5ZXIgc3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgog
ICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRC
b3VuZHMpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwog
ICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCgwLCAwLCAzMDAsIDMwMCAqIDAuOCks
IGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAgICAgLy8gQWZ0ZXIgdGhlIHRpbGVzIGFyZSB1cGRh
dGVkIG9uY2UsIGFub3RoZXIgaW52YWxpZGF0ZSBvbmx5IG5lZWRzIHRvIHVwZGF0ZSB0aGUgYm91
bmRzIG9mIHRoZSBsYXllci4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5k
cyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFp
bnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShoYW5kbGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QobGF5
ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIFBhcnRpYWwgcmUtcGFp
bnQgc2hvdWxkIGFsc28gYmUgcmVwcmVzZW50ZWQgYnkgdGhlIHVwZGF0ZVJlY3QgaW4gbGF5ZXIg
c3BhY2UsIG5vdCBjb250ZW50IHNwYWNlLgogICAgIEludFJlY3QgcGFydGlhbERhbWFnZSgzMCwg
MTAwLCAxMCwgMTApOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChwYXJ0aWFsRGFtYWdlKTsK
ICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENv
bnRlbnRzKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKGhhbmRsZXIpOwogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKEZsb2F0UmVjdCg0NSwgODAs
IDE1LCA4KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiB9CiAKQEAgLTQ0NSwyNCArNDYxLDIyIEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIHJv
b3RMYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwogICAgIGNoaWxkTGF5ZXItPmlu
dmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRl
eHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxs
b2NhdG9yKTsKLQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7
CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgzMDAsIDMwMCkp
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1lbW9yeUxpbWl0
KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKIAot
ICAgIC8vIFdlJ2xsIHNraXAgdGhlIHJvb3QgbGF5ZXIuCi0gICAgRVhQRUNUX1RSVUUocm9vdExh
eWVyLT5za2lwc0RyYXcoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNoaWxkTGF5ZXItPnNraXBzRHJh
dygpKTsKKyAgICBFWFBFQ1RfRkFMU0Uocm9vdExheWVyLT5za2lwc0RyYXcoKSk7CisgICAgLy8g
V2UnbGwgc2tpcCB0aGUgY2hpbGQgbGF5ZXIuCisgICAgRVhQRUNUX1RSVUUoY2hpbGRMYXllci0+
c2tpcHNEcmF3KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwog
CiAgICAgLy8gUmVtb3ZlIHRoZSBjaGlsZCBsYXllci4KICAgICByb290TGF5ZXItPnJlbW92ZUFs
bENoaWxkcmVuKCk7CiAKKyAgICBjY0xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgRVhQRUNUX0ZBTFNFKHJv
b3RMYXllci0+c2tpcHNEcmF3KCkpOwogCkBAIC00OTQsNiArNTA4LDcgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBsYXll
ci0+c2V0T3BhcXVlKHRydWUpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91
bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxh
eWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdp
b24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7
CkBAIC01MDQsNiArNTE5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFk
ZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBsYXllci0+c2V0T3BhcXVlKGZhbHNlKTsKICAg
ICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250
ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNl
bGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTE1LDYgKzUzMSw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24p
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVj
dChvcGFxdWVQYWludFJlY3QpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91
bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxh
eWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdp
b24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7
CkBAIC01MjQsNiArNTQxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFk
ZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0
IGludmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVj
dCgpKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxh
eWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdp
b24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7
CkBAIC01NDEsNiArNTU5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFk
ZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xh
dGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkg
LyAyLjApOwogICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRy
YW5zZm9ybSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAg
ICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0g
UmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVk
ZWQpOwpAQCAtNTU2LDYgKzU3NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5
ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgc2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJh
bnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250ZW50Qm91bmRzLmhlaWdo
dCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0pOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7
CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CiAKICAgICBvY2NsdWRl
ZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9j
Y2x1ZGVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125962</attachid>
            <date>2012-02-07 17:28:35 -0800</date>
            <delta_ts>2012-02-11 14:00:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120207202833.patch</filename>
            <type>text/plain</type>
            <size>123718</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc4NjkxZjc5ZjcwNjM2
Yjk0ODU2YWI3OGJhZThiODhiODMzNTYxMC4uZTRmNzc1YTIzMjBlYTlkMDVhMzczZjYwMzhhMjE0
OGFjMmExNTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAxMi0wMi0wNyAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnQgdXBsb2FkaW5n
IHRleHR1cmUgcmVzb3VyY2VzIGFzIHNvb24gYXMgZW5vdWdoIGNvbnRlbnRzIGhhcworICAgICAg
ICBiZWVuIHBhaW50ZWQgZm9yIG9uZSB0ZXh0dXJlIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgIExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaXMgcmVwbGFjZWQgYnkKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSB3aGljaCBhbGxv
d3MgdXMgdG8KKyAgICAgICAgcmVwZWF0ZWRseSBnbyB0aHJvdWdoIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzIGZvciB2YXJpb3VzIHB1cnBvc2VzLgorCisgICAgICAgIFVwZGF0ZSB1bml0IHRlc3Q6IFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QucHVzaERpcnR5VGlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoQ2FudmFzMkRMYXll
ckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGly
dHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGly
dHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
cjo6fkhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1Z2luTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Lmg6CisgICAgICAgIChTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06
OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OlVwZGF0
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6On5VcGRhdGVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGlu
Z3MpOgorICAgICAgICAoQ0NTZXR0aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgor
ICAgICAgICAoVXBkYXRlSGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1NpbmdsZVRocmVhZFByb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1Rl
eHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVBbmRDb21taXQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAg
ICAgICAgKENDVGhyZWFkUHJveHkpOgorICAgICAgICAoVXBkYXRlRW50cnkpOgorCiAyMDEyLTAy
LTA3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBBbGxvdyByZXRhaW5pbmcgdGV4dHVyZSBhY3Jvc3MgZnJhbWVzIGluIGNvbXBvc2l0
ZWQgdmlkZW8gcGxheWJhY2sgYW5kIGNvcnJlY3RseSBoYW5kbGUgbG9zdCBjb250ZXh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFiYzg1NDNlZDEwZDUxMzNmNDNhNDQ4MTMxNjcxNjkz
YWE3YTBiZmUuLjEyZjE4MjcwNDE5ZjEzNjA5NDc1YzIzOGU2Yzg3MGZiYjJhMmYzZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTItMDItMDcgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFVw
bG9hZCB0ZXh0dXJlcyBpbiBwYXJhbGxlbCB3aXRoIHBhaW50aW5nIGNvbnRlbnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBkZWxheVRleHR1cmVV
cGRhdGVzIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3IgdG8gZGV0ZXJtaW5lCisg
ICAgICAgIGlmIHRleHR1cmUgdXBsb2FkcyBzaG91bGQgYmUgZGVsYXllZCB1bnRpbCBhbGwgcGFp
bnRpbmcgaGFzIGNvbXBsZXRlZC4KKyAgICAgICAgVXBkYXRlIHVuaXQgdGVzdHM6IENDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIGFuZAorICAgICAgICBUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2Vi
U2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXREZWxh
eVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlNl
dHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcDoKKyAgICAgICAgKE1vY2tMYXllckRlbGVnYXRlKToKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpNb2NrTGF5
ZXJEZWxlZ2F0ZTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdh
dGU6OnByZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6Om5vdGlm
eVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAoQ29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXIpOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3Qp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdU
Rjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAg
ICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dGV4dHVyZVVw
ZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpw
cmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6cHJlcGFyZVRvVXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVByZXBhcmVUb1VwZGF0ZSk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpp
ZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzQ291bnQp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZzo6cHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdURjo6
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZVJlY3RDb3VudCk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyk6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjphZnRlclRlc3QpOgorICAgICAgICAoV1RG
OjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0Vmlld3BvcnRTaXplOjpiZWdpblRlc3QpOgorICAgICAg
ICAoV1RGOjpUZXN0TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbjo6YmVnaW5UZXN0KToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE1hbnlTdXJmYWNlczo6YmVnaW5UZXN0
KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6OmZ1bGxMaWZlY3ljbGVUZXN0
KToKKyAgICAgICAgKiB0ZXN0cy9MYXllclRleHR1cmVVcGRhdGVyVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKyAgICAgICAgKFdURjo6RmFrZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXVEY6
OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdU
Rjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAo
VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpGYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcik6Cisg
ICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvdW50KToKKyAgICAg
ICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNsZWFyUGFpbnRDb3VudCk6CisgICAg
ICAgIChXVEY6OkZha2VUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXVEY6OkZha2VUaWxlZExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV1RGOjpGYWtlVGls
ZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkZh
a2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6VEVT
VCk6CisKIDIwMTItMDItMDcgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBVbml0IHRlc3QgZm9yIGJ1ZyAjNzc5OTYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGQ5N2U1
MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4OC4uZGQwMzUzZDE2M2NkYmYzOTlkNzgx
YmYzNmY5ZGZiNTdlZTZjNWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVy
ZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093
blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9
CkBAIC03OCw3ICs3OCw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAgICAgICAgICAgICBM
YXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxv
YXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKIHsKICAgICBt
X3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAKQEAgLTkyLDcgKzkyLDcg
QEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZv
cm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRl
cjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZhc1BhaW50
ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWludGVyLnNraWFDb250ZXh0
KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKLSAgICBwYWludENvbnRl
bnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUp
OworICAgIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoKmNhbnZhc1Bh
aW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAKICAgICBpZiAo
IWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gY2FudmFzUGFp
bnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0ZTE2MjI5NWI4
NmUwMDg5M2MzM2VmMDNkNGI2MmQyYzFlNTJiZDVmLi4yYWJhYzk2YTAzMGRiMDkyODQ5NDNjZjM4
YjQ5NGNkODBlYzkwYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9t
aXVtOwogLy8gcG9zc2libGUuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNz
IFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFu
YWdlciopOwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5n
T3BhcXVlUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
LCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAg
ICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZTJhYjc5ODM4NmZjY2YwNzAxM2Q2NmJiM2YyOGZlN2Q4
ZjRlYzI3Yy4uMzRhZDI2MDk1MzFjYTFmMDQ0OTdmMTRiNTM3MmU2MjA1YTIyMmFlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTg2LDEwICs4NiwxMCBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpT
YW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cgogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdC
QSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZv
aWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5n
T3BhcXVlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJl
Y3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFn
ZVNpemUodGlsZVNpemUpOwotICAgIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscywgY29u
dGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb250ZW50UmVjdCwgdGlsZVNpemUsIGJv
cmRlclRleGVscywgY29udGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiB9CiAKIHZv
aWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
c1JlY3QoU2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCAxYzU2NGNkYzE4M2VhNDk1OTFmNjkwNmVmZWJkM2E4ZDliNWY4MGNjLi42
ZDcyMjVmMzIyZDZhNWEwYjY2MmNjMTgyZjBlOTE1N2JmNjY0MWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7
CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVS
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsK
ICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0g
Zm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTRmZTM1YTU4MDVm
NmZkMDdmMzM3NDM0ZWY0NTk1ZjQ3OTU0Nzc2MC4uOTY1ZDJlNDBmNzQxZTUwYjQ3M2Q2NTFiODIz
MjliNGY2ZTBhNDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBA
IC00NSw2ICs0NSwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhczJETGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitDYW52YXMyRExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8p
Cit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCBhbGxv
Y2F0b3IpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRM
YXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVyQ2hy
b21pdW0oY29udGV4dCwgc2l6ZSkpOwpAQCAtNTgsNiArNzIsNyBAQCBDYW52YXMyRExheWVyQ2hy
b21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Y29uc3QgSQogICAgICwgbV9mYm8oMCkKICAgICAsIG1fdXNlRG91YmxlQnVmZmVyaW5nKENDUHJv
eHk6Omhhc0ltcGxUaHJlYWQoKSkKICAgICAsIG1fY2FudmFzKDApCisgICAgLCBtX3VwZGF0ZXJU
ZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgaWYgKG1fdXNlRG91
YmxlQnVmZmVyaW5nKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+
Y3JlYXRlRnJhbWVidWZmZXIoKSk7CkBAIC05NSw3ICsxMTAsNyBAQCB2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6c2V0Q2FudmFzKFNrQ2FudmFzKiBjYW52YXMpCiAgICAgbV9jYW52YXMgPSBj
YW52YXM7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8q
IG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMzLDEyICsxNDgsMTIgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hy
b21pdW06OnNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcikK
ICAgICAgICAgbV9mcm9udFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVN
YW5hZ2VyKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXIm
IHVwZGF0ZXIpCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciAqYWxs
b2NhdG9yKQogewogICAgIGlmICghbV9iYWNrVGV4dHVyZUlkIHx8ICFtX2Zyb250VGV4dHVyZSB8
fCAhbV9mcm9udFRleHR1cmUtPmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShj
b250ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpKTsKKyAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRl
eHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5i
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwog
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fYmFja1RleHR1cmVJZCwgMCkpOwpA
QCAtMTQ5LDYgKzE2NCwxMSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dAogICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT5mbHVzaCgpKTsKIH0KIAordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06
OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYg
aGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJ
bnRSZWN0KCksIEludFJlY3QoKSk7Cit9CisKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52YXNMYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNo
cm9taXVtLmgKaW5kZXggMTFhMWE5NTM5MGNkOGU5YWRhOGZjODRjMWI5OWI3NGEwYjM1NjhjYS4u
Njk3ODdjZTY1OGUzNzdmZmE5MTU1ZWUxMDk2MjkwYTFkODdmYWZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQ3LDYgKzQ3LDIzIEBAIGNsYXNzIFJlZ2lvbjsKIC8v
IEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZh
czJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
KyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJU
ZXh0dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52
YXMyRExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1f
bGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJv
bWl1bT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZp
cnR1YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NSwxMCArNzIsMTEgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogCiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
SWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5T
cGFjZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhv
c3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAg
dmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOwogCkBA
IC04MCw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZURvdWJsZUJ1ZmZlcmluZzsK
ICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJlOwogICAgIFNrQ2FudmFz
KiBtX2NhbnZhczsKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmlu
ZGV4IDVmYTY3ODU0YzZiZDdmNTM4MmI1MmIwZWVmYmExMDMxNjZmYzA4ZmUuLjFmM2I2NDRlZTY2
YmJkMDc1MTdhYzQ4NWM5NWNiMjhkZDAxZTIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw2ICszNiwxNCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sK
K30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQorewor
fQorCiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50
ZXIocGFpbnRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApp
bmRleCA0NDE1ZjY5ODY1MzNiYjg1ZDY5ZTdjZjY0NzgyYjI2YWYxMTEzNWFjLi43ZjhkM2Q1OWQ5
OTllMzY4YTVhOGVhMmI2NDEwZDY2NTJmZTRmNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00MSw2ICs0MSwxOSBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIHRoZWlyIHJlc3BlY3RpdmUgcGFpbnRDb250ZW50cyBpbXBsZW1lbnRhdGlv
bnMuCiBjbGFzcyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXIgewogcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGlj
aXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9OworCiAgICAg
dmlydHVhbCB+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYWE3ZmI1Y2Y0NmIwNjI1N2ZmNWJm
MjM1ZmIzYmYwNzg0NTM1NDk5Zi4uZmY0N2UyNzJiNmFjMTlmOGUwN2Q1Y2VhYTc1ZDkzZGRjNWY3
YTU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAg
IHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIG1fZGVsZWdhdGU7
CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRl
ZFNjcmVlblNwYWNlICovKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGlsaW5nT3B0aW9uKCk7
CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwpAQCAtMTA5LDcgKzEwOSw3IEBA
IHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJl
Z2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKIH0K
IAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkK
K3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkK
IHsKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjMsNiAr
MTIzLDIwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWludENvbnRlbnRzSWZE
aXJ0eSgpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKK3ZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBBU1NFUlQoZHJhd3NDb250
ZW50KCkpOworCisgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVj
dCgpOworICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRl
bnRzKGxheWVyUmVjdCk7Cit9CisKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRl
eHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggM2U4Njg2ZDBhMGRiY2UyYzFlOGM2MWI2
MDE4MTQwMjYzNzY2YmYyMy4uNjgwMzA5OTYxMWJhNTk5ZmNlNTJhYmE2YTZlYTM3ZDcyMjUyOTUw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC01OSw4ICs1OSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyRGVsZWdhdGUoKSB7IG1fZGVsZWdhdGUgPSAwOyB9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5T
cGFjZSk7CisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BhcXVlKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAx
OWRmYTJmMDA2Yzk4ODQ3NzBlNjc2YzQ1ODViZTk0NjcxMzRmM2IzLi44ZjJkZThhMGU4OTNkNDFk
YWYzMGI2NTFmMTUzNjU0Y2QzNWE3MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIFBhc3NPd25QdHI8U2tDYW52YXM+IGNyZWF0ZUFjY2Vs
ZXJhdGVkQ2FudmFzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogfQogCiBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
ciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0
ZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDRhMTBjODU4ZTRjZGE4YzI1
MmFjMTZkZmEwN2QwOWE1ZDkwOGVlYzMuLjc0M2VkNmViYWZiYzgyN2U2Mjc0NDg0NDFhZDNmOTk4
Mzc5YWI1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGludGVybWVkaWF0ZSBmcmFtZWJ1ZmZlciBhbmQgdGhlbiBp
cyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgb25jZSBkb25lLgogY2xhc3MgRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1
cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0
dWFsIH5UZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAxZTQ0
ZTg3MDIzZmVkNWY0NjkzNWRmN2MzZmJkMzYyZTU0YWIwNDI5Li5mNzM2NjI0NmE0OThiNTZmN2Mz
MTU4ZmQyYTBjZDAwNjljZGRjZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTM0LDkgKzM0LDkgQEAKIAogI2luY2x1ZGUgIkltYWdlTGF5ZXJDaHJvbWl1bS5oIgogCisj
aW5jbHVkZSAiQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIKLSNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUNvbG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKQEAgLTQ2LDEwICs0Niwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
ciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0
dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRl
eHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAg
cHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVy
ZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgICAg
ICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgIDog
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAg
LCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAgICAgICB7CiAgICAgICAgIH0K
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRS
ZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50
UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3Vi
SW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CkBAIC0xNTgsNyArMTU4LDcg
QEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykK
ICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAq
LykKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0
IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKIHsKICAgICBjcmVhdGVUZXh0dXJl
VXBkYXRlcklmTmVlZGVkKCk7CiAgICAgaWYgKG1fbmVlZHNEaXNwbGF5KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIxMjdiODU3YzVjMGM5ZTFlZjBjNGVlMTkwNGVhYjdhYjFj
N2YyMWUuLjljN2Q2NWQxN2RjMDlkZjIwYzQwYTA1MTUxY2FhZmQzMjUzMDNjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29u
dGVudHMoSW1hZ2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCBhMDc1ODEzMWZiZmUy
MzQ2OTBiMjczM2FlYzZiYTJmOGExNGQwY2E3Li5hMzk0YTRmZTZiYmFhNGU0YTU0ZTk0NWFhMTY1
OTgzMmU5NjY4ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw2ICszNiw3IEBACiAKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hy
b21pdW0uaCIKQEAgLTUzLDcgKzU0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
Q0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFJlZ2lvbjsKIApAQCAtMTU0LDkg
KzE1NCwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVk
IHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3Jl
ZW5TcGFjZSAqLykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0
eSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFj
ZSAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
SGFuZGxlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggMTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0YTNhNDhmOGNkOTMyMy4uNWUxZThl
MjYwZjMwYjNlODc1NWRkZjliOTdkMDhiYmQxMWJiZDZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaApAQCAtNDgsMTQgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgICAgICB2aXJ0dWFsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gMDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KSA9IDA7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorICAg
IH07CisKKyAgICBjbGFzcyBIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwg
fkhhbmRsZXIoKSB7IH0KIAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4
dHVyZT4gbV90ZXh0dXJlOworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVV
cGRhdGVyKCkgeyB9CkBAIC03Myw4ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNhbXBs
ZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkg
PSAwOwogICAgIC8vIFRoZSB8cmVzdWx0aW5nT3BhcXVlUmVjdHwgZ2l2ZXMgYmFjayBhIHJlZ2lv
biBvZiB0aGUgbGF5ZXIgdGhhdCB3YXMgcGFpbnRlZCBvcGFxdWUuIElmIHRoZSBsYXllciBpcyBt
YXJrZWQgb3BhcXVlIGluIHRoZSB1cGRhdGVyLAogICAgIC8vIHRoZW4gdGhpcyByZWdpb24gc2hv
dWxkIGJlIGlnbm9yZWQgaW4gcHJlZmVyZW5jZSBmb3IgdGhlIGVudGlyZSBsYXllcidzIGFyZWEu
Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiAvKiBjb250
ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJU
ZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRSZWN0KiAvKiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVj
dCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMg
Ki8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1
ZVJlY3QgKi8pID0gMDsKIAogICAgIC8vIFNldCB0cnVlIGJ5IHRoZSBsYXllciB3aGVuIGl0IGlz
IGtub3duIHRoYXQgdGhlIGVudGlyZSBvdXRwdXQgaXMgZ29pbmcgdG8gYmUgb3BhcXVlLgogICAg
IHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDA3OWFkMmVkZTk1NDc1NTgyYjg3MDcyOWE3MWE1ZDYxYmQyOGFiNGIu
LjlmYTY3ZDQxMDIzZTQ1MTljNzllNTdhYjY3MmNmZGU5OTdhYWVkNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bs
dWdpbkxheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBsdWdpbkxheWVyQ2hyb21p
dW06OlBsdWdpbkxheWVyQ2hyb21pdW0oKQogewogfQogCi12b2lkIFBsdWdpbkxheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVy
Q29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIFBsdWdpbkxheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghbV9uZWVkc0Rpc3BsYXkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAppbmRleCA4NDM2NTY5NWJi
MWRkYzY1MjMxYWRkMDRmNmYwZDgzMDAwOTFlMGQwLi41YTAzOGIyYmY3NDM3M2I3ZDExMmY2NGRh
YjFkZGEzYjIzMmU5MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsdWdpbkxheWVyQ2hyb21pdW0g
OiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGx1Z2luTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCAwZDk3NGZhNjNhNDQ1N2Q5ZWFjN2M4Yjg3M2Y3ZTkxYTRkMjY4NDNiLi42NGQ0NjBlMjdk
NzlkOGQ3YTgyN2NlMjA1MjMwNjhhNDlmMWZiYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDksMTQgKzQ5LDE0
IEBAIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBm
bG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8q
IGJvcmRlclRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5n
T3BhcXVlUmVjdCkKIHsKICAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVj
b3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBQ
bGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwogICAgIHBsYXRmb3Jt
Q29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tP
cGFxdWVSZWdpb24oIW1fbGF5ZXJJc09wYXF1ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBo
aWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRzKGdyYXBoaWNz
Q29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCwg
Y29udGVudHNTY2FsZSk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogCiAgICAgaWYg
KCFtX2xheWVySXNPcGFxdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggN2ZjYzYwNTlmOTBlN2Q5ZDFjMzAxYmYyYTcwZjUx
NTJhNDkyN2IwMC4uNDY1NTQyZTU3YTIwM2I2OTQ1MDI2NTA1ZTA1OGU5ZDRkMzg5ZjA0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVs
cywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50
c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIGRyYXdQaWN0
dXJlKFNrQ2FudmFzKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYzkxZGQ1ZGZiNDJlNTBmMDU5M2NiYTFj
MzI3NzdlYzU5MjkxNmQ4MS4uMDliMDZhMTBiYTRlODczZjZmODU2YjVkNDVjMmVjN2E1NTAwYmYw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBA
QCBJbnRTaXplIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y29udGVudEJvdW5kcygpIGNvbnN0CiAgICAg
cmV0dXJuIEludFNpemUobHJvdW5kZihib3VuZHMoKS53aWR0aCgpICogY29udGVudHNTY2FsZSgp
KSwgbHJvdW5kZihib3VuZHMoKS5oZWlnaHQoKSAqIGNvbnRlbnRzU2NhbGUoKSkpOwogfQogCi12
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyJiBoYW5kbGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0
aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29t
ZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVl
c3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkgfHwgbV90aWxlci0+aXNFbXB0eSgpKQorICAg
IGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkg
fHwgbV90aWxlci0+aXNFbXB0eSgpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW50IGxlZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC54KCk7
CkBAIC0yMTAsMTUgKzIxMCw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlCiAgICAgICAgICAg
ICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5o
ZWlnaHQoKSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICB1cGRhdGVy
LmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAg
ICAgIGhhbmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OwogICAgICAgICB9CiAgICAgfQotCi0gICAgLy8gVGhlIHVwZGF0ZVJlY3Qgc2hvdWxkIGJlIGlu
IGxheWVyIHNwYWNlLiBTbyB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHBhaW50UmVjdCBmcm9tIGNv
bnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UuCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0
KG1fcGFpbnRSZWN0KTsKLSAgICBmbG9hdCB3aWR0aFNjYWxlID0gYm91bmRzKCkud2lkdGgoKSAv
IHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgoKSk7Ci0gICAgZmxvYXQg
aGVpZ2h0U2NhbGUgPSBib3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250
ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOwotICAgIG1fdXBkYXRlUmVjdC5zY2FsZSh3aWR0aFNjYWxl
LCBoZWlnaHRTY2FsZSk7CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdP
cHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikKQEAgLTM1MywxMiArMzQ3LDYgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnByb3RlY3RUaWxlVGV4dHVyZXMoY29uc3QgSW50UmVjdCYg
bGF5ZXJSZWN0KQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGls
ZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQog
ewotICAgIC8vIFJlc2V0IG1fdXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgotICAgIGZvciAoQ0NM
YXllclRpbGluZ0RhdGE6OlRpbGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50
aWxlcygpLmJlZ2luKCk7IGl0ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7
Ci0gICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxl
Kj4oaXRlci0+c2Vjb25kLmdldCgpKTsKLSAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50
UmVjdCgpOwotICAgIH0KLQogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKIAog
ICAgIC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8g
Y29udGFpbiBhbGwKQEAgLTQwOSwzMCArMzk3LDE0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQK
ICAgICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXF1ZXN0ZWRVcGRh
dGVUaWxlc1JlY3QgPSBJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwgYm90dG9t
IC0gdG9wICsgMSk7CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGlu
dG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVj
dCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRv
IHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBj
YW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRo
ZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhl
cmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgot
ICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIo
KSk7Ci0gICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAgICB0ZXh0dXJlVXBkYXRlcigp
LT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVj
dCk7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBm
b3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFi
bGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogCi0gICAgICAgICAgICAvLyBUaWxlcyBhcmUg
Y3JlYXRlZCBiZWZvcmUgcHJlcGFyZVRvVXBkYXRlKCkgaXMgY2FsbGVkLgorICAgICAgICAgICAg
Ly8gVGlsZXMgYXJlIGNyZWF0ZWQgYWJvdmUuCiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAg
ICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1f
dGlsZXItPnRpbGVCb3VuZHMoaSwgaik7Ci0KLSAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMg
cGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUuIElmIGV2ZXJ5dGhpbmcgcGFpbnRlZCBpbiB0aGUg
dGlsZSB3YXMgb3BhcXVlLCBhbmQgdGhlIGFyZWEgaXMgYSBzdWJzZXQgb2YgYW4KLSAgICAgICAg
ICAgIC8vIGFscmVhZHkgb3BhcXVlIGFyZWEsIGtlZXAgdGhlIG9sZCBhcmVhLgotICAgICAgICAg
ICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFp
bnRSZWN0KTsKLSAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50
ZXJzZWN0aW9uKHRpbGVSZWN0LCBwYWludGVkT3BhcXVlUmVjdCk7Ci0gICAgICAgICAgICBpZiAo
dGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRpbGVQYWludGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFx
dWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVkT3BhcXVlUmVjdCkpCi0gICAgICAgICAgICAgICAg
dGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBhaW50ZWRPcGFxdWVSZWN0OwotCiAgICAgICAgICAg
ICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFib3ZlIG1vdmVkIHRo
ZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdC4KICAgICAgICAgICAgIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlm
IChkaXJ0eVJlY3QuaXNFbXB0eSgpKQpAQCAtNDQ2LDEwICs0MTgsNiBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50
IHRvcCwgaW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50UmVjdCk7
CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAg
ICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01MTcsNiArNDg1LDEyIEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogICAg
IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVjdCgpOwogICAgIG1fcGFpbnRSZWN0
ID0gSW50UmVjdCgpOwogCisgICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMu
CisgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVu
ZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0
PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOworICAgICAgICB0aWxlLT5tX3Vw
ZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgfQorCiAgICAgdXBkYXRlQm91bmRzKCk7CiAKICAg
ICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKQEAgLTYx
Myw1ICs1ODcsNDcgQEAgSW50UmVjdCBUaWxlZExheWVyQ2hyb21pdW06OmlkbGVQYWludFJlY3Qo
Y29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKICAgICByZXR1cm4gcHJlcGFpbnRSZWN0
OwogfQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBk
YXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50
UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcHJlcGFy
ZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRo
ZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1
c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgor
ICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFw
aGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAorICAgIC8vIHNvIHdlIGdyYWIg
YSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRo
ZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3Rl
Y3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICBJbnRSZWN0IHBhaW50ZWRPcGFxdWVSZWN0Owor
ICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCks
ICZwYWludGVkT3BhcXVlUmVjdCk7CisgICAgaW50IGxlZnQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRp
bGVzUmVjdC54KCk7CisgICAgaW50IHRvcCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0Lnko
KTsKKyAgICBpbnQgcmlnaHQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5tYXhYKCkgLSAx
OworICAgIGludCBib3R0b20gPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5tYXhZKCkgLSAx
OworICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKKyAgICAgICAgZm9y
IChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgeworICAgICAgICAgICAgVXBkYXRhYmxl
VGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKKworICAgICAgICAgICAgLy8gVGlsZXMgYXJlIGNy
ZWF0ZWQgaW4gcHJlcGFyZVRvVXBkYXRlVGlsZXMoKS4KKyAgICAgICAgICAgIGlmICghdGlsZSkK
KyAgICAgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAgICAgICBJbnRSZWN0IHRpbGVSZWN0
ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAgICAgICAgLy8gU2F2ZSB3aGF0
IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gSWYgZXZlcnl0aGluZyBwYWludGVkIGlu
IHRoZSB0aWxlIHdhcyBvcGFxdWUsIGFuZCB0aGUgYXJlYSBpcyBhIHN1YnNldCBvZiBhbgorICAg
ICAgICAgICAgLy8gYWxyZWFkeSBvcGFxdWUgYXJlYSwga2VlcCB0aGUgb2xkIGFyZWEuCisgICAg
ICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwg
bV9wYWludFJlY3QpOworICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Qg
PSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIHBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICAgICAgICAg
IGlmICh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgIT0gdGlsZVBhaW50ZWRSZWN0IHx8ICF0aWxlLT5t
X29wYXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KSkKKyAgICAgICAgICAg
ICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGUgdXBkYXRlUmVjdCBzaG91bGQgYmUgaW4gbGF5ZXIgc3Bh
Y2UuIFNvIHdlIGhhdmUgdG8gY29udmVydCB0aGUgcGFpbnRSZWN0IGZyb20gY29udGVudCBzcGFj
ZSB0byBsYXllciBzcGFjZS4KKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV9wYWludFJl
Y3QpOworICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBib3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKTsKKyAgICBmbG9hdCBoZWlnaHRTY2Fs
ZSA9IGJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMo
KS5oZWlnaHQoKSk7CisgICAgbV91cGRhdGVSZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNj
YWxlKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNDYxOTJmZTVkMjU2ZTZlMjdlZmExZjZhZjkw
YTc4ZDZkZjgyMDk4NC4uZjc3OWI0YjQzYjRlODAyZGEwZWNiN2I0M2FmNGEwMWIyNTAyYjQwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVw
ZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhi
b29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7
CkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0
byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52
YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKIAotICAgIC8vIFByZXBhcmUg
ZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJS
ZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdp
dGggbGF5ZXJSZWN0LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgdGhpcyB3aWxsIHRyeSB0byBw
YWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYgaWRsZS4KQEAgLTk3LDYgKzk3
LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBza2lwc0RyYXcoKSBjb25zdCB7IHJldHVybiBt
X3NraXBzRHJhdzsgfQogCisgICAgLy8gUGFpbnQgY29udGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0
ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KKyAgICB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKwogICAgIHZpcnR1YWwgdm9pZCBwcm90
ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCiAgICAgdmlydHVhbCBUZXh0dXJlTWFuYWdlciog
dGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKQEAgLTExMyw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAg
IFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgVXBkYXRhYmxlVGls
ZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBi
ZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCku
CisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBh
bmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1Jl
Y3Q7CiAKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1
c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmNwcAppbmRleCA3NGRiN2YxM2VjNGY4ZjRjYWFmNjhlNWFkNzQ3NDViZTkz
YjcyZjNiLi43ZjBmZjZmNDJkYzA0Mzc5YmRjZmVhYjEwMmY0M2ZiNDkwZjBiNjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBt
X2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJl
Ojp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRS
ZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQpOworfQorCiBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2Vi
R0xMYXllckNocm9taXVtOjpjcmVhdGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
R0xMYXllckNocm9taXVtKCkpOwpAQCAtNTUsNiArNzAsNyBAQCBXZWJHTExheWVyQ2hyb21pdW06
OldlYkdMTGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAg
LCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAg
LCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAK
QEAgLTY5LDcgKzg1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpICYmIGNvbnRl
eHQoKSAmJiAoY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5k
ZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtOTgsNiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQog
Cit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxl
KG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQogewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA0ZGM2OGEzMzA4ZTNmMjMzN2I0YjI2NWM0
NjVkNzVkYjJkYzZhN2ZhLi43YTc0MTZmYjY1NTg1NzczNmNkZGRjODBhZmQ5OTM3MWE1MTAyNDRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIK
KyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDUsNiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFz
azsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXll
ckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNs
YXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+
IGNyZWF0ZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0K
KworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJv
bWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9Owor
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoKTsKIAog
ICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwpAQCAtNTMsNyArNzEsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKSB7IG1fdGV4dHVy
ZUlkID0gdGV4dHVyZUlkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZp
cnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgYm9vbCBwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2Fu
dmFzKEltYWdlQnVmZmVyKik7CkBAIC03OCw2ICs5Nyw4IEBAIHByaXZhdGU6CiAgICAgLy8gQSBy
ZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZlciBhbHJl
YWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJvbWl1bS4K
ICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisKKyAgICBPd25QdHI8VXBkYXRl
clRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAppbmRleCA3MGM5YzgyMmE4MWI3OGQyOTI1MjA2N2M0NWVhY2ZjYjYyYmE2MjU2
Li5kZjRmYmMyMDEwZWQ5YTE5MDZmMDIwZGJmOTA4NWUyYjRmOWZiNDY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM2LDkgKzM2LDEyIEBACiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlICJjYy9D
Q1RocmVhZFByb3h5LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSB7CiBz
dGF0aWMgaW50IG51bUxheWVyVHJlZUluc3RhbmNlczsKIH0KQEAgLTUwLDYgKzUzLDIxIEBAIGJv
b2wgQ0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAg
IHJldHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJlZUhvc3Q6
OlVwZGF0ZUhhbmRsZXI6OlVwZGF0ZUhhbmRsZXIoQ0NQcm94eSogcHJveHkpCisgICAgOiBtX3By
b3h5KHByb3h5KQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6On5VcGRh
dGVIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6
OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJl
LT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICBtX3Byb3h5LT51cGRhdGUodGV4dHVyZSwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4g
Q0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+
IGxheWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0
dGluZ3MpKTsKQEAgLTM3MSw3ICszODksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9z
aXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQo
KSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLWJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7
CiAgICAgaWYgKCFtX2xheWVyUmVuZGVyZXJJbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFs
aXplTGF5ZXJSZW5kZXJlcigpOwpAQCAtMzg2LDEzICs0MDQsMTMgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOwor
ICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExh
eWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVt
KiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJl
cGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3Vy
ZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTQw
MSwzOCArNDE5LDM2IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJD
aHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCks
IHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVj
dCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVw
ZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBk
YXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAg
ICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFm
dGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRp
bmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVM
aXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1
cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNo
cm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwog
ICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgi
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0g
ICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9F
VkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhp
cywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJm
YWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVT
aXplKTsKICAgICB9CiAKICAgICByZXNlcnZlVGV4dHVyZXMoKTsKIAotICAgIHBhaW50TGF5ZXJD
b250ZW50cyhtX3VwZGF0ZUxpc3QsIFBhaW50VmlzaWJsZSk7Ci0gICAgaWYgKCFtX3RyaWdnZXJJ
ZGxlUGFpbnRzKQorICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5hZ2VyOjpyZWNsYWlt
TGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7Ci0gICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBU
ZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOwogICAgIG1fY29u
dGVudHNUZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5VG9MaW1pdChwcmVmZXJyZWRMaW1pdEJ5
dGVzKTsKICAgICBpZiAobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNl
Qnl0ZXMoKSA+PSBwcmVmZXJyZWRMaW1pdEJ5dGVzKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBJZGxlIHBhaW50aW5nIHNob3VsZCBmYWlsIHdoZW4gd2UgaGl0IHRoZSBwcmVmZXJyZWQgbWVt
b3J5IGxpbWl0LAotICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2Fy
ZHMgdGhlIG1heGltdW0gbGltaXQuCi0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRN
YXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJlZExpbWl0Qnl0ZXMpOwotICAgIC8vIFRoZSBzZWNv
bmQgKGlkbGUpIHBhaW50IHdpbGwgYmUgYSBuby1vcCBpbiBsYXllcnMgd2hlcmUgcGFpbnRpbmcg
YWxyZWFkeSBvY2N1cmVkIGFib3ZlLgotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxp
c3QsIFBhaW50SWRsZSk7Ci0gICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1v
cnlMaW1pdEJ5dGVzKG1heExpbWl0Qnl0ZXMpOworICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIo
KSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoKQpAQCAtNDQw
LDI2ICs0NTYsNjEgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcygpCiAg
ICAgLy8gVXNlIEJhY2tUb0Zyb250IHNpbmNlIGl0J3MgY2hlYXAgYW5kIHRoaXMgaXNuJ3Qgb3Jk
ZXItZGVwZW5kZW50LgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6QmFja1RvRnJv
bnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRhdGVMaXN0KTsKLSAgICBmb3IgKENDTGF5
ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmbV91cGRhdGVM
aXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOworICAg
IGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2lu
KCZtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAg
IGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpIHx8ICFpdC0+YWx3YXlzUmVz
ZXJ2ZVRleHR1cmVzKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaXQtPnJlc2Vy
dmVUZXh0dXJlcygpOwogICAgIH0KIH0KIAotLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlwZSBw
YWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAg
IEFTU0VSVChsYXllcik7Ci0gICAgQVNTRVJUKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUgfHwg
UGFpbnRJZGxlID09IHBhaW50VHlwZSk7Ci0gICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWludFR5
cGUpCi0gICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNw
YWNlKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGlydHko
KTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlz
LCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXpl
KCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJD
aHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5maXJzdC5nZXQo
KTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkobV9sYXllclVwZGF0ZUxp
c3RbbGF5ZXJJbmRleF0uc2Vjb25kKTsKKyAgICB9CisKKyAgICBpZiAobV90cmlnZ2VySWRsZVBh
aW50cykgeworICAgICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVNYW5h
Z2VyOjpyZWNsYWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIHNpemVfdCBt
YXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3BvcnRT
aXplKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xp
bWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOworICAgICAgICBpZiAobV9jb250ZW50c1RleHR1cmVN
YW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA8IHByZWZlcnJlZExpbWl0Qnl0ZXMpIHsK
KyAgICAgICAgICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQgdGhl
IHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCisgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgd2ls
bCBhbHdheXMgcHVzaCB1cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxpbWl0LgorICAgICAgICAgICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZlcnJl
ZExpbWl0Qnl0ZXMpOworICAgICAgICAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQgd2ls
bCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQgYWJv
dmUuCisKKyAgICAgICAgICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlz
dC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5k
ZXhdLmZpcnN0LmdldCgpOworICAgICAgICAgICAgICAgIGxheWVyLT5pZGxlUHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7
CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7
IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVt
KiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmZpcnN0LmdldCgpOworICAg
ICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgfQogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgY29uc3Qg
UmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlLCBMYXllclVwZGF0ZUxpc3QmIHVwZGF0ZUxpc3Qp
Cit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxkIGhh
dmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJmYWNl
IGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwgd2Ug
bWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91bmRz
KCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250ZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKHBhaXI8UmVmUHRy
PExheWVyQ2hyb21pdW0+LCBSZWdpb24+KGxheWVyLCBvY2NsdWRlZFNjcmVlblNwYWNlKSk7Cit9
CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1
cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllclVwZGF0ZUxpc3Qm
IHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhp
c3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMg
cG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21l
dGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAt
NDcwLDE2ICs1MjEsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBy
ZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENvbnRl
bnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5v
T2NjbHVzaW9uKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VMYXll
ci0+bWFza0xheWVyKCksIG5vT2NjbHVzaW9uLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBM
YXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FM
YXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50c0lm
RGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgYXBw
ZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgbm9PY2NsdXNpb24sIHVwZGF0ZUxpc3QpOwog
CiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICBy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0g
ICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigp
LCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXll
cihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBub09jY2x1c2lvbiwgdXBkYXRlTGlzdCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC01MTksNyArNTcwLDcgQEAgc3RhdGljIHZvaWQgbGVhdmVU
YXJnZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJl
bmRlclMKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUgcGFp
bnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJVcGRhdGVMaXN0JiB1cGRh
dGVMaXN0KQogewogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3IgdGVzdGluZyBv
Y2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAg
ICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0
b3JUeXBlOwpAQCAtNTMzLDEzICs1ODQsMTMgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAg
ICAvLyBXZSBtZXJnZSB0aGUgb2NjbHVzaW9uIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIHdpdGgg
dGhlIG5ldyBjdXJyZW50IHN1YnRyZWUuIFRoaXMgbmV3IHRhcmdldCBpcyBwdXNoZWQgb250byB0
aGUgc3RhY2sgaWYgbm90IGFscmVhZHkgdGhlcmUuCiAgICAgVmVjdG9yPFJlbmRlclN1cmZhY2VS
ZWdpb24+IHRhcmdldFN1cmZhY2VTdGFjazsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5k
ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAg
ICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5
ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXll
ckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0gZW5k
OyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgp
KSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHko
KSk7CiAKICAgICAgICAgICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRTdXJmYWNl
U3RhY2ssIGl0LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAgcGFpbnRNYXNrQW5kUmVw
bGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOworICAgICAgICAgICAgYXBwZW5k
TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKCppdCwgdXBkYXRlTGlzdCk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogYWRkIHRoZSByZXBsaWNhIGxheWVyIHRvIHRoZSBjdXJyZW50IG9jY2x1
c2lvbgogCiAgICAgICAgICAgICBpZiAoaXQtPm1hc2tMYXllcigpIHx8IGl0LT5yZW5kZXJTdXJm
YWNlKCktPmRyYXdPcGFjaXR5KCkgPCAxKQpAQCAtNTQ4LDcgKzU5OSw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5KCkp
OwogCiAgICAgICAgICAgICBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0
YWNrLCBpdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KCppdCwgcGFpbnRUeXBlLCB0YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9jY2x1
ZGVkSW5TY3JlZW4pOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKCppdCwgdGFyZ2V0
U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRlZEluU2NyZWVuLCB1cGRhdGVMaXN0KTsKICAgICAg
ICAgICAgIGl0LT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKHRhcmdldFN1cmZhY2VTdGFj
ay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsZWF2ZVRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC50YXJnZXRS
ZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKQEAgLTU1NiwzNiArNjA3LDE2
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJM
aXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsKLSAgICAvLyBVc2UgQmFja1RvRnJvbnQg
c2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAgdHlw
ZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
LCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXllckl0ZXJhdG9yVHlw
ZTsKLQotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6
ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKLSAg
ICAgICAgICAgIGlmIChpdC0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgaXQtPm1hc2tM
YXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotCi0g
ICAgICAgICAgICBpZiAoaXQtPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICAgICAgaXQt
PnJlcGxpY2FMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0
ZXIpOwotICAgICAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigp
KQotICAgICAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkKLSAgICAgICAgICAg
IGl0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgIH0K
LX0KLQogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAg
Zm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0
LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIg
PSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlz
dC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUlu
ZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7
CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAg
bV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVh
cigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApp
bmRleCBjMzgxMGFiMjc1YzNkMDE3Y2RmZDdjMDg0M2I0YTdjN2ZjYjk5NzA0Li5lYjU2NTM1M2Ez
YTc2MmIwZWVhMmI1ZWMyN2U2ODJjMDRhOGI5ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaApAQCAtNDEsNyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xh
eWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiBjbGFzcyBSZWdpb247CkBA
IC03NCw3ICs3Myw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgcmVmcmVz
aFJhdGUoMCkKICAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQogICAgICAgICAg
ICAgLCBwYXJ0aWFsU3dhcEVuYWJsZWQoZmFsc2UpCi0gICAgICAgICAgICAsIHBhcnRpYWxUZXh0
dXJlVXBkYXRlcyh0cnVlKSB7IH0KKyAgICAgICAgICAgICwgcGFydGlhbFRleHR1cmVVcGRhdGVz
KHRydWUpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpIHsgfQogCiAg
ICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7CiAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47
CkBAIC04NCw2ICs4NCw3IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICBib29sIHBlclRpbGVQ
YWludGluZzsKICAgICBib29sIHBhcnRpYWxTd2FwRW5hYmxlZDsKICAgICBib29sIHBhcnRpYWxU
ZXh0dXJlVXBkYXRlczsKKyAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiAvLyBQ
cm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBi
YWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE4NSw5ICsxODYsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwogCiAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRp
b24gZmFpbHVyZS4KLSAgICBib29sIHVwZGF0ZUxheWVycygpOworICAgIGJvb2wgcHJlcGFyZVRv
VXBkYXRlKCk7CisgICAgdm9pZCB1cGRhdGVMYXllcnMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsK
ICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYp
OwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZv
aWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xOTksMTYgKzIwMCwy
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAg
Y2xhc3MgVXBkYXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZUhhbmRsZXIoQ0NQcm94eSopOworICAgICAg
ICB2aXJ0dWFsIH5VcGRhdGVIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQ
cm94eSogbV9wcm94eTsKKyAgICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gTGF5ZXJMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4sIFJlZ2lvbj4gPiBMYXllclVwZGF0ZUxpc3Q7CiAgICAgdHlwZWRl
ZiBWZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAgICAgdm9p
ZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlcigpOwogCi0gICAgZW51bSBQYWludFR5cGUgeyBQYWlu
dFZpc2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3Jl
ZW5TcGFjZSk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jiwg
UGFpbnRUeXBlKTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNl
KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVy
KExheWVyQ2hyb21pdW0qLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UsIExheWVy
VXBkYXRlTGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qLCBMYXllclVwZGF0ZUxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZFZp
c2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5
ZXJVcGRhdGVMaXN0Jik7CiAKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVt
Kik7CiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwogICAgIC8vIFByZS1y
ZXNlcnZlIHRleHR1cmVzIGZvciBhbnkgbGF5ZXIgbWFya2VkICJhbHdheXMgcmVzZXJ2ZSB0ZXh0
dXJlcyIKICAgICB2b2lkIHJlc2VydmVUZXh0dXJlcygpOwpAQCAtMjI4LDcgKzI0MSw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgTGF5ZXJM
aXN0IG1fdXBkYXRlTGlzdDsKKyAgICBMYXllckxpc3QgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dDsKKyAgICBMYXllclVwZGF0ZUxpc3QgbV9sYXllclVwZGF0ZUxpc3Q7CiAKICAgICBDQ1NldHRp
bmdzIG1fc2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAppbmRleCBhM2FhNzE2MDcxYzM0MmFiNjk4ZTNl
MGU5M2QyMjk4MjM3M2U3NWZhLi4wNjU2M2JiMzkyZWUxZDIxZjY3NDg3MTQxYmU4ZWJiMThmNTFh
NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIENDUHJveHlfaAog
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC04NCw2ICs4NSw4IEBAIHB1YmxpYzoK
ICAgICAvLyB1cGRhdGVzIGFyZSByZXF1aXJlZC4KICAgICB2aXJ0dWFsIGJvb2wgcGFydGlhbFRl
eHR1cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tz
CiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBjYjY5NmVkMTc3ZGM1ZWI0Mjkz
ZDhkNzkwMTIxYzE4ZTBmNTIzNGE5Li45YjdiOTE4MzBmNWU5ODQ4NWU5NjJjYTkxNWZmYTBjOWNk
MDgzOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMTYy
LDE1ICsxNjIsMTUgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVkc0FuaW1hdGUo
KQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiB7CiAgICAgQVNTRVJUKEND
UHJveHk6OmlzTWFpblRocmVhZCgpKTsKKwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAg
IHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKKyAgICAgICAgaWYgKG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgd2hpbGUgKG1fY3VycmVudFRleHR1cmVVcGRhdGVy
LT51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLmdldCgpKTsKIApAQCAtMTg1LDYgKzE4NSw4IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6ZG9Db21taXQoKQogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRl
KCk7CiAgICAgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUgPSB0cnVlOworCisgICAg
QVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciB8fCAhbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXItPmhhc01vcmVVcGRhdGVzKCkpOwogfQogCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNl
dE5lZWRzQ29tbWl0KCkKQEAgLTIyMyw2ICsyMjUsMTcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyKQorICAgICAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAgICBpZiAobV9sYXllclRy
ZWVIb3N0SW1wbC0+c2V0dGluZ3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlci0+YXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKKyAgICBlbHNlCisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGV4dCgpLCBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+YWxsb2NhdG9yKCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1
bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykK
IHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tcG9zaXRlSW1tZWRpYXRlbHkoKQogewpAQCAt
Mjg4LDkgKzMwMSwxMSBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVk
KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpKQorICAgIGlmICghbV9sYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKwogICAgIGRvQ29tbWl0KCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZGExZmU0
NjE5MjExZGVkYmRkN2VhMmRjYWEzN2M2NTMyNDhmZjQ2NS4uN2MzZDA1MDhhM2ViZjI2MDRkODll
MDkzNzBjYjc2NjlhZWEzNzFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVy
VHJlZUhvc3Q7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogCiBjbGFzcyBDQ1NpbmdsZVRocmVh
ZFByb3h5IDogcHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgewogcHVi
bGljOgpAQCAtNTYsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICB2aXJ0dWFsIGJvb2wgcGFydGlhbFRleHR1
cmVVcGRhdGVDYXBhYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJU
cmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2Fw
QnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpA
QCAtODksNiArOTEsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0
OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0
aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBP
d25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAv
LyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBp
dCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRl
eCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3MmFiLi5kZjc3MjQ0MTNkMTcz
YzE4MDYyOGQ0Zjg5YjQwY2U4OWQzYTExYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFn
ZWRUZXh0dXJlLmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NU
ZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCiAgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkK
IHsKICAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQpAQCAtNjYsMjMgKzY2LDIwIEBAIGJvb2wg
Q0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogCiBib29sIENDVGV4dHVy
ZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50
KQogewotICAgIHNpemVfdCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9l
bnRyaWVzLnNpemUoKSk7Ci0gICAgZm9yICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4OyArK21f
ZW50cnlJbmRleCkgewotICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbbV9l
bnRyeUluZGV4XTsKKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIW1fZW50cmll
cy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgVXBkYXRlRW50
cnkmIGVudHJ5ID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgZW50cnkubV90ZXh0dXJlLT51
cGRhdGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5
Lm1fZGVzdFJlY3QpOworICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwogICAgIH0KIAot
ICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCi0g
ICAgY2xlYXIoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXpl
KCkgPiAwOwogfQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkKIHsKLSAgICBtX2Vu
dHJ5SW5kZXggPSAwOwogICAgIG1fZW50cmllcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgKaW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1
YmIzMC4uYzM3YWYzNGJlZTY0ZjdjMGFmNWIxMDM2OTUzMTE0MDIzYzU2NjY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTksNyArNTksNiBAQCBwcml2YXRlOgogICAgIH07
CiAKICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKLSAgICBzaXplX3QgbV9lbnRy
eUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRyaWVzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBmZDYzYmQ1YzBhM2Q4MmMxMjliYmI1OGUyNzZhMTAy
ODAwNjJkNTBlLi5iMGM3MTliZmYzMjJmNWNjYjA4OGY1MzFkNDQzNWI3NDhmOGE3OTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzExLDYgKzMxMSwyMCBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OnN0b3AoKQogICAgIG1fc3RhcnRlZCA9IGZhbHNlOwogfQogCit2b2lkIENDVGhy
ZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlIiwgdGhpcywgMCk7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zdGFydGVkKTsKKworICAgIE93blB0
cjxVcGRhdGVFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVXBkYXRlRW50cnkpOworICAgIGVu
dHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3Vy
Y2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBDQ1Byb3h5
OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgZW50cnkucmVsZWFzZSgpKSk7Cit9
CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVh
ZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTM5
Nyw5ICs0MTEsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGlu
dCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXll
cnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIGlmICghbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFy
ZVRvVXBkYXRlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKCk7CisKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGlu
ZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElm
IGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBzZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWlu
LiBDYWxsIHNldE5lZWRzQ29tbWl0CiAgICAgLy8gbm93IHNvIHRoYXQgd2UgZ2V0IGJlZ2luIGZy
YW1lIHdoZW4gdGhpcyBvbmUgaXMgZG9uZS4KQEAgLTQyMiwxMyArNDM4LDI1IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJs
ZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENv
bW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAordm9pZCBDQ1RocmVh
ZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+
IGVudHJ5KQoreworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhv
c3RJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZC0+YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJj
ZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24p
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9u
SW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CiAgICAgQVNTRVJU
KG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7
CiAgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogICAgICAgICByZXR1cm47CkBAIC00MzYs
MTAgKzQ2NCw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAKICAgICBtX2NvbW1pdENvbXBs
ZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAKLSAgICBBU1NFUlQoIW1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7Ci0gICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLQogICAgIG1f
c2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKIH0KIApAQCAtNDYx
LDE5ICs0ODUsMjAgQEAgYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5EcmF3KCkKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpOworICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCisg
ICAgICAgIHJldHVybjsKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdGV4dHVyZVVwZGF0ZXNQZXJG
cmFtZSA+IDAgPyB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lIDogOTk5OTkpOwogfQogCiB2b2lkIEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOwotICAgIEFT
U0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKCFt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CiAg
ICAgQVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKIAotICAgIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7Ci0KKyAgICBpZiAobV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAg
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgfQog
CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCmluZGV4IGI2NWE2YzYwNGUyOTIzZmM4ZjA5Y2Y5YWM3ZjU1OTZkMGFiMGNkZDAu
LmY1NmQzMmE3YzVhODczNzhjMGRmZmVmMzMwMWE4NDRlNDQ5YzQxMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CiAgICAgdmlydHVhbCBib29sIHBhcnRp
YWxUZXh0dXJlVXBkYXRlQ2FwYWJpbGl0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdElt
cGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0Nv
bXBsZXRlT25JbXBsVGhyZWFkKCk7CkBAIC04MSw2ICs4MiwxMiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKKyAgICBz
dHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiBtX3RleHR1cmU7CisgICAgICAgIEludFJlY3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJbnRS
ZWN0IG1fZGVzdFJlY3Q7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZAog
ICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBm
cmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0Pik7CiAgICAgdm9p
ZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKQEAgLTk1LDYgKzEwMiw3IEBAIHByaXZhdGU6CiAg
ICAgfTsKICAgICBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5k
Q29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENv
bW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoq
KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVF
bnRyeT4pOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJh
Y2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oCmluZGV4IGI1ZGE0ZTZiYTY3OGZlMjlkOGE4ZDU5OTdkNTEyZDU2MjZjOGNhOWIuLmU1
MWNiYWVhYjFjMTNiYTQzNTY0NGU1ZmIwN2M1NjE1ZDM4ZGYxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTM4LDYgKzEzOCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoK
ICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDI3MjNjYTc4YmY0NzJmNWQ1N2VkNDZjZTFlNmJlODE0
MDQzM2RjMmYuLmE2ODQxMTc4NTNjOTgzNDRmMjRmZjUzNDQ3MDk0ZTA4MGZkY2RjNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTAs
NiArNTAsNyBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0
dGluZ3MpCiAgICAgLCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoZmFsc2UpCiAgICAgLCBt
X3Nob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICwgbV9zaG93UGxhdGZvcm1MYXllclRyZWUoZmFs
c2UpCisgICAgLCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNl
dHRpbmdzKTsKIH0KQEAgLTUyMiw0ICs1MjMsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
UGFydGlhbFN3YXBFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRQYXJ0
aWFsU3dhcEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRE
ZWxheVRleHR1cmVVcGRhdGVzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2RlbGF5VGV4dHVyZVVw
ZGF0ZXMgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggNjNhMDBhMDk5OWUzMmQw
OTRjYzc4NWRhNThmNWY1NWFmYTJhMGE0My4uOGE1ZjY3YTY1YjYyN2Y5OGEwODIxMTVkM2FjZmQ3
ZTE4ZTkwNzMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKQEAgLTEzMywxMiArMTMzLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFBl
clRpbGVQYWludGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcnRpYWxT
d2FwRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRl
cyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsYXlUZXh0dXJlVXBkYXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsYXlUZXh0dXJlVXBkYXRlczsgfQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlNldHRpbmdzKiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFi
bGVkOwogICAgIGJvb2wgbV9zaG93RlBTQ291bnRlcjsKICAgICBib29sIG1fc2hvd1BsYXRmb3Jt
TGF5ZXJUcmVlOworICAgIGJvb2wgbV9kZWxheVRleHR1cmVVcGRhdGVzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggNDYyOWNiYjMyYWJlNWI0MzI0ZTU2YTA5N2ZlMzdkNjg1NzU1ZWEwNC4uOTU3YzYz
YjlkYzAzMTMzYzYxNzY5NjYyODhhZDA0NGRmNTYxMTUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzAxMCw2ICszMDEwLDcgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQog
CiAgICAgICAgIGNjU2V0dGluZ3MucGVyVGlsZVBhaW50aW5nID0gcGFnZSgpLT5zZXR0aW5ncygp
LT5wZXJUaWxlRHJhd2luZ0VuYWJsZWQoKTsKICAgICAgICAgY2NTZXR0aW5ncy5wYXJ0aWFsU3dh
cEVuYWJsZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRpYWxTd2FwRW5hYmxlZCgpOworICAg
ICAgICBjY1NldHRpbmdzLmRlbGF5VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRl
eHR1cmVVcGRhdGVzKCk7CiAKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVy
OjpjcmVhdGUodGhpcykpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0
U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAppbmRleCBlZGNjMGI1NjA2MjFjYzQ2MWZjZmRmZTFmYjExNTQ4YTAzNjUyM2FlLi41
NjhjZWFjYmIzMDdiZjg4MzlmZjUzMTQ5ODFhNzJkOWZlMmZjODQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTk3
Niw2ICs5NzYsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlLCBydW5N
dWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCitjbGFzcyBNb2NrTGF5ZXJEZWxl
Z2F0ZSA6IHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIHByZXNlcnZlczNEKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCkgeyB9Cit9OworCiBjbGFzcyBUZXN0T3Bh
Y2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ29udGVudExheWVyRGVsZWdhdGUgewog
cHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhv
c3RUZXN0KiB0ZXN0KQpAQCAtOTk3LDQ3ICsxMDA1LDEyNyBAQCBwcml2YXRlOgogCiBjbGFzcyBD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSAq
ZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAg
ICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
eworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAg
ICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3Bh
aW50Q29udGVudHNDb3VudDsgfQotICAgIGludCBpZGxlUGFpbnRDb250ZW50c0NvdW50KCkgeyBy
ZXR1cm4gbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OyB9Ci0gICAgdm9pZCByZXNldFBhaW50Q29u
dGVudHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyBtX2lkbGVQYWludENvbnRl
bnRzQ291bnQgPSAwO30KKyAgICAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cHJlcGFy
ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyog
ZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlLT5i
aW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICAgICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRl
cjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAg
dmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1h
bmFnZXIpKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdFJHQkE7CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJu
IG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRl
Q291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywg
aW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50UmVj
dCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV9s
YXllci0+cGFpbnRDb250ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRTY3JlZW5TcGFjZSkKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyogbGF5ZXIpIDogbV9sYXllcihsYXllcikgeyB9CisKKyAgICAgICAgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIG1fbGF5ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUo
Q29udGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgQ29udGVudExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwot
ICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fY29udGVu
dExheWVyVGV4dHVyZVVwZGF0ZXItPnNldE9wYXF1ZShvcGFxdWUoKSk7CisKKyAgICAgICAgR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLmJlc3RUZXh0dXJlRm9ybWF0OworICAgICAgICBzZXRUZXh0dXJlRm9ybWF0KHRl
eHR1cmVGb3JtYXQpOworICAgICAgICBzZXRTYW1wbGVkVGV4ZWxGb3JtYXQodGV4dHVyZVVwZGF0
ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpKTsKICAgICB9CisgICAgdmly
dHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKICAgICB7Ci0g
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsK
LSAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgICAgICBwcmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBkYXRlQ291
bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KCk7CisgICAgICAgIGlkbGVQcmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZSgpIHsgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCsrOyB9CisgICAg
aW50IHByZXBhcmVUb1VwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlVG9VcGRhdGVDb3Vu
dDsgfQorCisgICAgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlKCkgeyBtX2lkbGVQcmVwYXJlVG9V
cGRhdGVDb3VudCsrOyB9CisgICAgaW50IGlkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCgpIHsgcmV0
dXJuIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250ZW50c0Nv
dW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KKworICAgIHZvaWQgcHJlcGFy
ZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisgICAgaW50IHByZXBhcmVSZWN0Q291
bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBkYXRlUmVj
dCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7
IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENvbnRlbnRMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSkKICAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAg
ICAgICAgLCBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9pZGxlUHJlcGFy
ZVRvVXBkYXRlQ291bnQoMCkKICAgICAgICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQotICAg
ICAgICAsIG1faWRsZVBhaW50Q29udGVudHNDb3VudCgwKQotICAgICAgICAsIG1fdXBkYXRlQ291
bnQoMCkKKyAgICAgICAgLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkKKyAgICAgICAgLCBtX3VwZGF0
ZVJlY3RDb3VudCgwKQogICAgIHsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7
CiAgICAgICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CiAgICAgfQogCisgICAgUmVmUHRyPENvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyPiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOworICAg
IGludCBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50OworICAgIGludCBtX2lkbGVQcmVwYXJlVG9VcGRh
dGVDb3VudDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1faWRsZVBh
aW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsKKyAgICBpbnQgbV9wcmVw
YXJlUmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVy
IG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRv
ciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC0xMDY0LDE2
ICsxMTUyLDE5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQogICAg
IHsKLSAgICAgICAgLy8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlLgotICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8vIHByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNr
TGF5ZXItPnByZXBhcmVUb1VwZGF0ZUNvdW50KCkpOwogCi0gICAgICAgIC8vIGlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UKLSAgICAgICAgRVhQ
RUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVBhaW50Q29udGVudHNDb3VudCgpKTsK
KyAgICAgICAgLy8gaWRsZVByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQcmVw
YXJlVG9VcGRhdGVDb3VudCgpKTsKKworICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hl
Y2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQotICAgICAg
ICAvLyBhbW91dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgotICAgICAgICBF
WFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKLSAgICAg
ICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7CisgICAgICAg
IC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUK
KyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCkuCisgICAgICAgIEVY
UEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSwKKyAgICAgICAg
ICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOwogCiAgICAg
ICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xheWVyVHJlZUhvc3QgZGllcy4K
ICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLmNsZWFyKCk7CkBAIC0xMTAzLDYgKzExOTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwLCAxMCk7CiAgICAgICAg
IGxheWVyVHJlZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKKyAgICAg
ICAgbGF5ZXJUcmVlSG9zdCgpLT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbGF5ZXJUcmVl
SG9zdCgpLT51cGRhdGVMYXllcnMoKTsKIAogICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXpl
LCBsYXllclRyZWVIb3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKQEAgLTEyNDIsNyArMTMzNCw3IEBA
IGNsYXNzIFRlc3RMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgVGVzdExheWVyQ2hyb21pdW0oKSk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKICAgICAgICAgbV9vY2NsdWRlZFNjcmVlblNw
YWNlID0gb2NjbHVkZWRTY3JlZW5TcGFjZTsKICAgICB9CkBAIC0xMzAxLDYgKzEzOTMsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVy
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5i
b3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTMxOCw2ICsxNDExLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRz
KCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTEzMzYsNiArMTQzMCw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOwogCkBAIC0xMzU2LDYgKzE0NTEsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIApAQCAtMTM3OCw2ICsxNDc0LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBs
ZXRlKCk7CiAKQEAgLTE0MDAsNiArMTQ5Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwogCkBAIC0xNDIzLDYgKzE1MjEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApA
QCAtMTQ0Niw2ICsxNTQ1LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE1
MDUsNiArMTYwNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihsYXllcnNbMF0uZ2V0KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZp
ZXdwb3J0U2l6ZShsYXllcnNbMF0tPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1
bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hy
b21pdW1UZXN0LmNwcAppbmRleCA0YjNkZDI3ZDMxZDg4MjEwNGM3MGNmZmY1MDI0ZmI4MDQ0N2Vh
MTQxLi5jYTk4N2Q5OWQ0ZWM4ZmJlNjhkYTZlNjg1NGMwMjRlMWY5ZDMxNTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5o
IgogI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogI2lu
Y2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTY5LDYg
KzY4LDIxIEBAIHB1YmxpYzoKICAgICBNT0NLX01FVEhPRDMoZGVsZXRlVGV4dHVyZSwgdm9pZCh1
bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSk7CiB9OwogCitjbGFzcyBNb2NrVXBk
YXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKK3B1Ymxp
YzoKKyAgICBNb2NrVXBkYXRlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKSA6IG1fY29udGV4dChjb250ZXh0KSwgbV9hbGxvY2F0
b3IoYWxsb2NhdG9yKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgeworICAgICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVj
dChzb3VyY2VSZWN0KTsKKyAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2NvbnRleHQsIG1f
YWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgVGV4dHVyZUFsbG9jYXRvciogbV9h
bGxvY2F0b3I7Cit9OworCiB9IC8vIG5hbWVzcGFjZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04Niw3ICsxMDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIE1vY2tDYW52YXNDb250ZXh0JiBp
bXBsTW9jayA9ICpzdGF0aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGxDb250ZXh0LmdldCgp
KSk7CiAKICAgICAgICAgTW9ja1RleHR1cmVBbGxvY2F0b3IgYWxsb2NhdG9yTW9jazsKLSAgICAg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZhbGxvY2F0b3JNb2NrKTsKKyAgICAgICAgTW9j
a1VwZGF0ZUhhbmRsZXIgdXBkYXRlSGFuZGxlck1vY2soaW1wbENvbnRleHQuZ2V0KCksICZhbGxv
Y2F0b3JNb2NrKTsKIAogICAgICAgICBjb25zdCBJbnRTaXplIHNpemUoMzAwLCAxNTApOwogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZVNpemUgPSBzaXplLndpZHRoKCkgKiBzaXplLmhl
aWdodCgpICogNDsKQEAgLTEzNCw3ICsxNDgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNhbnZh
cy0+Y29udGVudENoYW5nZWQoKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2FudmFzLT5uZWVkc0Rp
c3BsYXkoKSk7CiAgICAgICAgIFJlZ2lvbiBvY2NsdWRlZFNjcmVlblNwYWNlOwotICAgICAgICBj
YW52YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAg
ICBjYW52YXMtPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7Cisg
ICAgICAgIGNhbnZhcy0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKICAgICAgICAgRVhQRUNUX0ZB
TFNFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICB7CiAgICAgICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKQEAgLTE0Miw3ICsxNTcsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBSZWZQdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9
IGNhbnZhcy0+Y3JlYXRlQ0NMYXllckltcGwoKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwg
c3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXllckltcGwuZ2V0KCkpLT50ZXh0dXJl
SWQoKSk7CiAKLSAgICAgICAgICAgIGNhbnZhcy0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhp
bXBsQ29udGV4dC5nZXQoKSwgdXBkYXRlcik7CisgICAgICAgICAgICBjYW52YXMtPmZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UodXBkYXRlSGFuZGxlck1vY2spOwogICAgICAgICAgICAgY2FudmFz
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmICh0
aHJlYWRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJU
ZXh0dXJlVXBkYXRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXll
clRleHR1cmVVcGRhdGVyVGVzdC5jcHAKaW5kZXggYmRiZjdiYjA5MzAxOGJkNmE2YjMwN2ZmOGJl
MzgxNDE1ZjU4YTY3My4uMGY3ZWQ1NzBlZDZmZTQyNzg5NjdmZTNiMWU1ZWFkYjc0NDRlMDkxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1cmVVcGRh
dGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1
cmVVcGRhdGVyVGVzdC5jcHAKQEAgLTk1LDE5ICs5NSwxOSBAQCBURVNUKExheWVyVGV4dHVyZVVw
ZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdFByZXNlbnRBZnRlck9wYXF1ZVBhaW50KQogICAgIG9w
YXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5
ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsK
LSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIElu
dFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRD
b250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEs
ICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAw
KSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50
ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsK
ICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwg
Jm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0
MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAgICAg
b3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RM
YXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVs
ZWFzZSgpKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAs
IDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRl
ci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQw
MCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAs
IDQwMCwgNDAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTEyMSwxOSArMTIxLDE5IEBAIFRFU1Qo
TGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEFmdGVyTm9u
T3BhcXVlUGFpbnQpCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0g
YWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1
cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIu
cmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwor
ICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNp
emUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVj
dCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVt
KGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKLSAgICB1cGRh
dGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAw
LCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJ
bnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVS
ZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0
KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRy
KG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBh
aW50ZXIucmVsZWFzZSgpKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7Cisg
ICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6
ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIH0KIApAQCAtMTQ4LDIxICsxNDgsMjEgQEAg
VEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50Rm9y
T3BhcXVlTGF5ZXJXaXRoT3BhcXVlUGEKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RM
YXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2Up
OwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAm
b3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1
ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQ
YWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNlKCksIGZh
bHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBv
cGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExh
eWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxl
YXNlKCkpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVw
YXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAw
LCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAs
IDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIH0KIApA
QCAtMTc3LDIxICsxNzcsMjEgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9w
YXF1ZVJlY3ROb3RQcmVzZW50Rm9yT3BhcXVlTGF5ZXJXaXRoTm9uT3BhcXUKICAgICBwYWludGVy
ID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAg
ICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50
ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwotICAg
IHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6
ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRl
bnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9w
YXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1
ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRv
cHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1cGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBh
aW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwot
ICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50
U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENv
bnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwg
Jm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9w
YXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0g
YWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1
cGRhdGVyID0gRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUocGFpbnRlci5yZWxlYXNlKCkpOwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsK
LSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIElu
dFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRD
b250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEs
ICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBv
cGFxdWVSZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNjA2OWZkMTgxMzg4YmI1NDY5ZDli
NjEzZjhjNzUzZDZhNWJmYjg5OS4uYzU0YmU5NzQyNTZjN2JiNjhiZmViYmVhYWMzZWM2ZGM2OTZj
ZTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpbmNsdWRlICJDQ0xh
eWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50
LmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRU
ZXh0dXJlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCi0jaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGlsZWRMYXllckltcGwuaCIKICNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC00OCwxMCArNDgsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV1RGOwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1
YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKK2NsYXNzIEZha2VIYW5kbGVyIDogcHVibGljIExheWVy
VGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQg
Y3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdD
M0RlbnVtKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogfTsKIAogY2xh
c3MgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTsKQEAgLTYwLDIyICs1OSwyNiBAQCBjbGFzcyBGYWtl
TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1Ymxp
YzoKICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPiB0ZXh0dXJlKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkgeyB9
CisgICAgICAgIFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBt
X3RleHR1cmUodGV4dHVyZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAor
ICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0
dXJlLmdldCgpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0
JikgeyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1f
dGV4dHVyZTsKICAgICB9OwogCi0gICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSA6IG1fcHJl
cGFyZUNvdW50KDApIHsgfQorICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkgOiBtX3BhaW50
Q291bnQoMCkgeyB9CiAgICAgdmlydHVhbCB+RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0K
IAogICAgIC8vIFNldHMgdGhlIHJlY3QgdG8gaW52YWxpZGF0ZSBkdXJpbmcgdGhlIG5leHQgY2Fs
bCB0byBwcmVwYXJlVG9VcGRhdGUoKS4gQWZ0ZXIgdGhlIG5leHQKICAgICAvLyBjYWxsIHRvIHBy
ZXBhcmVUb1VwZGF0ZSgpIHRoZSByZWN0IGlzIHJlc2V0LgogICAgIHZvaWQgc2V0UmVjdFRvSW52
YWxpZGF0ZShjb25zdCBJbnRSZWN0JiwgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSopOwogCi0gICAg
Ly8gTnVtYmVyIG9mIHRpbWVzIHByZXBhcmVUb1VwZGF0ZSBoYXMgYmVlbiBpbnZva2VkLgotICAg
IGludCBwcmVwYXJlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXBhcmVDb3VudDsgfQotICAg
IHZvaWQgY2xlYXJQcmVwYXJlQ291bnQoKSB7IG1fcHJlcGFyZUNvdW50ID0gMDsgfQorICAgIC8v
IE51bWJlciBvZiB0aW1lcyBwYWludENvbnRlbnRzIGhhcyBiZWVuIGludm9rZWQuCisgICAgaW50
IHBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhaW50Q291bnQ7IH0KKyAgICB2b2lkIGNs
ZWFyUGFpbnRDb3VudCgpIHsgbV9wYWludENvdW50ID0gMDsgfQogCiAgICAgdm9pZCBzZXRPcGFx
dWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRSZWN0KSB7IG1fb3BhcXVlUGFp
bnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CiAKQEAgLTg0LDEwICs4NywxMCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikgeyByZXR1cm4gYWRvcHRQdHIo
bmV3IFRleHR1cmUoTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJl
dHVybiBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYsIGludCwg
ZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwg
aW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiAKIHByaXZhdGU6Ci0g
ICAgaW50IG1fcHJlcGFyZUNvdW50OworICAgIGludCBtX3BhaW50Q291bnQ7CiAgICAgSW50UmVj
dCBtX3JlY3RUb0ludmFsaWRhdGU7CiAgICAgSW50UmVjdCBtX2xhc3RVcGRhdGVSZWN0OwogICAg
IEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CkBAIC0xNDUsMTUgKzE0OCwyNSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OnNraXBzRHJhdygpOwogICAgIH0K
IAorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0KQorICAgIHsKKyAg
ICAgICAgVGlsZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKHJlY3QpOworICAgIH0KKwog
ICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKiBmYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fZmFrZVRleHR1cmVVcGRhdGVyLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIFRleHR1
cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU1hbmFn
ZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdp
b24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQog
ICAgIHsKICAgICAgICAgcHJlcGFyZVRvVXBkYXRlKHZpc2libGVMYXllclJlY3QoKSk7CiAgICAg
fQogCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB7CisgICAg
ICAgIHBhaW50Q29udGVudHModmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICB9CisKIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVl
SG9zdCopIHsgfQogCkBAIC0xOTAsOSArMjAzLDkgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6c2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBGYWtlVGlsZWQK
ICAgICBtX2xheWVyID0gbGF5ZXI7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6
OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEZha2VM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVl
UmVjdCkKIHsKLSAgICBtX3ByZXBhcmVDb3VudCsrOworICAgIG1fcGFpbnRDb3VudCsrOwogICAg
IG1fbGFzdFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKICAgICBpZiAoIW1fcmVjdFRvSW52YWxp
ZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZVJlY3QobV9yZWN0
VG9JbnZhbGlkYXRlKTsKQEAgLTIwOSwxNCArMjIyLDE0IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwgPSBh
ZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1cmVB
bGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIo
JnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFp
bnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAg
IGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAgIGxh
eWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5w
YWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxlcyBv
biB0aGUgaW1wbCBzaWRlLgpAQCAtMjI5LDcgKzI0Miw4IEBAIFRFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25l
IG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAg
IGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgb25s
eSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlkYXRl
ZCBidXQgbm90IHBhaW50ZWQuCkBAIC0yNDQsOCArMjU4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllcklt
cGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRl
eHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVw
ZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0aWxlcyB3aXRoIG9uZSB2
aXNpYmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMoNTAw
LCA1MDApOwpAQCAtMjYxLDcgKzI3NCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRpbmcg
Zm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5uZWVk
c0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUuCkBA
IC0yNzQsNyArMjg3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50VGlsZXMpCiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3QpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsK
ICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOwotICAgICAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAgICAg
bGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVNYW5h
Z2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0KQEAgLTMxMCw4ICszMjMsNyBAQCBU
RVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBs
KDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFu
ZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVu
IHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJv
dW5kcyk7CkBAIC0zMjIsNyArMzM0LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5n
IGZvciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGlt
cGwgc2lkZS4KQEAgLTMzNSw3ICszNDcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVl
ZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQ
RUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApAQCAtMzQ2LDE0ICszNTgsMTQgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkp
OwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1Rl
eHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVy
IGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52
YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRz
KEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
KTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzYyLDIyICszNzQsMjQg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAK
ICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50Q291bnQoKTsKICAgICAv
LyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQgcHJl
cGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVyVGV4
dHVyZVVwZGF0ZXIuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT5wYWludENvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0ZSB0
cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9VcGRh
dGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFs
aWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNU
X0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7
Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50
KCk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwor
ICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRD
b3VudCgpKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWlu
dENvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFzIHBy
ZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgbGF5ZXItPnBh
aW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIEVYUEVDVF9FUSgxLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKIH0KIAogVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3Vu
ZHNBcmVTY2FsZWQpCkBAIC0zODgsOCArNDAyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgT3du
UHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRpbGVk
TGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
cldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAotICAgIEZha2VUZXh0
dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAgICAg
SW50UmVjdCBsYXllckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CiAgICAgSW50UmVjdCBjb250ZW50
Qm91bmRzKDAsIDAsIDIwMCwgMjUwKTsKQEAgLTQwMiwyMCArNDE1LDIzIEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJlU2Nh
bGVkKQogICAgIC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFjZSwg
bm90IGNvbnRlbnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3Vu
ZHMpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPnBh
aW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAs
IDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBBZnRl
ciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkgbmVl
ZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5pbnZhbGlk
YXRlUmVjdChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRl
bnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0
ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVy
LT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIEVYUEVDVF9GTE9BVF9S
RUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogCiAg
ICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0aGUg
dXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50UmVj
dCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVS
ZWN0KHBhcnRpYWxEYW1hZ2UpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7
CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1Rf
RVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0KIApA
QCAtNDQ1LDE4ICs0NjEsMTUgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0Ry
YXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7
CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwogCi0gICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRS
b290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMobWVtb3J5TGltaXQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBk
YXRlKCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250
ZXh0KCksIHVwZGF0ZXIpOwogCi0gICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4KLSAg
ICBFWFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
Y2hpbGRMYXllci0+c2tpcHNEcmF3KCkpOworICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNr
aXBzRHJhdygpKTsKKyAgICAvLyBXZSdsbCBza2lwIHRoZSBjaGlsZCBsYXllci4KKyAgICBFWFBF
Q1RfVFJVRShjaGlsZExheWVyLT5za2lwc0RyYXcoKSk7CiAKICAgICBjY0xheWVyVHJlZUhvc3Qt
PmNvbW1pdENvbXBsZXRlKCk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1
cmVzKCk7IC8vIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUoKSBub3JtYWxseSBkb2Vz
IHRoaXMsIGJ1dCBzaW5jZSB3ZSdyZSBtb2NraW5nIG91dCB0aGUgbWFuYWdlciB3ZSBoYXZlIHRv
IGRvIGl0LgpAQCAtNDY0LDYgKzQ3Nyw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
c2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQgbGF5ZXIuCiAgICAg
cm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCisgICAgY2NMYXllclRyZWVIb3N0LT5w
cmVwYXJlVG9VcGRhdGUoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwog
ICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKIApAQCAtNDk1LDYgKzUw
OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVk
ZWRSZWdpb24pCiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKIAog
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2Ny
ZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTA1LDYgKzUyMCw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgbGF5ZXItPnNl
dE9wYXF1ZShmYWxzZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMp
OwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXIt
PnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigp
OwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAg
LTUxNiw2ICs1MzIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1Nl
bGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52YWxp
ZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKIAog
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2Ny
ZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTI1LDYgKzU0Miw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYgd2Ug
cGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBi
ZSBvY2NsdWRlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3Bh
cXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250
ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKIAog
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2Ny
ZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTQyLDYgKzU2MCw3IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgc2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1jb250
ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFu
c2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
Y29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7
CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRl
ZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTU1Nyw2ICs1NzYsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIHNjcmVl
blNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCAt
Y29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNl
VHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3Vu
ZHMpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRvT2Nj
bHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126645</attachid>
            <date>2012-02-11 14:00:30 -0800</date>
            <delta_ts>2012-02-28 14:25:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120211170029.patch</filename>
            <type>text/plain</type>
            <size>134726</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA4ZWUyMGQwOTExYzBm
OGU2OTQ5ODFjNmZlOWUzNWZkZjcxZmU2Ny4uY2Y1NTM3MTJiZWRhZDJiMTc1ZGYxZjBiMzRjZTI5
ODJjNWZiNTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMi0wMi0xMSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
VXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RhcnQgdXBsb2FkaW5n
IHRleHR1cmUgcmVzb3VyY2VzIGFzIHNvb24gYXMgZW5vdWdoIGNvbnRlbnRzIGhhcworICAgICAg
ICBiZWVuIHBhaW50ZWQgZm9yIG9uZSB0ZXh0dXJlIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgIExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaXMgcmVwbGFjZWQgYnkKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSB3aGljaCBhbGxv
d3MgdXMgdG8KKyAgICAgICAgcmVwZWF0ZWRseSBnbyB0aHJvdWdoIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzIGZvciB2YXJpb3VzIHB1cnBvc2VzLgorCisgICAgICAgIFVwZGF0ZSB1bml0IHRlc3Q6IFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QucHVzaERpcnR5VGlsZXMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoQ2FudmFzMkRMYXll
ckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRMYXllckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGly
dHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGly
dHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAg
KEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
cjo6fkhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1Z2luTGF5ZXJDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Lmg6CisgICAgICAgIChTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGlsZWRMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06
OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFVw
ZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHTExheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OlVwZGF0
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6On5VcGRhdGVIYW5kbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGluZ3M6OkNDU2V0dGlu
Z3MpOgorICAgICAgICAoQ0NTZXR0aW5ncyk6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgor
ICAgICAgICAoVXBkYXRlSGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1NpbmdsZVRocmVhZFByb3h5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Om51bU1vcmVVcGRhdGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3Vy
Y2VVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVhZFByb3h5KToKKyAg
ICAgICAgKFVwZGF0ZUVudHJ5KToKKwogMjAxMi0wMi0xMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNpemUgYXNzZXJ0IGZvciBMZW5ndGgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjc4ZTIwNDVhOGQ1ZDMxYzVhNzQ4OGE1OGEzYTgwMTVl
MzhiZTZiNC4uNDFlYzhlMmJhYTdiYThiMDA0NDc3NzczMTQwNGRhMzVhODU5M2NlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MSBAQAorMjAxMi0wMi0xMSAgRGF2aWQg
UmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gVXBs
b2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNzUyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlbGF5VGV4dHVyZVVw
ZGF0ZXMgc2V0dGluZyB0aGF0IGlzIHVzZWQgYnkgY29tcG9zaXRvciB0byBkZXRlcm1pbmUKKyAg
ICAgICAgaWYgdGV4dHVyZSB1cGxvYWRzIHNob3VsZCBiZSBkZWxheWVkIHVudGlsIGFsbCBwYWlu
dGluZyBoYXMgY29tcGxldGVkLgorICAgICAgICBVcGRhdGUgdW5pdCB0ZXN0czogQ0NMYXllclRy
ZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgYW5kCisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpXZWJT
ZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldERlbGF5
VGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZXR0aW5nc0ltcGw6OmRlbGF5VGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwOgorICAgICAgICAoTW9ja0xheWVyRGVsZWdhdGUpOgorICAgICAgICAoV1RGOjpN
b2NrTGF5ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXll
ckRlbGVnYXRlOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0
ZTo6cHJlc2VydmVzM0QpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6bm90aWZ5
U3luY1JlcXVpcmVkKToKKyAgICAgICAgKFdURik6CisgICAgICAgIChDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcik6CisgICAgICAgIChUZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0
ZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdCk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGVUZXh0dXJlKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQp
OgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RG
OjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXI6OmxheWVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp0ZXh0dXJlVXBk
YXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBy
ZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpwcmVwYXJlVG9VcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjppZGxlUHJlcGFyZVRvVXBkYXRlKToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6Omlk
bGVQcmVwYXJlVG9VcGRhdGVDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNDb3VudCk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpw
cmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpwcmVwYXJlUmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRlUmVjdENvdW50KToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKToKKyAgICAgICAgKFdURjo6Q0NM
YXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmFmdGVyVGVzdCk6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RTZXRWaWV3cG9ydFNpemU6OmJlZ2luVGVzdCk6CisgICAgICAg
IChXVEY6OlRlc3RMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdExheWVyT2NjbHVzaW9uOjpiZWdpblRlc3QpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TWFueVN1cmZhY2VzOjpiZWdpblRlc3Qp
OgorICAgICAgICAqIHRlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtVGVzdDo6ZnVsbExpZmVjeWNsZVRlc3Qp
OgorICAgICAgICAqIHRlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwOgorICAgICAgICAoV1RGOjpGYWtlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdURjo6
RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV1RG
OjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChU
ZXh0dXJlKToKKyAgICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OkZha2VMYXll
clRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAg
ICAgICAgKFdURjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q291bnQpOgorICAgICAg
ICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y2xlYXJQYWludENvdW50KToKKyAgICAg
ICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
IChGYWtlVGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkZha2VUaWxl
ZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdURjo6RmFr
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpURVNU
KToKKyAgICAgICAgKEZ1bGxVcGRhdGVIYW5kbGVyKToKKyAgICAgICAgKFdURjo6RnVsbFVwZGF0
ZUhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXVEYpOgorICAgICAgICAoUGFydGlhbFVwZGF0
ZUhhbmRsZXIpOgorICAgICAgICAoV1RGOjpQYXJ0aWFsVXBkYXRlSGFuZGxlcjo6aGFuZGxlKToK
KwogMjAxMi0wMi0xMCAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgRGlzYWJsZSBJbmRleGVkREIgcGVybWlzc2lvbnMgY2hlY2sgZnJvbSBzaGFyZWQgd29y
a2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAppbmRleCAwMGEzZTQ2M2I4NTkzMWIwNGViYzA1YTAxOWVjZDk0NGE2YjVmNDQxLi43OGIw
YjhkNzQ0ZTVhYzA1NTcxNzY5ZWFmMzVmODY3ZDJlNjk1NDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzcsNyArMzcsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0
dXJlVXBkYXRlcikKIHsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBs
ZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJH
QkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12
b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJl
Y3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQg
Ym9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFx
dWVSZWN0KQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsK
IApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgICAgICBib3Jk
ZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRm
b3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhlbFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBh
aW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMsIHRleHRPcHRpb24pOwogICAgIGNhbnZhc1Bh
aW50ZXIuc2tpYUNvbnRleHQoKS0+c2V0VHJhY2tPcGFxdWVSZWdpb24oIWxheWVySXNPcGFxdWUp
OwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2FudmFzUGFp
bnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CisgICAgQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250
ZXh0KCksICpjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50
c1NjYWxlKTsKIAogICAgIGlmICghbGF5ZXJJc09wYXF1ZSkKICAgICAgICAgKnJlc3VsdGluZ09w
YXF1ZVJlY3QgPSBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCmluZGV4IDRlMTYyMjk1Yjg2ZTAwODkzYzMzZWYwM2Q0YjYyZDJjMWU1MmJkNWYuLjJhYmFj
OTZhMDMwZGIwOTI4NDk0M2NmMzhiNDk0Y2Q4MGVjOTBjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xh
c3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBwb3NzaWJsZS4KIGNsYXNzIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwog
ICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVh
dGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3Jt
YXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxl
LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNp
emUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3Vs
dGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BhcXVlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCA0Y2M2YmNjOTBkZmIx
MmJlMThkMTJkYmI0NmUzY2EyYzhkMzg3Yzg2Li5kOWFkOGI0NDFkMDM2MDBhMGZiMmM2NWUzZDhi
YWUwNDA0OTYyM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtODksMTAgKzg5LDEwIEBAIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyCiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpT
YW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVs
Rm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxl
LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQg
Y29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKIHsKICAgICBtX3Rl
eFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7Ci0gICAgU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0LCB0aWxlU2l6
ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlLCByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAg
ICBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnRl
bnRSZWN0LCB0aWxlU2l6ZSwgYm9yZGVyVGV4ZWxzLCBjb250ZW50c1NjYWxlLCByZXN1bHRpbmdP
cGFxdWVSZWN0KTsKIH0KIAogdm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDhkNTI0MzNkMGIwZWYyZWQ1Yjk2MTI4
NzNjNDQ5ZDJhMDQzMjllMjguLjU2ZmQ1NmMwY2U0M2E4ZWU3YWY1ODZlZmViNWEzYjUxMzA1YTkw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1
cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1w
bGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lk
IHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJl
Y3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCk7CiAgICAgdm9pZCBwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBHQzNEZW51bSBmb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBjb25z
dCB1aW50OF90KiBwaXhlbHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNw
cAppbmRleCAxNGZlMzVhNTgwNWY2ZmQwN2YzMzc0MzRlZjQ1OTVmNDc5NTQ3NzYwLi45NjVkMmU0
MGY3NDFlNTBiNDczZDY1MWI4MjMyOWI0ZjZlMGE0OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ1LDYgKzQ1LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1
cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7
Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4
dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRS
ZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXll
ckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0LCBzaXplKSk7CkBAIC01OCw2ICs3Miw3
IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJCiAgICAgLCBtX2ZibygwKQogICAgICwgbV91c2VE
b3VibGVCdWZmZXJpbmcoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogICAgICwgbV9jYW52YXMo
MCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkK
IHsKICAgICBpZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCiAgICAgICAgIEdMQyhtX2NvbnRleHQs
IG1fZmJvID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKTsKQEAgLTk1LDcgKzExMCw3
IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRDYW52YXMoU2tDYW52YXMqIGNhbnZh
cykKICAgICBtX2NhbnZhcyA9IGNhbnZhczsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5T
cGFjZSAqLykKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKIHsKICAgICBpZiAo
IWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzMsMTIgKzE0OCwxMiBAQCB2
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZU1hbmFnZXIoVGV4dHVyZU1hbmFn
ZXIqIHRleHR1cmVNYW5hZ2VyKQogICAgICAgICBtX2Zyb250VGV4dHVyZSA9IE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yICphbGxvY2F0b3IpCiB7CiAgICAgaWYgKCFtX2JhY2tUZXh0dXJlSWQg
fHwgIW1fZnJvbnRUZXh0dXJlIHx8ICFtX2Zyb250VGV4dHVyZS0+aXNWYWxpZChtX3NpemUsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udFRl
eHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOworICAgIG1f
ZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwogCiAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fZmJvKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9i
YWNrVGV4dHVyZUlkLCAwKSk7CkBAIC0xNDksNiArMTY0LDExIEBAIHZvaWQgQ2FudmFzMkRMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmZsdXNoKCkpOwogfQogCit2b2lkIENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBk
YXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQog
ewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCAxMWExYTk1MzkwY2Q4ZTlhZGE4ZmM4
NGMxYjk5Yjc0YTBiMzU2OGNhLi42OTc4N2NlNjU4ZTM3N2ZmYTkxNTVlZTEwOTYyOTBhMWQ4N2Zh
ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDcsNiArNDcsMjMg
QEAgY2xhc3MgUmVnaW9uOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFjY2VsZXJhdGVkIDJk
IGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVy
Q2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExheWVyQ2hyb21pdW0q
IGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0
ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVy
VGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0
IFVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIENhbnZh
czJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRTaXplJik7CiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNocm9taXVtKCk7CiAKQEAg
LTU1LDEwICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2Vk
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5T
cGFjZSk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRy
ZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAg
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQ
cm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29u
dGVudHNUZXh0dXJlKCk7CiAKQEAgLTgwLDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
dXNlRG91YmxlQnVmZmVyaW5nOwogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9mcm9udFRl
eHR1cmU7CiAgICAgU2tDYW52YXMqIG1fY2FudmFzOworICAgIE93blB0cjxVcGRhdGVyVGV4dHVy
ZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZWExOTMwMzY1NWNhMjM1ZmMyN2E0MDZjNmVlOTZkYTQz
MGQ5MWQ5ZS4uMTdmYWJhYzRiYWQ3Y2FhY2Q0NzhiZTYyYTI2NmE2OTI0ZjNmZDFhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM3LDYgKzM3LDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1f
dGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFp
bnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGQ0OTEzNDhlZTdjZDkwMDAyNTIwMjczM2EzNTUwN2Mx
ZDU3M2MxNWMuLmQyYTdjODc0N2UxYzlkZDg4OTcwODY2MGNkNmNmNWMwYjllYTlmMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDYgKzQyLDE5IEBA
IGNsYXNzIFBsYXRmb3JtQ29udGV4dFNraWE7CiAvLyB0aGVpciByZXNwZWN0aXZlIHBhaW50Q29u
dGVudHMgaW1wbGVtZW50YXRpb25zLgogY2xhc3MgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4p
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1
cmU7CisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKTsK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGFh
N2ZiNWNmNDZiMDYyNTdmZjViZjIzNWZiM2JmMDc4NDUzNTQ5OWYuLmZmNDdlMjcyYjZhYzE5Zjhl
MDdkNWNlYWE3NWQ5M2RkYzVmN2E1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3ND
b250ZW50KCkgY29uc3QKICAgICByZXR1cm4gVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRl
bnQoKSAmJiBtX2RlbGVnYXRlOwogfQogCi12b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8p
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0
IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKIHsKICAgICB1cGRhdGVUaWxlU2l6
ZUFuZFRpbGluZ09wdGlvbigpOwogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuUwogICAgIG1fbmVlZHNE
aXNwbGF5ID0gZmFsc2U7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQYWlu
dENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTIzLDYgKzEyMywyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpp
ZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQogICAgICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQog
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7Cisg
ICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKIHsKICAgICBpZiAobV90
ZXh0dXJlVXBkYXRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDNlODY4
NmQwYTBkYmNlMmMxZThjNjFiNjAxODE0MDI2Mzc2NmJmMjMuLjY4MDMwOTk2MTFiYTU5OWZjZTUy
YWJhNmE2ZWEzN2Q3MjI1Mjk1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApA
QCAtNTksOCArNTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckRlbGVnYXRlKCkgeyBtX2Rl
bGVnYXRlID0gMDsgfQogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1
ZGVkU2NyZWVuU3BhY2UpOwotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdp
b24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMTlkZmEyZjAwNmM5ODg0NzcwZTY3NmM0NTg1YmU5NDY3MTM0ZjNi
My4uOGYyZGU4YTBlODkzZDQxZGFmMzBiNjUxZjE1MzY1NGNkMzVhNzEwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPFNr
Q2FudmFzPiBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwKIH0KIAogRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
Ci0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVV
cGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRl
eCA0YTEwYzg1OGU0Y2RhOGMyNTJhYzE2ZGZhMDdkMDlhNWQ5MDhlZWMzLi43NDNlZDZlYmFmYmM4
MjdlNjI3NDQ4NDQxYWQzZjk5ODM3OWFiNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBpbnRlcm1lZGlhdGUgZnJh
bWVidWZmZXIgYW5kIHRoZW4gaXMgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIG9u
Y2UgZG9uZS4KIGNsYXNzIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1Ymxp
YzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMWU0NGU4NzAyM2ZlZDVmNDY5MzVkZjdjM2ZiZDM2MmU1NGFiMDQyOS4u
ZjczNjYyNDZhNDk4YjU2ZjdjMzE1OGZkMmEwY2QwMDY5Y2RkY2RhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uY3BwCkBAIC0zNCw5ICszNCw5IEBACiAKICNpbmNsdWRlICJJbWFnZUxh
eWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVN1YkltYWdlLmgiCi0j
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db2xvci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBs
LmgiCkBAIC00NiwxMCArNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJs
aWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0
ZXh0dXJlKQotICAgICAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCisgICAgICAgICAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkKICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAg
ICAgICAgewogICAgICAgICB9CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29u
dGVudHNTY2FsZSAqLywgSW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNv
bnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCiAgICAg
ewogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAg
fQpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50
cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKLXZvaWQgSW1h
Z2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCiB7
CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwogICAgIGlmIChtX25lZWRzRGlz
cGxheSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCAyMTI3Yjg1N2M1YzBjOWUx
ZWYwYzRlZTE5MDRlYWI3YWIxYzdmMjFlLi45YzdkNjVkMTdkYzA5ZGYyMGM0MGEwNTE1MWNhYWZk
MzI1MzAzY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTQsNyArNTQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNj
cmVlblNwYWNlKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgK
aW5kZXggM2ExZTk2YzVmZGE0OWU4MWI0NWRlN2M2YzQxMTllZDJiMzk4NjNmMS4uNzEyOTNjMTI0
NTZiOTk5MjE5YmNmODJjZjI5YmRmYTg2YWQ3YjJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIK
QEAgLTU0LDcgKzU1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVySW1w
bDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIFJlZ2lvbjsKIApAQCAtMTU4LDkgKzE1OCwxMCBA
QCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVkIHRvIGJlIG92
ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc0RyYXdhYmxlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAq
LykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5k
Q29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXgg
MTc5ZmVhNmUxMmJmMTAzYzViMDc0MzVjZjI0YTNhNDhmOGNkOTMyMy4uZTllMmQ4NWVlYTVkYmM4
NTcxZDQwM2RiNzE3N2M3ZjhhMGIwMzQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtNDgsMTQgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsg
cmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJl
KiB0ZXh0dXJlKCkgeyByZXR1cm4gMDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJl
Y3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7Ci0g
ICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorICAgIH07CisKKyAg
ICBjbGFzcyBIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkhhbmRsZXIo
KSB7IH0KIAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXh0dXJlOworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwgYm9vbCBwYXJ0aWFsID0gZmFsc2UpID0gMDsKICAgICB9OwogCiAgICAgdmlydHVhbCB+
TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQpAQCAtNzMsOCArNzUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpID0gMDsKICAgICAvLyBUaGUgfHJlc3VsdGluZ09wYXF1ZVJlY3R8IGdpdmVz
IGJhY2sgYSByZWdpb24gb2YgdGhlIGxheWVyIHRoYXQgd2FzIHBhaW50ZWQgb3BhcXVlLiBJZiB0
aGUgbGF5ZXIgaXMgbWFya2VkIG9wYXF1ZSBpbiB0aGUgdXBkYXRlciwKICAgICAvLyB0aGVuIHRo
aXMgcmVnaW9uIHNob3VsZCBiZSBpZ25vcmVkIGluIHByZWZlcmVuY2UgZm9yIHRoZSBlbnRpcmUg
bGF5ZXIncyBhcmVhLgotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBp
bnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCogLyogcmVzdWx0aW5nT3BhcXVlUmVj
dCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
LyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyog
Ym9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAvKiBy
ZXN1bHRpbmdPcGFxdWVSZWN0ICovKSA9IDA7CiAKICAgICAvLyBTZXQgdHJ1ZSBieSB0aGUgbGF5
ZXIgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBlbnRpcmUgb3V0cHV0IGlzIGdvaW5nIHRvIGJl
IG9wYXF1ZS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Q
bHVnaW5MYXllckNocm9taXVtLmNwcAppbmRleCAwNzlhZDJlZGU5NTQ3NTU4MmI4NzA3MjlhNzFh
NWQ2MWJkMjhhYjRiLi45ZmE2N2Q0MTAyM2U0NTE5Yzc5ZTU3YWI2NzJjZmRlOTk3YWFlZDYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVn
aW5MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBQbHVn
aW5MYXllckNocm9taXVtOjpQbHVnaW5MYXllckNocm9taXVtKCkKIHsKIH0KIAotdm9pZCBQbHVn
aW5MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBQbHVnaW5MYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAoIW1fbmVlZHNE
aXNwbGF5KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXllckNocm9taXVtLmgKaW5k
ZXggODQzNjU2OTViYjFkZGM2NTIzMWFkZDA0ZjZmMGQ4MzAwMDkxZTBkMC4uNWEwMzhiMmJmNzQz
NzNiN2QxMTJmNjRkYWIxZGRhM2IyMzJlOTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21p
dW0uaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbHVnaW5M
YXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpbkxheWVyQ2hyb21pdW0+IGNyZWF0ZSgpOwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0
dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBs
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMzVjZDM1YWQzYzA0NjE2ZTUzZDRhMWJjMWU1Y2Y4ZWJlZTI4ZWE4
Ni4uODczZWI1ODQ2NjFjNTNmNzZlZTEzMmQ2OGU1NTZmYTI5ZDg3OTQyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAg
LTQ5LDE0ICs0OSwxNCBAQCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRl
clRleGVscyAqLywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVl
UmVjdCkKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNp
emUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJl
Y3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGlj
dHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWln
aHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsK
ICAgICBwbGF0Zm9ybUNvbnRleHQuc2V0RGVmZXJyZWQodHJ1ZSk7CiAgICAgcGxhdGZvcm1Db250
ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKCFtX2xheWVySXNPcGFxdWUpOwogICAgIEdyYXBoaWNz
Q29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250
ZW50cyhncmFwaGljc0NvbnRleHQsIHBsYXRmb3JtQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRl
bnRzU2NhbGUpOworICAgIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMo
Z3JhcGhpY3NDb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQsIGNvbnRlbnRSZWN0LCBjb250ZW50c1Nj
YWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiAKICAgICBpZiAoIW1fbGF5ZXJJ
c09wYXF1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCA3ZmNjNjA1OWY5MGU3ZDlkMWMzMDFiZjJhNzBmNTE1MmE0OTI3YjAw
Li40NjU1NDJlNTdhMjAzYjY5NDUwMjY1MDVlMDU4ZTlkNGQzODlmMDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01MSw3
ICs1MSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsK
IAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBj
b250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIElu
dFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52
YXMqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAppbmRleCA0MzRlZDY5YjY3MDNmNTUwMTRmOTA5YWRhZWQ0ZmIxZWZm
MDdmZmVlLi40MWVkZWMxZTQ0NTc2NmM0NmFiNWIyYzkwNmQwNmVjYjY5NWEyY2Q5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIEludFNpemUg
VGlsZWRMYXllckNocm9taXVtOjpjb250ZW50Qm91bmRzKCkgY29uc3QKICAgICByZXR1cm4gSW50
U2l6ZShscm91bmRmKGJvdW5kcygpLndpZHRoKCkgKiBjb250ZW50c1NjYWxlKCkpLCBscm91bmRm
KGJvdW5kcygpLmhlaWdodCgpICogY29udGVudHNTY2FsZSgpKSk7CiB9CiAKLXZvaWQgVGlsZWRM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhh
bmRsZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0
IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRh
dGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRl
VGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVyLT5pc0VtcHR5KCkpCisgICAgaWYgKG1fc2tp
cHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCBtX3RpbGVy
LT5pc0VtcHR5KCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpbnQgbGVmdCA9IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0LngoKTsKQEAgLTIxNSwx
OCArMjE1LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmUKICAgICAgICAgICAgIGlmIChwYWlu
dE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQog
ICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIGlmICh0aWxlLT5tX3BhcnRp
YWxVcGRhdGUpCi0gICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRQYXJ0aWFsKHRpbGUtPnRl
eHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVz
dFJlY3QpOworICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCwgdGlsZS0+bV9wYXJ0aWFsVXBkYXRlKTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIC8vIFRoZSB1cGRhdGVSZWN0IHNob3VsZCBiZSBpbiBsYXllciBzcGFjZS4gU28g
d2UgaGF2ZSB0byBjb252ZXJ0IHRoZSBwYWludFJlY3QgZnJvbSBjb250ZW50IHNwYWNlIHRvIGxh
eWVyIHNwYWNlLgotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3BhaW50UmVjdCk7Ci0g
ICAgZmxvYXQgd2lkdGhTY2FsZSA9IGJvdW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxmbG9h
dD4oY29udGVudEJvdW5kcygpLndpZHRoKCkpOwotICAgIGZsb2F0IGhlaWdodFNjYWxlID0gYm91
bmRzKCkuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oY29udGVudEJvdW5kcygpLmhlaWdo
dCgpKTsKLSAgICBtX3VwZGF0ZVJlY3Quc2NhbGUod2lkdGhTY2FsZSwgaGVpZ2h0U2NhbGUpOwog
fQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlv
biB0aWxpbmdPcHRpb24pCkBAIC0zOTAsMTMgKzM4MSw2IEBAIGJvb2wgVGlsZWRMYXllckNocm9t
aXVtOjp0aWxlTmVlZHNCdWZmZXJlZFVwZGF0ZShVcGRhdGFibGVUaWxlKiB0aWxlKQogCiB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQg
bGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKQogewotICAgIC8vIFJlc2V0IG1f
dXBkYXRlUmVjdCBmb3IgYWxsIHRpbGVzLgotICAgIGZvciAoQ0NMYXllclRpbGluZ0RhdGE6OlRp
bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3RpbGVyLT50aWxlcygpLmJlZ2luKCk7IGl0
ZXIgIT0gbV90aWxlci0+dGlsZXMoKS5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIFVwZGF0YWJs
ZVRpbGUqIHRpbGUgPSBzdGF0aWNfY2FzdDxVcGRhdGFibGVUaWxlKj4oaXRlci0+c2Vjb25kLmdl
dCgpKTsKLSAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOwotICAgICAgICB0
aWxlLT5tX3BhcnRpYWxVcGRhdGUgPSBmYWxzZTsKLSAgICB9Ci0KICAgICBjcmVhdGVUZXh0dXJl
VXBkYXRlcklmTmVlZGVkKCk7CiAKICAgICAvLyBDcmVhdGUgdGlsZXMgYXMgbmVlZGVkLCBleHBh
bmRpbmcgYSBkaXJ0eSByZWN0IHRvIGNvbnRhaW4gYWxsCkBAIC00NDksMzAgKzQzMywxNCBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBp
bnQgbGVmdCwgaW50IHRvcCwgaW50CiAgICAgaWYgKCFtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAg
ICAgICAgIG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVjdChsZWZ0LCB0b3AsIHJp
Z2h0IC0gbGVmdCArIDEsIGJvdHRvbSAtIHRvcCArIDEpOwogCi0gICAgLy8gQ2FsbGluZyBwcmVw
YXJlVG9VcGRhdGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUg
dGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBj
YXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQu
Ci0gICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdy
YXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCi0gICAgLy8gc28gd2UgZ3Jh
YiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwg
dGhlIHBhaW50IGNvbXBsZXRlcy4KLSAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJv
dGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIEludFJlY3QgcGFpbnRlZE9wYXF1ZVJlY3Q7
Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSwgY29udGVudHNTY2Fs
ZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90
dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkg
ewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKIAotICAg
ICAgICAgICAgLy8gVGlsZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIHByZXBhcmVUb1VwZGF0ZSgpIGlz
IGNhbGxlZC4KKyAgICAgICAgICAgIC8vIFRpbGVzIGFyZSBjcmVhdGVkIGFib3ZlLgogICAgICAg
ICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAg
IEludFJlY3QgdGlsZVJlY3QgPSBtX3RpbGVyLT50aWxlQm91bmRzKGksIGopOwotCi0gICAgICAg
ICAgICAvLyBTYXZlIHdoYXQgd2FzIHBhaW50ZWQgb3BhcXVlIGluIHRoZSB0aWxlLiBJZiBldmVy
eXRoaW5nIHBhaW50ZWQgaW4gdGhlIHRpbGUgd2FzIG9wYXF1ZSwgYW5kIHRoZSBhcmVhIGlzIGEg
c3Vic2V0IG9mIGFuCi0gICAgICAgICAgICAvLyBhbHJlYWR5IG9wYXF1ZSBhcmVhLCBrZWVwIHRo
ZSBvbGQgYXJlYS4KLSAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJz
ZWN0aW9uKHRpbGVSZWN0LCBtX3BhaW50UmVjdCk7Ci0gICAgICAgICAgICBJbnRSZWN0IHRpbGVQ
YWludGVkT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRlZE9wYXF1ZVJl
Y3QpOwotICAgICAgICAgICAgaWYgKHRpbGVQYWludGVkT3BhcXVlUmVjdCAhPSB0aWxlUGFpbnRl
ZFJlY3QgfHwgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJl
Y3QpKQotICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWludGVkT3Bh
cXVlUmVjdDsKLQogICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBjb3B5QW5kQ2xl
YXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBtX3VwZGF0ZVJl
Y3QuCiAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QgPSB0aWxlLT5tX3VwZGF0
ZVJlY3Q7CiAgICAgICAgICAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKQEAgLTQ4NiwxMCAr
NDU0LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRpbGVzKGJv
b2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgc291cmNlUmVjdC5p
bnRlcnNlY3QobV9wYWludFJlY3QpOwogCiAgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3Qg
PSBzb3VyY2VSZWN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnBy
ZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTU3LDYgKzUy
MSwxMyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdCA9IEludFJl
Y3QoKTsKICAgICBtX3BhaW50UmVjdCA9IEludFJlY3QoKTsKIAorICAgIC8vIFJlc2V0IG1fdXBk
YXRlUmVjdCBhbmQgbV9wYXJ0aWFsVXBkYXRlIGZvciBhbGwgdGlsZXMuCisgICAgZm9yIChDQ0xh
eWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRp
bGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsK
KyAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUq
PihpdGVyLT5zZWNvbmQuZ2V0KCkpOworICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRS
ZWN0KCk7CisgICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IGZhbHNlOworICAgIH0KKwog
ICAgIHVwZGF0ZUJvdW5kcygpOwogCiAgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkgfHwgIW1f
dGlsZXItPm51bVRpbGVzKCkpCkBAIC02NTMsNSArNjI0LDQ3IEBAIEludFJlY3QgVGlsZWRMYXll
ckNocm9taXVtOjppZGxlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3Qp
CiAgICAgcmV0dXJuIHByZXBhaW50UmVjdDsKIH0KIAordm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQoreworICAgIGlmIChtX3Nr
aXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGls
ZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRv
IHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQorICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxp
bmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJl
IHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRo
ZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5p
c2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0
aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgorICAgIFJlZlB0cjxM
YXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CisgICAgSW50
UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRl
bnRzKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJU
ZXhlbHMoKSwgY29udGVudHNTY2FsZSgpLCAmcGFpbnRlZE9wYXF1ZVJlY3QpOworICAgIGludCBs
ZWZ0ID0gbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QueCgpOworICAgIGludCB0b3AgPSBtX3Jl
cXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC55KCk7CisgICAgaW50IHJpZ2h0ID0gbV9yZXF1ZXN0ZWRV
cGRhdGVUaWxlc1JlY3QubWF4WCgpIC0gMTsKKyAgICBpbnQgYm90dG9tID0gbV9yZXF1ZXN0ZWRV
cGRhdGVUaWxlc1JlY3QubWF4WSgpIC0gMTsKKyAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJv
dHRvbTsgKytqKSB7CisgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kp
IHsKKyAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CisKKyAg
ICAgICAgICAgIC8vIFRpbGVzIGFyZSBjcmVhdGVkIGluIHByZXBhcmVUb1VwZGF0ZVRpbGVzKCku
CisgICAgICAgICAgICBpZiAoIXRpbGUpCisgICAgICAgICAgICAgICAgQ1JBU0goKTsKKworICAg
ICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRpbGVCb3VuZHMoaSwgaik7CisK
KyAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFpbnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUu
IElmIGV2ZXJ5dGhpbmcgcGFpbnRlZCBpbiB0aGUgdGlsZSB3YXMgb3BhcXVlLCBhbmQgdGhlIGFy
ZWEgaXMgYSBzdWJzZXQgb2YgYW4KKyAgICAgICAgICAgIC8vIGFscmVhZHkgb3BhcXVlIGFyZWEs
IGtlZXAgdGhlIG9sZCBhcmVhLgorICAgICAgICAgICAgSW50UmVjdCB0aWxlUGFpbnRlZFJlY3Qg
PSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRSZWN0KTsKKyAgICAgICAgICAgIEludFJl
Y3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBwYWludGVk
T3BhcXVlUmVjdCk7CisgICAgICAgICAgICBpZiAodGlsZVBhaW50ZWRPcGFxdWVSZWN0ICE9IHRp
bGVQYWludGVkUmVjdCB8fCAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVk
T3BhcXVlUmVjdCkpCisgICAgICAgICAgICAgICAgdGlsZS0+bV9vcGFxdWVSZWN0ID0gdGlsZVBh
aW50ZWRPcGFxdWVSZWN0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIHVwZGF0ZVJl
Y3Qgc2hvdWxkIGJlIGluIGxheWVyIHNwYWNlLiBTbyB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHBh
aW50UmVjdCBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UuCisgICAgbV91cGRhdGVS
ZWN0ID0gRmxvYXRSZWN0KG1fcGFpbnRSZWN0KTsKKyAgICBmbG9hdCB3aWR0aFNjYWxlID0gYm91
bmRzKCkud2lkdGgoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgo
KSk7CisgICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBib3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19j
YXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOworICAgIG1fdXBkYXRlUmVjdC5z
Y2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDJk
OTk5NTM2N2FkMjQzNmFmZmFmZTZkY2MzMjNhZjk1M2FlZDMwNzIuLmRjOGJiNTdmMTRlYTEyNGJi
YTgyMjBlNWE5Zjc1OWYwZTAxNjdjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1
bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFBy
b3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmlu
ZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCk7CiAKLSAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0
aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0
ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4KICAgICB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwogCiAgICAgLy8gU2FtZSBhcyBhYm92
ZSwgYnV0IHRoaXMgd2lsbCB0cnkgdG8gcGFpbnQgYWRkaXRpb25hbCBzdXJyb3VuZGluZyBjb250
ZW50IGlmIGlkbGUuCkBAIC05Nyw2ICs5Nyw5IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgc2tp
cHNEcmF3KCkgY29uc3QgeyByZXR1cm4gbV9za2lwc0RyYXc7IH0KIAorICAgIC8vIFBhaW50IGNv
bnRlbnRzIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBsYXll
clJlY3QuCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7
CisKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIAogICAg
IHZpcnR1YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CkBAIC0xMTYs
NyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBVcGRhdGFibGVUaWxlKiB0aWxlQXQoaW50LCBpbnQp
IGNvbnN0OwogICAgIFVwZGF0YWJsZVRpbGUqIGNyZWF0ZVRpbGUoaW50LCBpbnQpOwogCi0gICAg
Ly8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJl
dHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0
IG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0OwogCiAgICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVu
IHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVwcmVzZW50
cyB0aGUgYXJlYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNzRkYjdmMTNl
YzRmOGY0Y2FhZjY4ZTVhZDc0NzQ1YmU5M2I3MmYzYi4uN2YwZmY2ZjQyZGMwNDM3OWJkY2ZlYWIx
MDJmNDNmYjQ5MGYwYjYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC0z
OSw5ICszOSwyNCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXZWJH
TExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShXZWJHTExheWVy
Q2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyog
c291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9s
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0
cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1bSgpKTsKQEAgLTU1LDYgKzcw
LDcgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oKQogICAgICwgbV90
ZXh0dXJlQ2hhbmdlZCh0cnVlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlZChmYWxzZSkKICAgICAs
IG1fZHJhd2luZ0J1ZmZlcigwKQorICAgICwgbV91cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVy
ZTo6Y3JlYXRlKHRoaXMpKQogewogfQogCkBAIC02OSw3ICs4NSw3IEBAIGJvb2wgV2ViR0xMYXll
ckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBMYXllckNocm9taXVt
OjpkcmF3c0NvbnRlbnQoKSAmJiBjb250ZXh0KCkgJiYgKGNvbnRleHQoKS0+Z2V0RXh0ZW5zaW9u
cygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5P
X0VSUk9SKTsKIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwgQ0NUZXh0dXJlVXBk
YXRlciYpCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0KQogewogICAgIGlmICghZHJhd3ND
b250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTk4LDYgKzExNCwxMSBAQCB2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCogcmVuZGVyZXJDbwogICAgIH0KIH0KIAordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxl
cikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0
KCksIEludFJlY3QoKSk7Cit9CisKIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjpwdXNoUHJvcGVy
dGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52YXNMYXllckNocm9taXVtOjpw
dXNoUHJvcGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXgg
NGRjNjhhMzMwOGUzZjIzMzdiNGIyNjVjNDY1ZDc1ZGIyZGM2YTdmYS4uN2E3NDE2ZmI2NTU4NTc3
MzZjZGRkYzgwYWZkOTkzNzFhNTEwMjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgK
QEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNp
bmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDYgKzQ2LDIzIEBAIGNsYXNzIFdlYkdM
TGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJH
TCBjYW52YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNo
cm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoV2ViR0xMYXllckNocm9taXVtKiBsYXll
cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4
dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRh
dGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hy
b21pdW0qIG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5
ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIH5XZWJHTExheWVyQ2hyb21pdW0o
KTsKQEAgLTUzLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2ln
bmVkIHRleHR1cmVJZCkgeyBtX3RleHR1cmVJZCA9IHRleHR1cmVJZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwor
ICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOwor
ICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wg
cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwpAQCAtNzgsNiArOTcs
OCBAQCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1
c2UgdGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRv
IHRoZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVm
ZmVyOworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjgxNDRlMTAyYzViZmY5
NWVkMzQyOGM5NjIyMmJiZDIyOWI2NWQ2Mi4uZDc0NzQyZjg3MDE0YWViYjM3MDkzMTFlMGY1OTA1
ZmZkNWM1ZDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aHJlYWQuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKQEAgLTUyLDYgKzUzLDIx
IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMo
KQogICAgIHJldHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCitDQ0xheWVyVHJl
ZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OlVwZGF0ZUhhbmRsZXIoQ0NQcm94eSogcHJveHkpCisgICAg
OiBtX3Byb3h5KHByb3h5KQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6
On5VcGRhdGVIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhh
bmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgYm9vbCBwYXJ0
aWFsKQoreworICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJv
eHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgcGFydGlhbCk7Cit9CisK
IFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7
CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5l
dyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMzc3LDcgKzM5Myw3IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2lu
Z2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsK
IH0KIAotYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCitib29sIENDTGF5ZXJU
cmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlcklu
aXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CkBAIC0zOTIs
MTMgKzQwOCwxMyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBp
ZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXll
cigpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9F
VkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAog
ICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtNDA3LDE4ICs0MjMsMTggQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50
UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RM
YXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZp
cmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAg
IC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBn
aXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRh
dGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNv
bW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUu
IE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBB
U1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRl
TGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RM
YXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0g
cm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFy
TGF5ZXJMaXN0KCk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
ICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
czo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5
ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVu
ZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhU
ZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBh
cmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVI
b3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVy
LCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRl
cmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAogICAgIC8vIFJlc2V0
IHBhcnRpYWwgdGV4dHVyZSB1cGRhdGUgcmVxdWVzdHMuCkBAIC00MjYsMjIgKzQ0MiwyMCBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cikKIAogICAgIHJlc2VydmVUZXh0dXJlcygpOwogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1f
dXBkYXRlTGlzdCwgUGFpbnRWaXNpYmxlKTsKLSAgICBpZiAoIW1fdHJpZ2dlcklkbGVQYWludHMp
CisgICAgYXBwZW5kVmlzaWJsZUxheWVycyhtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBtX2xh
eWVyVXBkYXRlTGlzdCk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMo
KQoreworICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNpemVf
dCBwcmVmZXJyZWRMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVz
KG1fdmlld3BvcnRTaXplKTsKLSAgICBzaXplX3QgbWF4TGltaXRCeXRlcyA9IFRleHR1cmVNYW5h
Z2VyOjpoaWdoTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CiAgICAgbV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOwogICAg
IGlmIChtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpID49
IHByZWZlcnJlZExpbWl0Qnl0ZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIElkbGUgcGFp
bnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQgdGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQs
Ci0gICAgLy8gb3RoZXJ3aXNlIGl0IHdpbGwgYWx3YXlzIHB1c2ggdXMgdG93YXJkcyB0aGUgbWF4
aW11bSBsaW1pdC4KLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRlcyk7Ci0gICAgLy8gVGhlIHNlY29uZCAoaWRsZSkg
cGFpbnQgd2lsbCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9j
Y3VyZWQgYWJvdmUuCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCwgUGFpbnRJ
ZGxlKTsKLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0
ZXMobWF4TGltaXRCeXRlcyk7CisgICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKIH0KIAog
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnJlc2VydmVUZXh0dXJlcygpCkBAIC00NDksMjYgKzQ2Myw2
MSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKCkKICAgICAvLyBVc2Ug
QmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVhcCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRl
bnQuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpCYWNrVG9Gcm9udD4gQ0NMYXll
ckl0ZXJhdG9yVHlwZTsKIAotICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6ZW5kKCZtX3VwZGF0ZUxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9y
VHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZtX3VwZGF0ZUxpc3QpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVy
YXRvclR5cGU6OmVuZCgmbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCk7CisgICAgZm9yIChDQ0xh
eWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKCFpdC5y
ZXByZXNlbnRzSXRzZWxmKCkgfHwgIWl0LT5hbHdheXNSZXNlcnZlVGV4dHVyZXMoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpdC0+cmVzZXJ2ZVRleHR1cmVzKCk7CiAgICAgfQog
fQogCi0vLyBzdGF0aWMKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZEaXJ0
eShMYXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSwgY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFNjcmVlblNwYWNlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVy
cyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgQVNTRVJUKGxheWVyKTsKLSAgICBB
U1NFUlQoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSB8fCBQYWludElkbGUgPT0gcGFpbnRUeXBl
KTsKLSAgICBpZiAoUGFpbnRWaXNpYmxlID09IHBhaW50VHlwZSkKLSAgICAgICAgbGF5ZXItPnBh
aW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwotICAgIGVsc2UKLSAgICAg
ICAgbGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQg
bGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0g
MCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5
ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmZpcnN0LmdldCgpOworICAgICAgICBsYXllci0+cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eShtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5zZWNvbmQp
OworICAgIH0KKworICAgIGlmIChtX3RyaWdnZXJJZGxlUGFpbnRzKSB7CisgICAgICAgIHNpemVf
dCBwcmVmZXJyZWRMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OnJlY2xhaW1MaW1pdEJ5dGVz
KG1fdmlld3BvcnRTaXplKTsKKyAgICAgICAgc2l6ZV90IG1heExpbWl0Qnl0ZXMgPSBUZXh0dXJl
TWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMobV92aWV3cG9ydFNpemUpOworICAgICAgICBtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXRCeXRl
cyk7CisgICAgICAgIGlmIChtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmN1cnJlbnRNZW1vcnlV
c2VCeXRlcygpIDwgcHJlZmVycmVkTGltaXRCeXRlcykgeworICAgICAgICAgICAgLy8gSWRsZSBw
YWludGluZyBzaG91bGQgZmFpbCB3aGVuIHdlIGhpdCB0aGUgcHJlZmVycmVkIG1lbW9yeSBsaW1p
dCwKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyBwdXNoIHVzIHRvd2Fy
ZHMgdGhlIG1heGltdW0gbGltaXQuCisgICAgICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMocHJlZmVycmVkTGltaXRCeXRlcyk7CisgICAgICAg
ICAgICAvLyBUaGUgc2Vjb25kIChpZGxlKSBwYWludCB3aWxsIGJlIGEgbm8tb3AgaW4gbGF5ZXJz
IHdoZXJlIHBhaW50aW5nIGFscmVhZHkgb2NjdXJlZCBhYm92ZS4KKworICAgICAgICAgICAgZm9y
IChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5k
ZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICAgICAgICAgIExheWVyQ2hyb21pdW0q
IGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZmlyc3QuZ2V0KCk7CisgICAg
ICAgICAgICAgICAgbGF5ZXItPmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVt
b3J5TGltaXRCeXRlcyhtYXhMaW1pdEJ5dGVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFVw
ZGF0ZUhhbmRsZXIgaGFuZGxlcihtX3Byb3h5LmdldCgpKTsKKyAgICBmb3IgKGludCBsYXllcklu
ZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1s
YXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uZmlyc3QuZ2V0KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRl
bnRzSWZEaXJ0eSgpOworICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSho
YW5kbGVyKTsKKyAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRS
ZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIs
IFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJs
ZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UsIExheWVyVXBkYXRlTGlzdCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFs
IGxheWVycywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tl
ZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8g
Rm9yIG1hc2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVj
ayB0aGVtIGhlcmUuCisgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVy
LT5vcGFjaXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdXBkYXRlTGlzdC5hcHBlbmQocGFpcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4sIFJlZ2lv
bj4obGF5ZXIsIG9jY2x1ZGVkU2NyZWVuU3BhY2UpKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiBy
ZW5kZXJTdXJmYWNlTGF5ZXIsIExheWVyVXBkYXRlTGlzdCYgdXBkYXRlTGlzdCkKIHsKICAgICAv
LyBOb3RlOiBNYXNrcyBhbmQgcmVwbGljYXMgb25seSBleGlzdCBmb3IgbGF5ZXJzIHRoYXQgb3du
IHJlbmRlciBzdXJmYWNlcy4gSWYgd2UgcmVhY2ggdGhpcyBwb2ludAogICAgIC8vIGluIGNvZGUs
IHdlIGFscmVhZHkga25vdyB0aGF0IGF0IGxlYXN0IHNvbWV0aGluZyB3aWxsIGJlIGRyYXduIGlu
dG8gdGhpcyByZW5kZXIgc3VyZmFjZSwgc28gdGhlCkBAIC00NzksMTYgKzUyOCwxNiBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5
ZXJDaHJvbWl1bSogcmVuZGVyUwogCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xh
eWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29u
dGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNpb24pOworICAgICAgICBh
cHBlbmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgbm9PY2Ns
dXNpb24sIHVwZGF0ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FM
YXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxp
Y2FMYXllcikgewotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXIsIHBh
aW50VHlwZSwgbm9PY2NsdXNpb24pOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGlj
YUxheWVyLCBub09jY2x1c2lvbiwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FM
YXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5ZXIt
Pm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHBhaW50VHlwZSwgbm9PY2NsdXNp
b24pOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xh
eWVyKCksIG5vT2NjbHVzaW9uLCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTUyOCw3ICs1NzcsNyBAQCBzdGF0aWMgdm9pZCBsZWF2ZVRhcmdldFJlbmRlclN1cmZhY2UoVmVj
dG9yPFJlbmRlclN1cmZhY2VSZWdpb24+JiBzdGFjaywgUmVuZGVyUwogICAgIH0KIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIFBhaW50VHlwZSBwYWludFR5cGUpCit2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0LCBMYXllclVwZGF0ZUxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gVXNl
IEZyb250VG9CYWNrIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWlu
ZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJh
dG9yPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CkBAIC01NDIsMTMgKzU5
MSwxMyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgIC8vIFdlIG1lcmdlIHRoZSBvY2Ns
dXNpb24gYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aCB0aGUgbmV3IGN1cnJlbnQgc3VidHJl
ZS4gVGhpcyBuZXcgdGFyZ2V0IGlzIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBpZiBub3QgYWxyZWFk
eSB0aGVyZS4KICAgICBWZWN0b3I8UmVuZGVyU3VyZmFjZVJlZ2lvbj4gdGFyZ2V0U3VyZmFjZVN0
YWNrOwogCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBl
OjplbmQoJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9y
VHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsKKyAgICBm
b3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYg
KGl0LnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKIAogICAgICAgICAgICAgZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHRhcmdldFN1cmZhY2VTdGFjaywgaXQtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgICAgICAgICBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSgq
aXQsIHBhaW50VHlwZSk7CisgICAgICAgICAgICBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoKml0LCB1cGRhdGVMaXN0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhl
IHJlcGxpY2EgbGF5ZXIgdG8gdGhlIGN1cnJlbnQgb2NjbHVzaW9uCiAKICAgICAgICAgICAgIGlm
IChpdC0+bWFza0xheWVyKCkgfHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSA8
IDEpCkBAIC01NTcsNyArNjA2LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAg
ICAgIEFTU0VSVCghaXQtPmJvdW5kcygpLmlzRW1wdHkoKSk7CiAKICAgICAgICAgICAgIGVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRTdXJmYWNlU3RhY2ssIGl0LT50YXJnZXRSZW5kZXJT
dXJmYWNlKCkpOwotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkoKml0LCBwYWludFR5
cGUsIHRhcmdldFN1cmZhY2VTdGFjay5sYXN0KCkub2NjbHVkZWRJblNjcmVlbik7CisgICAgICAg
ICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIoKml0LCB0YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9j
Y2x1ZGVkSW5TY3JlZW4sIHVwZGF0ZUxpc3QpOwogICAgICAgICAgICAgaXQtPmFkZFNlbGZUb09j
Y2x1ZGVkU2NyZWVuU3BhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLmxhc3QoKS5vY2NsdWRlZEluU2Ny
ZWVuKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlYXZlVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSh0YXJnZXRTdXJmYWNlU3RhY2ssIGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5y
ZW5kZXJTdXJmYWNlKCkpOwpAQCAtNTY1LDM2ICs2MTQsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyKQotewotICAgIC8vIFVzZSBCYWNrVG9Gcm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0
aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KLSAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlv
bnM6OkJhY2tUb0Zyb250PiBDQ0xheWVySXRlcmF0b3JUeXBlOwotCi0gICAgQ0NMYXllckl0ZXJh
dG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7Ci0g
ICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVn
aW4oJm1fdXBkYXRlTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQucmVw
cmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5y
ZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5KCkpOwotICAgICAgICAgICAgaWYgKGl0LT5tYXNr
TGF5ZXIoKSkKLSAgICAgICAgICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+cmVw
bGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAgICAg
aWYgKGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgICAg
IGl0LT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAo
aXQucmVwcmVzZW50c0l0c2VsZigpKQotICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5k
ZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRl
eCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNl
SW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNsZWFyKCk7CisKKyAgICBmb3Ig
KHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3JlbmRlclN1cmZhY2VV
cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1
bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7
CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgbGF5ZXIt
PmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsK
KyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQm
IGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGQ4MWI4ZTRkYWZmMWYwZTZm
ZDg4NzhlYjEyYjEwNmNkMzdkNzNkOGYuLmVlMjYyODVlYzRhOTFjNTEzMjk4ZTBhMWU0N2FiMTg4
NGU4ZWVkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00Miw3ICs0Miw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFz
cyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXll
clBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFJlZ2lvbjsKQEAgLTc1LDcgKzc0LDggQEAgc3RydWN0
IENDU2V0dGluZ3MgewogICAgICAgICAgICAgLCByZWZyZXNoUmF0ZSgwKQogICAgICAgICAgICAg
LCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRpYWxTd2FwRW5hYmxl
ZChmYWxzZSkKLSAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpIHsgfQorICAgICAgICAgICAgLCBtYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKKyAgICAg
ICAgICAgICwgZGVsYXlUZXh0dXJlVXBkYXRlcyhmYWxzZSkgeyB9CiAKICAgICBib29sIGFjY2Vs
ZXJhdGVQYWludGluZzsKICAgICBib29sIGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg1LDYgKzg1
LDcgQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nOwogICAg
IGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwogICAgIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXM7CisgICAgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzOwogfTsKIAogLy8gUHJvdmlkZXMg
aW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgYmFjayB0byB0
aGUgQ0NMYXllclRyZWVIb3N0CkBAIC0xODYsMTEgKzE4NywxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwogCiAgICAgLy8gUmV0dXJucyBmYWxz
ZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFp
bHVyZS4KLSAgICBib29sIHVwZGF0ZUxheWVycygpOworICAgIGJvb2wgcHJlcGFyZVRvVXBkYXRl
KCk7CisgICAgdm9pZCB1cGRhdGVMYXllcnMoKTsKIAogICAgIHZvaWQgc3RhcnRQYWdlU2NhbGVB
bmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKICAg
ICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwog
ICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQg
c3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0yMDMsMTYgKzIwNCwyOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xh
c3MgVXBkYXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZUhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2
aXJ0dWFsIH5VcGRhdGVIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGJvb2wgcGFydGlhbCk7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAgIH07CisKICAgICB0eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7CisgICAgdHlwZWRlZiBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxMYXllckNocm9taXVtPiwgUmVnaW9uPiA+IExheWVyVXBkYXRlTGlzdDsK
ICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8TWFuYWdlZFRleHR1cmU+ID4gVGV4dHVyZUxpc3Q7
CiAKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyKCk7CiAKLSAgICBlbnVtIFBhaW50
VHlwZSB7IFBhaW50VmlzaWJsZSwgUGFpbnRJZGxlIH07Ci0gICAgc3RhdGljIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSwgY29uc3QgUmVnaW9uJiBv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBM
YXllckxpc3QmLCBQYWludFR5cGUpOwotICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSk7CisgICAgdm9pZCBhcHBlbmRW
aXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSosIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5T
cGFjZSwgTGF5ZXJVcGRhdGVMaXN0Jik7CisgICAgdm9pZCBhcHBlbmRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyVXBkYXRlTGlzdCYpOworICAgIHZv
aWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCBMYXllclVwZGF0ZUxpc3QmKTsKIAorICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExh
eWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CiAg
ICAgLy8gUHJlLXJlc2VydmUgdGV4dHVyZXMgZm9yIGFueSBsYXllciBtYXJrZWQgImFsd2F5cyBy
ZXNlcnZlIHRleHR1cmVzIgogICAgIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7CkBAIC0yMzIsNyAr
MjQ1LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7
CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAK
LSAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0OworICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0OworICAgIExheWVyVXBkYXRlTGlzdCBtX2xheWVyVXBkYXRlTGlzdDsKIAog
ICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IGI0MzU4YWFkZDc3
ZjI3OGM4MWRmNmQyZjZjZWE1M2ViZmYwNTFhYWIuLjQ1M2M5NmE5OWZjZjY4ZDY3NmUxMTM5MjJk
ZTM2NDcwYWVkNGI4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUg
Q0NQcm94eV9oCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTg1LDYgKzg2LDgg
QEAgcHVibGljOgogICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHN1Yi1yZWdpb24gdGV4dHVyZSB1
cGRhdGVzIHN1cHBvcnRlZCBmb3IgZWFjaCBjb21taXQuCiAgICAgdmlydHVhbCBzaXplX3QgbWF4
UGFydGlhbFRleHR1cmVVcGRhdGVzKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGJvb2wgcGFydGlhbCkgPSAwOworCiAgICAg
Ly8gRGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGJvb2wgaXNNYWluVGhy
ZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDE3YTY5
NTkzYTY0M2NmZmU4MzcxNzYxNDk3ZTRiZWMwYTFjNzFkOTAuLjJlNzFhMjI0MmFhYmI5ZGU3Y2Vj
MmE2OWJkZGE1OGU0ZTE5NGI0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwCkBAIC0xNzAsMTYgKzE3MCwxNSBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNl
dE5lZWRzQW5pbWF0ZSgpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gQ29tbWl0IGlt
bWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAorICAgICAgICBp
ZiAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIpCisgICAgICAgICAgICB3aGlsZSAobV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXItPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCkpKSB7
IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xh
eWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVy
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHVwZGF0ZXIudXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4
KCkpOwotICAgICAgICBBU1NFUlQoIXVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxl
KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApAQCAtMTk0LDYgKzE5Myw4IEBAIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogICAgIH0KICAgICBtX2xheWVyVHJlZUhvc3Qt
PmNvbW1pdENvbXBsZXRlKCk7CiAgICAgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWUg
PSB0cnVlOworCisgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciB8fCAhbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXItPm51bU1vcmVVcGRhdGVzKCkpOwogfQogCiB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OnNldE5lZWRzQ29tbWl0KCkKQEAgLTIzMyw2ICsyMzQsMTcgQEAgdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQog
Cit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwgYm9vbCAvKiBwYXJ0aWFsICovKQoreworICAgIGlmICghbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXIpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyID0gYWRvcHRQdHIo
bmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJl
QWxsb2NhdG9yKCkpKTsKKworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygp
LmRlbGF5VGV4dHVyZVVwZGF0ZXMpCisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5h
cHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIGVsc2UKKyAgICAgICAg
dGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyLT5hbGxvY2F0b3IoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
fQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUg
cmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yOTgsOSArMzEwLDExIEBAIGJvb2wg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCkpCisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOworCiAgICAgZG9Db21taXQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBhZGRhOWYxNGU5ZTU0ZGJhMDVhZjMwZDU3ODY4
MzhjNDYzZDM0NDQxLi4zNTRmOTcxMzFkNmRhMzZiNTA3NjlhMDQ5MGFmZmFkODJkYzQ0YjEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK2NsYXNzIENDVGV4
dHVyZVVwZGF0ZXI7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJsaWMgQ0NQcm94
eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CkBAIC01OCw2ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpOwogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgYm9vbCBwYXJ0aWFsKTsK
IAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2
aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQpAQCAtOTEsNiArOTMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9n
cmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAv
LyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0
dGVkRnJhbWU7CisKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4g
SW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcAppbmRleCA2NmUwOGM4YmQ5M2YxODI2YTM5YjU1M2MyOTY1MGE4M2FjMDll
OGVhLi5kNTM4ZjYwMDE4NjhjNzAzOGM2Yzk0MzhiMWFiNTk4NzEyNzlkMWI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zOSw3ICs0MCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcihUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAgICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCi0gICAg
LCBtX2VudHJ5SW5kZXgoMCkKIHsKICAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQpAQCAtNDgs
NyArNDgsNyBAQCBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAK
LXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50cnk+JiBlbnRyaWVzKQordm9pZCBDQ1RleHR1cmVVcGRh
dGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgQVNT
RVJUKHRleHR1cmUpOwogCkBAIC01Niw2MSArNTYsMjkgQEAgdm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50
UmUKICAgICBlbnRyeS5tX3RleHR1cmUgPSB0ZXh0dXJlOwogICAgIGVudHJ5Lm1fc291cmNlUmVj
dCA9IHNvdXJjZVJlY3Q7CiAgICAgZW50cnkubV9kZXN0UmVjdCA9IGRlc3RSZWN0OwotICAgIGVu
dHJpZXMuYXBwZW5kKGVudHJ5KTsKKyAgICBtX2VudHJpZXMuYXBwZW5kKGVudHJ5KTsKIH0KIAot
dm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCitzaXplX3QgQ0NUZXh0dXJlVXBkYXRlcjo6bnVtTW9yZVVwZGF0ZXMoKSBjb25zdAog
ewotICAgIGFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgbV9lbnRyaWVzKTsK
KyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKTsKIH0KIAotdm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjphcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorYm9vbCBD
Q1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7Ci0g
ICAgYXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX3BhcnRpYWxFbnRyaWVz
KTsKLX0KKyAgICBpZiAoIW1fZW50cmllcy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAotYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fZW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7Ci19Cisg
ICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICBlbnRyeS5tX3Rl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVj
dCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKIAotYm9v
bCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNp
emVfdCBjb3VudCkKLXsKLSAgICBzaXplX3QgaW5kZXg7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0g
bWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGlu
ZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4OyArK2luZGV4KSB7Ci0gICAgICAg
IFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1tpbmRleF07Ci0gICAgICAgIGVudHJ5Lm1f
dGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VS
ZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKLSAgICB9Ci0KLSAgICBib29sIG1vcmVVcGRhdGVzID0g
bWF4SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpOwotCi0gICAgQVNTRVJUKG1fcGFydGlhbEVudHJp
ZXMuc2l6ZSgpIDw9IGNvdW50KTsKLSAgICAvLyBNYWtlIHN1cmUgdGhlIG51bWJlciBvZiB1cGRh
dGVzIGluY2x1ZGluZyBwYXJ0aWFsIHVwZGF0ZXMgYXJlIG5vdCBtb3JlCi0gICAgLy8gdGhhbiB8
Y291bnR8LgotICAgIGlmICgoY291bnQgLSAoaW5kZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFy
dGlhbEVudHJpZXMuc2l6ZSgpKQotICAgICAgICBtb3JlVXBkYXRlcyA9IHRydWU7Ci0KLSAgICBp
ZiAobW9yZVVwZGF0ZXMpIHsKLSAgICAgICAgbV9lbnRyeUluZGV4ID0gaW5kZXg7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFy
dGlhbEVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fcGFydGlhbEVudHJpZXNbaW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVw
ZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnku
bV9kZXN0UmVjdCk7Ci0gICAgfQotCi0gICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRvIHByb2Nl
c3MsIGF1dG8tY2xlYXIuCi0gICAgY2xlYXIoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIG1fZW50cmllcy5zaXplKCkgPiAwOwogfQogCiB2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNs
ZWFyKCkKIHsKLSAgICBtX2VudHJ5SW5kZXggPSAwOwogICAgIG1fZW50cmllcy5jbGVhcigpOwot
ICAgIG1fcGFydGlhbEVudHJpZXMuY2xlYXIoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCmluZGV4IGRiYjUyYzliYWQyMDQzNGRkYmY3NGM2MjhhNDQ0NWU5ZDdlOTg3ZDIu
LjA4ZjRhYjI3ZDE4OWM2MDgxYjEzY2M3MTdlYzM3NzJhZWJiYzZkYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmgKQEAgLTQxLDEyICs0MSwxMSBAQCBwdWJsaWM6CiAgICAgfkNDVGV4
dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7Ci0gICAgdm9pZCBhcHBlbmRQYXJ0aWFsKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAK
LSAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgc2l6ZV90IG51bU1vcmVVcGRh
dGVzKCkgY29uc3Q7CiAKLSAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJucyB0cnVl
IGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNzLgotICAgIGJvb2wgdXBkYXRlKEdyYXBo
aWNzQ29udGV4dDNEKiwgc2l6ZV90IGNvdW50KTsKKyAgICAvLyBVcGRhdGUgYSB0ZXh0dXJlLiBS
ZXR1cm5zIHRydWUgaWYgbW9yZSB0ZXh0dXJlcyBsZWZ0IHRvIHByb2Nlc3MuCisgICAgYm9vbCB1
cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApAQCAtNTks
MTIgKzU4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OwogICAgIH07
CiAKLSAgICBzdGF0aWMgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0
b3I8VXBkYXRlRW50cnk+Jik7Ci0KICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsK
LSAgICBzaXplX3QgbV9lbnRyeUluZGV4OwogICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9lbnRy
aWVzOwotICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9wYXJ0aWFsRW50cmllczsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggM2VhNzJlMmExYzcyZmIzNTY5MTQ4OTI3
ZWNiMTUxMDQ3Mjk4OTQyNi4uZDExM2Y1OTgxZGM0MTY1MzAwOGVjYjQxMThjZjY2OTQzYTg5NzE4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGlj
IGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzT3duUHRyPENDUHJveHk+IENDVGhyZWFkUHJveHk6OmNyZWF0ZShDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCitQYXNzT3duUHRyPENDVGhyZWFkUHJveHk+IEND
VGhyZWFkUHJveHk6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RocmVhZFByb3h5KGxheWVyVHJlZUhvc3QpKTsKIH0K
QEAgLTMyNyw2ICszMjcsMjEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0
YXJ0ZWQgPSBmYWxzZTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGJvb2wgcGFydGlhbCkKK3sKKyAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6dXBkYXRlIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9zdGFydGVkKTsKKworICAgIE93blB0cjxVcGRhdGVFbnRy
eT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVXBkYXRlRW50cnkpOworICAgIGVudHJ5LT5tX3RleHR1
cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAg
IGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgZW50cnktPm1fcGFydGlhbCA9IHBh
cnRpYWw7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwg
ZW50cnkucmVsZWFzZSgpKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVu
ZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJl
YWQiLCB0aGlzLCAwKTsKQEAgLTQxMyw5ICs0MjgsMTEgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5U
aW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsK
IAotICAgIGlmICghbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKSkKKyAgICBpZiAoIW1f
bGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisKICAgICAvLyBCZWZvcmUgYXBwbHlp
bmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVk
IHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBzZXROZWVkQW5p
bWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0CiAgICAgLy8gbm93IHNv
IHRoYXQgd2UgZ2V0IGJlZ2luIGZyYW1lIHdoZW4gdGhpcyBvbmUgaXMgZG9uZS4KQEAgLTQzOCwx
MyArNDU1LDI3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4
ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVy
KTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBh
c3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQoreworICAgIEFTU0VSVCghbV9jb21taXRDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Cisg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBPd25Q
dHI8Q0NUZXh0dXJlVXBkYXRlcj4qIHVwZGF0ZXJPbkltcGxUaHJlYWQgPSBlbnRyeS0+bV9wYXJ0
aWFsID8gJm1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA6ICZtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKKworICAgIGlmICghKnVwZGF0ZXJPbklt
cGxUaHJlYWQpCisgICAgICAgICp1cGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IEND
VGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpKTsKKworICAgICgqdXBkYXRlck9uSW1wbFRocmVhZCktPmFwcGVuZChlbnRyeS0+bV90
ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7Cit9CisKIHZv
aWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQo
IW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBs
VGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNT
RVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOwogICAgIGlmICgh
bV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDUyLDE4ICs0ODMsMjAgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlv
bjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwot
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IEND
VGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVD
b21wbGV0ZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0
ZXMoKSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpCisgICAgaWYgKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkICYmIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5udW1Nb3JlVXBkYXRlcygpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEFsbCBwYXJ0aWFsIHVwZGF0ZXMgbmVlZHMgdG8gYmUg
ZG9uZSBhdCB0aGUgc2FtZSB0aW1lIHNvIGRvbid0CisgICAgLy8gcmVjb2duaXplIHRoZW0gdW50
aWwgYmVnaW5GcmFtZUNvbXBsZXRlIGhhcyBiZWVuIGNhbGxlZC4KKyAgICBpZiAoIW1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRl
cygpOworCisgICAgcmV0dXJuIG1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCAmJiBtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPm51bU1v
cmVVcGRhdGVzKCk7CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCkBAIC00Nzcs
MTkgKzUxMCwzOSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNl
cyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZSht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOwor
ICAgIHNpemVfdCB1cGRhdGVzID0gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKKyAgICBpZiAobV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgd2hpbGUgKG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5udW1Nb3JlVXBkYXRlcygpICYmIHVwZGF0
ZXMtLSkKKyAgICAgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51
cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpKTsKKyAgICB9CisKKyAgICBpZiAo
IW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKHVwZGF0ZXMgPCBtX2N1cnJlbnRQYXJ0aWFsVGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQtPm51bU1vcmVVcGRhdGVzKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHdoaWxlIChtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQt
Pm51bU1vcmVVcGRhdGVzKCkpCisgICAgICAgIG1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSk7CiB9
CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywg
MCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAg
ICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBk
YXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAg
ICBpZiAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpIHsKKyAgICAgICAgQVNT
RVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+bnVtTW9yZVVwZGF0ZXMo
KSk7CisgICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7
CisgICAgfQogCisgICAgaWYgKG1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCkgeworICAgICAgICBBU1NFUlQoIW1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZC0+bnVtTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIG1fY3VycmVudFBhcnRpYWxU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOworICAgIH0KIAogICAgIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRl
eCAyM2MyOWY0OGZhMzJiN2FjNDg4MTU4MDJjYTAzNThlZWExZDg4MDFhLi40OTZlY2U5ZjgzMzFm
ZWE3ZjdkMzliYjY4YzZkZGJmY2NkMWUyOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBA
IC00Myw3ICs0Myw3IEBAIGNsYXNzIENDVGhyZWFkOwogCiBjbGFzcyBDQ1RocmVhZFByb3h5IDog
cHVibGljIENDUHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQsIENDU2NoZWR1bGVyQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1Byb3h5PiBjcmVhdGUoQ0NM
YXllclRyZWVIb3N0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaHJlYWRQcm94eT4gY3Jl
YXRlKENDTGF5ZXJUcmVlSG9zdCopOwogCiAgICAgdmlydHVhbCB+Q0NUaHJlYWRQcm94eSgpOwog
CkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogICAgIHZpcnR1YWwgc2l6ZV90IG1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0LCBib29sIHBhcnRpYWwpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1w
bENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29t
cGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTgyLDYgKzgzLDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAgIHN0
cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IG1fdGV4dHVyZTsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAgICAgIEludFJl
Y3QgbV9kZXN0UmVjdDsKKyAgICAgICAgYm9vbCBtX3BhcnRpYWw7CisgICAgfTsKKwogICAgIC8v
IENhbGxlZCBvbiBtYWluIHRocmVhZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9s
bEFuZFNjYWxlU2V0Pik7CiAgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKQEAgLTk2
LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXNzT3duUHRyPENDVGhyZWFkOjpU
YXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZv
aWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxU
aHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4pOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVh
ZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0U3Rh
cnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlvbiwg
Ym9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwpAQCAtMTQw
LDYgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlz
IHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxldGUuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQq
IG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOwogICAgIE93blB0cjxDQ1RleHR1
cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKKyAgICBPd25Q
dHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50UGFydGlhbFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRD
b21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJh
bWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAyNWFjMDc1MjM5Njc4N2I2YWNhZDQzMWMz
YjcxNjc2YWQyMDBmNDg2Li4zNjRmMjAyMzFhZDY0MGE4NjVjYWFiYTkyZTAzMjExOWFhMWUxMTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEz
OSw2ICsxMzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFp
bnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50
aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcnRpYWxTd2FwRW5h
YmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxheVRleHR1cmVVcGRhdGVzKCkgY29uc3Qg
PSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAxMWU5YzMzN2IwN2Ey
MjBmMGJmMjE4ZWU2NTVjMDJmMTNkZDE2YjJiLi4yZGU1Yjk4ODE3NmY0MDc1YmExNGU2NWU5OTgy
OWZiMmFkNWFjZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5n
c0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQorICAgICwgbV9kZWxheVRleHR1cmVVcGRhdGVzKGZhbHNl
KQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC01MjcsNCArNTI4LDkgQEAgdm9pZCBX
ZWJTZXR0aW5nc0ltcGw6OnNldFBhcnRpYWxTd2FwRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAg
bV9zZXR0aW5ncy0+c2V0UGFydGlhbFN3YXBFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdl
YlNldHRpbmdzSW1wbDo6c2V0RGVsYXlUZXh0dXJlVXBkYXRlcyhib29sIGVuYWJsZWQpCit7Cisg
ICAgbV9kZWxheVRleHR1cmVVcGRhdGVzID0gZW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmlu
ZGV4IDQ1ZTYyZGI2ZmJlMjBjYzU3YzBmMTdlODU4N2E2ZmIwOWY2NTEzZTkuLmI0OGZkNTY5MTE3
YjdhMGNlN2U2ZmNmM2ZlN2JkYjM1OTA4ZWI5YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMzQsMTIgKzEzNCwxNSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRQYXJ0aWFsU3dhcEVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVy
ZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0ZXM7IH0KIAogcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAgICBib29sIG1fY29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAg
Ym9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fZGVsYXlUZXh0dXJlVXBk
YXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDBmMzUzNzkwNjg0N2Y0NTIyNmY0N2MxZWU2NzA5
ODdhODkxNGIxM2EuLjZiNjkzMzYwMTE1OGQ0ZDc4M2U5ZWI3MDEyNGUyOTc0YWFlYjRkZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMwMTksNiAr
MzAxOSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQYWludGluZyA9
IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdpbmdFbmFibGVkKCk7CiAgICAgICAgIGNj
U2V0dGluZ3MucGFydGlhbFN3YXBFbmFibGVkID0gcGFnZSgpLT5zZXR0aW5ncygpLT5wYXJ0aWFs
U3dhcEVuYWJsZWQoKTsKKyAgICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0g
c2V0dGluZ3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRlcygpOwogCiAgICAgICAgIG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpjcmVhdGUoV2ViVmll
d0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5z
aG93RGVidWdCb3JkZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMDRmY2M3NTZlMDllZTFiN2M5NjFhNWU1
MDQ4MjFmMDFmOTM3YjQ2YS4uM2U5Nzg2Nzc3MTA2NGJhYzc0MjlmNTc5ZmY0ZWQ2MWVmM2E1NTJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCkBAIC0xMDQ1LDYgKzEwNDUsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQog
CitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHByZXNlcnZlczNEKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKCkgeyB9
Cit9OworCiBjbGFzcyBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ29u
dGVudExheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJE
ZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtMTA2Niw0NyArMTA3NCwxMjcg
QEAgcHJpdmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmcgOiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUo
Q29udGVudExheWVyRGVsZWdhdGUgKmRlbGVnYXRlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUpKTsgfQorICAgIGNs
YXNzIENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgVGV4
dHVyZShDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAgICAgICAgICAgOiBtX3RleHR1cmUo
dGV4dHVyZSkKKyAgICAgICAgICAgICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0
ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50
c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICBpbnQgaWRsZVBh
aW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1faWRsZVBhaW50Q29udGVudHNDb3VudDsgfQot
ICAgIHZvaWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50
ID0gMDsgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50ID0gMDt9CisgICAgICAgICAgICB2aXJ0dWFs
IE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisK
KyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVw
ZGF0ZXItPmxheWVyKCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG1fdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAg
ICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT51cGRhdGVSZWN0KCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIE93blB0cjxNYW5h
Z2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICAgICAgQ29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyAqbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIobGF5ZXIpKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmUodGhpcywgTWFu
YWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOworICAgICAgICB9CisKKyAgICAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIC8qIHRl
eHR1cmVGb3JtYXQgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOworICAgICAgICB9CiAKLSAgICBpbnQg
dXBkYXRlQ291bnQoKSB7IHJldHVybiBtX3VwZGF0ZUNvdW50OyB9Ci0gICAgdm9pZCByZXNldFVw
ZGF0ZUNvdW50KCkgeyBtX3VwZGF0ZUNvdW50ID0gMDsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50
U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNv
bnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8qIHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQor
CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigp
IHsgcmV0dXJuIG1fbGF5ZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZE
aXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKSA6IG1fbGF5ZXIobGF5ZXIpIHsgfQorCisg
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVyOwor
ICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZz4gY3JlYXRlKENvbnRlbnRMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAg
ICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZyhkZWxlZ2F0ZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0
dXJlVXBkYXRlcklmTmVlZGVkKCkKKyAgICB7CisgICAgICAgIGlmIChtX2NvbnRlbnRMYXllclRl
eHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fY29udGVudExh
eWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRo
aXMpOworICAgICAgICBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyLT5zZXRPcGFxdWUob3Bh
cXVlKCkpOworCisgICAgICAgIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0
KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKKyAgICAg
ICAgc2V0VGV4dHVyZUZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICAgICAgc2V0U2FtcGxlZFRl
eGVsRm9ybWF0KHRleHR1cmVVcGRhdGVyKCktPnNhbXBsZWRUZXhlbEZvcm1hdCh0ZXh0dXJlRm9y
bWF0KSk7CiAgICAgfQorICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyLmdldCgp
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBh
aW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1faWRsZVBhaW50Q29udGVudHNDb3VudCsr
OworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgcHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCisgICAgdmlydHVhbCB2
b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIp
OwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVt
OjppZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgICAgICBpZGxlUHJlcGFyZVRvVXBk
YXRlKCk7CiAgICAgfQogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKSB7IG1fcHJlcGFyZVRv
VXBkYXRlQ291bnQrKzsgfQorICAgIGludCBwcmVwYXJlVG9VcGRhdGVDb3VudCgpIHsgcmV0dXJu
IG1fcHJlcGFyZVRvVXBkYXRlQ291bnQ7IH0KKworICAgIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0
ZSgpIHsgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQrKzsgfQorICAgIGludCBpZGxlUHJlcGFy
ZVRvVXBkYXRlQ291bnQoKSB7IHJldHVybiBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudDsgfQor
CisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9Cisg
ICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50
OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQor
ICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9
CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBp
bnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyhDb250ZW50TGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgICAgIDogQ29udGVudExheWVy
Q2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCgwKQor
ICAgICAgICAsIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwgbV9wYWlu
dENvbnRlbnRzQ291bnQoMCkKLSAgICAgICAgLCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQoMCkK
LSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50
KDApCisgICAgICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJv
dW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgICAgICBzZXRJc0RyYXdhYmxlKHRydWUpOwogICAg
IH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBpbnQgbV9wcmVwYXJlVG9VcGRhdGVDb3VudDsKKyAgICBp
bnQgbV9pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQ7CiAgICAgaW50IG1fcGFpbnRDb250ZW50c0Nv
dW50OwotICAgIGludCBtX2lkbGVQYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRl
Q291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV91cGRhdGVSZWN0
Q291bnQ7CiB9OwogCiAvLyBMYXllciBvcGFjaXR5IGNoYW5nZSBkdXJpbmcgcGFpbnQgc2hvdWxk
IG5vdCBwcmV2ZW50IGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZyb20gYmVpbmcgdXBkYXRlZCBkdXJp
bmcgY29tbWl0LgpAQCAtMTEzMywxNiArMTIyMSwxOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgYWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5
KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KLSAgICAgICAgRVhQRUNUX0VRKDEsIG1f
dXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOworICAgICAgICAvLyBwcmVw
YXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBF
Q1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlVG9VcGRhdGVDb3VudCgpKTsKIAot
ICAgICAgICAvLyBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlCi0gICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQ
YWludENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8vIGlkbGVQcmVwYXJlVG9VcGRhdGUoKSBz
aG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRh
dGVDaGVja0xheWVyLT5pZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQoKSk7CisKKyAgICAgICAgLy8g
cGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVY
UEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKIAot
ICAgICAgICAvLyB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBj
YWxsZWQgdGhlIHNhbWUKLSAgICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50
c0lmRGlydHkoKS4KLSAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRD
b250ZW50c0NvdW50KCksCi0gICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVw
ZGF0ZUNvdW50KCkpOworICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3VsZCBoYXZl
IGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwcmVw
YXJlUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJl
UmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0
ZVJlY3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28g
Q0NMYXllclRyZWVIb3N0IGRpZXMuCiAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci5jbGVhcigp
OwpAQCAtMTE3Miw2ICsxMjYzLDcgQEAgcHVibGljOgogICAgICAgICBJbnRTaXplIHZpZXdwb3J0
U2l6ZSgxMCwgMTApOwogICAgICAgICBsYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6ZSh2
aWV3cG9ydFNpemUpOwogCisgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+cHJlcGFyZVRvVXBkYXRl
KCk7CiAgICAgICAgIGxheWVyVHJlZUhvc3QoKS0+dXBkYXRlTGF5ZXJzKCk7CiAKICAgICAgICAg
RVhQRUNUX0VRKHZpZXdwb3J0U2l6ZSwgbGF5ZXJUcmVlSG9zdCgpLT52aWV3cG9ydFNpemUoKSk7
CkBAIC0xNDM1LDcgKzE1MjcsNyBAQCBjbGFzcyBUZXN0TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBM
YXllckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXN0TGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRlc3RMYXllckNocm9taXVt
KCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKICAgICB7CiAgICAg
ICAgIG1fb2NjbHVkZWRTY3JlZW5TcGFjZSA9IG9jY2x1ZGVkU2NyZWVuU3BhY2U7CiAgICAgfQpA
QCAtMTQ5NCw2ICsxNTg2LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE1
MTEsNiArMTYwNCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVw
YXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0xNTI5LDYg
KzE2MjMsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRv
VXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTU0OSw2ICsxNjQ0
LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJv
b3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RM
YXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0
ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE1NzEsNiArMTY2Nyw3IEBA
IHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5
ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXIt
PmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0xNTkzLDYgKzE2OTAsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3Vu
ZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTYxNiw2ICsxNzE0LDcgQEAgcHVibGljOgog
CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkp
OworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE2MzksNiArMTczOCw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21t
aXRDb21wbGV0ZSgpOwogCkBAIC0xNjk4LDYgKzE3OTgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobGF5ZXJzWzBdLmdldCgpKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUobGF5ZXJzWzBdLT5ib3VuZHMoKSk7Cisg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29t
bWl0Q29tcGxldGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNGIzZGQyN2QzMWQ4ODIx
MDRjNzBjZmZmNTAyNGZiODA0NDdlYTE0MS4uMzY4MzhiYjdkMGQ4MTRlMzQ1OTUwZjc0ZTBmMWQ3
Zjk5ZWRhNTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52
YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5j
bHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJjYy9DQ0NhbnZhc0xheWVySW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CkBAIC02OSw2ICs2OCwyMSBAQCBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0Qz
KGRlbGV0ZVRleHR1cmUsIHZvaWQodW5zaWduZWQsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkp
OwogfTsKIAorY2xhc3MgTW9ja1VwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRl
eHQoY29udGV4dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBib29sKQorICAgIHsK
KyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAgIHRleHR1
cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OworICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworfTsKKwogfSAvLyBuYW1lc3Bh
Y2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODYsNyArMTAwLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBNb2NrQ2FudmFzQ29udGV4dCYgaW1wbE1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0Nh
bnZhc0NvbnRleHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGlj
c0NvbnRleHQzRChpbXBsQ29udGV4dC5nZXQoKSkpOwogCiAgICAgICAgIE1vY2tUZXh0dXJlQWxs
b2NhdG9yIGFsbG9jYXRvck1vY2s7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcigm
YWxsb2NhdG9yTW9jayk7CisgICAgICAgIE1vY2tVcGRhdGVIYW5kbGVyIHVwZGF0ZUhhbmRsZXJN
b2NrKGltcGxDb250ZXh0LmdldCgpLCAmYWxsb2NhdG9yTW9jayk7CiAKICAgICAgICAgY29uc3Qg
SW50U2l6ZSBzaXplKDMwMCwgMTUwKTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1heFRleHR1cmVT
aXplID0gc2l6ZS53aWR0aCgpICogc2l6ZS5oZWlnaHQoKSAqIDQ7CkBAIC0xMzQsNyArMTQ4LDgg
QEAgcHJvdGVjdGVkOgogICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOwogICAgICAgICBSZWdpb24gb2Nj
bHVkZWRTY3JlZW5TcGFjZTsKLSAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0eShv
Y2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAgICAgY2FudmFzLT5wcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShjYW52YXMtPm5lZWRzRGlzcGxheSgpKTsK
ICAgICAgICAgewogICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZElt
cGxUaHJlYWQ7CkBAIC0xNDIsNyArMTU3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7
CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBs
Kj4obGF5ZXJJbXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOwogCi0gICAgICAgICAgICBjYW52YXMt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwor
ICAgICAgICAgICAgY2FudmFzLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKHVwZGF0ZUhhbmRs
ZXJNb2NrKTsKICAgICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwu
Z2V0KCkpOwogCiAgICAgICAgICAgICBpZiAodGhyZWFkZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCmluZGV4
IGJkYmY3YmIwOTMwMThiZDZhNmIzMDdmZjhiZTM4MTQxNWY1OGE2NzMuLjBmN2VkNTcwZWQ2ZmU0
Mjc4OTY3ZmUzYjFlNWVhZGI3NDQ0ZTA5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3QuY3BwCkBAIC05NSwxOSAr
OTUsMTkgQEAgVEVTVChMYXllclRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3RQcmVz
ZW50QWZ0ZXJPcGFxdWVQYWludCkKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBh
aW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUp
KTsKICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1
ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQw
MCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVl
UmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBh
aW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFs
c2UpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAw
KSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5w
YWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwg
MCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAg
cGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1
ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAgdXBkYXRlci0+cHJlcGFy
ZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwg
MSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9wYXF1ZVJlY3QpOwogfQog
CkBAIC0xMjEsMTkgKzEyMSwxOSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0
T3BhcXVlUmVjdE5vdFByZXNlbnRBZnRlck5vbk9wYXF1ZVBhaW50KQogICAgIG9wYXF1ZVJlY3Qg
PSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVy
Q2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIHVwZGF0
ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAs
IDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKElu
dFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJl
Y3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3Qp
OwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIo
bmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1cGRhdGVyID0g
Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIu
cmVsZWFzZSgpLCBmYWxzZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3Qo
MCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwor
ICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNp
emUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVj
dCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVt
KGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSk7Ci0gICAgdXBkYXRl
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwg
NDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7
CiB9CiAKQEAgLTE0OCwyMSArMTQ4LDIxIEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRlclRlc3Qs
IHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxheWVyV2l0aE9wYXF1ZVBhCiAgICAg
cGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1
ZSkpOwogICAgIHVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1
ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDAp
LCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBh
aW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAw
LCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAw
KSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50
ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsK
ICAgICB1cGRhdGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVl
KHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwg
NDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVy
LT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAw
KSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBw
YWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsT3BhcXVl
KSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAgICB1cGRhdGVyLT5zZXRPcGFx
dWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0
ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0
MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKQEAgLTE3NywyMSArMTc3LDIxIEBAIFRFU1QoTGF5
ZXJUZXh0dXJlVXBkYXRlclRlc3QsIHRlc3RPcGFxdWVSZWN0Tm90UHJlc2VudEZvck9wYXF1ZUxh
eWVyV2l0aE5vbk9wYXF1CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWlu
dGVyQ2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAgIHVw
ZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50
UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVj
dCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwg
SW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hy
b21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwogICAg
IHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUo
SW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVl
UmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAw
KSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3Qg
PSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVy
Q2hyb21pdW0oZmlsbEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpKTsKICAg
ICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBkYXRlci0+cHJlcGFyZVRvVXBkYXRl
KEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1
ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCA0MDAsIDQw
MCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CmluZGV4IGZjZDM4NzhhNjZhNjNiOGY5NjA2Yjk1NDNhZjcxMTI2OTIxYzVlNGEuLmYwMmZlM2Fh
NDJlMmMxYWNjYTEwMTg0OGI4N2JiNTQxYTRiNWQwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjks
MTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgiCiAjaW5jbHVk
ZSAiRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5o
IgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRl
ICJjYy9DQ1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5oIgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKQEAgLTQ4LDEwICs1MCw5IEBAIHVzaW5nIG5hbWVz
cGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIEZha2VUZXh0dXJlQWxsb2NhdG9yIDog
cHVibGljIFRleHR1cmVBbGxvY2F0b3IgeworY2xhc3MgRmFrZUhhbmRsZXIgOiBwdWJsaWMgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25l
ZCBjcmVhdGVUZXh0dXJlKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgeyByZXR1cm4gMDsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QsIGJvb2wgcGFydGlhbCkgeyB9CiB9OwogCiBjbGFzcyBGYWtlVGlsZWRM
YXllckNocm9taXVtOwpAQCAtNjEsMjAgKzYyLDIyIEBAIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0
dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgVGV4dHVyZShGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlciogbGF5ZXIsIFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUp
CiAgICAgICAgICAgICAsIG1fbGF5ZXIobGF5ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQogICAg
ICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4
dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgbV9sYXllci0+dXBkYXRlUmVjdCgp
OyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4
dHVyZTsKICAgICAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fbGF5ZXI7CiAgICAgfTsK
IAogICAgIEZha2VMYXllclRleHR1cmVVcGRhdGVyKCkKLSAgICAgICAgOiBtX3ByZXBhcmVDb3Vu
dCgwKQorICAgICAgICA6IG1fcGFpbnRDb3VudCgwKQogICAgICAgICAsIG1fdXBkYXRlQ291bnQo
MCkKICAgICB7CiAgICAgfQpAQCAtODQsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgLy8gY2FsbCB0
byBwcmVwYXJlVG9VcGRhdGUoKSB0aGUgcmVjdCBpcyByZXNldC4KICAgICB2b2lkIHNldFJlY3RU
b0ludmFsaWRhdGUoY29uc3QgSW50UmVjdCYsIEZha2VUaWxlZExheWVyQ2hyb21pdW0qKTsKIAot
ICAgIC8vIE51bWJlciBvZiB0aW1lcyBwcmVwYXJlVG9VcGRhdGUgaGFzIGJlZW4gaW52b2tlZC4K
LSAgICBpbnQgcHJlcGFyZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wcmVwYXJlQ291bnQ7IH0K
LSAgICB2b2lkIGNsZWFyUHJlcGFyZUNvdW50KCkgeyBtX3ByZXBhcmVDb3VudCA9IDA7IH0KKyAg
ICAvLyBOdW1iZXIgb2YgdGltZXMgcGFpbnRDb250ZW50cyBoYXMgYmVlbiBpbnZva2VkLgorICAg
IGludCBwYWludENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWludENvdW50OyB9CisgICAgdm9p
ZCBjbGVhclBhaW50Q291bnQoKSB7IG1fcGFpbnRDb3VudCA9IDA7IH0KIAogICAgIC8vIE51bWJl
ciBvZiB0aW1lcyB1cGRhdGVSZWN0IGhhcyBiZWVuIGludm9rZWQuCiAgICAgaW50IHVwZGF0ZUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQpAQCAtMTAwLDEwICsxMDMsMTAg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdl
cikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1h
dChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0UkdCQTsgfQotICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3Qp
OwogCiBwcml2YXRlOgotICAgIGludCBtX3ByZXBhcmVDb3VudDsKKyAgICBpbnQgbV9wYWludENv
dW50OwogICAgIGludCBtX3VwZGF0ZUNvdW50OwogICAgIEludFJlY3QgbV9yZWN0VG9JbnZhbGlk
YXRlOwogICAgIEludFJlY3QgbV9sYXN0VXBkYXRlUmVjdDsKQEAgLTE2MiwxNSArMTY1LDI1IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2tpcHNEcmF3KCk7
CiAgICAgfQogCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpCisg
ICAgeworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMocmVjdCk7Cisg
ICAgfQorCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIGZha2VMYXllclRleHR1cmVVcGRh
dGVyKCkgeyByZXR1cm4gbV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlTWFuYWdlcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UgKi8pCiAgICAgewogICAgICAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgp
KTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAg
IHsKKyAgICAgICAgcGFpbnRDb250ZW50cyh2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KCkgY29uc3QKICAgICB7CkBAIC0yMDUsOSArMjE4LDkgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6c2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBGYWtlVGls
ZWQKICAgICBtX2xheWVyID0gbGF5ZXI7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCkKIHsKLSAgICBtX3ByZXBhcmVDb3VudCsrOworICAgIG1fcGFpbnRDb3VudCsrOwog
ICAgIG1fbGFzdFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKICAgICBpZiAoIW1fcmVjdFRvSW52
YWxpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZVJlY3QobV9y
ZWN0VG9JbnZhbGlkYXRlKTsKQEAgLTIyNCwxNCArMjM3LDE0IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwg
PSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFrZVRleHR1
cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICAv
LyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4g
cGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDAp
KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwog
ICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwotICAg
IGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVy
LT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKKyAgICBsYXllci0+Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRp
ZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYm90aCB0aWxl
cyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMjQ0LDcgKzI1Nyw4IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUg
b25lIG9mIHRoZW0uCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwor
ICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVy
LT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQg
b25seSBoYXZlIHRoZSBmaXJzdCB0aWxlIHNpbmNlIHRoZSBvdGhlciB0aWxlIHdhcyBpbnZhbGlk
YXRlZCBidXQgbm90IHBhaW50ZWQuCkBAIC0yNTksOCArMjczLDcgQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpOwogCi0gICAgRmFr
ZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVy
IHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAK
ICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuIFNldHVwIDV4NSB0aWxlcyB3aXRoIG9u
ZSB2aXNpYmxlIHRpbGUgaW4gdGhlIGNlbnRlci4KICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMo
NTAwLCA1MDApOwpAQCAtMjc2LDcgKzI4OSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcHVzaElkbGVQYWludFRpbGVzKQogICAgIC8vIFdlIHNob3VsZCBuZWVkIGlkbGUtcGFpbnRp
bmcgZm9yIDN4MyB0aWxlcyBpbiB0aGUgY2VudGVyLgogICAgIEVYUEVDVF9UUlVFKGxheWVyLT5u
ZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSB0aWxlIG9uIHRoZSBpbXBsIHNpZGUu
CkBAIC0yODksNyArMzAyLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRs
ZVBhaW50VGlsZXMpCiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUodmlzaWJsZVJlY3Qp
OwogICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVlZHNJZGxlUGFpbnQodmlzaWJsZVJlY3Qp
KTsKICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlkbGUodmlzaWJsZVJlY3QpOwotICAg
ICAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICAg
ICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgICAgIHRleHR1cmVN
YW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogICAgIH0KQEAgLTMyNSw4ICszMzgsNyBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgIFJlZlB0cjxGYWtlQ0NU
aWxlZExheWVySW1wbD4gbGF5ZXJJbXBsID0gYWRvcHRSZWYobmV3IEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsKDApKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0g
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtl
SGFuZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0
aGVuIHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVu
dEJvdW5kcyk7CkBAIC0zMzcsNyArMzQ5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50
aW5nIGZvciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RS
VUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhl
IGltcGwgc2lkZS4KQEAgLTM1MCw3ICszNjIsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2Ug
bmVlZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAg
RVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApAQCAtMzYxLDE0ICszNzMsMTQgQEAgVEVT
VChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwgPSBhZG9wdFJlZihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5k
bGVyIGhhbmRsZXI7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgw
LCAwLCAxMDAsIDIwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAs
IHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAwLCAy
MDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAg
ICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIGhhdmUgYm90aCB0aWxlcyBvbiB0aGUgaW1wbCBzaWRlLgpAQCAtMzc3LDIyICszODks
MjQgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUp
CiAKICAgICB0ZXh0dXJlTWFuYWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKIAotICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50Q291bnQoKTsKICAg
ICAvLyBJbnZva2UgcHJlcGFyZVRvVXBkYXRlIGFnYWluLiBBcyB0aGUgbGF5ZXIgaXMgdmFsaWQg
cHJlcGFyZVRvVXBkYXRlIHNob3VsZG4ndCBiZSBpbnZva2VkIG9uCiAgICAgLy8gdGhlIExheWVy
VGV4dHVyZVVwZGF0ZXIuCiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgRVhQRUNUX0VRKDAsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5wYWludENvdW50KCkpOwogCiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gc2V0UmVjdFRvSW52YWxpZGF0
ZSB0cmlnZ2VycyBpbnZhbGlkYXRlUmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSBwcmVwYXJlVG9V
cGRhdGUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0lu
dmFsaWRhdGUoSW50UmVjdCgyNSwgMjUsIDUwLCA1MCksIGxheWVyLmdldCgpKTsKLSAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQoKTsKKyAgICBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQYWludENvdW50KCk7CiAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQo
KSk7Ci0gICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNv
dW50KCk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OworICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFp
bnRDb3VudCgpKTsKKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQ
YWludENvdW50KCk7CiAgICAgLy8gVGhlIGxheWVyIHNob3VsZCBzdGlsbCBiZSBpbnZhbGlkIGFz
IHByZXBhcmVUb1VwZGF0ZSBpbnZva2VkIGludmFsaWRhdGUuCiAgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAgRVhQRUNUX0VRKDEsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlQ291bnQoKSk7CisgICAgbGF5ZXIt
PnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIEVYUEVDVF9FUSgx
LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb3VudCgpKTsKIH0KIAog
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRC
b3VuZHNBcmVTY2FsZWQpCkBAIC00MDMsOCArNDE3LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAg
T3duUHRyPFRleHR1cmVNYW5hZ2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGUoNCoxMDI0KjEwMjQsIDIqMTAyNCoxMDI0LCAxMDI0KTsKICAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRM
YXllcldpdGhTY2FsZWRCb3VuZHModGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKIAotICAgIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAg
ICAgSW50UmVjdCBsYXllckJvdW5kcygwLCAwLCAzMDAsIDIwMCk7CiAgICAgSW50UmVjdCBjb250
ZW50Qm91bmRzKDAsIDAsIDIwMCwgMjUwKTsKQEAgLTQxNywyMCArNDMwLDIzIEBAIFRFU1QoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5VXBkYXRlUmVjdFdoZW5Db250ZW50Qm91bmRzQXJl
U2NhbGVkKQogICAgIC8vIEhvd2V2ZXIsIGl0IHNob3VsZCBzdGlsbCBiZSBpbiBsYXllciBzcGFj
ZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRC
b3VuZHMpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3Np
dG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0
KDAsIDAsIDMwMCwgMzAwICogMC44KSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAgICAvLyBB
ZnRlciB0aGUgdGlsZXMgYXJlIHVwZGF0ZWQgb25jZSwgYW5vdGhlciBpbnZhbGlkYXRlIG9ubHkg
bmVlZHMgdG8gdXBkYXRlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyLgogICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNv
bnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRCb3VuZHMpOworICAgIGxh
eWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIEVYUEVDVF9GTE9B
VF9SRUNUX0VRKEZsb2F0UmVjdChsYXllckJvdW5kcyksIGxheWVyLT51cGRhdGVSZWN0KCkpOwog
CiAgICAgLy8gUGFydGlhbCByZS1wYWludCBzaG91bGQgYWxzbyBiZSByZXByZXNlbnRlZCBieSB0
aGUgdXBkYXRlUmVjdCBpbiBsYXllciBzcGFjZSwgbm90IGNvbnRlbnQgc3BhY2UuCiAgICAgSW50
UmVjdCBwYXJ0aWFsRGFtYWdlKDMwLCAxMDAsIDEwLCAxMCk7CiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KHBhcnRpYWxEYW1hZ2UpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXIt
PmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JF
Q1RfRVEoRmxvYXRSZWN0KDQ1LCA4MCwgMTUsIDgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIH0K
IApAQCAtNDYwLDE4ICs0NzYsMTUgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lw
c0RyYXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50UmVj
dCk7CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwogCi0gICAg
RmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwotCiAgICAgY2NMYXllclRyZWVIb3N0LT5z
ZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9y
eUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRv
VXBkYXRlKCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5j
b250ZXh0KCksIHVwZGF0ZXIpOwogCi0gICAgLy8gV2UnbGwgc2tpcCB0aGUgcm9vdCBsYXllci4K
LSAgICBFWFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKLSAgICBFWFBFQ1RfRkFM
U0UoY2hpbGRMYXllci0+c2tpcHNEcmF3KCkpOworICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXIt
PnNraXBzRHJhdygpKTsKKyAgICAvLyBXZSdsbCBza2lwIHRoZSBjaGlsZCBsYXllci4KKyAgICBF
WFBFQ1RfVFJVRShjaGlsZExheWVyLT5za2lwc0RyYXcoKSk7CiAKICAgICBjY0xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7CiAgICAgdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdEFsbFRl
eHR1cmVzKCk7IC8vIENDTGF5ZXJUcmVlSG9zdDo6Y29tbWl0Q29tcGxldGUoKSBub3JtYWxseSBk
b2VzIHRoaXMsIGJ1dCBzaW5jZSB3ZSdyZSBtb2NraW5nIG91dCB0aGUgbWFuYWdlciB3ZSBoYXZl
IHRvIGRvIGl0LgpAQCAtNDc5LDYgKzQ5Miw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQgbGF5ZXIuCiAg
ICAgcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogCisgICAgY2NMYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygp
OwogICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKIApAQCAtNTEwLDYg
KzUyNCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2Nj
bHVkZWRSZWdpb24pCiAgICAgbGF5ZXItPnNldE9wYXF1ZSh0cnVlKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsK
IAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVk
U2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTIwLDYgKzUzNSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgbGF5ZXIt
PnNldE9wYXF1ZShmYWxzZSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3Vu
ZHMpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5
ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lv
bigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsK
QEAgLTUzMSw2ICs1NDcsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRk
c1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsK
IAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVk
U2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTQwLDYgKzU1Nyw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgLy8gSWYg
d2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZmIHNob3Vs
ZCBiZSBvY2NsdWRlZC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0
T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShj
b250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsK
IAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVk
U2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTU3LDYgKzU3NSw3IEBAIFRFU1QoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgc2NyZWVu
U3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKC1jb250ZW50Qm91bmRzLndpZHRoKCkgLyAyLjAsIC1j
b250ZW50Qm91bmRzLmhlaWdodCgpIC8gMi4wKTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VU
cmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRh
dGUoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5k
cyk7CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2Ns
dWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTU3Miw2ICs1OTEsNyBAQCBURVNUKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIHNj
cmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4w
LCAtY29udGVudEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7CiAgICAgbGF5ZXItPnNldFNjcmVlblNw
YWNlVHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKGNvbnRlbnRC
b3VuZHMpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+YWRkU2VsZlRv
T2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7CkBAIC01ODksMTEgKzYwOSwzMiBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoNzAwLCA3MDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCA3MDAsIDcwMCkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCA3MDAsIDcwMCkpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwg
MCwgNzAwLCA3MDApKTsKIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgyMDAsIDIwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7CiB9
CiAKK2NsYXNzIEZ1bGxVcGRhdGVIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QsIGJvb2wgcGFydGlhbCkKKyAgICB7CisgICAgICAgIGlmIChw
YXJ0aWFsKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0
KDAsIDAsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB9Cit9OworCitjbGFzcyBQYXJ0aWFs
VXBkYXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0LCBib29sIHBhcnRpYWwpCisgICAgeworICAgICAgICBpZiAoIXBhcnRpYWwpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QoMCwgMCwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOworICAgIH0KK307CisKIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgcGFydGlhbFVwZGF0ZXMpCiB7CiAgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKQEAgLTYxMyw1
MCArNjU0LDQ4IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMp
CiAgICAgbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMTUwLCAxNTApKTsKICAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoY29udGVudFJlY3QpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0
b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1
cmVBbGxvY2F0b3IpOwotCiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobGF5ZXIp
OwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDAp
KTsKKyAgICBsYXllci0+c2V0TGF5ZXJUcmVlSG9zdChjY0xheWVyVHJlZUhvc3QuZ2V0KCkpOwor
CisgICAgRnVsbFVwZGF0ZUhhbmRsZXIgZnVsbFVwZGF0ZUhhbmRsZXI7CisgICAgUGFydGlhbFVw
ZGF0ZUhhbmRsZXIgcGFydGlhbFVwZGF0ZUhhbmRsZXI7CiAKICAgICAvLyBGdWxsIHVwZGF0ZSBv
ZiBhbGwgNiB0aWxlcy4KLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhv
c3QtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7Ci0gICAg
RVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3Vu
dCgpKTsKLSAgICBFWFBFQ1RfVFJVRSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgIGNj
TGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShjb250ZW50UmVjdCk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudFJlY3Qp
OworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGZ1bGxVcGRhdGVIYW5kbGVy
KTsKKyAgICBFWFBFQ1RfRVEoNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVw
ZGF0ZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVh
clVwZGF0ZUNvdW50KCk7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7Ci0gICAgRVhQRUNUX0VR
KDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBsYXllci0+Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShwYXJ0aWFsVXBkYXRlSGFuZGxlcik7CisgICAgRVhQRUNU
X0VRKDAsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsK
ICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgp
OwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgIC8vIEZ1bGwg
dXBkYXRlIG9mIDMgdGlsZXMgYW5kIHBhcnRpYWwgdXBkYXRlIG9mIDMgdGlsZXMuCiAgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMzAwLCAxNTApKTsKLSAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjY0xheWVyVHJlZUhvc3QtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0g
ICAgdXBkYXRlci51cGRhdGUoMCwgNCk7CisgICAgY2NMYXllclRyZWVIb3N0LT5wcmVwYXJlVG9V
cGRhdGUoKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRSZWN0KTsKKyAgICBs
YXllci0+cGFpbnRDb250ZW50cyhjb250ZW50UmVjdCk7CisgICAgbGF5ZXItPmZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoZnVsbFVwZGF0ZUhhbmRsZXIpOwogICAgIEVYUEVDVF9FUSgzLCBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgRVhQRUNU
X1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAs
IDQpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKHBhcnRpYWxVcGRhdGVI
YW5kbGVyKTsKICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZUNvdW50KCkpOwotICAgIEVYUEVDVF9GQUxTRSh1cGRhdGVyLmhhc01vcmVVcGRh
dGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0
ZUNvdW50KCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAg
Ly8gUGFydGlhbCB1cGRhdGUgb2YgNiB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qo
SW50UmVjdCg1MCwgNTAsIDIwMCwgMTAwKSk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Y2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRl
KDAsIDQpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CisgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50UmVjdCk7CisgICAgbGF5ZXItPnBhaW50Q29udGVu
dHMoY29udGVudFJlY3QpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGZ1
bGxVcGRhdGVIYW5kbGVyKTsKICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFz
TW9yZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyVXBkYXRlQ291bnQoKTsKLSAgICB1cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBsYXllci0+
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShwYXJ0aWFsVXBkYXRlSGFuZGxlcik7CiAgICAgRVhQ
RUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKLSAgICBFWFBFQ1RfRkFMU0UodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBsYXll
ci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgIGNj
TGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129331</attachid>
            <date>2012-02-28 14:25:45 -0800</date>
            <delta_ts>2013-04-06 17:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72752-20120228172540.patch</filename>
            <type>text/plain</type>
            <size>140610</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmZjUwMDZlZDgwMjhm
NDNjMzU4NjIyZWFhN2ZmNmFjNjgxYWFlMTEwLi40YzY2ZGI3MGVmNGE0MWNmODA2MzRlNjNmODE2
MDI1MjBmY2IxYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0yOCAg
RGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gVXBsb2FkIHRleHR1cmVzIGluIHBhcmFsbGVsIHdpdGggcGFpbnRpbmcgY29udGVudHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjc1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBkZWxheVRl
eHR1cmVVcGRhdGVzIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3IgdG8gZGV0ZXJt
aW5lCisgICAgICAgIGlmIHRleHR1cmUgdXBsb2FkcyBzaG91bGQgYmUgZGVsYXllZCB1bnRpbCBh
bGwgcGFpbnRpbmcgaGFzIGNvbXBsZXRlZC4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJMYXllclRyZWVWaWV3Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OlNl
dHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChTZXR0aW5ncyk6CisKIDIwMTItMDItMjQgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IFdlYktpdDo6c2V0Q29sb3JOYW1lcyBpcyBhIGNsaWVudCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNWVl
ZTc5ZWI3NTExZThhZjljNGYwNDVkOWY1YzAwMjVlMjY3OGI4Li43ODE0MjE1NjMyM2ZhN2FiZTAw
YTk3ZmQxNzQyMGJjNDA3OGUxN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUzIEBACisyMDEy
LTAyLTI4ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W0Nocm9taXVtXSBVcGxvYWQgdGV4dHVyZXMgaW4gcGFyYWxsZWwgd2l0aCBwYWludGluZyBjb250
ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcy
NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3Rh
cnQgdXBsb2FkaW5nIHRleHR1cmUgcmVzb3VyY2VzIGFzIHNvb24gYXMgZW5vdWdoIGNvbnRlbnRz
IGhhcworICAgICAgICBiZWVuIHBhaW50ZWQgZm9yIG9uZSB0ZXh0dXJlIHRvIGJlIHVwZGF0ZWQu
CisgICAgICAgIExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaXMgcmVw
bGFjZWQgYnkKKyAgICAgICAgTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZSB3aGljaCBhbGxvd3MgdXMgdG8KKyAgICAgICAgcmVwZWF0ZWRseSBnbyB0aHJvdWdoIGNvbXBv
c2l0b3IgcmVzb3VyY2VzIGZvciB2YXJpb3VzIHB1cnBvc2VzLgorCisgICAgICAgIFVwZGF0ZSB1
bml0IHRlc3Q6IFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QucHVzaERpcnR5VGlsZXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAg
ICAgICAoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6Cisg
ICAgICAgIChCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06
OkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNo
cm9taXVtLmg6CisgICAgICAgIChVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAo
Q2FudmFzMkRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlOjp+VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAg
ICAgICAgKENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjppZGxlUHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRM
YXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVU
b1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChMYXllclRleHR1cmVVcGRhdGVy
KToKKyAgICAgICAgKEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlcjo6fkhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2lu
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoUGx1
Z2luTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
VGlsZWRMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNo
cm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJl
Ojp+VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExh
eWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaDoK
KyAgICAgICAgKFVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHTExheWVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhh
bmRsZXI6OlVwZGF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6On5VcGRhdGVIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6aGFuZGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxh
eWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1Vw
ZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2V0dGlu
Z3M6OkNDU2V0dGluZ3MpOgorICAgICAgICAoQ0NTZXR0aW5ncyk6CisgICAgICAgIChDQ0xheWVy
VHJlZUhvc3QpOgorICAgICAgICAoVXBkYXRlSGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oOgorICAgICAgICAoQ0NQcm94eSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJ
Zk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1NpbmdsZVRo
cmVhZFByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkND
VGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Om51bU1vcmVVcGRhdGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NUZXh0
dXJlVXBkYXRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENv
bW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25J
bXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpo
YXNNb3JlUmVzb3VyY2VVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgIChDQ1RocmVh
ZFByb3h5KToKKyAgICAgICAgKFVwZGF0ZUVudHJ5KToKKwogMjAxMi0wMi0yOCAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgUGFzdGVib2FyZCBjb2Rl
IGNsZWFudXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDlhNzRlZTc2NDhkNzJhOGNl
M2Q2NzE5MGNiNjI5ODg3ODgxZDI5ZmUuLmI5ZjRkNmRjYjFkYTcyNThlYjFiODA5ZmIyMWU3N2Rk
ZmVjYmZkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIw
MTItMDItMjggIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbQ2hyb21pdW1dIFVwbG9hZCB0ZXh0dXJlcyBpbiBwYXJhbGxlbCB3aXRoIHBhaW50aW5nIGNv
bnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Mjc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBkZWxheVRleHR1cmVVcGRhdGVzIHNldHRpbmcgdGhhdCBpcyB1c2VkIGJ5IGNvbXBvc2l0b3Ig
dG8gZGV0ZXJtaW5lCisgICAgICAgIGlmIHRleHR1cmUgdXBsb2FkcyBzaG91bGQgYmUgZGVsYXll
ZCB1bnRpbCBhbGwgcGFpbnRpbmcgaGFzIGNvbXBsZXRlZC4KKyAgICAgICAgVXBkYXRlIHVuaXQg
dGVzdHM6IENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIGFuZAorICAgICAgICBUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6Cisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
dHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViU2V0dGluZ3NJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWxheVRleHR1cmVVcGRhdGVzKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKE1vY2tMYXllckRlbGVnYXRlKToK
KyAgICAgICAgKFdURjo6TW9ja0xheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6ZHJhd3NDb250ZW50KToKKyAgICAgICAgKFdURjo6
TW9ja0xheWVyRGVsZWdhdGU6OnByZXNlcnZlczNEKToKKyAgICAgICAgKFdURjo6TW9ja0xheWVy
RGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6CisgICAgICAgIChXVEYpOgorICAgICAgICAo
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0
ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6
OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2Ft
cGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6
OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpsYXllcik6CisgICAgICAgIChXVEY6OkNvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZO
ZWVkZWQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZzo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjppZGxlUHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVRvVXBkYXRlQ291bnQpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6aWRsZVBy
ZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjppZGxlUHJlcGFyZVRvVXBkYXRlQ291bnQpOgorICAgICAgICAoV1RGOjpD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwYWlu
dENvbnRlbnRzQ291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZzo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6cHJlcGFyZVJlY3RDb3VudCk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp1cGRhdGVSZWN0KToK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnVw
ZGF0ZVJlY3RDb3VudCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyk6Cisg
ICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjphZnRlclRlc3Qp
OgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2V0Vmlld3BvcnRTaXplOjpiZWdp
blRlc3QpOgorICAgICAgICAoV1RGOjpUZXN0TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lv
bjo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdExheWVyT2Nj
bHVzaW9uV2l0aEZpbHRlcnM6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVl
SG9zdFRlc3RNYW55U3VyZmFjZXM6OmJlZ2luVGVzdCk6CisgICAgICAgICogdGVzdHMvQ2FudmFz
MkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVy
Q2hyb21pdW1UZXN0OjpmdWxsTGlmZWN5Y2xlVGVzdCk6CisgICAgICAgICogdGVzdHMvTGF5ZXJU
ZXh0dXJlVXBkYXRlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAg
ICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OkZha2VI
YW5kbGVyOjpoYW5kbGUpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFRleHR1cmUpOgorICAgICAgICAoV1RGOjpG
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6RmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cGFpbnRDb3VudCk6CisgICAgICAgIChXVEY6OkZha2VMYXllclRleHR1cmVV
cGRhdGVyOjpjbGVhclBhaW50Q291bnQpOgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKEZha2VUaWxlZExheWVyQ2hyb21pdW0p
OgorICAgICAgICAoV1RGOjpGYWtlVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KToKKyAgICAgICAgKFdURjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFp
bnRDb250ZW50cyk6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoRnVsbFVwZGF0ZUhh
bmRsZXIpOgorICAgICAgICAoV1RGOjpGdWxsVXBkYXRlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAg
ICAgKFdURik6CisgICAgICAgIChQYXJ0aWFsVXBkYXRlSGFuZGxlcik6CisgICAgICAgIChXVEY6
OlBhcnRpYWxVcGRhdGVIYW5kbGVyOjpoYW5kbGUpOgorCiAyMDEyLTAyLTI4ICBHYXJ5IEthY21h
cmNpayAgPGdhcnlrYWNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gU2V0IG5h
dGl2ZUtleUNvZGUgdG8gaW5jbHVkZSBXaW5kb3dzIHNjYW4gY29kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA2ODM3YjE5
ZWNiZGQyMTc2ZGI2ZDNkMzdlYjk5NjIwMjg0YjAwNzYyLi42OGJjYzY2ZTY2NjhkNmFkMzRlMDUy
OWY0ZDgxYjhhNzgyMDIwNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKICAgICAgICAgICAgICwgcGFydGlhbFN3
YXBFbmFibGVkKGZhbHNlKQogICAgICAgICAgICAgLCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQo
ZmFsc2UpCisgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFsc2UpCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBw
ZXJUaWxlUGFpbnRpbmc7CiAgICAgICAgIGJvb2wgcGFydGlhbFN3YXBFbmFibGVkOwogICAgICAg
ICBib29sIHRocmVhZGVkQW5pbWF0aW9uRW5hYmxlZDsKKyAgICAgICAgYm9vbCBkZWxheVRleHR1
cmVVcGRhdGVzOwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgICAgICBvcGVyYXRvciBX
ZWJDb3JlOjpDQ1NldHRpbmdzKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMDBhM2U0NjNiODU5MzFi
MDRlYmMwNWEwMTllY2Q5NDRhNmI1ZjQ0MS4uNzhiMGI4ZDc0NGU1YWMwNTU3MTc2OWVhZjM1Zjg2
N2QyZTY5NTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUo
dGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVy
ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CkBAIC03OCw3
ICs3OCw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkCiAgICAgICAgICAgICBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1Nj
YWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCkKIHsKICAgICBtX3RleFN1Yklt
YWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6
OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3VicGl4
ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIoJm1fY2Fu
dmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWludGVyLnNraWFDb250ZXh0KCktPnNldFRy
YWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKLSAgICBwYWludENvbnRlbnRzKCpjYW52
YXNQYWludGVyLmNvbnRleHQoKSwgKmNhbnZhc1BhaW50ZXIuc2tpYUNvbnRleHQoKSwgY29udGVu
dFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2FudmFzUGFpbnRlci5za2lh
Q29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAKICAgICBpZiAoIWxheWVy
SXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gY2FudmFzUGFpbnRlci5z
a2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0ZTE2MjI5NWI4NmUwMDg5
M2MzM2VmMDNkNGI2MmQyYzFlNTJiZDVmLi4yYWJhYzk2YTAzMGRiMDkyODQ5NDNjZjM4YjQ5NGNk
ODBlYzkwYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwog
Ly8gcG9zc2libGUuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVi
bGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1
cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgp
OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciop
OwogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVl
UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9h
dCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lk
IHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggOWI5MTJhNDRmN2MyZjNkZWRkMzk4YWQyYjI4MTE1NmE4YjU3MzBi
My4uNTdhMTkzYTdiN2ZiZmQyZWNjNTE3YWNmYzFmYzUyNWY2ZDgyZGNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcgogICAg
ICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVl
UmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJl
c3VsdGluZ09wYXF1ZVJlY3QpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUo
dGlsZVNpemUpOwotICAgIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBh
cmVUb1VwZGF0ZShjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRleGVscywgY29udGVudHNT
Y2FsZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb250ZW50UmVjdCwgdGlsZVNpemUsIGJvcmRlclRl
eGVscywgY29udGVudHNTY2FsZSwgcmVzdWx0aW5nT3BhcXVlUmVjdCk7CiB9CiAKIHZvaWQgQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3Qo
U2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCA4MzhiNGIzZTdiMDRkNDI0N2FiM2JjMzMyNWVjNWIyZGI4NGNmYjhhLi5mZjA5MjI0
OTQyOTgzMzk1MTAzNWM1NWRhMWY4NDJjNDJhZWNiMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4
ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRl
bnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpOwogICAgIHZvaWQgcGFpbnRD
b250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKICAgICB2
b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gZm9ybWF0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgdWludDhfdCogcGl4ZWxzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDhiNGJiZTA4NGU1NTBhNjdl
ODFmNjE3MjRkNzJmYzM4Zjg3MjBjNC4uNGQxNjRjMWNmNTc4NjU4NWJlMjJhOTA4YjViMjc4NzE2
ZTA0OTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00NSw2
ICs0NSwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSog
bGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitDYW52YXMyRExheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCBhbGxvY2F0b3Ip
OworfQorCiBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNo
cm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFNpemUm
IHNpemUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVyQ2hyb21pdW0o
Y29udGV4dCwgc2l6ZSkpOwpAQCAtNTgsNiArNzIsNyBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06
OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3Qg
SQogICAgICwgbV9mYm8oMCkKICAgICAsIG1fdXNlRG91YmxlQnVmZmVyaW5nKENDUHJveHk6Omhh
c0ltcGxUaHJlYWQoKSkKICAgICAsIG1fY2FudmFzKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJl
KFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVm
ZmVyaW5nKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRl
RnJhbWVidWZmZXIoKSk7CkBAIC05NSw3ICsxMTAsNyBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6c2V0Q2FudmFzKFNrQ2FudmFzKiBjYW52YXMpCiAgICAgbV9jYW52YXMgPSBjYW52YXM7
CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1
ZGVkU2NyZWVuU3BhY2UgKi8pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNhbnZhczJETGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkiLCB0aGlzLCAwKTsKICAgICBpZiAoIWRyYXdzQ29u
dGVudCgpKQpAQCAtMTM3LDEyICsxNTIsMTIgQEAgdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06
OnNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcikKICAgICAg
ICAgbV9mcm9udFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2Vy
KTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0
ZXIpCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciAqYWxsb2NhdG9y
KQogewogICAgIGlmICghbV9iYWNrVGV4dHVyZUlkIHx8ICFtX2Zyb250VGV4dHVyZSB8fCAhbV9m
cm9udFRleHR1cmUtPmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0
LCB1cGRhdGVyLmFsbG9jYXRvcigpKTsKKyAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRleHR1cmUo
Y29udGV4dCwgYWxsb2NhdG9yKTsKIAogICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT5iaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ZibykpOwogICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fYmFja1RleHR1cmVJZCwgMCkpOwpAQCAtMTUz
LDYgKzE2OCwxMSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dAogICAgIEdMQyhjb250ZXh0LCBj
b250ZXh0LT5mbHVzaCgpKTsKIH0KIAordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxl
cikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0
KCksIEludFJlY3QoKSk7Cit9CisKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpwdXNoUHJv
cGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHsKICAgICBDYW52YXNMYXllckNocm9taXVt
OjpwdXNoUHJvcGVydGllc1RvKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmgKaW5kZXggMTFhMWE5NTM5MGNkOGU5YWRhOGZjODRjMWI5OWI3NGEwYjM1NjhjYS4uNjk3ODdj
ZTY1OGUzNzdmZmE5MTU1ZWUxMDk2MjkwYTFkODdmYWZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKQEAgLTQ3LDYgKzQ3LDIzIEBAIGNsYXNzIFJlZ2lvbjsKIC8vIEEgbGF5
ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJETGF5
ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBj
bGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJl
PiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAg
ICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7
CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4g
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZpcnR1YWwg
fkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogCkBAIC01NSwxMCArNzIsMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0
eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVh
bCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7
CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpOwogCkBAIC04MCw2
ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZURvdWJsZUJ1ZmZlcmluZzsKICAgICBP
d25QdHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJlOwogICAgIFNrQ2FudmFzKiBtX2Nh
bnZhczsKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGVh
MTkzMDM2NTVjYTIzNWZjMjdhNDA2YzZlZTk2ZGE0MzBkOTFkOWUuLjE3ZmFiYWM0YmFkN2NhYWNk
NDc4YmU2MmEyNjZhNjkyNGYzZmQxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNyw2ICszNywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0
cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKwor
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCiBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NP
d25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFp
bnRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBk
NDkxMzQ4ZWU3Y2Q5MDAwMjUyMDI3MzNhMzU1MDdjMWQ1NzNjMTVjLi5kMmE3Yzg3NDdlMWM5ZGQ4
ODk3MDg2NjBjZDZjZjVjMGI5ZWE5ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC00Miw2ICs0MiwxOSBAQCBjbGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lh
OwogLy8gdGhlaXIgcmVzcGVjdGl2ZSBwYWludENvbnRlbnRzIGltcGxlbWVudGF0aW9ucy4KIGNs
YXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
ciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsK
KworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90
ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0
dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0dWFs
IH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBhYTdmYjVjZjQ2YjA2MjU3ZmY1YmYyMzVmYjNi
ZjA3ODQ1MzU0OTlmLi5mZjQ3ZTI3MmI2YWMxOWY4ZTA3ZDVjZWFhNzVkOTNkZGM1ZjdhNTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05Myw3ICs5Myw3IEBAIGJv
b2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgJiYgbV9kZWxlZ2F0ZTsKIH0KIAot
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVn
aW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVu
U3BhY2UgKi8pCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRpb24oKTsKICAgICBj
cmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAv
KiBvY2NsdWRlZFNjcmVlblMKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCi12b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAg
IGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMyw2ICsxMjMsMjAg
QEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6aWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCkK
ICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7
CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7Cisg
ICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
ZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMobGF5
ZXJSZWN0KTsKK30KKwogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVw
ZGF0ZXJJZk5lZWRlZCgpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uaAppbmRleCAzZTg2ODZkMGEwZGJjZTJjMWU4YzYxYjYwMTgxNDAy
NjM3NjZiZjIzLi42ODAzMDk5NjExYmE1OTlmY2U1MmFiYTZhNmVhMzdkNzIyNTI5NTAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTU5LDggKzU5LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJEZWxlZ2F0ZSgpIHsgbV9kZWxlZ2F0ZSA9IDA7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgaWRsZVBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRP
cGFxdWUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDE5ZGZhMmYw
MDZjOTg4NDc3MGU2NzZjNDU4NWJlOTQ2NzEzNGYzYjMuLjhmMmRlOGEwZTg5M2Q0MWRhZjMwYjY1
MWYxNTM2NTRjZDM1YTcxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBzdGF0aWMgUGFzc093blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRD
YW52YXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCiB9CiAKIEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNGExMGM4NThlNGNkYThjMjUyYWMxNmRm
YTA3ZDA5YTVkOTA4ZWVjMy4uNzQzZWQ2ZWJhZmJjODI3ZTYyNzQ0ODQ0MWFkM2Y5OTgzNzlhYjU5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gaW50ZXJtZWRpYXRlIGZyYW1lYnVmZmVyIGFuZCB0aGVuIGlzIGNvcGll
ZCB0byB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBvbmNlIGRvbmUuCiBjbGFzcyBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1
YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDog
cHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRl
eHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDFlNDRlODcwMjNm
ZWQ1ZjQ2OTM1ZGY3YzNmYmQzNjJlNTRhYjA0MjkuLmY3MzY2MjQ2YTQ5OGI1NmY3YzMxNThmZDJh
MGNkMDA2OWNkZGNkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMzQs
OSArMzQsOSBAQAogCiAjaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRl
ICJDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29s
b3IuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtNDYsMTAgKzQ2LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFRleHR1cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
ciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgICAgICAgICAsIG1fdGV4
dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAtODMs
NyArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8sIEludFJlY3QqIC8q
IHJlc3VsdGluZ09wYXF1ZVJlY3QgKi8pCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQg
LyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovLCBJbnRSZWN0KiAv
KiByZXN1bHRpbmdPcGFxdWVSZWN0ICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5z
ZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lk
IEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNl
dE5lZWRzRGlzcGxheSgpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkoY29uc3QgUmVnaW9uJiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQordm9p
ZCBJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9u
JiAvKiBvY2NsdWRlZFNjcmVlblNwYWNlICovKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVy
SWZOZWVkZWQoKTsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmgKaW5kZXggMjEyN2I4NTdjNWMwYzllMWVmMGM0ZWUxOTA0ZWFiN2FiMWM3ZjIxZS4u
OWM3ZDY1ZDE3ZGMwOWRmMjBjNDBhMDUxNTFjYWFmZDMyNTMwM2NmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklt
YWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24m
IG9jY2x1ZGVkU2NyZWVuU3BhY2UpOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CiAgICAgdmlydHVhbCBi
b29sIG5lZWRzQ29udGVudHNTY2FsZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhJ
bWFnZSogaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGUzMTIzYmY3OTc2Mjk1MDJiYWM5
N2RhYmZhMjVjNGRhZDg5MmQyZmIuLjNiMTBmOWVlODg4OTJhZWY2MDkzYjc3YzdmMTdhMDJiYjA1
OGJjMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJG
aWx0ZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiUmVnaW9uLmgiCkBAIC01OSw3ICs2MCw2IEBAIGNsYXNzIENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyOwogY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlOwogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIC8vIEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQg
bGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFyZSBkZXJpdmVkIGZyb20KQEAgLTE2Myw5ICsx
NjMsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0
byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVu
U3BhY2UgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHko
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2Ug
Ki8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYmluZENvbnRlbnRzVGV4dHVyZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CmluZGV4IDE3OWZlYTZlMTJiZjEwM2M1YjA3NDM1Y2YyNGEzYTQ4ZjhjZDkzMjMuLmU5ZTJkODVl
ZWE1ZGJjODU3MWQ0MDNkYjcxNzdjN2Y4YTBiMDM0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVV
cGRhdGVyLmgKQEAgLTQ4LDE0ICs0OCwxNiBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkg
PSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9
OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5I
YW5kbGVyKCkgeyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1
cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIGJvb2wgcGFydGlhbCA9IGZhbHNlKSA9IDA7CiAgICAgfTsKIAogICAgIHZp
cnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTczLDggKzc1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KSA9IDA7CiAgICAgLy8gVGhlIHxyZXN1bHRpbmdPcGFxdWVSZWN0
fCBnaXZlcyBiYWNrIGEgcmVnaW9uIG9mIHRoZSBsYXllciB0aGF0IHdhcyBwYWludGVkIG9wYXF1
ZS4gSWYgdGhlIGxheWVyIGlzIG1hcmtlZCBvcGFxdWUgaW4gdGhlIHVwZGF0ZXIsCiAgICAgLy8g
dGhlbiB0aGlzIHJlZ2lvbiBzaG91bGQgYmUgaWdub3JlZCBpbiBwcmVmZXJlbmNlIGZvciB0aGUg
ZW50aXJlIGxheWVyJ3MgYXJlYS4KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6
ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFJlY3QqIC8qIHJlc3VsdGluZ09w
YXF1ZVJlY3QgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywg
aW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50UmVj
dCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykgPSAwOwogCiAgICAgLy8gU2V0IHRydWUgYnkg
dGhlIGxheWVyIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUgZW50aXJlIG91dHB1dCBpcyBnb2lu
ZyB0byBiZSBvcGFxdWUuCiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdp
bkxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNjI1ZjRiMjFkZmI4YTUxZDNjOWU3
YWYwOTJlNGEwMjliY2IzNjZlMC4uNGY2Yzk3MTg5Nzg5NzI5MzYwMjdhNjA1MDUxNTIzYjg1MWFk
ZWVjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6UGx1Z2luTGF5ZXJDaHJvbWl1bSgpCiB7CiB9CiAKLXZv
aWQgUGx1Z2luTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgUGx1
Z2luTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFt
X25lZWRzRGlzcGxheSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1bS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGx1Z2luTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IGMzMGY3N2FjNWQxYjdiYTVhNzRkYWRiMDhmZGU0YTEzYjNlYTQ0ODMuLjZjOGQw
MGYxMzZjOGY3ODMxMmMwZGE5ODA1YTJmOTk0YjdmNTRlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BsdWdpbkxheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QbHVnaW5MYXll
ckNocm9taXVtLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UGx1Z2luTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5MYXllckNocm9taXVtPiBjcmVhdGUoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSgpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xh
eWVySW1wbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDM1Y2QzNWFkM2MwNDYxNmU1M2Q0YTFiYzFlNWNmOGVi
ZWUyOGVhODYuLjg3M2ViNTg0NjYxYzUzZjc2ZWUxMzJkNjhlNTU2ZmEyOWQ4Nzk0MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCkBAIC00OSwxNCArNDksMTQgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IGNvbnRlbnRzU2NhbGUsIEludFJlY3QqIHJlc3VsdGlu
Z09wYXF1ZVJlY3QpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8q
IHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50c1NjYWxl
LCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KQogewogICAgIFNrQ2FudmFzKiBjYW52YXMg
PSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJl
Y3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNh
bnZhcyk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNldERlZmVycmVkKHRydWUpOwogICAgIHBsYXRm
b3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbighbV9sYXllcklzT3BhcXVlKTsKICAgICBH
cmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwotICAgIHBh
aW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQsIGNvbnRlbnRSZWN0
LCBjb250ZW50c1NjYWxlKTsKKyAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENv
bnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgcGxhdGZvcm1Db250ZXh0LCBjb250ZW50UmVjdCwgY29u
dGVudHNTY2FsZSk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogCiAgICAgaWYgKCFt
X2xheWVySXNPcGFxdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKaW5kZXggZWNkZWZhNDExMWIwMjc1MjA0ZTNkNjM2NDg3ZjdiNjIx
ZTVhOWFkOC4uYmJlMjUxM2VhMzJmMTBlYjFlZGM2MTk0ZDc1ZjgzZjljZmE5ZDAzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywg
ZmxvYXQgY29udGVudHNTY2FsZSwgSW50UmVjdCogcmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1Nj
YWxlLCBJbnRSZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKICAgICB2b2lkIGRyYXdQaWN0dXJl
KFNrQ2FudmFzKik7CiAKICAgICBib29sIGxheWVySXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBt
X2xheWVySXNPcGFxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDdi
ZjBjOTc1NzJjNjBiOWMzZWM4N2JmOTg1NGI4NzUxNThmZWViYzIuLjFmZTUxNTgxN2YxNmQzZDRk
Mjg3OWY0NThkZjYwMGYxOWI4MWVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cApAQCAtMTc1LDEwICsxNzUsMTAgQEAgSW50U2l6ZSBUaWxlZExheWVyQ2hyb21pdW06OmNvbnRl
bnRCb3VuZHMoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKGxyb3VuZGYoYm91bmRzKCkud2lk
dGgoKSAqIGNvbnRlbnRzU2NhbGUoKSksIGxyb3VuZGYoYm91bmRzKCkuaGVpZ2h0KCkgKiBjb250
ZW50c1NjYWxlKCkpKTsKIH0KIAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBQYWludGlu
ZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNh
dXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAo
bV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVUaWxlc1JlY3QuaXNFbXB0eSgpIHx8IG1f
dGlsZXItPmlzRW1wdHkoKSkKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRh
dGVUaWxlc1JlY3QuaXNFbXB0eSgpIHx8IG1fdGlsZXItPmlzRW1wdHkoKSB8fCBtX3BhaW50UmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBsZWZ0ID0gbV9yZXF1ZXN0
ZWRVcGRhdGVUaWxlc1JlY3QueCgpOwpAQCAtMjIwLDE4ICsyMjAsOSBAQCB2b2lkIFRpbGVkTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZQogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0Lmhl
aWdodCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsK
IAotICAgICAgICAgICAgaWYgKHRpbGUtPm1fcGFydGlhbFVwZGF0ZSkKLSAgICAgICAgICAgICAg
ICB1cGRhdGVyLmFwcGVuZFBhcnRpYWwodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQo
dGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBoYW5k
bGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0aWxlLT5t
X3BhcnRpYWxVcGRhdGUpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgLy8gVGhlIHVwZGF0ZVJl
Y3Qgc2hvdWxkIGJlIGluIGxheWVyIHNwYWNlLiBTbyB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHBh
aW50UmVjdCBmcm9tIGNvbnRlbnQgc3BhY2UgdG8gbGF5ZXIgc3BhY2UuCi0gICAgbV91cGRhdGVS
ZWN0ID0gRmxvYXRSZWN0KG1fcGFpbnRSZWN0KTsKLSAgICBmbG9hdCB3aWR0aFNjYWxlID0gYm91
bmRzKCkud2lkdGgoKSAvIHN0YXRpY19jYXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkud2lkdGgo
KSk7Ci0gICAgZmxvYXQgaGVpZ2h0U2NhbGUgPSBib3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19j
YXN0PGZsb2F0Pihjb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpOwotICAgIG1fdXBkYXRlUmVjdC5z
Y2FsZSh3aWR0aFNjYWxlLCBoZWlnaHRTY2FsZSk7CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikKQEAgLTM5OCwx
MyArMzg5LDYgQEAgYm9vbCBUaWxlZExheWVyQ2hyb21pdW06OnRpbGVOZWVkc0J1ZmZlcmVkVXBk
YXRlKFVwZGF0YWJsZVRpbGUqIHRpbGUpCiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQs
IGludCBib3R0b20pCiB7Ci0gICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMu
Ci0gICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVyLT50aWxlcygpLmVu
ZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHN0YXRpY19jYXN0
PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICB0aWxlLT5tX3Vw
ZGF0ZVJlY3QgPSBJbnRSZWN0KCk7Ci0gICAgICAgIHRpbGUtPm1fcGFydGlhbFVwZGF0ZSA9IGZh
bHNlOwotICAgIH0KLQogICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKIAogICAg
IC8vIENyZWF0ZSB0aWxlcyBhcyBuZWVkZWQsIGV4cGFuZGluZyBhIGRpcnR5IHJlY3QgdG8gY29u
dGFpbiBhbGwKQEAgLTQ1NywzNiArNDQxLDE0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpw
cmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAg
ICBpZiAoIW1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVU
aWxlc1JlY3QgPSBJbnRSZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0ICsgMSwgYm90dG9tIC0g
dG9wICsgMSk7CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8g
V2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBv
ZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRo
ZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4n
dCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBw
YWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUg
dG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAg
IFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7
Ci0gICAgSW50UmVjdCBwYWludGVkT3BhcXVlUmVjdDsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXIt
Pmhhc0JvcmRlclRleGVscygpLCBjb250ZW50c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVjdCk7
CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3Ig
KGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVU
aWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwogCi0gICAgICAgICAgICAvLyBUaWxlcyBhcmUgY3Jl
YXRlZCBiZWZvcmUgcHJlcGFyZVRvVXBkYXRlKCkgaXMgY2FsbGVkLgorICAgICAgICAgICAgLy8g
VGlsZXMgYXJlIGNyZWF0ZWQgYWJvdmUuCiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAg
ICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGls
ZXItPnRpbGVCb3VuZHMoaSwgaik7Ci0KLSAgICAgICAgICAgIC8vIFNhdmUgd2hhdCB3YXMgcGFp
bnRlZCBvcGFxdWUgaW4gdGhlIHRpbGUuIEtlZXAgdGhlIG9sZCBhcmVhIGlmIHRoZSBwYWludCBk
aWRuJ3QgdG91Y2ggaXQsIGFuZCBkaWRuJ3QgcGFpbnQgc29tZQotICAgICAgICAgICAgLy8gb3Ro
ZXIgcGFydCBvZiB0aGUgdGlsZSBvcGFxdWUuCi0gICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWlu
dGVkUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgbV9wYWludFJlY3QpOwotICAgICAgICAg
ICAgSW50UmVjdCB0aWxlUGFpbnRlZE9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3Qs
IHBhaW50ZWRPcGFxdWVSZWN0KTsKLSAgICAgICAgICAgIGlmICghdGlsZVBhaW50ZWRSZWN0Lmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEludFJlY3QgcGFpbnRJbnNpZGVUaWxlT3BhcXVl
UmVjdCA9IGludGVyc2VjdGlvbih0aWxlLT5tX29wYXF1ZVJlY3QsIHRpbGVQYWludGVkUmVjdCk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0SXNOb25PcGFx
dWUgPSAhdGlsZVBhaW50ZWRPcGFxdWVSZWN0LmNvbnRhaW5zKHBhaW50SW5zaWRlVGlsZU9wYXF1
ZVJlY3QpOwotICAgICAgICAgICAgICAgIGJvb2wgb3BhcXVlUGFpbnROb3RJbnNpZGVUaWxlT3Bh
cXVlUmVjdCA9ICF0aWxlUGFpbnRlZE9wYXF1ZVJlY3QuaXNFbXB0eSgpICYmICF0aWxlLT5tX29w
YXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KTsKLQotICAgICAgICAgICAg
ICAgIGlmIChwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0SXNOb25PcGFxdWUgfHwgb3BhcXVlUGFp
bnROb3RJbnNpZGVUaWxlT3BhcXVlUmVjdCkKLSAgICAgICAgICAgICAgICAgICAgdGlsZS0+bV9v
cGFxdWVSZWN0ID0gdGlsZVBhaW50ZWRPcGFxdWVSZWN0OwotICAgICAgICAgICAgfQotCiAgICAg
ICAgICAgICAvLyBVc2UgbV91cGRhdGVSZWN0IGFzIGNvcHlBbmRDbGVhckRpcnR5IGFib3ZlIG1v
dmVkIHRoZSBleGlzdGluZyBkaXJ0eSByZWN0IHRvIG1fdXBkYXRlUmVjdC4KICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKICAgICAgICAg
ICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQpAQCAtNTAwLDEwICs0NjIsNiBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVm
dCwgaW50IHRvcCwgaW50CiAgICAgICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50
UmVjdCk7CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0g
ICAgICAgICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNl
UmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NzMsNiArNTMxLDEzIEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0
KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlVGlsZXNSZWN0ID0gSW50UmVjdCgpOwogICAgIG1fcGFp
bnRSZWN0ID0gSW50UmVjdCgpOwogCisgICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGFuZCBtX3Bh
cnRpYWxVcGRhdGUgZm9yIGFsbCB0aWxlcy4KKyAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpU
aWxlTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBp
dGVyICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgeworICAgICAgICBVcGRhdGFi
bGVUaWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5n
ZXQoKSk7CisgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICAgICAg
dGlsZS0+bV9wYXJ0aWFsVXBkYXRlID0gZmFsc2U7CisgICAgfQorCiAgICAgdXBkYXRlQm91bmRz
KCk7CiAKICAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMo
KSkKQEAgLTY2OSw1ICs2MzQsNTMgQEAgSW50UmVjdCBUaWxlZExheWVyQ2hyb21pdW06OmlkbGVQ
YWludFJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKICAgICByZXR1cm4gcHJl
cGFpbnRSZWN0OwogfQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVx
dWVzdGVkVXBkYXRlVGlsZXNSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8
fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxp
bmcgcHJlcGFyZVRvVXBkYXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1h
eSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywg
d2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBk
ZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5n
IHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAorICAgIC8vIHNv
IHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZl
IHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICBJbnRSZWN0IHBhaW50ZWRPcGFx
dWVSZWN0OworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3Qs
IG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpLCBjb250ZW50
c1NjYWxlKCksICZwYWludGVkT3BhcXVlUmVjdCk7CisgICAgaW50IGxlZnQgPSBtX3JlcXVlc3Rl
ZFVwZGF0ZVRpbGVzUmVjdC54KCk7CisgICAgaW50IHRvcCA9IG1fcmVxdWVzdGVkVXBkYXRlVGls
ZXNSZWN0LnkoKTsKKyAgICBpbnQgcmlnaHQgPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5t
YXhYKCkgLSAxOworICAgIGludCBib3R0b20gPSBtX3JlcXVlc3RlZFVwZGF0ZVRpbGVzUmVjdC5t
YXhZKCkgLSAxOworICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgeworICAgICAgICAgICAg
VXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKKworICAgICAgICAgICAgLy8gVGls
ZXMgYXJlIGNyZWF0ZWQgaW4gcHJlcGFyZVRvVXBkYXRlVGlsZXMoKS4KKyAgICAgICAgICAgIGlm
ICghdGlsZSkKKyAgICAgICAgICAgICAgICBDUkFTSCgpOworCisgICAgICAgICAgICBJbnRSZWN0
IHRpbGVSZWN0ID0gbV90aWxlci0+dGlsZUJvdW5kcyhpLCBqKTsKKworICAgICAgICAgICAgLy8g
U2F2ZSB3aGF0IHdhcyBwYWludGVkIG9wYXF1ZSBpbiB0aGUgdGlsZS4gS2VlcCB0aGUgb2xkIGFy
ZWEgaWYgdGhlIHBhaW50IGRpZG4ndCB0b3VjaCBpdCwgYW5kIGRpZG4ndCBwYWludCBzb21lCisg
ICAgICAgICAgICAvLyBvdGhlciBwYXJ0IG9mIHRoZSB0aWxlIG9wYXF1ZS4KKyAgICAgICAgICAg
IEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBtX3BhaW50
UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWludGVkT3BhcXVlUmVjdCA9IGludGVy
c2VjdGlvbih0aWxlUmVjdCwgcGFpbnRlZE9wYXF1ZVJlY3QpOworICAgICAgICAgICAgaWYgKCF0
aWxlUGFpbnRlZFJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBwYWlu
dEluc2lkZVRpbGVPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9uKHRpbGUtPm1fb3BhcXVlUmVjdCwg
dGlsZVBhaW50ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICBib29sIHBhaW50SW5zaWRlVGlsZU9w
YXF1ZVJlY3RJc05vbk9wYXF1ZSA9ICF0aWxlUGFpbnRlZE9wYXF1ZVJlY3QuY29udGFpbnMocGFp
bnRJbnNpZGVUaWxlT3BhcXVlUmVjdCk7CisgICAgICAgICAgICAgICAgYm9vbCBvcGFxdWVQYWlu
dE5vdEluc2lkZVRpbGVPcGFxdWVSZWN0ID0gIXRpbGVQYWludGVkT3BhcXVlUmVjdC5pc0VtcHR5
KCkgJiYgIXRpbGUtPm1fb3BhcXVlUmVjdC5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3Qp
OworCisgICAgICAgICAgICAgICAgaWYgKHBhaW50SW5zaWRlVGlsZU9wYXF1ZVJlY3RJc05vbk9w
YXF1ZSB8fCBvcGFxdWVQYWludE5vdEluc2lkZVRpbGVPcGFxdWVSZWN0KQorICAgICAgICAgICAg
ICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgdXBkYXRlUmVjdCBzaG91
bGQgYmUgaW4gbGF5ZXIgc3BhY2UuIFNvIHdlIGhhdmUgdG8gY29udmVydCB0aGUgcGFpbnRSZWN0
IGZyb20gY29udGVudCBzcGFjZSB0byBsYXllciBzcGFjZS4KKyAgICBtX3VwZGF0ZVJlY3QgPSBG
bG9hdFJlY3QobV9wYWludFJlY3QpOworICAgIGZsb2F0IHdpZHRoU2NhbGUgPSBib3VuZHMoKS53
aWR0aCgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKTsKKyAg
ICBmbG9hdCBoZWlnaHRTY2FsZSA9IGJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSk7CisgICAgbV91cGRhdGVSZWN0LnNjYWxlKHdp
ZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggYTZjMjExOTUx
ZDc4NTE0MzQwZjU2N2JkZjM2MGVhNjc0MTA5NGU5NC4uOTYwYzViNmY1YWI2NzljOTE3YzdlMjBj
MDQ2ZDkwNTFjZjJmNDk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVh
bCB2b2lkIHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGll
c1RvKENDTGF5ZXJJbXBsKik7CkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBT
ZXQgaW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0
ZSgpLgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsK
IAotICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50
ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVz
IHRoYXQgaW50ZXJzZWN0IHdpdGggbGF5ZXJSZWN0LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CiAKICAgICAvLyBTYW1lIGFzIGFib3ZlLCBidXQg
dGhpcyB3aWxsIHRyeSB0byBwYWludCBhZGRpdGlvbmFsIHN1cnJvdW5kaW5nIGNvbnRlbnQgaWYg
aWRsZS4KQEAgLTk3LDYgKzk3LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBza2lwc0RyYXco
KSBjb25zdCB7IHJldHVybiBtX3NraXBzRHJhdzsgfQogCisgICAgLy8gUGFpbnQgY29udGVudHMg
bmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGxheWVyUmVjdC4K
KyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKKwogICAg
IHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCiAgICAgdmlydHVh
bCBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKQEAgLTExNiw3ICsxMTks
NyBAQCBwcml2YXRlOgogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7
CiAgICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CiAKLSAgICAvLyBUZW1w
b3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBw
cmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9yZXF1
ZXN0ZWRVcGRhdGVUaWxlc1JlY3Q7CiAKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFy
ZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBh
cmVhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA3NGRiN2YxM2VjNGY4ZjRj
YWFmNjhlNWFkNzQ3NDViZTkzYjcyZjNiLi43ZjBmZjZmNDJkYzA0Mzc5YmRjZmVhYjEwMmY0M2Zi
NDkwZjBiNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5
LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1
bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VS
ZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQpOworfQorCiBQYXNzUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9taXVtKCkpOwpAQCAtNTUsNiArNzAsNyBAQCBX
ZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSgpCiAgICAgLCBtX3RleHR1cmVD
aGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3
aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVh
dGUodGhpcykpCiB7CiB9CiAKQEAgLTY5LDcgKzg1LDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIExheWVyQ2hyb21pdW06OmRyYXdz
Q29udGVudCgpICYmIGNvbnRleHQoKSAmJiAoY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1Ip
OwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikK
K3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTgsNiArMTE0LDExIEBAIHZvaWQgV2ViR0xMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5k
ZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQorewor
ICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50
UmVjdCgpKTsKK30KKwogdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8o
Q0NMYXllckltcGwqIGxheWVyKQogewogICAgIENhbnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA0ZGM2OGEz
MzA4ZTNmMjMzN2I0YjI2NWM0NjVkNzVkYjJkYzZhN2ZhLi43YTc0MTZmYjY1NTg1NzczNmNkZGRj
ODBhZmQ5OTM3MWE1MTAyNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYs
NiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNiArNDYsMjMgQEAgY2xhc3MgV2ViR0xMYXllckNo
cm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdlYkdMIGNhbnZh
cwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0g
ewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShXZWJHTExheWVyQ2hyb21pdW0qIGxheWVyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxh
eWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0
dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSog
bV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBjcmVhdGUoKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwpAQCAt
NTMsNyArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4
dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmly
dHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBs
Kik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgYm9vbCBwYWludFJl
bmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CkBAIC03OCw2ICs5Nyw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUg
RHJhd2luZ0J1ZmZlciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdl
YkdMTGF5ZXJDaHJvbWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisK
KyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA5YWUwMjc5YjAxZjFlODE3MTI3NGRl
NTk3OWNmM2UyYzU2ODJiMjlkLi4zY2I2ZDdkYjcyNjExZTY5MjhmYWI1MWMwODU0YmU3M2IyNWI2
NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgor
I2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIApAQCAtNTIsNiArNTMsMjEgQEAgYm9v
bCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpCiAgICAg
cmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAKK0NDTGF5ZXJUcmVlSG9zdDo6
VXBkYXRlSGFuZGxlcjo6VXBkYXRlSGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJv
eHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6flVwZGF0
ZUhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6
aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBib29sIHBhcnRpYWwpCit7
CisgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+dXBk
YXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBwYXJ0aWFsKTsKK30KKwogUGFzc1Jl
ZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVl
SG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBS
ZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5
ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBAIC0zNjcsNyArMzgzLDcgQEAgdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJl
YWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi1i
b29sIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK2Jvb2wgQ0NMYXllclRyZWVIb3N0
OjpwcmVwYXJlVG9VcGRhdGUoKQogewogICAgIGlmICghbV9sYXllclJlbmRlcmVySW5pdGlhbGl6
ZWQpIHsKICAgICAgICAgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKQEAgLTM4MiwxMyArMzk4
LDEzIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3
cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgdXBkYXRl
TGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUocm9vdExheWVyKCkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
VG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5U
KCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYg
KCFyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7CkBAIC0zOTcsMTggKzQxMywxOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBJbnRSZWN0IHJv
b3RDbGlwUmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7CiAgICAgcm9vdExheWVyLT5z
ZXRDbGlwUmVjdChyb290Q2xpcFJlY3QpOwogCi0gICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyB3YXNuJ3QgY2FsbGVkIGFmdGVyCi0gICAgLy8gdXBk
YXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRp
bWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3Qu
YXBwZW5kKHJvb3RMYXllcik7CisgICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgY29tbWl0Q29t
cGxldGUgd2Fzbid0IGNhbGxlZCBhZnRlcgorICAgIC8vIHByZXBhcmVUb1VwZGF0ZS4gT25seSBv
bmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgorICAgIEFTU0VSVCgh
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCkgJiYgIW1fbGF5ZXJVcGRhdGVMaXN0LnNp
emUoKSk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsK
IAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcm9vdFJlbmRlclN1cmZhY2UgPSByb290TGF5
ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICByb290UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxp
c3QoKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIHsK
LSAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxj
RHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJm
YWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVT
aXplKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBk
YXRlOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RM
YXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQogCiAgICAgLy8gUmVzZXQgcGFydGlh
bCB0ZXh0dXJlIHVwZGF0ZSByZXF1ZXN0cy4KQEAgLTQxNiwyMiArNDMyLDIwIEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogCiAg
ICAgcmVzZXJ2ZVRleHR1cmVzKCk7CiAKLSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVM
aXN0LCBQYWludFZpc2libGUpOwotICAgIGlmICghbV90cmlnZ2VySWRsZVBhaW50cykKKyAgICBh
cHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRh
dGVMaXN0KTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit7Cisg
ICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2l6ZV90IHByZWZl
cnJlZExpbWl0Qnl0ZXMgPSBUZXh0dXJlTWFuYWdlcjo6cmVjbGFpbUxpbWl0Qnl0ZXMobV92aWV3
cG9ydFNpemUpOwotICAgIHNpemVfdCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6Omhp
Z2hMaW1pdEJ5dGVzKG1fdmlld3BvcnRTaXplKTsKICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPnJlZHVjZU1lbW9yeVRvTGltaXQocHJlZmVycmVkTGltaXRCeXRlcyk7CiAgICAgaWYgKG1f
Y29udGVudHNUZXh0dXJlTWFuYWdlci0+Y3VycmVudE1lbW9yeVVzZUJ5dGVzKCkgPj0gcHJlZmVy
cmVkTGltaXRCeXRlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWRsZSBwYWludGluZyBz
aG91bGQgZmFpbCB3aGVuIHdlIGhpdCB0aGUgcHJlZmVycmVkIG1lbW9yeSBsaW1pdCwKLSAgICAv
LyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgcHVzaCB1cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxp
bWl0LgotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRl
cyhwcmVmZXJyZWRMaW1pdEJ5dGVzKTsKLSAgICAvLyBUaGUgc2Vjb25kIChpZGxlKSBwYWludCB3
aWxsIGJlIGEgbm8tb3AgaW4gbGF5ZXJzIHdoZXJlIHBhaW50aW5nIGFscmVhZHkgb2NjdXJlZCBh
Ym92ZS4KLSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0LCBQYWludElkbGUpOwot
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+c2V0TWF4TWVtb3J5TGltaXRCeXRlcyhtYXhM
aW1pdEJ5dGVzKTsKKyAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOwogfQogCiB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKCkKQEAgLTQzOSwyNiArNDUzLDYxIEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0OjpyZXNlcnZlVGV4dHVyZXMoKQogICAgIC8vIFVzZSBCYWNrVG9G
cm9udCBzaW5jZSBpdCdzIGNoZWFwIGFuZCB0aGlzIGlzbid0IG9yZGVyLWRlcGVuZGVudC4KICAg
ICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0
aW9uczo6QmFja1RvRnJvbnQ+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBDQ0xheWVySXRl
cmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmbV91cGRhdGVMaXN0KTsK
LSAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpi
ZWdpbigmbV91cGRhdGVMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgQ0NMYXllckl0ZXJh
dG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJm1fcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3QpOworICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVy
YXRvclR5cGU6OmJlZ2luKCZtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIGlmICghaXQucmVwcmVzZW50c0l0c2VsZigpIHx8ICFpdC0+YWx3YXlz
UmVzZXJ2ZVRleHR1cmVzKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaXQtPnJl
c2VydmVUZXh0dXJlcygpOwogICAgIH0KIH0KIAotLy8gc3RhdGljCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhaW50VHlw
ZSBwYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewot
ICAgIEFTU0VSVChsYXllcik7Ci0gICAgQVNTRVJUKFBhaW50VmlzaWJsZSA9PSBwYWludFR5cGUg
fHwgUGFpbnRJZGxlID09IHBhaW50VHlwZSk7Ci0gICAgaWYgKFBhaW50VmlzaWJsZSA9PSBwYWlu
dFR5cGUpCi0gICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVl
blNwYWNlKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLT5pZGxlUGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0
aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5z
aXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5
ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5maXJzdC5n
ZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkobV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uc2Vjb25kKTsKKyAgICB9CisKKyAgICBpZiAobV90cmlnZ2VySWRs
ZVBhaW50cykgeworICAgICAgICBzaXplX3QgcHJlZmVycmVkTGltaXRCeXRlcyA9IFRleHR1cmVN
YW5hZ2VyOjpyZWNsYWltTGltaXRCeXRlcyhtX3ZpZXdwb3J0U2l6ZSk7CisgICAgICAgIHNpemVf
dCBtYXhMaW1pdEJ5dGVzID0gVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5dGVzKG1fdmlld3Bv
cnRTaXplKTsKKyAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlU
b0xpbWl0KHByZWZlcnJlZExpbWl0Qnl0ZXMpOworICAgICAgICBpZiAobV9jb250ZW50c1RleHR1
cmVNYW5hZ2VyLT5jdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSA8IHByZWZlcnJlZExpbWl0Qnl0ZXMp
IHsKKyAgICAgICAgICAgIC8vIElkbGUgcGFpbnRpbmcgc2hvdWxkIGZhaWwgd2hlbiB3ZSBoaXQg
dGhlIHByZWZlcnJlZCBtZW1vcnkgbGltaXQsCisgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQg
d2lsbCBhbHdheXMgcHVzaCB1cyB0b3dhcmRzIHRoZSBtYXhpbXVtIGxpbWl0LgorICAgICAgICAg
ICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKHByZWZl
cnJlZExpbWl0Qnl0ZXMpOworICAgICAgICAgICAgLy8gVGhlIHNlY29uZCAoaWRsZSkgcGFpbnQg
d2lsbCBiZSBhIG5vLW9wIGluIGxheWVycyB3aGVyZSBwYWludGluZyBhbHJlYWR5IG9jY3VyZWQg
YWJvdmUuCisKKyAgICAgICAgICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRl
TGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVy
SW5kZXhdLmZpcnN0LmdldCgpOworICAgICAgICAgICAgICAgIGxheWVyLT5pZGxlUHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2NvbnRlbnRz
VGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQo
KSk7CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAt
IDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9t
aXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmZpcnN0LmdldCgpOwor
ICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgbGF5ZXItPmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgfQogfQogCi12b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBQYWludFR5cGUgcGFpbnRUeXBlKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgY29u
c3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlLCBMYXllclVwZGF0ZUxpc3QmIHVwZGF0ZUxp
c3QpCit7CisgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlvbnMgc2hvdWxk
IGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlbmRlciBzdXJm
YWNlIGxheWVyIGxpc3RzLgorICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMgaG93ZXZlciwg
d2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgorICAgIGlmIChsYXllci0+Ym91
bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+ZHJhd3NDb250
ZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUxpc3QuYXBwZW5kKHBhaXI8UmVm
UHRyPExheWVyQ2hyb21pdW0+LCBSZWdpb24+KGxheWVyLCBvY2NsdWRlZFNjcmVlblNwYWNlKSk7
Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllclVwZGF0ZUxp
c3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkg
ZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRo
aXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBz
b21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpA
QCAtNDY5LDE2ICs1MTgsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWludENv
bnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUs
IG5vT2NjbHVzaW9uKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCksIG5vT2NjbHVzaW9uLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAg
ICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxp
Y2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50
c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgbm9PY2NsdXNpb24sIHVwZGF0ZUxpc3Qp
OwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAg
ICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7
Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXll
cigpLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVM
YXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBub09jY2x1c2lvbiwgdXBkYXRlTGlzdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01MjYsNyArNTc1LDcgQEAgc3RhdGljIHZvaWQgbGVh
dmVUYXJnZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ss
IFJlbmRlclMKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBQYWludFR5cGUg
cGFpbnRUeXBlKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29u
c3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJVcGRhdGVMaXN0JiB1
cGRhdGVMaXN0KQogewogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3IgdGVzdGlu
ZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4K
ICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CkBAIC01NDAsMTMgKzU4
OSwxMyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgIC8vIFdlIG1lcmdlIHRoZSBvY2Ns
dXNpb24gYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aCB0aGUgbmV3IGN1cnJlbnQgc3VidHJl
ZS4gVGhpcyBuZXcgdGFyZ2V0IGlzIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBpZiBub3QgYWxyZWFk
eSB0aGVyZS4KICAgICBWZWN0b3I8UmVuZGVyU3VyZmFjZVJlZ2lvbj4gdGFyZ2V0U3VyZmFjZVN0
YWNrOwogCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBl
OjplbmQoJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIGZvciAoQ0NMYXllckl0ZXJhdG9y
VHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZhY2VVcGRhdGVMaXN0KTsKKyAgICBm
b3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYg
KGl0LnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VChpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKIAogICAgICAgICAgICAgZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHRhcmdldFN1cmZhY2VTdGFjaywgaXQtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgICAgICAgICBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSgq
aXQsIHBhaW50VHlwZSk7CisgICAgICAgICAgICBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoKml0LCB1cGRhdGVMaXN0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhl
IHJlcGxpY2EgbGF5ZXIgdG8gdGhlIGN1cnJlbnQgb2NjbHVzaW9uCiAKICAgICAgICAgICAgIGlm
IChpdC0+bWFza0xheWVyKCkgfHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSA8
IDEgfHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3Rz
T3BhY2l0eSgpKQpAQCAtNTU1LDcgKzYwNCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAg
ICAgICAgICAgICBBU1NFUlQoIWl0LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgICAg
ICBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC0+dGFyZ2V0
UmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KCppdCwg
cGFpbnRUeXBlLCB0YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9jY2x1ZGVkSW5TY3JlZW4pOwor
ICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKCppdCwgdGFyZ2V0U3VyZmFjZVN0YWNrLmxh
c3QoKS5vY2NsdWRlZEluU2NyZWVuLCB1cGRhdGVMaXN0KTsKICAgICAgICAgICAgIGl0LT5hZGRT
ZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKHRhcmdldFN1cmZhY2VTdGFjay5sYXN0KCkub2NjbHVk
ZWRJblNjcmVlbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZWF2ZVRhcmdldFJl
bmRlclN1cmZhY2UodGFyZ2V0U3VyZmFjZVN0YWNrLCBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIoKS0+cmVuZGVyU3VyZmFjZSgpKTsKQEAgLTU2MywzNiArNjEyLDE2IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBk
YXRlciYgdXBkYXRlcikKLXsKLSAgICAvLyBVc2UgQmFja1RvRnJvbnQgc2luY2UgaXQncyBjaGVh
cCBhbmQgdGhpcyBpc24ndCBvcmRlci1kZXBlbmRlbnQuCi0gICAgdHlwZWRlZiBDQ0xheWVySXRl
cmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkJhY2tUb0Zyb250PiBD
Q0xheWVySXRlcmF0b3JUeXBlOwotCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xh
eWVySXRlcmF0b3JUeXBlOjplbmQoJm1fdXBkYXRlTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVySXRl
cmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJm1fdXBkYXRlTGlzdCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRl
clN1cmZhY2UoKSkgewotICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRy
YXdPcGFjaXR5KCkpOwotICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSkKLSAgICAgICAg
ICAgICAgICBpdC0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4
dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgICAgIGlmIChpdC0+cmVwbGljYUxheWVyKCkpIHsKLSAg
ICAgICAgICAgICAgICBpdC0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGl0LT5yZXBsaWNhTGF5
ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGl0LT5yZXBsaWNhTGF5ZXIo
KS0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRl
cik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2Vs
ZigpKQotICAgICAgICAgICAgaXQtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwg
dXBkYXRlcik7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5n
VXBkYXRlKCkKIHsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5k
ZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXll
ckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAg
IG1fbGF5ZXJVcGRhdGVMaXN0LmNsZWFyKCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5k
ZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKTsg
KytzdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVChs
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFj
ZSgpOwogICAgIH0KLSAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDg5YWRlNTU4YmI5NmMxMWI2OTUyYzdhOGIxZGQ0ZDRlZjY0
ZmYwMjQuLmQ0YWZmMjBlOTJlMTBkNDFiZDYyYzQ1Yzc1Nzg0NTY2ZjA1MDUwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00Myw3ICs0Myw2IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVy
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsK
IGNsYXNzIFJlZ2lvbjsKQEAgLTc3LDcgKzc2LDggQEAgc3RydWN0IENDU2V0dGluZ3MgewogICAg
ICAgICAgICAgLCBwZXJUaWxlUGFpbnRpbmcoZmFsc2UpCiAgICAgICAgICAgICAsIHBhcnRpYWxT
d2FwRW5hYmxlZChmYWxzZSkKICAgICAgICAgICAgICwgdGhyZWFkZWRBbmltYXRpb25FbmFibGVk
KGZhbHNlKQotICAgICAgICAgICAgLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkgeyB9CisgICAgICAgICAgICAsIG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQorICAgICAg
ICAgICAgLCBkZWxheVRleHR1cmVVcGRhdGVzKGZhbHNlKSB7IH0KIAogICAgIGJvb2wgYWNjZWxl
cmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpAQCAtODgsNiArODgs
NyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBwYXJ0aWFsU3dhcEVuYWJsZWQ7CiAg
ICAgYm9vbCB0aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQ7CiAgICAgc2l6ZV90IG1heFBhcnRpYWxU
ZXh0dXJlVXBkYXRlczsKKyAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7CiB9OwogCiAvLyBQ
cm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBi
YWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKQEAgLTE4NiwxMSArMTg3LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHdl
IHNob3VsZCBhYm9ydCB0aGlzIGZyYW1lIGR1ZSB0byBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgot
ICAgIGJvb2wgdXBkYXRlTGF5ZXJzKCk7CisgICAgYm9vbCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAg
ICB2b2lkIHVwZGF0ZUxheWVycygpOwogCiAgICAgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNj
YWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQg
YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9p
ZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0
ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKQEAgLTIwMywxNiArMjA0LDI4IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBVcGRh
dGVIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgVXBkYXRlSGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1YWwg
flVwZGF0ZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwgYm9vbCBwYXJ0aWFsKTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IExheWVyTGlzdDsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8
UmVmUHRyPExheWVyQ2hyb21pdW0+LCBSZWdpb24+ID4gTGF5ZXJVcGRhdGVMaXN0OwogICAgIHR5
cGVkZWYgVmVjdG9yPE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gPiBUZXh0dXJlTGlzdDsKIAogICAg
IHZvaWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKIAotICAgIGVudW0gUGFpbnRUeXBlIHsg
UGFpbnRWaXNpYmxlLCBQYWludElkbGUgfTsKLSAgICBzdGF0aWMgdm9pZCBwYWludENvbnRlbnRz
SWZEaXJ0eShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlLCBjb25zdCBSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlz
dCYsIFBhaW50VHlwZSk7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZShMYXllckNocm9taXVtKiwgUGFpbnRUeXBlKTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVM
YXllcihMYXllckNocm9taXVtKiwgY29uc3QgUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlLCBM
YXllclVwZGF0ZUxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJVcGRhdGVMaXN0Jik7CisgICAgdm9pZCBhcHBl
bmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qs
IExheWVyVXBkYXRlTGlzdCYpOwogCisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJv
bWl1bSopOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKICAgICAvLyBQ
cmUtcmVzZXJ2ZSB0ZXh0dXJlcyBmb3IgYW55IGxheWVyIG1hcmtlZCAiYWx3YXlzIHJlc2VydmUg
dGV4dHVyZXMiCiAgICAgdm9pZCByZXNlcnZlVGV4dHVyZXMoKTsKQEAgLTIzNCw3ICsyNDcsOCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExh
eWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Q7CisgICAgTGF5ZXJVcGRhdGVMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NT
ZXR0aW5ncyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYjQzNThhYWRkNzdmMjc4Yzgx
ZGY2ZDJmNmNlYTUzZWJmZjA1MWFhYi4uNDUzYzk2YTk5ZmNmNjhkNjc2ZTExMzkyMmRlMzY0NzBh
ZWQ0Yjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5
X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtODUsNiArODYsOCBAQCBwdWJs
aWM6CiAgICAgLy8gTWF4aW11bSBudW1iZXIgb2Ygc3ViLXJlZ2lvbiB0ZXh0dXJlIHVwZGF0ZXMg
c3VwcG9ydGVkIGZvciBlYWNoIGNvbW1pdC4KICAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgYm9vbCBwYXJ0aWFsKSA9IDA7CisKICAgICAvLyBEZWJ1
ZyBob29rcwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggZWE4YzQwZjEyNTY1
ZWM0MTNiYWI1ODZiYTIwZTQ5Y2VmOWY5ZGE4ZC4uYTVlMmFkYWVkMjVlNmYyZDgzYzY1ODRiODE5
ZDY5ODgwNTM2NGIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAK
QEAgLTE3NSwxMSArMTc1LDEyIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQo
KQogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAorICAgICAgICBpZiAobV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXIpIHsKKyAgICAgICAgICAgIHdoaWxlIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ci0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSkpIHsgfQorICAgICAgICAg
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIuY2xlYXIoKTsKKyAgICAgICAgfQorCiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIHVwZGF0ZXIpOwotICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKLSAgICAg
ICAgQVNTRVJUKCF1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVI
b3N0SW1wbC5nZXQoKSk7CiAKQEAgLTE5NCw2ICsxOTUsOCBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OmRvQ29tbWl0KCkKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwogICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lID0gdHJ1ZTsKKwor
ICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIgfHwgIW1fY3VycmVudFRleHR1cmVV
cGRhdGVyLT5udW1Nb3JlVXBkYXRlcygpKTsKIH0KIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
OjpzZXROZWVkc0NvbW1pdCgpCkBAIC0yNDAsNiArMjQzLDE3IEBAIHZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6cG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRocmVhZChQYXNz
T3duUHRyCiAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpb25FdmVudHMoZXZlbnRzKTsK
IH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QsIGJvb2wgLyogcGFydGlhbCAqLykKK3sKKyAgICBpZiAoIW1fY3VycmVu
dFRleHR1cmVVcGRhdGVyKQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciA9IGFkb3B0
UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZUFsbG9jYXRvcigpKSk7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGlu
Z3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQorICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ci0+YXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBlbHNlCisgICAg
ICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+YWxsb2NhdG9yKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKK30KKwogLy8gQ2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdo
ZXJlIHJlbmRlcl93aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJl
YWRQcm94eTo6Y29tcG9zaXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMzA1LDkgKzMxOSwxMSBAQCBi
b29sIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQo
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUxheWVycygpKQorICAgIGlmICghbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKTsKKwogICAgIGRvQ29tbWl0KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Npbmds
ZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggNzFiNWU5OWIyZWQyYWZmNzgyNTAzYmYz
OTMzNjY5ODNmYzU5NDcxZS4uZTQ3OTBiMTM4ODA4NzkzYTQ3ODEzODVkYjdlMWMyNGEwOWU3MDBh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMzUsNiArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CitjbGFzcyBD
Q1RleHR1cmVVcGRhdGVyOwogCiBjbGFzcyBDQ1NpbmdsZVRocmVhZFByb3h5IDogcHVibGljIEND
UHJveHksIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgewogcHVibGljOgpAQCAtNTksNiArNjAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKTsKICAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOyB9CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGJvb2wgcGFydGlh
bCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KQEAgLTkzLDYgKzk1LDggQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZ3JhcGhpY3NDb250ZXh0TG9zdDsKICAgICBpbnQgbV90aW1lc1JlY3JlYXRlU2hvdWxkRmFp
bDsgLy8gVXNlZCBkdXJpbmcgdGVzdGluZy4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNv
bW1pdHRlZEZyYW1lOworCisgICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyOwogfTsKIAogLy8gRm9yIHVzZSBpbiB0aGUgc2luZ2xlLXRocmVhZGVkIGNh
c2UuIEluIGRlYnVnIGJ1aWxkcywgaXQgcHJldGVuZHMgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNjZlMDhjOGJkOTNmMTgyNmEzOWI1NTNjMjk2NTBhODNh
YzA5ZThlYS4uZDUzOGY2MDAxODY4YzcwMzhjNmM5NDM4YjFhYjU5ODcxMjc5ZDFiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgpAQCAtMzksNyArNDAsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIENDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQot
ICAgICwgbV9lbnRyeUluZGV4KDApCiB7CiAgICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KQEAg
LTQ4LDcgKzQ4LDcgQEAgQ0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4dHVyZVVwZGF0ZXIoKQogewog
fQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0ZUVudHJ5PiYgZW50cmllcykKK3ZvaWQgQ0NUZXh0dXJl
VXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAg
IEFTU0VSVCh0ZXh0dXJlKTsKIApAQCAtNTYsNjEgKzU2LDI5IEBAIHZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlCiAgICAgZW50cnkubV90ZXh0dXJlID0gdGV4dHVyZTsKICAgICBlbnRyeS5tX3NvdXJj
ZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgIGVudHJ5Lm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKLSAg
ICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgbV9lbnRyaWVzLmFwcGVuZChlbnRyeSk7CiB9
CiAKLXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQorc2l6ZV90IENDVGV4dHVyZVVwZGF0ZXI6Om51bU1vcmVVcGRhdGVzKCkgY29u
c3QKIHsKLSAgICBhcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fZW50cmll
cyk7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6YXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK2Jv
b2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQog
ewotICAgIGFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgbV9wYXJ0aWFsRW50
cmllcyk7Ci19CisgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLWJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAotewot
ICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOwot
fQorICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgZW50cnku
bV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJj
ZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CiAK
LWJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBzaXplX3QgY291bnQpCi17Ci0gICAgc2l6ZV90IGluZGV4OwotICAgIHNpemVfdCBtYXhJbmRl
eCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAgZm9y
IChpbmRleCA9IG1fZW50cnlJbmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRleCkgewotICAg
ICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbaW5kZXhdOwotICAgICAgICBlbnRy
eS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291
cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQotCi0gICAgYm9vbCBtb3JlVXBkYXRl
cyA9IG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsKLQotICAgIEFTU0VSVChtX3BhcnRpYWxF
bnRyaWVzLnNpemUoKSA8PSBjb3VudCk7Ci0gICAgLy8gTWFrZSBzdXJlIHRoZSBudW1iZXIgb2Yg
dXBkYXRlcyBpbmNsdWRpbmcgcGFydGlhbCB1cGRhdGVzIGFyZSBub3QgbW9yZQotICAgIC8vIHRo
YW4gfGNvdW50fC4KLSAgICBpZiAoKGNvdW50IC0gKGluZGV4IC0gbV9lbnRyeUluZGV4KSkgPCBt
X3BhcnRpYWxFbnRyaWVzLnNpemUoKSkKLSAgICAgICAgbW9yZVVwZGF0ZXMgPSB0cnVlOwotCi0g
ICAgaWYgKG1vcmVVcGRhdGVzKSB7Ci0gICAgICAgIG1fZW50cnlJbmRleCA9IGluZGV4OwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBt
X3BhcnRpYWxFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBVcGRhdGVFbnRyeSYg
ZW50cnkgPSBtX3BhcnRpYWxFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgZW50cnkubV90ZXh0dXJl
LT51cGRhdGVSZWN0KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVu
dHJ5Lm1fZGVzdFJlY3QpOwotICAgIH0KLQotICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0byBw
cm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBtX2VudHJpZXMuc2l6ZSgpID4gMDsKIH0KIAogdm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcigpCiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2VudHJpZXMuY2xlYXIo
KTsKLSAgICBtX3BhcnRpYWxFbnRyaWVzLmNsZWFyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuaAppbmRleCBkYmI1MmM5YmFkMjA0MzRkZGJmNzRjNjI4YTQ0NDVlOWQ3ZTk4
N2QyLi4wOGY0YWIyN2QxODljNjA4MWIxM2NjNzE3ZWMzNzcyYWViYmM2ZGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC00MSwxMiArNDEsMTEgQEAgcHVibGljOgogICAgIH5D
Q1RleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwotICAgIHZvaWQgYXBwZW5kUGFydGlhbChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OwogCi0gICAgYm9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OworICAgIHNpemVfdCBudW1Nb3Jl
VXBkYXRlcygpIGNvbnN0OwogCi0gICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuIFJldHVybnMg
dHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vzcy4KLSAgICBib29sIHVwZGF0ZShH
cmFwaGljc0NvbnRleHQzRCosIHNpemVfdCBjb3VudCk7CisgICAgLy8gVXBkYXRlIGEgdGV4dHVy
ZS4gUmV0dXJucyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNzLgorICAgIGJv
b2wgdXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAg
LTU5LDEyICs1OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKICAg
ICB9OwogCi0gICAgc3RhdGljIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwg
VmVjdG9yPFVwZGF0ZUVudHJ5PiYpOwotCiAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0
b3I7Ci0gICAgc2l6ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1f
ZW50cmllczsKLSAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fcGFydGlhbEVudHJpZXM7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDc1ZWYxMzYyM2RlODc2ZjQ0YTJj
YTQ3ZWFkZDgxMjBiMTEwYjIzMjYuLmYyY2I3ZDNjODAxYmY5YTI5NDAyOWUyMjA5MmI4OWQyNTA0
M2Y3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0
YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1Byb3h5PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUo
Q0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQorUGFzc093blB0cjxDQ1RocmVhZFByb3h5
PiBDQ1RocmVhZFByb3h5OjpjcmVhdGUoQ0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KQog
ewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUaHJlYWRQcm94eShsYXllclRyZWVIb3N0KSk7
CiB9CkBAIC0zMzQsNiArMzM0LDIxIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAg
bV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBib29sIHBhcnRpYWwpCit7CisgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7CisKKyAgICBPd25QdHI8VXBkYXRl
RW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVwZGF0ZUVudHJ5KTsKKyAgICBlbnRyeS0+bV90
ZXh0dXJlID0gdGV4dHVyZTsKKyAgICBlbnRyeS0+bV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsK
KyAgICBlbnRyeS0+bV9kZXN0UmVjdCA9IGRlc3RSZWN0OworICAgIGVudHJ5LT5tX3BhcnRpYWwg
PSBwYXJ0aWFsOworCisgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQsIGVudHJ5LnJlbGVhc2UoKSkpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFs
bFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBs
VGhyZWFkIiwgdGhpcywgMCk7CkBAIC00MjAsOSArNDM1LDExIEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJl
Z2luVGltCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFs
c2U7CiAKLSAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCkpCisgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworCiAgICAgLy8gQmVmb3JlIGFw
cGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVl
c3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVl
ZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdAogICAgIC8vIG5v
dyBzbyB0aGF0IHdlIGdldCBiZWdpbiBmcmFtZSB3aGVuIHRoaXMgb25lIGlzIGRvbmUuCkBAIC00
NDUsMTMgKzQ2MiwyNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQo
aW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xh
c3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51
bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVh
ZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
T3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+KiB1cGRhdGVyT25JbXBsVGhyZWFkID0gZW50cnktPm1f
cGFydGlhbCA/ICZtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgOiAm
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CisKKyAgICBpZiAoISp1cGRhdGVy
T25JbXBsVGhyZWFkKQorICAgICAgICAqdXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5l
dyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpKSk7CisKKyAgICAoKnVwZGF0ZXJPbkltcGxUaHJlYWQpLT5hcHBlbmQoZW50cnkt
Pm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOworfQor
CiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNT
RVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwotICAg
IEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKICAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKICAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTQ1OSwxOCArNDkwLDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uCiAKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBs
ZXRpb247CiAKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5l
dyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKTsKLQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZy
YW1lQ29tcGxldGUoKTsKIH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkKQorICAgIGlmIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCAmJiBt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+bnVtTW9yZVVwZGF0ZXMoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBBbGwgcGFydGlhbCB1cGRhdGVzIG5lZWRzIHRv
IGJlIGRvbmUgYXQgdGhlIHNhbWUgdGltZSBzbyBkb24ndAorICAgIC8vIHJlY29nbml6ZSB0aGVt
IHVudGlsIGJlZ2luRnJhbWVDb21wbGV0ZSBoYXMgYmVlbiBjYWxsZWQuCisgICAgaWYgKCFtX2Nv
bW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVw
ZGF0ZXMoKTsKKworICAgIHJldHVybiBtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQgJiYgbV9jdXJyZW50UGFydGlhbFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5u
dW1Nb3JlVXBkYXRlcygpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQpAQCAt
NDg0LDE5ICs1MTcsMzkgQEAgYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5EcmF3KCkKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAg
VFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNv
dXJjZXMiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRh
dGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1l
KTsKKyAgICBzaXplX3QgdXBkYXRlcyA9IHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7CisgICAgaWYg
KG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKSB7CisgICAgICAgIHdoaWxlICht
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+bnVtTW9yZVVwZGF0ZXMoKSAmJiB1
cGRhdGVzLS0pCisgICAgICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSk7CisgICAgfQorCisgICAg
aWYgKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICh1cGRhdGVzIDwgbV9jdXJyZW50UGFydGlhbFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5udW1Nb3JlVXBkYXRlcygpKQorICAgICAgICByZXR1
cm47CisKKyAgICB3aGlsZSAobV9jdXJyZW50UGFydGlhbFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLT5udW1Nb3JlVXBkYXRlcygpKQorICAgICAgICBtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCkp
OwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRo
aXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7
Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9y
ZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkKTsKIAotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7
CisgICAgaWYgKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKSB7CisgICAgICAg
IEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPm51bU1vcmVVcGRh
dGVzKCkpOworICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVh
cigpOworICAgIH0KIAorICAgIGlmIChtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpIHsKKyAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQtPm51bU1vcmVVcGRhdGVzKCkpOworICAgICAgICBtX2N1cnJlbnRQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICB9CiAKICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
aW5kZXggMzMwZWY1MWNhOThhMTZkMjIzMWUzMzY1NTQwYWMwM2MxNzMzMmEzNC4uNjU5NjBiNjc3
NGIzM2NhOTQ4MzllOGRmMWZkMThmZGNmZmJiOTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBDQ1RocmVhZDsKIAogY2xhc3MgQ0NUaHJlYWRQcm94
eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50LCBDQ1NjaGVkdWxl
ckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQcm94eT4gY3JlYXRl
KENDTGF5ZXJUcmVlSG9zdCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDVGhyZWFkUHJveHk+
IGNyZWF0ZShDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAgIHZpcnR1YWwgfkNDVGhyZWFkUHJveHko
KTsKIApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKICAgICB2aXJ0dWFsIHNpemVfdCBtYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCwgYm9vbCBwYXJ0aWFsKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVy
c0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CkBAIC04NCw2ICs4NSwxMyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKKyAg
ICBzdHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiBtX3RleHR1cmU7CisgICAgICAgIEludFJlY3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJ
bnRSZWN0IG1fZGVzdFJlY3Q7CisgICAgICAgIGJvb2wgbV9wYXJ0aWFsOworICAgIH07CisKICAg
ICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQKICAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQo
aW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NT
Y3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBA
IC05OSw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ1RocmVh
ZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAg
ICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25J
bXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgcmVxdWVz
dFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgcmVxdWVz
dFN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uT25JbXBsVGhyZWFkKEludFNpemUgdGFyZ2V0UG9zaXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKTsKQEAg
LTE0Myw2ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVh
ZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRvIGNvbXBsZXRlLgogICAgIENDQ29tcGxldGlvbkV2
ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKICAgICBPd25QdHI8Q0NU
ZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CisgICAg
T3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFBhcnRpYWxUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3Qg
ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4
dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggN2YxYmJiMGM0OTY5OGRiOTIzNjRh
NTYyOGFmNTRhNTEyZjU1ZTEyNS4uMjAzM2ZiNzU0N2FiZDUxNTQ1MjU5MWY2OWYyOWU1Y2M4MWQ4
MTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBA
IC0xNDMsNiArMTQzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFp
bnRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBF
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGhyZWFkZWRBbmltYXRpb25F
bmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVsYXlUZXh0dXJlVXBkYXRl
cyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25z
dCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDQ4NWE1YjA1MWEw
MjYyMDhiZjc2Yzg3NjkyYzM0MWZlYjQyNmY2NWQuLjMxZjJmMmQ1OWEwYmVmZjk1NGZhZDgzMGM5
NTQ3YjA1MTY2N2IxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcApAQCAtNTAsNiArNTAsNyBAQCBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRp
bmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVu
YWJsZWQoZmFsc2UpCiAgICAgLCBtX3Nob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICwgbV9zaG93
UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCisgICAgLCBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMoZmFs
c2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0KQEAgLTU0OCw0ICs1NDksOSBAQCB2b2lk
IFdlYlNldHRpbmdzSW1wbDo6c2V0VGhyZWFkZWRBbmltYXRpb25FbmFibGVkKGJvb2wgZW5hYmxl
ZCkKICAgICBtX3NldHRpbmdzLT5zZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXREZWxheVRleHR1cmVVcGRhdGVzKGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICBtX2RlbGF5VGV4dHVyZVVwZGF0ZXMgPSBlbmFibGVkOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmgKaW5kZXggNTFkOTMyM2E0MDg4MjZlNTQxYTlkMzNmMDA1MTlkYTljYTJlYTU0
ZS4uN2Y1OGUzYTM0ZjVjMzRmN2M5ZmI5MWNjNmZjZWYwYmRiN2IyOWZkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEzOCwxMiArMTM4LDE1
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFydGlhbFN3YXBFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRUaHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgdmly
dHVhbCB2b2lkIHNldERlbGF5VGV4dHVyZVVwZGF0ZXMoYm9vbCk7CisgICAgdmlydHVhbCBib29s
IGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVwZGF0
ZXM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKICAg
ICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKICAgICBib29sIG1fc2hvd0ZQU0Nv
dW50ZXI7CiAgICAgYm9vbCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKKyAgICBib29sIG1fZGVs
YXlUZXh0dXJlVXBkYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGYxNTMwMjI5ZTQ4YjQwMWYz
MWEyYzVmNjE0NzVhYWMyNTgxOGEyNWIuLmNhNTM3ZWY2ZWEzZmNlOTA3Yzk2ZDYyODIxM2M4ODUx
ODg2MmZkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTMxNjQsNiArMzE2NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRp
bmdzLnBlclRpbGVQYWludGluZyA9IHBhZ2UoKS0+c2V0dGluZ3MoKS0+cGVyVGlsZURyYXdpbmdF
bmFibGVkKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJs
ZWQgPSBwYWdlKCktPnNldHRpbmdzKCktPnBhcnRpYWxTd2FwRW5hYmxlZCgpOwogICAgICAgICBs
YXllclRyZWVWaWV3U2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gcGFnZSgpLT5z
ZXR0aW5ncygpLT50aHJlYWRlZEFuaW1hdGlvbkVuYWJsZWQoKTsKKyAgICAgICAgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLmRlbGF5VGV4dHVyZVVwZGF0ZXMgPSBzZXR0aW5ncygpLT5kZWxheVRleHR1
cmVVcGRhdGVzKCk7CiAKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpj
cmVhdGUodGhpcykpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hv
d0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRpbmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcAppbmRleCBjZWQ2MmNjMDZkZDRjNWI3Zjg3Y2U1ZmE4NjFiMWQxMjg5NTRjNDI3Li41Nzcx
NjAxZTk0MjY3ODkyZWM5OGFjOTZhNzViNmI2YjMxMjQwOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTExMzks
NiArMTEzOSwxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUsIHJ1bk11
bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1ZSk7CiB9CiAKK2NsYXNzIE1vY2tMYXllckRlbGVn
YXRlIDogcHVibGljIENvbnRlbnRMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9
CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFj
aXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CiBw
dWJsaWM6CiAgICAgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlKENDTGF5ZXJUcmVlSG9z
dFRlc3QqIHRlc3QpCkBAIC0xMTYwLDQ3ICsxMTY4LDEyNyBAQCBwcml2YXRlOgogCiBjbGFzcyBD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyA6IHB1YmxpYyBDb250ZW50TGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDb250ZW50TGF5ZXJEZWxlZ2F0ZSAq
ZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAg
ICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
eworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAg
ICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3Bh
aW50Q29udGVudHNDb3VudDsgfQotICAgIGludCBpZGxlUGFpbnRDb250ZW50c0NvdW50KCkgeyBy
ZXR1cm4gbV9pZGxlUGFpbnRDb250ZW50c0NvdW50OyB9Ci0gICAgdm9pZCByZXNldFBhaW50Q29u
dGVudHNDb3VudCgpIHsgbV9wYWludENvbnRlbnRzQ291bnQgPSAwOyBtX2lkbGVQYWludENvbnRl
bnRzQ291bnQgPSAwO30KKyAgICAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cHJlcGFy
ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyog
ZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlLT5i
aW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICAgICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRl
cjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CisKKyAgICAgICAg
dmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1h
bmFnZXIpKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdFJHQkE7CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJu
IG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRl
Q291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywg
aW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLywgSW50UmVj
dCogLyogcmVzdWx0aW5nT3BhcXVlUmVjdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV9s
YXllci0+cGFpbnRDb250ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2Nj
bHVkZWRTY3JlZW5TcGFjZSkKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBDb250ZW50
TGF5ZXJUZXh0dXJlVXBkYXRlcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyogbGF5ZXIpIDogbV9sYXllcihsYXllcikgeyB9CisKKyAgICAgICAgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIG1fbGF5ZXI7CisgICAgfTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUo
Q29udGVudExheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIHsKLSAgICAgICAgQ29udGVudExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwot
ICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIG1fY29udGVu
dExheWVyVGV4dHVyZVVwZGF0ZXItPnNldE9wYXF1ZShvcGFxdWUoKSk7CisKKyAgICAgICAgR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCA9IGxheWVyVHJlZUhvc3QoKS0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLmJlc3RUZXh0dXJlRm9ybWF0OworICAgICAgICBzZXRUZXh0dXJlRm9ybWF0KHRl
eHR1cmVGb3JtYXQpOworICAgICAgICBzZXRTYW1wbGVkVGV4ZWxGb3JtYXQodGV4dHVyZVVwZGF0
ZXIoKS0+c2FtcGxlZFRleGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpKTsKICAgICB9CisgICAgdmly
dHVhbCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9V
cGRhdGVJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSkKICAgICB7Ci0g
ICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjppZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKTsK
LSAgICAgICAgbV9pZGxlUGFpbnRDb250ZW50c0NvdW50Kys7CisgICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgICAgICBwcmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBkYXRlQ291
bnQrKzsKKyAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OmlkbGVQcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KCk7CisgICAgICAgIGlkbGVQcmVwYXJlVG9VcGRhdGUoKTsKICAgICB9CiAKKyAgICB2
b2lkIHByZXBhcmVUb1VwZGF0ZSgpIHsgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCsrOyB9CisgICAg
aW50IHByZXBhcmVUb1VwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlVG9VcGRhdGVDb3Vu
dDsgfQorCisgICAgdm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlKCkgeyBtX2lkbGVQcmVwYXJlVG9V
cGRhdGVDb3VudCsrOyB9CisgICAgaW50IGlkbGVQcmVwYXJlVG9VcGRhdGVDb3VudCgpIHsgcmV0
dXJuIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoKSB7IG1fcGFpbnRDb250ZW50c0NvdW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250ZW50c0Nv
dW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KKworICAgIHZvaWQgcHJlcGFy
ZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CisgICAgaW50IHByZXBhcmVSZWN0Q291
bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBkYXRlUmVj
dCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7
IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENvbnRlbnRMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSkKICAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAg
ICAgICAgLCBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9pZGxlUHJlcGFy
ZVRvVXBkYXRlQ291bnQoMCkKICAgICAgICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQotICAg
ICAgICAsIG1faWRsZVBhaW50Q29udGVudHNDb3VudCgwKQotICAgICAgICAsIG1fdXBkYXRlQ291
bnQoMCkKKyAgICAgICAgLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkKKyAgICAgICAgLCBtX3VwZGF0
ZVJlY3RDb3VudCgwKQogICAgIHsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7
CiAgICAgICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CiAgICAgfQogCisgICAgUmVmUHRyPENvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyPiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOworICAg
IGludCBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50OworICAgIGludCBtX2lkbGVQcmVwYXJlVG9VcGRh
dGVDb3VudDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1faWRsZVBh
aW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsKKyAgICBpbnQgbV9wcmVw
YXJlUmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVy
IG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRv
ciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC0xMjI3LDE2
ICsxMzE1LDE5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQogICAg
IHsKLSAgICAgICAgLy8gcGFpbnRDb250ZW50c0lmRGlydHkoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlLgotICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzQ291bnQoKSk7CisgICAgICAgIC8vIHByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBo
YXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNr
TGF5ZXItPnByZXBhcmVUb1VwZGF0ZUNvdW50KCkpOwogCi0gICAgICAgIC8vIGlkbGVQYWludENv
bnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UKLSAgICAgICAgRVhQ
RUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVBhaW50Q29udGVudHNDb3VudCgpKTsK
KyAgICAgICAgLy8gaWRsZVByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQcmVw
YXJlVG9VcGRhdGVDb3VudCgpKTsKKworICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hl
Y2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOwogCi0gICAgICAgIC8vIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQotICAgICAg
ICAvLyBhbW91dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzSWZEaXJ0eSgpLgotICAgICAgICBF
WFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSwKLSAgICAg
ICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlQ291bnQoKSk7CisgICAgICAg
IC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUK
KyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCkuCisgICAgICAgIEVY
UEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSwKKyAgICAgICAg
ICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOwogCiAgICAg
ICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xheWVyVHJlZUhvc3QgZGllcy4K
ICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLmNsZWFyKCk7CkBAIC0xMjY2LDYgKzEzNTcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplKDEwLCAxMCk7CiAgICAgICAg
IGxheWVyVHJlZUhvc3QoKS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiAKKyAgICAg
ICAgbGF5ZXJUcmVlSG9zdCgpLT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbGF5ZXJUcmVl
SG9zdCgpLT51cGRhdGVMYXllcnMoKTsKIAogICAgICAgICBFWFBFQ1RfRVEodmlld3BvcnRTaXpl
LCBsYXllclRyZWVIb3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKQEAgLTE1MjksNyArMTYyMSw3IEBA
IGNsYXNzIFRlc3RMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgVGVzdExheWVyQ2hyb21pdW0oKSk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UpCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoY29uc3QgUmVnaW9u
JiBvY2NsdWRlZFNjcmVlblNwYWNlKQogICAgIHsKICAgICAgICAgbV9vY2NsdWRlZFNjcmVlblNw
YWNlID0gb2NjbHVkZWRTY3JlZW5TcGFjZTsKICAgICB9CkBAIC0xNTg4LDYgKzE2ODAsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVy
KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5i
b3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTYwNSw2ICsxNjk4LDcgQEAgcHVibGlj
OgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRz
KCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE2MjMsNiArMTcxNyw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
KyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5j
b21taXRDb21wbGV0ZSgpOwogCkBAIC0xNjQzLDYgKzE3MzgsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIApAQCAtMTY2NSw2ICsxNzYxLDcgQEAgcHVibGljOgogCiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBs
ZXRlKCk7CiAKQEAgLTE2ODcsNiArMTc4NCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVy
VHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwogCkBAIC0xNzEwLDYgKzE4MDgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApA
QCAtMTczMyw2ICsxODMyLDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnByZXBhcmVUb1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVy
cygpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTE3
OTQsNiArMTg5NCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJv
b3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0
U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVw
YXJlVG9VcGRhdGUoKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCkBAIC0xODIxLDYg
KzE5MjIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5
ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUo
cm9vdExheWVyLT5ib3VuZHMoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRv
VXBkYXRlKCk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIApAQCAtMTg4MCw2ICsxOTgy
LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKGxh
eWVyc1swXS5nZXQoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXpl
KGxheWVyc1swXS0+Ym91bmRzKCkpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVU
b1VwZGF0ZSgpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCmluZGV4IGJiYzIxYzVhMmVjYjZiZmExMjBlZGU2ZjRlZWY2ZmFlNmNmNDAwZGYuLjExYTFj
YzljNjY0MjM4YmVhMTgyNTBjNDc4YWU2YWVkNjFiZmE5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNw
cApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NDYW52YXNMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiAjaW5jbHVkZSA8Z21v
Y2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpAQCAtNjksNiArNjgsMjEgQEAg
cHVibGljOgogICAgIE1PQ0tfTUVUSE9EMyhkZWxldGVUZXh0dXJlLCB2b2lkKHVuc2lnbmVkLCBj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0pKTsKIH07CiAKK2NsYXNzIE1vY2tVcGRhdGVIYW5kbGVy
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworcHVibGljOgorICAgIE1v
Y2tVcGRhdGVIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpIDogbV9jb250ZXh0KGNvbnRleHQpLCBtX2FsbG9jYXRvcihhbGxvY2F0
b3IpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwgYm9vbCkKKyAgICB7CisgICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHNv
dXJjZVJlY3QpOworICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fY29udGV4dCwgbV9hbGxv
Y2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9j
YXRvcjsKK307CisKIH0gLy8gbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg2
LDcgKzEwMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIGltcGxN
b2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQuZ2V0KCkpKTsK
IAogICAgICAgICBNb2NrVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3JNb2NrOwotICAgICAgICBD
Q1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJmFsbG9jYXRvck1vY2spOworICAgICAgICBNb2NrVXBk
YXRlSGFuZGxlciB1cGRhdGVIYW5kbGVyTW9jayhpbXBsQ29udGV4dC5nZXQoKSwgJmFsbG9jYXRv
ck1vY2spOwogCiAgICAgICAgIGNvbnN0IEludFNpemUgc2l6ZSgzMDAsIDE1MCk7CiAgICAgICAg
IGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlU2l6ZSA9IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0
KCkgKiA0OwpAQCAtMTM0LDcgKzE0OCw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2FudmFzLT5j
b250ZW50Q2hhbmdlZCgpOwogICAgICAgICBFWFBFQ1RfVFJVRShjYW52YXMtPm5lZWRzRGlzcGxh
eSgpKTsKICAgICAgICAgUmVnaW9uIG9jY2x1ZGVkU2NyZWVuU3BhY2U7Ci0gICAgICAgIGNhbnZh
cy0+cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAgIGNh
bnZhcy0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsKKyAgICAg
ICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uo
Y2FudmFzLT5uZWVkc0Rpc3BsYXkoKSk7CiAgICAgICAgIHsKICAgICAgICAgICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOwpAQCAtMTQyLDcgKzE1Nyw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2Fu
dmFzLT5jcmVhdGVDQ0xheWVySW1wbCgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBzdGF0
aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgp
KTsKIAotICAgICAgICAgICAgY2FudmFzLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxD
b250ZXh0LmdldCgpLCB1cGRhdGVyKTsKKyAgICAgICAgICAgIGNhbnZhcy0+Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZSh1cGRhdGVIYW5kbGVyTW9jayk7CiAgICAgICAgICAgICBjYW52YXMtPnB1
c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKHRocmVh
ZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllclRleHR1
cmVVcGRhdGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4
dHVyZVVwZGF0ZXJUZXN0LmNwcAppbmRleCBiZGJmN2JiMDkzMDE4YmQ2YTZiMzA3ZmY4YmUzODE0
MTVmNThhNjczLi4wZjdlZDU3MGVkNmZlNDI3ODk2N2ZlM2IxZTVlYWRiNzQ0NGUwOTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVwZGF0ZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyVGV4dHVyZVVw
ZGF0ZXJUZXN0LmNwcApAQCAtOTUsMTkgKzk1LDE5IEBAIFRFU1QoTGF5ZXJUZXh0dXJlVXBkYXRl
clRlc3QsIHRlc3RPcGFxdWVSZWN0UHJlc2VudEFmdGVyT3BhcXVlUGFpbnQpCiAgICAgb3BhcXVl
UmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBh
aW50ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAg
IHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6
ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRl
bnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9w
YXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBv
cGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9
IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAg
IHVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUocGFpbnRlci5yZWxlYXNlKCksIGZhbHNlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRh
dGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3Bh
cXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwg
NDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb3BhcXVlUmVjdCk7CiAKICAgICBvcGFx
dWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVy
UGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxlYXNl
KCkpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAw
KSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5w
YWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwg
MCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNDAw
LCA0MDApLCBvcGFxdWVSZWN0KTsKIH0KIApAQCAtMTIxLDE5ICsxMjEsMTkgQEAgVEVTVChMYXll
clRleHR1cmVVcGRhdGVyVGVzdCwgdGVzdE9wYXF1ZVJlY3ROb3RQcmVzZW50QWZ0ZXJOb25PcGFx
dWVQYWludCkKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9w
dFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0
ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5yZWxl
YXNlKCksIGZhbHNlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVjdCgwLCAw
LCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVlUmVjdCk7CisgICAg
dXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0
MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7
CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQYWludGVyQ2hyb21pdW0oZmls
bEFscGhhKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2UpOwotICAgIHVwZGF0ZXIt
PnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQw
MCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJl
Y3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3Qp
OwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwog
CiAgICAgb3BhcXVlUmVjdCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3
IFRlc3RMYXllclBhaW50ZXJDaHJvbWl1bShmaWxsQWxwaGEpKTsKICAgICB1cGRhdGVyID0gRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRl
ci5yZWxlYXNlKCkpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1
cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogfQogCkBAIC0xNDgsMjEgKzE0OCwyMSBAQCBURVNU
KExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVlUmVjdE5vdFByZXNlbnRGb3JPcGFx
dWVMYXllcldpdGhPcGFxdWVQYQogICAgIHBhaW50ZXIgPSBhZG9wdFB0cihuZXcgVGVzdExheWVy
UGFpbnRlckNocm9taXVtKGZpbGxPcGFxdWUpKTsKICAgICB1cGRhdGVyID0gQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHBhaW50ZXIucmVsZWFzZSgpLCBmYWxzZSk7CiAg
ICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0
ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFx
dWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgNDAwLCA0
MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogCiAgICAgb3BhcXVlUmVj
dCA9IEludFJlY3QoKTsKICAgICBwYWludGVyID0gYWRvcHRQdHIobmV3IFRlc3RMYXllclBhaW50
ZXJDaHJvbWl1bShmaWxsT3BhcXVlKSk7CiAgICAgdXBkYXRlciA9IEJpdG1hcFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2UoKSwgZmFsc2Up
OwogICAgIHVwZGF0ZXItPnNldE9wYXF1ZSh0cnVlKTsKLSAgICB1cGRhdGVyLT5wcmVwYXJlVG9V
cGRhdGUoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAm
b3BhcXVlUmVjdCk7CisgICAgdXBkYXRlci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDQw
MCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvcGFxdWVSZWN0KTsKIAogICAgIG9wYXF1
ZVJlY3QgPSBJbnRSZWN0KCk7CiAgICAgcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBUZXN0TGF5ZXJQ
YWludGVyQ2hyb21pdW0oZmlsbE9wYXF1ZSkpOwogICAgIHVwZGF0ZXIgPSBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShwYWludGVyLnJlbGVhc2Uo
KSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwotICAgIHVwZGF0ZXItPnByZXBhcmVU
b1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6ZSg0MDAsIDQwMCksIDAsIDEs
ICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwg
NDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOwogICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1ZVJlY3QpOwogfQogCkBAIC0x
NzcsMjEgKzE3NywyMSBAQCBURVNUKExheWVyVGV4dHVyZVVwZGF0ZXJUZXN0LCB0ZXN0T3BhcXVl
UmVjdE5vdFByZXNlbnRGb3JPcGFxdWVMYXllcldpdGhOb25PcGFxdQogICAgIHBhaW50ZXIgPSBh
ZG9wdFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVw
ZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRlci5y
ZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgdXBk
YXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQw
MCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVudHMo
SW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3BhcXVl
UmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVlUmVj
dCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9wdFB0
cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0ZXIg
PSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUocGFpbnRl
ci5yZWxlYXNlKCksIGZhbHNlKTsKICAgICB1cGRhdGVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAg
dXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXpl
KDQwMCwgNDAwKSwgMCwgMSwgJm9wYXF1ZVJlY3QpOworICAgIHVwZGF0ZXItPnBhaW50Q29udGVu
dHMoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIEludFNpemUoNDAwLCA0MDApLCAwLCAxLCAmb3Bh
cXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb3BhcXVl
UmVjdCk7CiAKICAgICBvcGFxdWVSZWN0ID0gSW50UmVjdCgpOwogICAgIHBhaW50ZXIgPSBhZG9w
dFB0cihuZXcgVGVzdExheWVyUGFpbnRlckNocm9taXVtKGZpbGxBbHBoYSkpOwogICAgIHVwZGF0
ZXIgPSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShwYWludGVyLnJlbGVhc2UoKSk7CiAgICAgdXBkYXRlci0+c2V0T3BhcXVlKHRydWUpOwotICAg
IHVwZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgSW50U2l6
ZSg0MDAsIDQwMCksIDAsIDEsICZvcGFxdWVSZWN0KTsKKyAgICB1cGRhdGVyLT5wYWludENvbnRl
bnRzKEludFJlY3QoMCwgMCwgNDAwLCA0MDApLCBJbnRTaXplKDQwMCwgNDAwKSwgMCwgMSwgJm9w
YXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9wYXF1
ZVJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCA1M2RlNDNhYTIzOTgzYzZmZTY2ZTQ1NDhk
ZDNmZWY5OWJiMWM0ZjkzLi43NzkyYTZmYTU3YWJiMjc1YTRkZDUxNDY0MWM2M2FiODg1ZDczYWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkNDTGF5ZXJU
cmVlVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCIK
ICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1
cmUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgog
I2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKICNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUg
ImNjL0NDVGlsZWRMYXllckltcGwuaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC00
OCwxMCArNTAsOSBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgewogCi1jbGFz
cyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJlQWxsb2NhdG9yIHsKK2NsYXNz
IEZha2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgewogcHVi
bGljOgotICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1
bnNpZ25lZCwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBib29sIHBhcnRpYWwpIHsg
fQogfTsKIAogY2xhc3MgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTsKQEAgLTYxLDIwICs2MiwyMiBA
QCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIqIGxheWVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
ICAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgICAg
ICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAgLCBtX2xheWVyKGxheWVyKQog
ICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCisg
ICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
KSB7IG1fbGF5ZXItPnVwZGF0ZVJlY3QoKTsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgT3du
UHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgICAgIEZha2VMYXllclRleHR1cmVV
cGRhdGVyKiBtX2xheWVyOwogICAgIH07CiAKICAgICBGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
Ci0gICAgICAgIDogbV9wcmVwYXJlQ291bnQoMCkKKyAgICAgICAgOiBtX3BhaW50Q291bnQoMCkK
ICAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCiAgICAgewogICAgIH0KQEAgLTg0LDkgKzg3LDkg
QEAgcHVibGljOgogICAgIC8vIGNhbGwgdG8gcHJlcGFyZVRvVXBkYXRlKCkgdGhlIHJlY3QgaXMg
cmVzZXQuCiAgICAgdm9pZCBzZXRSZWN0VG9JbnZhbGlkYXRlKGNvbnN0IEludFJlY3QmLCBGYWtl
VGlsZWRMYXllckNocm9taXVtKik7CiAKLSAgICAvLyBOdW1iZXIgb2YgdGltZXMgcHJlcGFyZVRv
VXBkYXRlIGhhcyBiZWVuIGludm9rZWQuCi0gICAgaW50IHByZXBhcmVDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlcGFyZUNvdW50OyB9Ci0gICAgdm9pZCBjbGVhclByZXBhcmVDb3VudCgpIHsg
bV9wcmVwYXJlQ291bnQgPSAwOyB9CisgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHBhaW50Q29udGVu
dHMgaGFzIGJlZW4gaW52b2tlZC4KKyAgICBpbnQgcGFpbnRDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFpbnRDb3VudDsgfQorICAgIHZvaWQgY2xlYXJQYWludENvdW50KCkgeyBtX3BhaW50Q291
bnQgPSAwOyB9CiAKICAgICAvLyBOdW1iZXIgb2YgdGltZXMgdXBkYXRlUmVjdCBoYXMgYmVlbiBp
bnZva2VkLgogICAgIGludCB1cGRhdGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlQ291
bnQ7IH0KQEAgLTEwMCwxMCArMTAzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093
blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVN
YW5hZ2VyKiBtYW5hZ2VyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5h
Z2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhl
bEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0pIHsgcmV0dXJuIFNhbXBsZWRUZXhl
bEZvcm1hdFJHQkE7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCog
cmVzdWx0aW5nT3BhcXVlUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRS
ZWN0KiByZXN1bHRpbmdPcGFxdWVSZWN0KTsKIAogcHJpdmF0ZToKLSAgICBpbnQgbV9wcmVwYXJl
Q291bnQ7CisgICAgaW50IG1fcGFpbnRDb3VudDsKICAgICBpbnQgbV91cGRhdGVDb3VudDsKICAg
ICBJbnRSZWN0IG1fcmVjdFRvSW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJl
Y3Q7CkBAIC0xNzAsMTUgKzE3MywyNSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBGbG9hdFJlY3Qm
IGxhc3ROZWVkc0Rpc3BsYXlSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmVlZHNEaXNwbGF5
UmVjdDsgfQogCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHJlY3QpCisg
ICAgeworICAgICAgICBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMocmVjdCk7Cisg
ICAgfQorCiAgICAgRmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIqIGZha2VMYXllclRleHR1cmVVcGRh
dGVyKCkgeyByZXR1cm4gbV9mYWtlVGV4dHVyZVVwZGF0ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0
dXJlTWFuYWdlcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNv
bnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFjZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UgKi8pCiAgICAgewogICAgICAgICBwcmVwYXJlVG9VcGRhdGUodmlzaWJsZUxheWVyUmVjdCgp
KTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAg
IHsKKyAgICAgICAgcGFpbnRDb250ZW50cyh2aXNpYmxlTGF5ZXJSZWN0KCkpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KCkgY29uc3QKICAgICB7CkBAIC0yMTQsOSArMjI3LDkgQEAgdm9pZCBGYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6c2V0UmVjdFRvSW52YWxpZGF0ZShjb25zdCBJbnRSZWN0JiByZWN0LCBGYWtlVGls
ZWQKICAgICBtX2xheWVyID0gbGF5ZXI7CiB9CiAKLXZvaWQgRmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYsIGludCwgZmxvYXQsIEludFJlY3QqIHJlc3VsdGluZ09wYXF1ZVJlY3QpCit2b2lkIEZh
a2VMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCogcmVzdWx0aW5nT3Bh
cXVlUmVjdCkKIHsKLSAgICBtX3ByZXBhcmVDb3VudCsrOworICAgIG1fcGFpbnRDb3VudCsrOwog
ICAgIG1fbGFzdFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKICAgICBpZiAoIW1fcmVjdFRvSW52
YWxpZGF0ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZVJlY3QobV9y
ZWN0VG9JbnZhbGlkYXRlKTsKQEAgLTIzMywxNCArMjQ2LDE0IEBAIFRFU1QoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtlVGV4dHVy
ZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRl
cigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBw
YWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CiAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOworICAgIGxheWVyLT5mb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBib3RoIHRpbGVz
IG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0yNTMsNyArMjY2LDggQEAgVEVTVChUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50
UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIC8vIC4uLi5idXQgdGhlbiBvbmx5IHVwZGF0ZSBv
bmUgb2YgdGhlbS4KICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVy
KTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7Cisg
ICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXIt
PnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBv
bmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2UgdGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRh
dGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTI2OCw4ICsyODIsNyBAQCBURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVy
SW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMCkpKTsKIAotICAgIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFuZGxlciBoYW5kbGVyOwogCiAg
ICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0aCBvbmUg
dmlzaWJsZSB0aWxlIGluIHRoZSBjZW50ZXIuCiAgICAgSW50U2l6ZSBjb250ZW50Qm91bmRzKDUw
MCwgNTAwKTsKQEAgLTI4NSw3ICsyOTgsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5n
IGZvciAzeDMgdGlsZXMgaW4gdGhlIGNlbnRlci4KICAgICBFWFBFQ1RfVFJVRShsYXllci0+bmVl
ZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKIAotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQo
KSk7CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBvbmUgdGlsZSBvbiB0aGUgaW1wbCBzaWRlLgpA
QCAtMjk4LDcgKzMxMSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaElkbGVQ
YWludFRpbGVzKQogICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKHZpc2libGVSZWN0KTsK
ICAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7
CiAgICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZGxlKHZpc2libGVSZWN0KTsKLSAgICAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgICAg
IGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgICAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICB0ZXh0dXJlTWFu
YWdlci0+dW5wcm90ZWN0QWxsVGV4dHVyZXMoKTsKICAgICB9CkBAIC0zMzQsOCArMzQ3LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MCkpKTsKIAotICAgIEZha2VUZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAg
Q0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKKyAgICBGYWtlSGFu
ZGxlciBoYW5kbGVyOwogCiAgICAgLy8gVGhpcyBpbnZhbGlkYXRlcyA5IHRpbGVzIGFuZCB0aGVu
IHBhaW50cyBvbmUgdmlzaWJsZSB0aWxlLgogICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJv
dW5kcyk7CkBAIC0zNDYsNyArMzU4LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBp
ZGxlUGFpbnRPdXRPZk1lbW9yeSkKICAgICAvLyBXZSBzaG91bGQgbmVlZCBpZGxlLXBhaW50aW5n
IGZvciAzeDMgdGlsZXMgc3Vyb3VuZGluZyB2aXNpYmxlIHRpbGUuCiAgICAgRVhQRUNUX1RSVUUo
bGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAKLSAgICBsYXllci0+dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIHRpbGUgb24gdGhlIGlt
cGwgc2lkZS4KQEAgLTM1OSw3ICszNzEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE91dE9mTWVtb3J5KQogICAgIC8vIFdlIHNob3VsZG4ndCBzaWduYWwgd2UgbmVl
ZCBhbm90aGVyIGlkbGUgcGFpbnQgYWZ0ZXIgd2UgcnVuIG91dCBvZiBtZW1vcnkuCiAgICAgRVhQ
RUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwogCi0gICAgbGF5
ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXItPmZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIH0KIApAQCAtMzcwLDE0ICszODIsMTQgQEAgVEVTVChU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7
CiAKLSAgICBGYWtlVGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4
dHVyZVVwZGF0ZXIgdXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIg
aGFuZGxlcjsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZh
bGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMo
SW50U2l6ZSgxMDAsIDIwMCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAs
IDEwMCwgMjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBk
YXRlcik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkp
OworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKICAgICAvLyBXZSBzaG91
bGQgaGF2ZSBib3RoIHRpbGVzIG9uIHRoZSBpbXBsIHNpZGUuCkBAIC0zODYsMjIgKzM5OCwyNCBA
QCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGludmFsaWRhdGVGcm9tUHJlcGFyZSkKIAog
ICAgIHRleHR1cmVNYW5hZ2VyLT51bnByb3RlY3RBbGxUZXh0dXJlcygpOwogCi0gICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZUNvdW50KCk7CisgICAgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUGFpbnRDb3VudCgpOwogICAgIC8v
IEludm9rZSBwcmVwYXJlVG9VcGRhdGUgYWdhaW4uIEFzIHRoZSBsYXllciBpcyB2YWxpZCBwcmVw
YXJlVG9VcGRhdGUgc2hvdWxkbid0IGJlIGludm9rZWQgb24KICAgICAvLyB0aGUgTGF5ZXJUZXh0
dXJlVXBkYXRlci4KICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAw
LCAyMDApKTsKLSAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnBhaW50Q291bnQoKSk7CiAKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QoSW50UmVjdCgwLCAwLCA1MCwgNTApKTsKICAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRy
aWdnZXJzIGludmFsaWRhdGVSZWN0KCkgYmVpbmcgaW52b2tlZCBmcm9tIHByZXBhcmVUb1VwZGF0
ZS4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRvSW52YWxp
ZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwotICAgIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOworICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50Q291bnQoKTsKICAgICBsYXll
ci0+cHJlcGFyZVRvVXBkYXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsK
LSAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJQcmVwYXJlQ291bnQo
KTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7Cisg
ICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wYWludENv
dW50KCkpOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclBhaW50
Q291bnQoKTsKICAgICAvLyBUaGUgbGF5ZXIgc2hvdWxkIHN0aWxsIGJlIGludmFsaWQgYXMgcHJl
cGFyZVRvVXBkYXRlIGludm9rZWQgaW52YWxpZGF0ZS4KICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlKEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgpKTsKKyAgICBsYXllci0+cGFp
bnRDb250ZW50cyhJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSk7CisgICAgRVhQRUNUX0VRKDEsIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wYWludENvdW50KCkpOwogfQogCiBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5k
c0FyZVNjYWxlZCkKQEAgLTQxMiw4ICs0MjYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBPd25Q
dHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0
ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwogICAgIFJlZlB0cjxGYWtlVGlsZWRM
YXllcldpdGhTY2FsZWRCb3VuZHM+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
V2l0aFNjYWxlZEJvdW5kcyh0ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwogCi0gICAgRmFrZVRleHR1
cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9jYXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0
ZXIoJnRleHR1cmVBbGxvY2F0b3IpOworICAgIEZha2VIYW5kbGVyIGhhbmRsZXI7CiAKICAgICBJ
bnRSZWN0IGxheWVyQm91bmRzKDAsIDAsIDMwMCwgMjAwKTsKICAgICBJbnRSZWN0IGNvbnRlbnRC
b3VuZHMoMCwgMCwgMjAwLCAyNTApOwpAQCAtNDI2LDIwICs0MzksMjMgQEAgVEVTVChUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2Fs
ZWQpCiAgICAgLy8gSG93ZXZlciwgaXQgc2hvdWxkIHN0aWxsIGJlIGluIGxheWVyIHNwYWNlLCBu
b3QgY29udGVudCBzcGFjZS4KICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5k
cyk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLSAgICBsYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsKKyAgICBsYXllci0+cGFp
bnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShoYW5kbGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwg
MCwgMzAwLCAzMDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKIAogICAgIC8vIEFmdGVy
IHRoZSB0aWxlcyBhcmUgdXBkYXRlZCBvbmNlLCBhbm90aGVyIGludmFsaWRhdGUgb25seSBuZWVk
cyB0byB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRl
cik7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXIt
PmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgRVhQRUNUX0ZMT0FUX1JF
Q1RfRVEoRmxvYXRSZWN0KGxheWVyQm91bmRzKSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAKICAg
ICAvLyBQYXJ0aWFsIHJlLXBhaW50IHNob3VsZCBhbHNvIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSB1
cGRhdGVSZWN0IGluIGxheWVyIHNwYWNlLCBub3QgY29udGVudCBzcGFjZS4KICAgICBJbnRSZWN0
IHBhcnRpYWxEYW1hZ2UoMzAsIDEwMCwgMTAsIDEwKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJl
Y3QocGFydGlhbERhbWFnZSk7CiAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91
bmRzKTsKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygwLCB1cGRhdGVyKTsK
KyAgICBsYXllci0+cGFpbnRDb250ZW50cyhjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+Zm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9F
UShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxheWVyLT51cGRhdGVSZWN0KCkpOwogfQogCkBA
IC00NTAsOCArNDY2LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZh
bGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDApKSk7CiAKLSAgICBGYWtl
VGV4dHVyZUFsbG9jYXRvciB0ZXh0dXJlQWxsb2NhdG9yOwotICAgIENDVGV4dHVyZVVwZGF0ZXIg
dXBkYXRlcigmdGV4dHVyZUFsbG9jYXRvcik7CisgICAgRmFrZUhhbmRsZXIgaGFuZGxlcjsKIAog
ICAgIC8vIENyZWF0ZSBhIGxheWVyIHdpdGggb25lIHRpbGUuCiAgICAgbGF5ZXItPnNldEJvdW5k
cyhJbnRTaXplKDEwMCwgMTAwKSk7CkBAIC00NjIsNyArNDc3LDggQEAgVEVTVChUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMp
CiAKICAgICAvLyBQdXNoIHRoZSB0aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0aGF0
IHRoZXJlIGlzIGV4YWN0bHkgb25lLgogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KDAsIHVwZGF0ZXIpOworICAgIGxheWVyLT5wYWludENvbnRlbnRzKEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsK
ICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgIEVYUEVD
VF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwpAQCAtNDc2LDcgKzQ5Miw4IEBAIFRFU1QoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFu
Z2VzKQogCiAgICAgLy8gVGhlIGltcGwgc2lkZSBzaG91bGQgZ2V0IDJ4MiB0aWxlcyBub3cuCiAg
ICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7Ci0gICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoMCwgdXBkYXRlcik7CisgICAgbGF5ZXIt
PnBhaW50Q29udGVudHMoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOworICAgIGxheWVyLT5mb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGll
c1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxl
QXQoMCwgMCkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsK
QEAgLTQ4Niw3ICs1MDMsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUlu
dmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAvLyBJbnZhbGlkYXRlIHRo
ZSBlbnRpcmUgbGF5ZXIgYWdhaW4sIGJ1dCBkbyBub3QgcGFpbnQuIEFsbCB0aWxlcyBzaG91bGQg
YmUgZ29uZSBub3cgZnJvbSB0aGUKICAgICAvLyBpbXBsIHNpZGUuCiAgICAgbGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOwotICAgIGxheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKDAsIHVw
ZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwog
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNU
X0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDApKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5
ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwpAQCAtNTIwLDE4ICs1MzcsMTUgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgcm9vdExheWVyLT5p
bnZhbGlkYXRlUmVjdChjb250ZW50UmVjdCk7CiAgICAgY2hpbGRMYXllci0+aW52YWxpZGF0ZVJl
Y3QoY29udGVudFJlY3QpOwogCi0gICAgRmFrZVRleHR1cmVBbGxvY2F0b3IgdGV4dHVyZUFsbG9j
YXRvcjsKLSAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJnRleHR1cmVBbGxvY2F0b3IpOwot
CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5TGltaXQpOworICAgIGNj
TGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOwogCi0gICAgLy8gV2Un
bGwgc2tpcCB0aGUgcm9vdCBsYXllci4KLSAgICBFWFBFQ1RfVFJVRShyb290TGF5ZXItPnNraXBz
RHJhdygpKTsKLSAgICBFWFBFQ1RfRkFMU0UoY2hpbGRMYXllci0+c2tpcHNEcmF3KCkpOworICAg
IEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKKyAgICAvLyBXZSdsbCBza2lw
IHRoZSBjaGlsZCBsYXllci4KKyAgICBFWFBFQ1RfVFJVRShjaGlsZExheWVyLT5za2lwc0RyYXco
KSk7CiAKICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAgICAgdGV4dHVy
ZU1hbmFnZXItPnVucHJvdGVjdEFsbFRleHR1cmVzKCk7IC8vIENDTGF5ZXJUcmVlSG9zdDo6Y29t
bWl0Q29tcGxldGUoKSBub3JtYWxseSBkb2VzIHRoaXMsIGJ1dCBzaW5jZSB3ZSdyZSBtb2NraW5n
IG91dCB0aGUgbWFuYWdlciB3ZSBoYXZlIHRvIGRvIGl0LgpAQCAtNTM5LDYgKzU1Myw3IEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogICAgIC8vIFJl
bW92ZSB0aGUgY2hpbGQgbGF5ZXIuCiAgICAgcm9vdExheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigp
OwogCisgICAgY2NMYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKICAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwogICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNr
aXBzRHJhdygpKTsKIApAQCAtNTcwLDYgKzU4NSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCiAgICAgbGF5ZXItPnNldE9wYXF1
ZSh0cnVlKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRD
b250ZW50cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAg
bGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNTgwLDYg
KzU5Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2Nj
bHVkZWRSZWdpb24pCiAgICAgbGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KGNvbnRlbnRCb3VuZHMpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUo
Y29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7
CiAKICAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRl
ZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKQEAgLTU5MSw2ICs2MDgsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFp
bnRSZWN0KTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CiAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRD
b250ZW50cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAg
bGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNjAwLDYg
KzYxOCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2Nj
bHVkZWRSZWdpb24pCiAgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRp
bmcsIHRoZSBzYW1lIHN0dWZmIHNob3VsZCBiZSBvY2NsdWRlZC4KICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAg
bGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRD
b250ZW50cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAg
bGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNjIyLDYg
KzY0MSw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2Nj
bHVkZWRSZWdpb24pCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9w
YXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRS
ZWN0KDEwLCAxMCwgMSwgMSkpOwogICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJv
dW5kcyk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudEJvdW5kcyk7CiAKICAgICBv
Y2NsdWRlZCA9IFJlZ2lvbigpOwogICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNw
YWNlKG9jY2x1ZGVkKTsKQEAgLTY0MSw2ICs2NjEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uKQogICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsK
ICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKICAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wYWludENvbnRlbnRz
KGNvbnRlbnRCb3VuZHMpOwogCiAgICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKICAgICBsYXllci0+
YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7CkBAIC02NTYsNiArNjc3LDcg
QEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJl
Z2lvbikKICAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLWNvbnRlbnRCb3VuZHMu
d2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwogICAgIGxheWVy
LT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRyYW5zZm9ybSk7CiAgICAgbGF5
ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cGFpbnRDb250
ZW50cyhjb250ZW50Qm91bmRzKTsKIAogICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7CiAgICAgbGF5
ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwpAQCAtNjczLDExICs2
OTUsMzIgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCByZXNpemVUb1NtYWxsZXIpCiAg
ICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDcwMCwgNzAwKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVSZWN0KEludFJlY3QoMCwgMCwgNzAwLCA3MDApKTsKICAgICBsYXllci0+cHJlcGFyZVRv
VXBkYXRlKEludFJlY3QoMCwgMCwgNzAwLCA3MDApKTsKKyAgICBsYXllci0+cGFpbnRDb250ZW50
cyhJbnRSZWN0KDAsIDAsIDcwMCwgNzAwKSk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNp
emUoMjAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAy
MDAsIDIwMCkpOwogfQogCitjbGFzcyBGdWxsVXBkYXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBib29sIHBhcnRpYWwpCisgICAgewor
ICAgICAgICBpZiAocGFydGlhbCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGV4dHVy
ZS0+dXBkYXRlUmVjdCgwLCAwLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgfQorfTsKKwor
Y2xhc3MgUGFydGlhbFVwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
SGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCwgYm9vbCBwYXJ0aWFsKQorICAgIHsKKyAgICAgICAgaWYgKCFw
YXJ0aWFsKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0
KDAsIDAsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB9Cit9OworCiBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogewogICAgIENDU2V0dGluZ3Mgc2V0dGlu
Z3M7CkBAIC02OTcsNTAgKzc0MCw0OCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBh
cnRpYWxVcGRhdGVzKQogICAgIGxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDE1MCwgMTUw
KSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRSZWN0KTsKIAotICAgIEZha2VU
ZXh0dXJlQWxsb2NhdG9yIHRleHR1cmVBbGxvY2F0b3I7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKCZ0ZXh0dXJlQWxsb2NhdG9yKTsKLQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Um9v
dExheWVyKGxheWVyKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRT
aXplKDMwMCwgMjAwKSk7CisgICAgbGF5ZXItPnNldExheWVyVHJlZUhvc3QoY2NMYXllclRyZWVI
b3N0LmdldCgpKTsKKworICAgIEZ1bGxVcGRhdGVIYW5kbGVyIGZ1bGxVcGRhdGVIYW5kbGVyOwor
ICAgIFBhcnRpYWxVcGRhdGVIYW5kbGVyIHBhcnRpYWxVcGRhdGVIYW5kbGVyOwogCiAgICAgLy8g
RnVsbCB1cGRhdGUgb2YgYWxsIDYgdGlsZXMuCi0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Y2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRl
KDAsIDQpOwotICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgRVhQRUNUX1RSVUUodXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QpOworICAgIGxheWVyLT5wYWludENvbnRlbnRz
KGNvbnRlbnRSZWN0KTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShmdWxs
VXBkYXRlSGFuZGxlcik7CisgICAgRVhQRUNUX0VRKDYsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOwot
ICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
Q291bnQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7Cisg
ICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UocGFydGlhbFVwZGF0ZUhhbmRsZXIp
OworICAgIEVYUEVDVF9FUSgwLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlQ291bnQoKSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
VXBkYXRlQ291bnQoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
ICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVzIGFuZCBwYXJ0aWFsIHVwZGF0ZSBvZiAzIHRp
bGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMTUwKSk7
Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY2NMYXllclRyZWVIb3N0LT5jb250ZXh0KCks
IHVwZGF0ZXIpOwotICAgIHVwZGF0ZXIudXBkYXRlKDAsIDQpOworICAgIGNjTGF5ZXJUcmVlSG9z
dC0+cHJlcGFyZVRvVXBkYXRlKCk7CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50
UmVjdCk7CisgICAgbGF5ZXItPnBhaW50Q29udGVudHMoY29udGVudFJlY3QpOworICAgIGxheWVy
LT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGZ1bGxVcGRhdGVIYW5kbGVyKTsKICAgICBFWFBF
Q1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkp
OwotICAgIEVYUEVDVF9UUlVFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAgICB1cGRh
dGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShw
YXJ0aWFsVXBkYXRlSGFuZGxlcik7CiAgICAgRVhQRUNUX0VRKDMsIGxheWVyLT5mYWtlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICBFWFBFQ1RfRkFMU0UodXBkYXRl
ci5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxl
dGUoKTsKIAogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9mIDYgdGlsZXMuCiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwotICAgIGNjTGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGNjTGF5ZXJUcmVlSG9zdC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICB1
cGRhdGVyLnVwZGF0ZSgwLCA0KTsKKyAgICBjY0xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0
ZSgpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudFJlY3QpOworICAgIGxheWVy
LT5wYWludENvbnRlbnRzKGNvbnRlbnRSZWN0KTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShmdWxsVXBkYXRlSGFuZGxlcik7CiAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICBFWFBFQ1RfVFJV
RSh1cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Ci0gICAgdXBkYXRlci51cGRhdGUoMCwgNCk7
CisgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UocGFydGlhbFVwZGF0ZUhhbmRs
ZXIpOwogICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlQ291bnQoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHVwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMo
KSk7CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291
bnQoKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAK
</data>
<flag name="review"
          id="131999"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>