<?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>197002</bug_id>
          
          <creation_ts>2019-04-17 01:57:00 -0700</creation_ts>
          <short_desc>[GTK] Support transient zoom</short_desc>
          <delta_ts>2021-06-15 10:21:09 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>raffaele.tranquillini</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aakash.kapoor</cc>
    
    <cc>achristensen</cc>
    
    <cc>alicem</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>luiz</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
    
    <cc>thorton</cc>
    
    <cc>youennf</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1528055</commentid>
    <comment_count>0</comment_count>
    <who name="">raffaele.tranquillini</who>
    <bug_when>2019-04-17 01:57:00 -0700</bug_when>
    <thetext>Pinch to zoom currently renders content while the gesture is being performed, at every single step, making it laggy on mildly complex pages. The rendering should probably be deferred or triggered in larger zoom &quot;steps&quot; while being combined with cached and scaled previous rendering buffers. Does Safari handle this differently than on Gtk? It looks way smoother even on less powerful CPUs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528153</commentid>
    <comment_count>1</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2019-04-17 10:36:11 -0700</bug_when>
    <thetext>Completely agree.

Safari (well, WebKit on macOS) simply scales a snapshot while the gesture is performed, so it is more smooth, right. And it also uses GPU for rendering AFAIK.

I am going to work on this when I have a bit more free time/energy than I do right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530950</commentid>
    <comment_count>2</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2019-04-27 01:16:15 -0700</bug_when>
    <thetext>I&apos;ve been looking at this, and it&apos;s more complex than I assumed.

At any given time, only the directly visible part of the page is rendered. Which is fine if you&apos;re zoom in, but makes it impossible to just reuse it if you&apos;re zooming out, and you actually need to render the newly shown parts of the page.

Now, this may or may not be problematic wrt performance. While I&apos;m pretty sure it won&apos;t be slower than status quo, it may still be somewhat laggy. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533855</commentid>
    <comment_count>3</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2019-05-07 02:57:57 -0700</bug_when>
    <thetext>Ok, so I got pretty reasonable performance scaling the web page to 1.0 scale and zooming the output on UI process side, then scaling the page to the desired size at the end.

It&apos;s still not perfect, when you&apos;re zooming from non-1.0 scale, it might lag once  at the beginning on certain pages, such as YouTube (where the status quo zooming is basically unusable), but it&apos;s IMO _a lot_ better than what we have now. The zooming itself is predictably perfectly smooth on every page.

Video still plays during the zooming :p It is a bit blurry, but it would be same if you zoom in anyway, now it&apos;s just same when zooming in or out.

I&apos;d still love to find a way to do it without the initial re-scaling, to eliminate the initial lag completely and reduce blur. But honestly, seeing as rendering is very tightly coupled to the viewport, I&apos;m not sure it&apos;s possible without major changes in the rendering :/

Another problem: scrollbars are scaled with the content. Well, that was expected. Maybe I can hide those scrollbars and draw them separately during the gesture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1533896</commentid>
    <comment_count>4</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2019-05-07 06:30:14 -0700</bug_when>
    <thetext>Ugh, and the initial lag is pretty bad on some pages. I need to try again to reuse the page in its current scale, but a different viewport size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636700</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-01 15:44:27 -0700</bug_when>
    <thetext>*** Bug 209858 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636709</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-01 15:57:55 -0700</bug_when>
    <thetext>Sounds like you wrote a lot of code for this that never made it into Bugzilla, yes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636713</commentid>
    <comment_count>7</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-04-01 16:01:01 -0700</bug_when>
    <thetext>Yes, but it was pretty bad and for non-AC mode only. I tried multiple times to make something work without initial page scaling, but wasn&apos;t able to at the end.

Maybe I should give up and be content with 1 page rescale at the beginning if the initial scale ≠ 1 and one at the end if the final scale ≠ 1 like it was in that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636725</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-01 16:18:03 -0700</bug_when>
    <thetext>I think most users will be happy that we have pinch-to-zoom at all. I understand Firefox and Chrome cannot do this. ;)

One thing that has changed since you last worked on WebKit is that WebKitGTK no longer exists AC mode once a process has entered AC mode. There&apos;s no longer much point in doing that now that PSON exists. So since AC mode is now a permanent thing, it does become arguably more important than ever before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636726</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-01 16:18:35 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; WebKitGTK
&gt; no longer exists AC mode once a process has entered AC mode.

I meant: &quot;exits&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636968</commentid>
    <comment_count>10</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-04-02 11:36:56 -0700</bug_when>
    <thetext>My main concern about this method is that if a page takes forever to reload (e.g. paste.gnome.org with a huge paste) _and_ the initial scale ≠ 1, it may take multiple seconds to rescale to 1 before it starts smoothly animating with pinch.

E.g. Safari only does rescale at the end, so mitigates this completely: the gesture is responsive, if there&apos;s lag, it&apos;s after it&apos;s done.

Of course it&apos;s a moot point considering now this multi-second layout is done on every frame, so it&apos;s still an improvement, but...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648140</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-01 16:36:48 -0700</bug_when>
    <thetext>So... I don&apos;t know anything about this, but sounds like doing what Safari does would be good...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648143</commentid>
    <comment_count>12</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-05-01 16:38:33 -0700</bug_when>
    <thetext>What Safari does is impossible, it&apos;s completely different drawing model.

I have a proof of concept code locally using the scaling-to-1.0-and-back approach I described above, but I have flickers when it scales to 1.0 and back, so I need to fix that and I have no idea how.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711618</commentid>
    <comment_count>13</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2020-12-03 00:16:27 -0800</bug_when>
    <thetext>Ok, what I did wouldn&apos;t be nearly enough for 4K screens.

So, I think it&apos;s safe to say it can&apos;t be done in GTK 3 really, we need 4 and then naybe rework the whole drawing to do composition on UI process side, as it is doable in GTK4 unlike 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767423</commentid>
    <comment_count>14</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-07 06:10:45 -0700</bug_when>
    <thetext>Update: I managed to do it for AC mode only: https://twitter.com/alexm_gnome/status/1400578267099324416

Despite what the previous tweet says, it does work on GTK3 as well, though it&apos;s less smooth than on 4. Still way better than status quo though.

However, the non-AC mode is still a problem and everything above applies to it.

One possibility is to use transient zoom for AC mode and the current  real-time one otherwise and call it a day - long term (e.g. in GTK4) we&apos;re always using AC mode anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767717</commentid>
    <comment_count>15</comment_count>
      <attachid>430823</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 02:36:32 -0700</bug_when>
    <thetext>Created attachment 430823
Patch

Patch.

Some questions:

1. The non-AC mode zooming is still slow, I wonder if we should switch to AC mode with ondemand when trying to zoom?

2. We always pass the same flags to flushPendingLayerChanges() with the same condition.
   Maybe it should be a boolean/enum parameter similarly to the `enum class UpdateRenderingType { Normal, TransientZoom }` in `TiledCoreAnimationDrawingArea`?

3. We currently don&apos;t handle AC mode changes during the gesture, and honestly I don&apos;t particularly want to go into that rabbit hole. IIUC if we go with 1., it doesn&apos;t matter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767719</commentid>
    <comment_count>16</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 02:37:13 -0700</bug_when>
    <thetext>The patch depends on the patch from https://bugs.webkit.org/show_bug.cgi?id=212327 and won&apos;t apply without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767720</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-08 02:37:30 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767721</commentid>
    <comment_count>18</comment_count>
      <attachid>430824</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 02:39:33 -0700</bug_when>
    <thetext>Created attachment 430824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767724</commentid>
    <comment_count>19</comment_count>
      <attachid>430826</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 02:58:42 -0700</bug_when>
    <thetext>Created attachment 430826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767726</commentid>
    <comment_count>20</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 03:19:05 -0700</bug_when>
    <thetext>Looks like API tests fail because of network issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767767</commentid>
    <comment_count>21</comment_count>
      <attachid>430826</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-08 07:30:27 -0700</bug_when>
    <thetext>Comment on attachment 430826
Patch

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

LGTM, but I&apos;m afraid we&apos;re going to need to find an owner willing to review this due to extensive changes in cross-platform WK2.

&gt; Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:153
&gt; +#if PLATFORM(GTK)
&gt; +    if (!m_transientZoom)
&gt; +#endif
&gt; +        flags.add(FinalizeRenderingUpdateFlags::ApplyScrollingTreeLayerPositions);

Style nit: don&apos;t do this please, just write it out twice:

#if PLATFORM(GTK)
    if (!m_transientZoom)
        flags.add(FinalizeRenderingUpdateFlags::ApplyScrollingTreeLayerPositions);
#else
    flags.add(FinalizeRenderingUpdateFlags::ApplyScrollingTreeLayerPositions);
#endif

&gt; Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:207
&gt; +#if PLATFORM(GTK)
&gt; +        if (!m_transientZoom)
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767783</commentid>
    <comment_count>22</comment_count>
      <attachid>430844</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 08:08:44 -0700</bug_when>
    <thetext>Created attachment 430844
Patch

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767787</commentid>
    <comment_count>23</comment_count>
      <attachid>430846</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-08 08:46:51 -0700</bug_when>
    <thetext>Created attachment 430846
Patch

Oh oops, the last one didn&apos;t contain the fixes from the first 2 reuploads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769574</commentid>
    <comment_count>24</comment_count>
      <attachid>430846</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-14 15:28:42 -0700</bug_when>
    <thetext>Comment on attachment 430846
Patch

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

The Mac/iOS/shared VGC changes seem fine to me, but final review should come from a GTK person since I can&apos;t speak to those parts.

&gt; Source/WebKit/UIProcess/ViewGestureController.cpp:65
&gt; +static const double minMagnification = 1;
&gt; +static const double maxMagnification = 3;

Maybe you can expose these on the class, so that...

&gt; Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp:67
&gt; +static const double minMagnification = 1;
&gt; +static const double maxMagnification = 3;

... we don&apos;t have to repeat ourselves?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769576</commentid>
    <comment_count>25</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-06-14 15:33:23 -0700</bug_when>
    <thetext>(In reply to Alexander Mikhaylenko from comment #10)
&gt; E.g. Safari only does rescale at the end, so mitigates this completely: the
&gt; gesture is responsive, if there&apos;s lag, it&apos;s after it&apos;s done.

*Some*day I hope we can do something more like iOS, where the zooming zooms painted content, but new tiles come in asynchronously as they are available. Best of both worlds. But right now, we&apos;re a good ways away from that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769742</commentid>
    <comment_count>26</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-06-15 04:04:36 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #25)
&gt; (In reply to Alexander Mikhaylenko from comment #10)
&gt; &gt; E.g. Safari only does rescale at the end, so mitigates this completely: the
&gt; &gt; gesture is responsive, if there&apos;s lag, it&apos;s after it&apos;s done.
&gt; 
&gt; *Some*day I hope we can do something more like iOS, where the zooming zooms
&gt; painted content, but new tiles come in asynchronously as they are available.
&gt; Best of both worlds. But right now, we&apos;re a good ways away from that.

Didn&apos;t the old Qt port use to do that?. As far as I remember they&apos;re compositing in the UI thread so you could do zooming, scrolling, etc even if the WebProcess was busy (I remember stopping it completely with the debugger while pinch zooming).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769746</commentid>
    <comment_count>27</comment_count>
      <attachid>430846</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-15 04:27:38 -0700</bug_when>
    <thetext>Comment on attachment 430846
Patch

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

Thanks Tim!

&gt;&gt; Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp:67
&gt;&gt; +static const double maxMagnification = 3;
&gt; 
&gt; ... we don&apos;t have to repeat ourselves?

(You can move them to the private section of the class declaration.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769753</commentid>
    <comment_count>28</comment_count>
      <attachid>431424</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-15 05:12:16 -0700</bug_when>
    <thetext>Created attachment 431424
Patch

Moved the constants to the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769759</commentid>
    <comment_count>29</comment_count>
      <attachid>431424</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-15 05:42:23 -0700</bug_when>
    <thetext>Comment on attachment 431424
Patch

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

&gt; Source/WebKit/UIProcess/ViewGestureController.h:488
&gt; +    static constexpr double minMagnification { 1 };
&gt; +    static constexpr double maxMagnification { 3 };

I think const will suffice here. You probably don&apos;t need the constexpr?

&gt; Source/WebKit/UIProcess/mac/ViewGestureControllerMac.mm:-54
&gt; -static const double minMagnification = 1;
&gt; -static const double maxMagnification = 3;

OK, EWS is sad. Looks like resistanceForDelta would need to become a static class function, since it uses these but no longer has access to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769760</commentid>
    <comment_count>30</comment_count>
      <attachid>431426</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-15 05:49:57 -0700</bug_when>
    <thetext>Created attachment 431426
Patch

Hopefully fixed macOS build, minMagnification and maxMagnification were used in resistanceForDelta which was a static func. It&apos;s a private method now instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769762</commentid>
    <comment_count>31</comment_count>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-15 05:52:21 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #29)
&gt; I think const will suffice here. You probably don&apos;t need the constexpr?

../../Source/WebKit/UIProcess/ViewGestureController.h:489:25: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double WebKit::ViewGestureController::minMagnification’ of non-integral type [-fpermissive]

&gt; OK, EWS is sad. Looks like resistanceForDelta would need to become a static
&gt; class function, since it uses these but no longer has access to them.

Indeed, missed that. And indeed, it can be static as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769763</commentid>
    <comment_count>32</comment_count>
      <attachid>431428</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-15 05:53:25 -0700</bug_when>
    <thetext>Created attachment 431428
Patch

Made it static too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769765</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-15 05:59:42 -0700</bug_when>
    <thetext>(In reply to Alexander Mikhaylenko from comment #31)
&gt; ../../Source/WebKit/UIProcess/ViewGestureController.h:489:25: error:
&gt; ‘constexpr’ needed for in-class initialization of static data member ‘const
&gt; double WebKit::ViewGestureController::minMagnification’ of non-integral type
&gt; [-fpermissive]

Hm, well today I learned!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769766</commentid>
    <comment_count>34</comment_count>
      <attachid>431428</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-06-15 06:00:51 -0700</bug_when>
    <thetext>Comment on attachment 431428
Patch

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

&gt; Source/WebKit/UIProcess/ViewGestureController.h:294
&gt; +    static double ViewGestureController::resistanceForDelta(double deltaScale, double currentScale) const;

Next build failure is due to the extra qualification, should be:

static double resistanceForDelta(double deltaScale, double currentScale) const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769767</commentid>
    <comment_count>35</comment_count>
      <attachid>431429</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-15 06:09:54 -0700</bug_when>
    <thetext>Created attachment 431429
Patch

Oh whoops, indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769775</commentid>
    <comment_count>36</comment_count>
      <attachid>431431</attachid>
    <who name="Alice Mikhaylenko">alicem</who>
    <bug_when>2021-06-15 06:24:10 -0700</bug_when>
    <thetext>Created attachment 431431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769856</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-15 10:21:03 -0700</bug_when>
    <thetext>Committed r278880 (238823@main): &lt;https://commits.webkit.org/238823@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431431.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430823</attachid>
            <date>2021-06-08 02:36:32 -0700</date>
            <delta_ts>2021-06-08 02:39:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>47523</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAzZTk2MjIzODEzNTI3NzNhMGM5Njg4NzRkODljMjQ3ZmFhODBmMDJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCA4IEp1biAyMDIxIDE0OjI4OjE5ICswNTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgMTAxICsrKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwICAgfCAgMzQgKysrLS0tCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwICAgfCAgMTIgKysKIC4uLi9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oICAgICB8ICAgNSArCiAuLi4vVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAgICAgICAgfCAgNzcgKysrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDMzICsrKystLQogLi4uL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbiAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgIDQgLQogLi4uL2d0ay9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJHdGsuY3BwICAgICAgICAgIHwgIDMyICsrKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA1NyArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKysKIC4uLi9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgICAgICB8ICAxMCArKwogLi4uL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgICAgIHwgMTA0ICsrKysrKysrKysrKysrKysr
LQogLi4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oICAgICAgIHwgIDE5ICsr
KysKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggICB8ICAgNiAr
LQogLi4uL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gICAgICAgICAgIHwgICA4ICst
CiAuLi4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAgfCAgIDQgKy0K
IC4uLi9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCAgICB8ICAgNSArLQog
Li4uL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gIHwgICA0ICstCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgIDIgLQogLi4u
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwICAgICB8ICAgOCAtLQogMjUgZmls
ZXMgY2hhbmdlZCwgNDYwIGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGI5MjlhYTZhM2NiMy4uNmMxMGQ1MjU1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBA
QAorMjAyMS0wNi0wOCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgor
CisgICAgICAgIFtHVEtdIFN1cHBvcnQgdHJhbnNpZW50IHpvb20KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzAwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIHBpbmNoIHpvb20gZm9yIEFD
IG1vZGUuIFJldXNlIHRoZSBzYW1lIGluZnJhc3RydWN0dXJlIGFzIHRoZQorICAgICAgICBtYWNP
UyBpbXBsZW1lbnRhdGlvbi4gTW92ZSB0aGUgc2hhcmVkIGNvZGUgdG8gVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcAorICAgICAgICB3aGVyZSBwb3NzaWJsZS4KKworICAgICAgICBTbGlnaHRseSBh
ZGp1c3QgdGhlIHNoYXJlZCBjb2RlIHRvIHN1cHBvcnQgY2hhbmdpbmcgdGhlIGdlc3R1cmUgb3Jp
Z2luCisgICAgICAgIGR1cmluZyB0aGUgZ2VzdHVyZSBzaW5jZSB3ZSBzdXBwb3J0IGl0IG9uIGJv
dGggdG91Y2hzY3JlZW4gYW5kIHRvdWNocGFkLgorCisgICAgICAgIFRoZXJlJ3Mgbm90IG11Y2gg
d2UgY2FuIGRvIGZvciBub24tQUMgbW9kZSBzbyBqdXN0IGtlZXAgdGhlIGN1cnJlbnQKKyAgICAg
ICAgYmVoYXZpb3IgdGhlcmUsIHdyYXBwaW5nIHJlYWwtdGltZSB6b29tIGludG8gdHJhbnNpZW50
IHpvb20gQVBJIHNvIHRoYXQKKyAgICAgICAgaXQncyBjb25maW5lZCB0byB0aGUgd2ViIHByb2Nl
c3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlWm9vbUVuZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVj
dGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktp
dDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpv
b20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6CisKKyAgICAgICAgU3VwcG9ydCBjaGFuZ2lu
ZyBvcmlnaW4gZHVyaW5nIHRoZSBnZXN0dXJlLCBjYWNoZSB0aGUgcGFnZSBzY2FsZSBmYWN0b3IK
KyAgICAgICAgdG8gYWNjb21tb2RhdGUgbm9uLUFDIG1vZGUgZG9pbmcgcmVhbC10aW1lIHpvb21p
bmcgaW5zdGVhZCBvZiB0cmFuc2llbnQKKyAgICAgICAgem9vbWluZy4KKworICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpw
cmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24gY29uc3QpOgorCisgICAg
ICAgIE1vdmVkIGZyb20gVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tLgorCisgICAgICAgICog
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRN
YWduaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpl
bmRNYWduaWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q2VudGVyRm9yWm9vbUdl
c3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omhh
bmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUpOgorCisgICAgICAgIFNldCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9y
ZSBjYWxsaW5nIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAgTW92ZWQg
dG8gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMpOgorCisgICAgICAgIFdlIG9ubHkgbmVlZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5n
VHJlZUxheWVyUG9zaXRpb25zIGZsYWcgd2hlbiBub3QKKyAgICAgICAgem9vbWluZywgc28gYWRk
IGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3Jk
aW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICBEb24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJl
ZUxheWVyUG9zaXRpb25zIHdoZW4gdHJhbnNpZW50IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpv
b20gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVu
dFpvb21Ub0xheWVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRy
YW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFu
c2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50
Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgQnVpbGQgQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdl
c3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQu
CisKIDIwMjEtMDUtMjQgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLNF0gQWRkIHN1cHBvcnQgZm9yIG5hdmlnYXRpb24gZ2VzdHVyZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKaW5kZXggM2EzZjNlMjVkZGMwLi5lOWNmNzEzNTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0z
MjksOCArMzI5LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2VuZGlm
CiAKICAgICAvLyBUb3VjaCBnZXN0dXJlcyBzdGF0ZQotICAgIGRvdWJsZSBpbml0aWFsWm9vbVNj
YWxlOwotICAgIEludFBvaW50IGluaXRpYWxab29tUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBkcmFn
T2Zmc2V0OwogICAgIGJvb2wgaXNMb25nUHJlc3NlZDsKICAgICBib29sIGlzQmVpbmdEcmFnZ2Vk
OwpAQCAtMTg0OSwxNyArMTg0NywyNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jh
c2VGb2N1cyhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGlyZWN0aW9uVHlwZSBkaXJlYwogICAgIHJl
dHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcykt
PmZvY3VzKHdpZGdldCwgZGlyZWN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2Vab29tQmVnaW4oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudFNl
cXVlbmNlKiBzZXF1ZW5jZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKK3N0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBn
ZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQogewogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIHByaXYtPmluaXRpYWxa
b29tU2NhbGUgPSBwcml2LT5wYWdlUHJveHktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIGlmIChw
cml2LT5wYWdlR3JhYmJlZFRvdWNoKQorICAgICAgICByZXR1cm47CisKKyAgICBndGtfZ2VzdHVy
ZV9zZXRfc3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOworCisgICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgZG91YmxlIHgsIHk7CiAgICAgZ3RrX2dlc3R1cmVfZ2V0X2Jv
dW5kaW5nX2JveF9jZW50ZXIoZ2VzdHVyZSwgJngsICZ5KTsKLSAgICBwcml2LT5wYWdlUHJveHkt
PmdldENlbnRlckZvclpvb21HZXN0dXJlKEludFBvaW50KHgsIHkpLCBwcml2LT5pbml0aWFsWm9v
bVBvaW50KTsKKyAgICBGbG9hdFBvaW50IG9yaWdpbiA9IEZsb2F0UG9pbnQoeCwgeSk7CisKKyAg
ICBjb250cm9sbGVyLT5zZXRNYWduaWZpY2F0aW9uKHNjYWxlLCBvcmlnaW4pOwogfQogCi1zdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgZ2RvdWJsZSBzY2FsZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKK3N0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUVuZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UsIEdka0V2ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQogewog
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2Owog
ICAgIGlmIChwcml2LT5wYWdlR3JhYmJlZFRvdWNoKQpAQCAtMTg2NywxNiArMTg3NCwxMSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZQogCiAgICAgZ3RrX2dlc3R1cmVfc2V0X3N0YXRlKGdlc3R1
cmUsIEdUS19FVkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKIAotICAgIGF1dG8gcGFnZVNjYWxlID0g
Y2xhbXBUbzxkb3VibGU+KHByaXYtPmluaXRpYWxab29tU2NhbGUgKiBzY2FsZSwgMSwgMyk7Ci0K
LSAgICBGbG9hdFBvaW50IHNjYWxlZFpvb21DZW50ZXIocHJpdi0+aW5pdGlhbFpvb21Qb2ludCk7
Ci0gICAgc2NhbGVkWm9vbUNlbnRlci5zY2FsZShwYWdlU2NhbGUpOwotCi0gICAgZG91YmxlIHgs
IHk7Ci0gICAgZ3RrX2dlc3R1cmVfZ2V0X2JvdW5kaW5nX2JveF9jZW50ZXIoZ2VzdHVyZSwgJngs
ICZ5KTsKLSAgICBGbG9hdFBvaW50IHZpZXdQb2ludCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT5zY2FsZVBhZ2UocGFnZVNjYWxl
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoRmxvYXRQb2ludChzY2FsZWRab29tQ2VudGVyIC0g
dmlld1BvaW50KSkpOworICAgIGNvbnRyb2xsZXItPmVuZE1hZ25pZmljYXRpb24oKTsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VUb3VjaExvbmdQcmVzcyhXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIGdkb3VibGUgeCwgZ2RvdWJsZSB5LCBHdGtHZXN0dXJlKikKQEAg
LTIwNTksOCArMjA2MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogICAgIHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwID0gZ3RrX2dl
c3R1cmVfem9vbV9uZXcodmlld1dpZGdldCk7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChH
X09CSkVDVCh2aWV3V2lkZ2V0KSwgIndrLXZpZXctem9vbS1nZXN0dXJlIiwgcHJpdi0+dG91Y2hH
ZXN0dXJlR3JvdXAsIGdfb2JqZWN0X3VucmVmKTsKICNlbmRpZgotICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiYmVnaW4iLCBHX0NBTExCQUNLKHdl
YmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAi
c2NhbGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCks
IHZpZXdXaWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X29i
amVjdChwcml2LT50b3VjaEdlc3R1cmVHcm91cCwgImVuZCIsIEdfQ0FMTEJBQ0sod2Via2l0V2Vi
Vmlld0Jhc2Vab29tRW5kKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOwogCiAjaWYg
VVNFKEdUSzQpCiAgICAgZ2VzdHVyZSA9IGd0a19nZXN0dXJlX2xvbmdfcHJlc3NfbmV3KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDVhNTFiOWVjMWQ2OC4uMDM4ZDllZTJmNDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cApAQCAtMTUyLDYgKzE1MiwxOCBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjpzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wgaXNCYQogI2VuZGlmCiB9
CiAKKyNpZiBQTEFURk9STShHVEspCit2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkanVzdFRyYW5zaWVudFpv
b20oc2NhbGUsIG9yaWdpbikpOworfQorCit2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBv
cmlnaW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkNvbW1pdFRyYW5zaWVu
dFpvb20oc2NhbGUsIG9yaWdpbikpOworfQorI2VuZGlmCisKIHZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlE
LCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIEFTU0VSVF9BUkcoYmFja2lu
Z1N0b3JlU3RhdGVJRCwgYmFja2luZ1N0b3JlU3RhdGVJRCA8PSBtX2N1cnJlbnRCYWNraW5nU3Rv
cmVTdGF0ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCBkNzY5NTA4OGU3Y2YuLmIyM2E0NWZmN2QzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuaApAQCAtNTcsNiArNTcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhaXRGb3JCYWNr
aW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QmFja2lu
Z1N0b3JlSXNEaXNjYXJkYWJsZShib29sKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlm
CisKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgdXBkYXRlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRl
SUQsIGNvbnN0IFVwZGF0ZUluZm8mLCBjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNw
cAppbmRleCBhN2U2ZjBkMTkwMzEuLmIyNjA1NDg5MWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oIgogI2VuZGlmCkBAIC01OSw2
ICs2MCw5IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtSG9yaXpvbnRhbFN3aXBlRGlzdGFu
Y2UgPSAxNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3
aXBlID0gMC41OwogCiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5k
ZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OworCitzdGF0aWMgY29uc3QgZG91YmxlIG1p
bk1hZ25pZmljYXRpb24gPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9u
ID0gMzsKICNlbmRpZgogCiBzdGF0aWMgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2Vz
KCkKQEAgLTY0Niw2ICs2NTAsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVl
c3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdl
U2VuZGVyID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkpIDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwg
ZG91YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdp
bihtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlm
aWNhdGlvbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0
aW9uT3JpZ2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmln
aW4gLSBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAg
d2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkpOworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsK
KyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21h
cnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CiAjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmlj
YXRpb24pKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdN
YWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlm
aWNhdGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01h
Z25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpv
b20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmlj
YXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyNl
bmRpZgorCisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZp
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247
CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGU1MDNhZWZlOTliMi4uNmM4OGMzZWE0ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZp
Y2F0aW9uLAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1f
cGVuZGluZ1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9
CiAKICAgICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25z
dDsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxh
dGZvcm1TY3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgYXBwbHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRp
b25HZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2
ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxs
ZWQpOwogICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9v
bCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCk7CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAg
LTI2MywxNSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUg
c2NhbGUpOwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0U3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAg
ICB2b2lkIHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0
aW9uLCBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0zNTUsMjAgKzM2Mywy
NyBAQCBwcml2YXRlOgogICAgIFBlbmRpbmdTd2lwZVRyYWNrZXIgbV9wZW5kaW5nU3dpcGVUcmFj
a2VyOwogCiAgICAgYm9vbCBtX2hhc091dHN0YW5kaW5nUmVwYWludFJlcXVlc3QgeyBmYWxzZSB9
OwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlv
bjsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKIAorICAg
IGRvdWJsZSBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9pbml0aWFsTWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNjYWxl
ZFRhcmdldFJlY3Q7CiAgICAgYm9vbCBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0
TWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RT
bWFydE1hZ25pZmljYXRpb25PcmlnaW47CisjZW5kaWYKIAorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKICAgICBi
b29sIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Zy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlIHsgZmFsc2UgfTsKKyNlbmRpZgogCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1N3aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcj4g
bV9zd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dp
cGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zd2lwZVNuYXBzaG90TGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KaW5kZXggNmJjNGY5ZGFmOTE2Li5hOGNhYTRkYWY1OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KQEAgLTIyLDExICsyMiwxMiBAQAogCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSkKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
V2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJl
Y3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNj
YWxlKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaWRDb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRCb3VuZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisK
ICAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMmI0MGE2NGQ5NmI0Li4wMDgwZWI5ZDgy
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04OTEsMTAgKzg5
MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25h
bDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotICAg
IHZvaWQgZ2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNl
bnRlckluVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKTsKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJhbWVzQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0
ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0
ZXMpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3Rr
LmNwcAppbmRleCBhN2Y2ZmM2MzllZjguLmE3YTc1M2YwNjY1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAK
QEAgLTYzLDYgKzYzLDkgQEAgc3RhdGljIGNvbnN0IEdza0NvbG9yU3RvcCBzd2lwZU92ZXJsYXlT
aGFkb3dTdG9wc1tdID0gewogfTsKICNlbmRpZgogCitzdGF0aWMgY29uc3QgZG91YmxlIG1pbk1h
Z25pZmljYXRpb24gPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9uID0g
MzsKKwogc3RhdGljIGJvb2wgaXNFdmVudFN0b3AoUGxhdGZvcm1HdGtTY3JvbGxEYXRhKiBldmVu
dCkKIHsKICAgICByZXR1cm4gZXZlbnQtPmlzRW5kOwpAQCAtNjYwLDQgKzY2MywzMyBAQCBib29s
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29tcGxldGVTaW11bGF0ZWRTd2lwZUluRGlyZWN0aW9u
Rm9yVGVzdGluZyhTd2lwZURpcgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6c2V0TWFnbmlmaWNhdGlvbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQg
b3JpZ2luKQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6Tm9uZSB8fCBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFn
bmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVy
ZVR5cGU6Ok5vbmUpIHsKKyAgICAgICAgcHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdp
bik7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRp
bmcgZm9yIHRoZSBEaWRDb2xsZWN0R2VvbWV0cnkgY2FsbGJhY2suCisgICAgaWYgKCFtX3Zpc2li
bGVDb250ZW50UmVjdElzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbGxCZWdpbkdl
c3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIGRvdWJsZSBhYnNv
bHV0ZVNjYWxlID0gc2NhbGUgKiBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIG1fbWFnbmlm
aWNhdGlvbiA9IGNsYW1wVG88ZG91YmxlPihhYnNvbHV0ZVNjYWxlLCBtaW5NYWduaWZpY2F0aW9u
LCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdp
bjsKKworICAgIGFwcGx5TWFnbmlmaWNhdGlvbigpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbigpCit7CisgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1
cmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDVjMGVlZjI3NzZlOC4uMWE3ZmE2
Yjc1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcApAQCAtNzIsMTEgKzcyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0
aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2
aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5W
aWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpCi17Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlKGNlbnRlckluVmll
d0Nvb3JkaW5hdGVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJl
OjpSZXBseShjZW50ZXIpKTsKLX0KLQogYm9vbCBXZWJQYWdlUHJveHk6Om1ha2VHTENvbnRleHRD
dXJyZW50KCkKIHsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VNYWtlR0xDb250ZXh0Q3Vy
cmVudChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDAwYTNkMzA0YWE4Zi4uMDA1NGVlNTA0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTExMCwy
MyArMTEwLDYgQEAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRlbHRh
U2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCiAgICAgcmV0dXJuIHJlc2lzdGFuY2U7CiB9CiAK
LUZsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCi17Ci0gICAgRmxvYXRQb2ludCBz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7Ci0gICAgc2NhbGVkTWFnbmlmaWNhdGlv
bk9yaWdpbi5tb3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7Ci0gICAgZmxv
YXQgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAvIG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLnNjYWxl
KG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7Ci0gICAgcmV0dXJuIHNjYWxlZE1hZ25pZmljYXRp
b25PcmlnaW47Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0
LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQotewotICAgIHdpbGxCZWdp
bkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsKLSAgICBtX3Zpc2libGVDb250ZW50UmVj
dElzVmFsaWQgPSB0cnVlOwotICAgIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUg
PSBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Omdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAq
ZXZlbnQsIEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIGlmIChldmVudC50eXBlID09IE5TRXZl
bnRUeXBlTWFnbmlmeSkKQEAgLTE0NCw5ICsxMjcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxv
YQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBm
aXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3Qg
aGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCi0gICAgICAgIG1fbWFnbmlmaWNh
dGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBh
Z2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xs
ZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKLSAgICAgICAgbV9sYXN0TWFn
bmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CiAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE2NSwzNSArMTQ2LDEyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpo
YW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAKICAg
ICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CiAKLSAgICBpZiAobV9mcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdl
KG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG9yaWdpbikpOwotICAgIGVsc2UKLSAg
ICAgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbSht
X21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luLCBtX21hZ25p
ZmljYXRpb24pKTsKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGlmIChldmVudC5w
aGFzZSA9PSBOU0V2ZW50UGhhc2VFbmRlZCB8fCBldmVudC5waGFzZSA9PSBOU0V2ZW50UGhhc2VD
YW5jZWxsZWQpCiAgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiB9CiAKLXZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi17Ci0gICAg
aWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgbmV3TWFnbmlmaWNhdGlvbiA9IHN0ZDo6
bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlvbiksIG1heE1hZ25p
ZmljYXRpb24pOwotCi0gICAgaWYgKG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUp
Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LnNjYWxlUGFnZShuZXdNYWduaWZpY2F0aW9uLCByb3Vu
ZGVkSW50UG9pbnQobV9tYWduaWZpY2F0aW9uT3JpZ2luKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKSkKLSAg
ICAgICAgICAgIGRyYXdpbmdBcmVhLT5jb21taXRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRp
b24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdN
YWduaWZpY2F0aW9uKSk7Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKTsKLQotICAgIGRpZEVuZEdlc3R1cmUoKTsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7
CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQpA
QCAtMjU1LDYgKzIxMyw5IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0CiAgICAgRmxvYXRQb2lu
dCB0YXJnZXRPcmlnaW4odmlzaWJsZUNvbnRlbnRSZWN0LmNlbnRlcigpKTsKICAgICB0YXJnZXRP
cmlnaW4ubW92ZUJ5KC10YXJnZXRSZWN0LmNlbnRlcigpKTsKIAorICAgIG1faW5pdGlhbE1hZ25p
ZmljYXRpb25TY2FsZSA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1f
aW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4gPSBGbG9hdFBvaW50KCk7CisKICAgICBtX3dlYlBh
Z2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQo
KSwgbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94
eS5kcmF3aW5nQXJlYSgpLT5jb21taXRUcmFuc2llbnRab29tKHRhcmdldE1hZ25pZmljYXRpb24s
IHRhcmdldE9yaWdpbik7CiAKQEAgLTY1NSwxNCArNjE2LDYgQEAgdm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OnJlc2V0KCkKICAgICByZXNldFN0YXRlKCk7CiB9CiAKLWRvdWJsZSBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdAotewotICAgIGlmIChtX2FjdGl2
ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKLSAgICAgICAg
cmV0dXJuIG1fbWFnbmlmaWNhdGlvbjsKLQotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdl
U2NhbGVGYWN0b3IoKTsKLX0KLQogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU2lt
dWxhdGVkU3dpcGVJbkRpcmVjdGlvbkZvclRlc3RpbmcoU3dpcGVEaXJlY3Rpb24pCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDY4ZTM2OTE5ZmM3Zi4uNTE1M2E3OWYyZTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnNp
emVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICBub3RpZnlGbHVzaFJlcXVp
cmVkKG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQorYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlRmxhZ3M+IGZsYWdzKQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHByb3RlY3RvcihtX2lz
Rmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIGlm
IChtX292ZXJsYXlDb21wb3NpdGluZ0xheWVyKQogICAgICAgICBtX292ZXJsYXlDb21wb3NpdGlu
Z0xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9y
b290TGF5ZXItPnNpemUoKSkpOwogCi0gICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KHsgRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQ
b3NpdGlvbnMgfSk7CisgICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKGZsYWdzKTsK
IAogICAgIGF1dG8mIGNvb3JkaW5hdGVkTGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI+KCptX3Jvb3RMYXllcik7CiAgICAgY29vcmRpbmF0ZWRMYXllci51cGRhdGVDb250
ZW50QnVmZmVyc0luY2x1ZGluZ1N1YkxheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBjM2FhZTlkZjNiYzguLmExODIy
MTdiNjk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JjZUZy
YW1lU3luYygpIHsgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOyB9CiAKLSAgICBib29sIGZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
KE9wdGlvblNldDxXZWJDb3JlOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFncyk7
CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSgpIHsgcmV0dXJu
IG1fc3RhdGU7IH0KIAogICAgIHZvaWQgc3luY0Rpc3BsYXlTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCmluZGV4IGJjNmQ5MzdiZDYyYy4uNGEwODcyMzVlN2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC00ODMsNiArNDgzLDQ0IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzOjpkaWRVcGRhdGUoKQogICAgIGRpc3BsYXlUaW1lckZpcmVkKCk7CiB9CiAKKyNpZiBQ
TEFURk9STShHVEspCit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlm
ICghbV90cmFuc2llbnRab29tKSB7CisgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1f
d2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7CisgICAgICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29u
dGVudFJlY3QgPSBmcmFtZVZpZXcudW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xs
YmFycygpOworCisgICAgICAgIG1fdHJhbnNpZW50Wm9vbSA9IHRydWU7CisgICAgICAgIG1fdHJh
bnNpZW50Wm9vbUluaXRpYWxPcmlnaW4gPSB1bm9ic2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24o
KTsKKyAgICB9CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+YWRqdXN0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFdlIGNhbid0IGRvIHRyYW5zaWVudCB6b29tIGZvciBub24t
QUMgbW9kZSwgc28ganVzdCB6b29tIGluIHBsYWNlIGluc3RlYWQuCisKKyAgICBGbG9hdFBvaW50
IHVuc2Nyb2xsZWRPcmlnaW4ob3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgt
bV90cmFuc2llbnRab29tSW5pdGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdl
KHNjYWxlIC8gbV93ZWJQYWdlLnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVu
c2Nyb2xsZWRPcmlnaW4pKTsKK30KKwordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikK
K3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNv
bW1pdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbik7CisKKyAgICBGbG9hdFBvaW50IHVuc2Ny
b2xsZWRPcmlnaW4ob3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFu
c2llbnRab29tSW5pdGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxl
IC8gbV93ZWJQYWdlLnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xs
ZWRPcmlnaW4pKTsKKworICAgIG1fdHJhbnNpZW50Wm9vbSA9IGZhbHNlOworfQorI2VuZGlmCisK
IHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZW5kRGlkVXBkYXRlQmFja2lu
Z1N0b3JlU3RhdGUoKQogewogICAgIEFTU0VSVCghbV9pc1dhaXRpbmdGb3JEaWRVcGRhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmgKaW5kZXggYjE5NTlkMDQwZTIxLi44NTY1NjgzYjc4NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuaApAQCAtODQsNiArODQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUJh
Y2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9u
ZEltbWVkaWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRVcGRhdGUoKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2
b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlmCisKICAg
ICB2b2lkIHNlbmREaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpOwogCiAgICAgdm9pZCBleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVTb29uKCk7CkBAIC0xNTAsNiArMTU1LDExIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2ZvcmNlUmVwYWludEFmdGVyQmFja2luZ1N0b3JlU3RhdGVVcGRh
dGUgeyBmYWxzZSB9OwogCiAgICAgUnVuTG9vcDo6VGltZXI8RHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzPiBtX2Rpc3BsYXlUaW1lcjsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29s
IG1fdHJhbnNpZW50Wm9vbSB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3Ry
YW5zaWVudFpvb21Jbml0aWFsT3JpZ2luOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQw
N2Y0ZjNmYjFmYy4uZTAxN2M0MDNiYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CiAKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorCiAjaWYgVVNFKEdMSUJfRVZF
TlRfTE9PUCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNl
bmRpZgpAQCAtMTQ0LDcgKzE0NiwyMCBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hU
aW1lckZpcmVkKCkKICAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjaykKICAgICAg
ICAgbV9jb29yZGluYXRvci5mb3JjZUZyYW1lU3luYygpOwogCi0gICAgYm9vbCBkaWRTeW5jID0g
bV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBPcHRpb25TZXQ8
RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3M7CisjaWYgUExBVEZPUk0oR1RLKQor
ICAgIGlmICghbV90cmFuc2llbnRab29tKQorI2VuZGlmCisgICAgICAgIGZsYWdzLmFkZChGaW5h
bGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9u
cyk7CisKKyAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcyhmbGFncyk7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gSWYgd2UgaGF2ZSBh
biBhY3RpdmUgdHJhbnNpZW50IHpvb20sIHdlIHdhbnQgdGhlIHpvb20gdG8gd2luIG92ZXIgYW55
IGNoYW5nZXMKKyAgICAvLyB0aGF0IFdlYkNvcmUgbWFrZXMgdG8gdGhlIHJlbGV2YW50IGxheWVy
cywgc28gcmUtYXBwbHkgb3VyIGNoYW5nZXMgYWZ0ZXIgZmx1c2hpbmcuCisgICAgaWYgKG1fdHJh
bnNpZW50Wm9vbSkKKyAgICAgICAgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2ll
bnRab29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7CisjZW5kaWYKIAogICAgIGlmICht
X25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCAmJiBkaWRTeW5jKSB7CiAgICAgICAgIG1f
d2ViUGFnZS5kcmF3aW5nQXJlYSgpLT5sYXllckhvc3REaWRGbHVzaExheWVycygpOwpAQCAtMTg1
LDggKzIwMCwxNiBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCiAgICAgLy8g
V2UgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhlcndpc2UgdGhlIGZvcmNlZCBw
YWludCBtaWdodCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVzaC4KICAgICBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKIAotICAgIGlmICghbV9pc1dhaXRpbmdGb3JSZW5kZXJlcikKLSAgICAgICAg
bV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBpZiAoIW1faXNX
YWl0aW5nRm9yUmVuZGVyZXIpIHsKKyAgICAgICAgT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5n
VXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgaWYgKCFtX3Ry
YW5zaWVudFpvb20pCisjZW5kaWYKKyAgICAgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisKKyAg
ICAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoZmxhZ3MpOworICAg
IH0KKwogICAgIG1fY29tcG9zaXRvci0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKQEAgLTQyNiw2ICs0
NDksODEgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoYm9vbCBmb3JjZVJl
cGFpbnQpCiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oR1RLKQorRmxvYXRQb2ludCBMYXllclRy
ZWVIb3N0Ojpjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRvdWJsZSBzY2FsZSwgRmxvYXRQ
b2ludCBvcmlnaW4pIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbV93ZWJQ
YWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0g
ZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKKworICAg
IEZsb2F0UG9pbnQgY29uc3RyYWluZWRPcmlnaW4gPSB2aXNpYmxlQ29udGVudFJlY3QubG9jYXRp
b24oKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLW9yaWdpbik7CisKKyAgICBJbnRT
aXplIHNjYWxlZFRvdGFsQ29udGVudHNTaXplID0gZnJhbWVWaWV3LnRvdGFsQ29udGVudHNTaXpl
KCk7CisgICAgc2NhbGVkVG90YWxDb250ZW50c1NpemUuc2NhbGUoc2NhbGUgKiBtX3dlYlBhZ2Uu
dmlld1NjYWxlRmFjdG9yKCkgLyBtX3dlYlBhZ2UudG90YWxTY2FsZUZhY3RvcigpKTsKKworICAg
IC8vIFNjYWxpbmcgbWF5IGhhdmUgZXhwb3NlZCB0aGUgb3ZlcmhhbmcgYXJlYSwgc28gd2UgbmVl
ZCB0byBjb25zdHJhaW4gdGhlIGZpbmFsCisgICAgLy8gbGF5ZXIgcG9zaXRpb24gZXhhY3RseSBs
aWtlIHNjcm9sbGluZyB3aWxsIG9uY2UgaXQncyBjb21taXR0ZWQsIHRvIGVuc3VyZSB0aGF0Cisg
ICAgLy8gc2Nyb2xsaW5nIGRvZXNuJ3QgbWFrZSB0aGUgdmlldyBqdW1wLgorICAgIGNvbnN0cmFp
bmVkT3JpZ2luID0gU2Nyb2xsYWJsZUFyZWE6OmNvbnN0cmFpblNjcm9sbFBvc2l0aW9uRm9yT3Zl
cmhhbmcocm91bmRlZEludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KSwKKyAgICAgICAgc2NhbGVk
VG90YWxDb250ZW50c1NpemUsIHJvdW5kZWRJbnRQb2ludChjb25zdHJhaW5lZE9yaWdpbiksIGZy
YW1lVmlldy5zY3JvbGxPcmlnaW4oKSwKKyAgICAgICAgZnJhbWVWaWV3LmhlYWRlckhlaWdodCgp
LCBmcmFtZVZpZXcuZm9vdGVySGVpZ2h0KCkpOworICAgIGNvbnN0cmFpbmVkT3JpZ2luLm1vdmVC
eSgtdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGNvbnN0cmFpbmVkT3JpZ2lu
ID0gLWNvbnN0cmFpbmVkT3JpZ2luOworCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkT3JpZ2luOwor
fQorCitDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZUhvc3Q6OmxheWVyRm9yVHJh
bnNpZW50Wm9vbSgpIGNvbnN0Cit7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiByZW5kZXJWaWV3
QmFja2luZyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKS0+bGF5ZXIo
KS0+YmFja2luZygpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRzQ29udGFpbm1l
bnRMYXllciA9IHJlbmRlclZpZXdCYWNraW5nLT5jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIoKSkK
KyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpjb250
ZW50c0NvbnRhaW5tZW50TGF5ZXIpOworCisgICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI+KCpyZW5kZXJWaWV3QmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsKK30K
Kwordm9pZCBMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyhkb3VibGUg
c2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBTY3JvbGxiYXJzIHNo
b3VsZCBzdGF5IGluLXBsYWNlIGFuZCBjaGFuZ2UgaGVpZ2h0IHdoaWxlIHpvb21pbmcuCisgICAg
RmxvYXRQb2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IGNvbnN0cmFpblRyYW5zaWVudFpvb21Pcmln
aW4oc2NhbGUsIG9yaWdpbik7CisgICAgYXV0byogem9vbUxheWVyID0gbGF5ZXJGb3JUcmFuc2ll
bnRab29tKCk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgdHJh
bnNmb3JtLnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2lu
LnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgIHpvb21MYXllci0+c2V0
VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgem9vbUxheWVyLT5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50M0QoKSk7CisgICAgem9vbUxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOwor
fQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBtX3RyYW5zaWVudFpvb20gPSB0cnVlOworICAg
IG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7CisgICAgbV90cmFuc2llbnRab29tT3JpZ2lu
ID0gb3JpZ2luOworCisgICAgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2llbnRa
b29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9z
dDo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQor
eworICAgIGlmIChtX3RyYW5zaWVudFpvb21TY2FsZSA9PSBzY2FsZSkgeworICAgICAgICAvLyBJ
ZiB0aGUgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgc2NhbGUsIHNldFBhZ2VTY2Fs
ZUZhY3RvcigpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgICAgICAvLyBhbmQgbm90IGFwcGx5IHRo
ZSB0cmFuc2Zvcm0sIHNvIHdlIGNhbid0IGRlcGVuZCBvbiBpdCB0byBkbyBzby4KKyAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZmluYWxUcmFuc2Zvcm07CisgICAgICAgIGZpbmFsVHJhbnNm
b3JtLnNjYWxlKHNjYWxlKTsKKworICAgICAgICBsYXllckZvclRyYW5zaWVudFpvb20oKS0+c2V0
VHJhbnNmb3JtKGZpbmFsVHJhbnNmb3JtKTsKKyAgICB9CisKKyAgICBtX3RyYW5zaWVudFpvb20g
PSBmYWxzZTsKKyAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9IDE7CisgICAgbV90cmFuc2llbnRa
b29tT3JpZ2luID0gRmxvYXRQb2ludCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAppbmRleCBkYjY1ZjgxMzI2N2QuLjQ5NDMzOTNhMmMz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKQEAgLTM4LDYgKzM4
LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRl
IDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oPgorI2VuZGlmCiAKICNpZiBVU0Uo
R1JBUEhJQ1NfTEFZRVJfVEVYVFVSRV9NQVBQRVIpCiAKQEAgLTk4LDYgKzEwMSwxMCBAQCBwdWJs
aWM6CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQgYWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZvaWQg
Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2VuZGlm
CiBwcml2YXRlOgogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIGxheWVy
Rmx1c2hUaW1lckZpcmVkKCk7CkBAIC0xMjAsNiArMTI3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAgICAgdm9pZCBoYW5kbGVE
aXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoYm9vbCk7CiAKKyNpZiBQTEFURk9STShHVEspCisg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRvdWJs
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCkgY29uc3Q7CisgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKiBsYXllckZvclRyYW5zaWVudFpvb20oKSBjb25zdDsKKyAgICB2b2lkIGFw
cGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7Cisj
ZW5kaWYKKwogICAgIGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhyZWFk
ZWRDb21wb3NpdG9yOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
cjo6Q2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXBvc2l0b3JDbGll
bnQpOwogICAgIHB1YmxpYzoKQEAgLTIwMCw2ICsyMTMsMTIgQEAgcHJpdmF0ZToKICAgICBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yIG1fY29vcmRpbmF0b3I7CiAjZW5kaWYgLy8gVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogICAgIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlE
OworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV90cmFuc2llbnRab29tIHsgZmFsc2Ug
fTsKKyAgICBkb3VibGUgbV90cmFuc2llbnRab29tU2NhbGUgeyAxIH07CisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21PcmlnaW47CisjZW5kaWYKIH07CiAKICNpZiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggYmRjM2RiZWU3ZTU4Li43NDc3MWVjNDBjY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTgy
LDEwICsxODIsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgeyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExB
VEZPUk0oR1RLKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBj
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJL
aXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCiAgICAg
Ym9vbCBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgppbmRleCBhOGZmNGY1YTc5NDcuLjlkNWY2ZGNhNmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAg
LTM0LDEyICszNCwxNCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsK
ICAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIAotICAgIEFkanVz
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikK
LSAgICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pCi0gICAgCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRf
dCBsYXllcklELCBTdHJpbmcga2V5LCBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSkKICAgICBBY2Nl
bGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5KQogICAg
IAogICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyAg
ICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pCisgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwCmluZGV4IDNmZGRlYjgwNDVlMi4uMjk0ZmRmNDFmYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTQgQEAgdm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlTWluaW11bUFuZE1heGltdW1WaWV3cG9ydFNjYWxlcyhk
b3VibGUKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0
cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiB7CiAgICAgRmxvYXRSZWN0IHZpc2libGVDb250
ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVj
dEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKICAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLmhhbmRsZXNQYWdlU2NhbGVHZXN0
dXJlKCk7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNvbnRl
bnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwogfQotI2VuZGlmCiAK
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6c2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6
ZSkKIHsKICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gc2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBmN2Y5OThhYWMwMTYuLjhjMjE2YjYw
ZjkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtNTYsMTAgKzU2LDkgQEAg
cHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgY29sbGVjdEdlb21l
dHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bik7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpOwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworCiAgICAg
dm9pZCBzZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCk7CiAg
ICAgdm9pZCBzZW5kRGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGRJZk5lZWRlZCgpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgppbmRl
eCBjMTMzNWZiMmE0YTUuLmRkMmNmNDUyZDFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yNSwxMSArMjUsOSBAQCBtZXNzYWdlcyAtPiBW
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIE5vdFJlZkNvdW50ZWQgewogICAgIENvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi0jZW5k
aWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNldFJlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmNWNkN2VlMDkzM2MuLjAxN2Zl
MDM0ZjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtODg5LDggKzg4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbGxhcHNlU2VsZWN0aW9uSW5G
cmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2hvd0Vtb2ppUGlja2Vy
KFdlYkNvcmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldENlbnRlckZvclpvb21HZXN0dXJlKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCYmKT4mJik7Ci0KICAgICB2b2lkIHRoZW1l
RGlkQ2hhbmdlKFN0cmluZyYmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4M2ZlNTViMGM0MDQu
LjI3MDQ4MzZlZmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MzAsOCArNDMwLDYgQEAgR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBDb2xsYXBzZVNlbGVjdGlvbklu
RnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCi0KLSAgICBHZXRDZW50ZXJG
b3Jab29tR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBjZW50ZXJJblZpZXdDb29yZGluYXRlcykg
LT4gKFdlYkNvcmU6OkludFBvaW50IGNlbnRlcikgU3luY2hyb25vdXMKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggZWRiOWQ0NDFiNTdmLi5jY2NkOGNhMTkzNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0
ay5jcHAKQEAgLTE1OCwxNCArMTU4LDYgQEAgT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3Rp
Y3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVAKICAgICBy
ZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRp
bmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UG9pbnQmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCi17Ci0gICAgSW50UG9pbnQgcmVzdWx0ID0gbWFpbkZyYW1lVmlldygp
LT5yb290Vmlld1RvQ29udGVudHMoY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpOwotICAgIGRvdWJs
ZSBzY2FsZSA9IG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgcmVzdWx0LnNjYWxlKDEg
LyBzY2FsZSwgMSAvIHNjYWxlKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3Vs
dCkpOwotfQotCiB2b2lkIFdlYlBhZ2U6OmNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKLS0gCjIuMzEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430824</attachid>
            <date>2021-06-08 02:39:33 -0700</date>
            <delta_ts>2021-06-08 03:18:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>47517</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAzZTk2MjIzODEzNTI3NzNhMGM5Njg4NzRkODljMjQ3ZmFhODBmMDJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCA4IEp1biAyMDIxIDE0OjI4OjE5ICswNTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgMTAxICsrKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwICAgfCAgMzQgKysrLS0tCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwICAgfCAgMTIgKysKIC4uLi9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oICAgICB8ICAgNSArCiAuLi4vVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAgICAgICAgfCAgNzcgKysrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDMzICsrKystLQogLi4uL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbiAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgIDQgLQogLi4uL2d0ay9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJHdGsuY3BwICAgICAgICAgIHwgIDMyICsrKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA1NyArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKysKIC4uLi9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgICAgICB8ICAxMCArKwogLi4uL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgICAgIHwgMTA0ICsrKysrKysrKysrKysrKysr
LQogLi4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oICAgICAgIHwgIDE5ICsr
KysKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggICB8ICAgNiAr
LQogLi4uL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gICAgICAgICAgIHwgICA4ICst
CiAuLi4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAgfCAgIDQgKy0K
IC4uLi9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCAgICB8ICAgNSArLQog
Li4uL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gIHwgICA0ICstCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgIDIgLQogLi4u
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwICAgICB8ICAgOCAtLQogMjUgZmls
ZXMgY2hhbmdlZCwgNDYwIGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGI5MjlhYTZhM2NiMy4uNmMxMGQ1MjU1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBA
QAorMjAyMS0wNi0wOCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgor
CisgICAgICAgIFtHVEtdIFN1cHBvcnQgdHJhbnNpZW50IHpvb20KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzAwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIHBpbmNoIHpvb20gZm9yIEFD
IG1vZGUuIFJldXNlIHRoZSBzYW1lIGluZnJhc3RydWN0dXJlIGFzIHRoZQorICAgICAgICBtYWNP
UyBpbXBsZW1lbnRhdGlvbi4gTW92ZSB0aGUgc2hhcmVkIGNvZGUgdG8gVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcAorICAgICAgICB3aGVyZSBwb3NzaWJsZS4KKworICAgICAgICBTbGlnaHRseSBh
ZGp1c3QgdGhlIHNoYXJlZCBjb2RlIHRvIHN1cHBvcnQgY2hhbmdpbmcgdGhlIGdlc3R1cmUgb3Jp
Z2luCisgICAgICAgIGR1cmluZyB0aGUgZ2VzdHVyZSBzaW5jZSB3ZSBzdXBwb3J0IGl0IG9uIGJv
dGggdG91Y2hzY3JlZW4gYW5kIHRvdWNocGFkLgorCisgICAgICAgIFRoZXJlJ3Mgbm90IG11Y2gg
d2UgY2FuIGRvIGZvciBub24tQUMgbW9kZSBzbyBqdXN0IGtlZXAgdGhlIGN1cnJlbnQKKyAgICAg
ICAgYmVoYXZpb3IgdGhlcmUsIHdyYXBwaW5nIHJlYWwtdGltZSB6b29tIGludG8gdHJhbnNpZW50
IHpvb20gQVBJIHNvIHRoYXQKKyAgICAgICAgaXQncyBjb25maW5lZCB0byB0aGUgd2ViIHByb2Nl
c3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlWm9vbUVuZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVj
dGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktp
dDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpv
b20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6CisKKyAgICAgICAgU3VwcG9ydCBjaGFuZ2lu
ZyBvcmlnaW4gZHVyaW5nIHRoZSBnZXN0dXJlLCBjYWNoZSB0aGUgcGFnZSBzY2FsZSBmYWN0b3IK
KyAgICAgICAgdG8gYWNjb21tb2RhdGUgbm9uLUFDIG1vZGUgZG9pbmcgcmVhbC10aW1lIHpvb21p
bmcgaW5zdGVhZCBvZiB0cmFuc2llbnQKKyAgICAgICAgem9vbWluZy4KKworICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpw
cmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24gY29uc3QpOgorCisgICAg
ICAgIE1vdmVkIGZyb20gVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tLgorCisgICAgICAgICog
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRN
YWduaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpl
bmRNYWduaWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q2VudGVyRm9yWm9vbUdl
c3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omhh
bmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUpOgorCisgICAgICAgIFNldCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9y
ZSBjYWxsaW5nIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAgTW92ZWQg
dG8gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMpOgorCisgICAgICAgIFdlIG9ubHkgbmVlZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5n
VHJlZUxheWVyUG9zaXRpb25zIGZsYWcgd2hlbiBub3QKKyAgICAgICAgem9vbWluZywgc28gYWRk
IGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3Jk
aW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICBEb24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJl
ZUxheWVyUG9zaXRpb25zIHdoZW4gdHJhbnNpZW50IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpv
b20gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVu
dFpvb21Ub0xheWVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRy
YW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFu
c2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50
Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgQnVpbGQgQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdl
c3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQu
CisKIDIwMjEtMDUtMjQgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLNF0gQWRkIHN1cHBvcnQgZm9yIG5hdmlnYXRpb24gZ2VzdHVyZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKaW5kZXggM2EzZjNlMjVkZGMwLi5lOWNmNzEzNTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0z
MjksOCArMzI5LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2VuZGlm
CiAKICAgICAvLyBUb3VjaCBnZXN0dXJlcyBzdGF0ZQotICAgIGRvdWJsZSBpbml0aWFsWm9vbVNj
YWxlOwotICAgIEludFBvaW50IGluaXRpYWxab29tUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBkcmFn
T2Zmc2V0OwogICAgIGJvb2wgaXNMb25nUHJlc3NlZDsKICAgICBib29sIGlzQmVpbmdEcmFnZ2Vk
OwpAQCAtMTg0OSwxNyArMTg0NywyNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jh
c2VGb2N1cyhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGlyZWN0aW9uVHlwZSBkaXJlYwogICAgIHJl
dHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcykt
PmZvY3VzKHdpZGdldCwgZGlyZWN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2Vab29tQmVnaW4oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudFNl
cXVlbmNlKiBzZXF1ZW5jZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKK3N0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBn
ZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQogewogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIHByaXYtPmluaXRpYWxa
b29tU2NhbGUgPSBwcml2LT5wYWdlUHJveHktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIGlmIChw
cml2LT5wYWdlR3JhYmJlZFRvdWNoKQorICAgICAgICByZXR1cm47CisKKyAgICBndGtfZ2VzdHVy
ZV9zZXRfc3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOworCisgICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgZG91YmxlIHgsIHk7CiAgICAgZ3RrX2dlc3R1cmVfZ2V0X2Jv
dW5kaW5nX2JveF9jZW50ZXIoZ2VzdHVyZSwgJngsICZ5KTsKLSAgICBwcml2LT5wYWdlUHJveHkt
PmdldENlbnRlckZvclpvb21HZXN0dXJlKEludFBvaW50KHgsIHkpLCBwcml2LT5pbml0aWFsWm9v
bVBvaW50KTsKKyAgICBGbG9hdFBvaW50IG9yaWdpbiA9IEZsb2F0UG9pbnQoeCwgeSk7CisKKyAg
ICBjb250cm9sbGVyLT5zZXRNYWduaWZpY2F0aW9uKHNjYWxlLCBvcmlnaW4pOwogfQogCi1zdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgZ2RvdWJsZSBzY2FsZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKK3N0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUVuZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UsIEdka0V2ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQogewog
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2Owog
ICAgIGlmIChwcml2LT5wYWdlR3JhYmJlZFRvdWNoKQpAQCAtMTg2NywxNiArMTg3NCwxMSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZQogCiAgICAgZ3RrX2dlc3R1cmVfc2V0X3N0YXRlKGdlc3R1
cmUsIEdUS19FVkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKIAotICAgIGF1dG8gcGFnZVNjYWxlID0g
Y2xhbXBUbzxkb3VibGU+KHByaXYtPmluaXRpYWxab29tU2NhbGUgKiBzY2FsZSwgMSwgMyk7Ci0K
LSAgICBGbG9hdFBvaW50IHNjYWxlZFpvb21DZW50ZXIocHJpdi0+aW5pdGlhbFpvb21Qb2ludCk7
Ci0gICAgc2NhbGVkWm9vbUNlbnRlci5zY2FsZShwYWdlU2NhbGUpOwotCi0gICAgZG91YmxlIHgs
IHk7Ci0gICAgZ3RrX2dlc3R1cmVfZ2V0X2JvdW5kaW5nX2JveF9jZW50ZXIoZ2VzdHVyZSwgJngs
ICZ5KTsKLSAgICBGbG9hdFBvaW50IHZpZXdQb2ludCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT5zY2FsZVBhZ2UocGFnZVNjYWxl
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoRmxvYXRQb2ludChzY2FsZWRab29tQ2VudGVyIC0g
dmlld1BvaW50KSkpOworICAgIGNvbnRyb2xsZXItPmVuZE1hZ25pZmljYXRpb24oKTsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VUb3VjaExvbmdQcmVzcyhXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIGdkb3VibGUgeCwgZ2RvdWJsZSB5LCBHdGtHZXN0dXJlKikKQEAg
LTIwNTksOCArMjA2MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogICAgIHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwID0gZ3RrX2dl
c3R1cmVfem9vbV9uZXcodmlld1dpZGdldCk7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChH
X09CSkVDVCh2aWV3V2lkZ2V0KSwgIndrLXZpZXctem9vbS1nZXN0dXJlIiwgcHJpdi0+dG91Y2hH
ZXN0dXJlR3JvdXAsIGdfb2JqZWN0X3VucmVmKTsKICNlbmRpZgotICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiYmVnaW4iLCBHX0NBTExCQUNLKHdl
YmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAi
c2NhbGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCks
IHZpZXdXaWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X29i
amVjdChwcml2LT50b3VjaEdlc3R1cmVHcm91cCwgImVuZCIsIEdfQ0FMTEJBQ0sod2Via2l0V2Vi
Vmlld0Jhc2Vab29tRW5kKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOwogCiAjaWYg
VVNFKEdUSzQpCiAgICAgZ2VzdHVyZSA9IGd0a19nZXN0dXJlX2xvbmdfcHJlc3NfbmV3KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDVhNTFiOWVjMWQ2OC4uMDM4ZDllZTJmNDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cApAQCAtMTUyLDYgKzE1MiwxOCBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjpzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wgaXNCYQogI2VuZGlmCiB9
CiAKKyNpZiBQTEFURk9STShHVEspCit2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkanVzdFRyYW5zaWVudFpv
b20oc2NhbGUsIG9yaWdpbikpOworfQorCit2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBv
cmlnaW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkNvbW1pdFRyYW5zaWVu
dFpvb20oc2NhbGUsIG9yaWdpbikpOworfQorI2VuZGlmCisKIHZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlE
LCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIEFTU0VSVF9BUkcoYmFja2lu
Z1N0b3JlU3RhdGVJRCwgYmFja2luZ1N0b3JlU3RhdGVJRCA8PSBtX2N1cnJlbnRCYWNraW5nU3Rv
cmVTdGF0ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCBkNzY5NTA4OGU3Y2YuLmIyM2E0NWZmN2QzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuaApAQCAtNTcsNiArNTcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhaXRGb3JCYWNr
aW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QmFja2lu
Z1N0b3JlSXNEaXNjYXJkYWJsZShib29sKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlm
CisKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgdXBkYXRlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRl
SUQsIGNvbnN0IFVwZGF0ZUluZm8mLCBjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNw
cAppbmRleCBhN2U2ZjBkMTkwMzEuLmIyNjA1NDg5MWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oIgogI2VuZGlmCkBAIC01OSw2
ICs2MCw5IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtSG9yaXpvbnRhbFN3aXBlRGlzdGFu
Y2UgPSAxNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3
aXBlID0gMC41OwogCiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5k
ZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OworCitzdGF0aWMgY29uc3QgZG91YmxlIG1p
bk1hZ25pZmljYXRpb24gPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9u
ID0gMzsKICNlbmRpZgogCiBzdGF0aWMgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2Vz
KCkKQEAgLTY0Niw2ICs2NTAsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVl
c3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdl
U2VuZGVyID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkpIDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwg
ZG91YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdp
bihtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlm
aWNhdGlvbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0
aW9uT3JpZ2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmln
aW4gLSBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAg
d2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkpOworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsK
KyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21h
cnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CiAjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmlj
YXRpb24pKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdN
YWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlm
aWNhdGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01h
Z25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpv
b20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmlj
YXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyNl
bmRpZgorCisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZp
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247
CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGU1MDNhZWZlOTliMi4uNmM4OGMzZWE0ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZp
Y2F0aW9uLAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1f
cGVuZGluZ1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9
CiAKICAgICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25z
dDsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxh
dGZvcm1TY3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgYXBwbHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRp
b25HZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2
ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxs
ZWQpOwogICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9v
bCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCk7CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAg
LTI2MywxNSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUg
c2NhbGUpOwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0U3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAg
ICB2b2lkIHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0
aW9uLCBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0zNTUsMjAgKzM2Mywy
NyBAQCBwcml2YXRlOgogICAgIFBlbmRpbmdTd2lwZVRyYWNrZXIgbV9wZW5kaW5nU3dpcGVUcmFj
a2VyOwogCiAgICAgYm9vbCBtX2hhc091dHN0YW5kaW5nUmVwYWludFJlcXVlc3QgeyBmYWxzZSB9
OwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlv
bjsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKIAorICAg
IGRvdWJsZSBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9pbml0aWFsTWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNjYWxl
ZFRhcmdldFJlY3Q7CiAgICAgYm9vbCBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0
TWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RT
bWFydE1hZ25pZmljYXRpb25PcmlnaW47CisjZW5kaWYKIAorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKICAgICBi
b29sIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Zy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlIHsgZmFsc2UgfTsKKyNlbmRpZgogCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1N3aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcj4g
bV9zd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dp
cGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zd2lwZVNuYXBzaG90TGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KaW5kZXggNmJjNGY5ZGFmOTE2Li5hOGNhYTRkYWY1OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KQEAgLTIyLDExICsyMiwxMiBAQAogCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSkKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
V2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJl
Y3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNj
YWxlKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaWRDb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRCb3VuZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisK
ICAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMmI0MGE2NGQ5NmI0Li4wMDgwZWI5ZDgy
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04OTEsMTAgKzg5
MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25h
bDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotICAg
IHZvaWQgZ2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNl
bnRlckluVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKTsKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJhbWVzQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0
ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0
ZXMpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3Rr
LmNwcAppbmRleCBhN2Y2ZmM2MzllZjguLmE3YTc1M2YwNjY1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAK
QEAgLTYzLDYgKzYzLDkgQEAgc3RhdGljIGNvbnN0IEdza0NvbG9yU3RvcCBzd2lwZU92ZXJsYXlT
aGFkb3dTdG9wc1tdID0gewogfTsKICNlbmRpZgogCitzdGF0aWMgY29uc3QgZG91YmxlIG1pbk1h
Z25pZmljYXRpb24gPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9uID0g
MzsKKwogc3RhdGljIGJvb2wgaXNFdmVudFN0b3AoUGxhdGZvcm1HdGtTY3JvbGxEYXRhKiBldmVu
dCkKIHsKICAgICByZXR1cm4gZXZlbnQtPmlzRW5kOwpAQCAtNjYwLDQgKzY2MywzMyBAQCBib29s
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29tcGxldGVTaW11bGF0ZWRTd2lwZUluRGlyZWN0aW9u
Rm9yVGVzdGluZyhTd2lwZURpcgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6c2V0TWFnbmlmaWNhdGlvbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQg
b3JpZ2luKQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6Tm9uZSB8fCBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFn
bmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVy
ZVR5cGU6Ok5vbmUpIHsKKyAgICAgICAgcHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdp
bik7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRp
bmcgZm9yIHRoZSBEaWRDb2xsZWN0R2VvbWV0cnkgY2FsbGJhY2suCisgICAgaWYgKCFtX3Zpc2li
bGVDb250ZW50UmVjdElzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbGxCZWdpbkdl
c3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIGRvdWJsZSBhYnNv
bHV0ZVNjYWxlID0gc2NhbGUgKiBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIG1fbWFnbmlm
aWNhdGlvbiA9IGNsYW1wVG88ZG91YmxlPihhYnNvbHV0ZVNjYWxlLCBtaW5NYWduaWZpY2F0aW9u
LCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdp
bjsKKworICAgIGFwcGx5TWFnbmlmaWNhdGlvbigpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbigpCit7CisgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1
cmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDVjMGVlZjI3NzZlOC4uMWE3ZmE2
Yjc1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcApAQCAtNzIsMTEgKzcyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0
aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2
aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5W
aWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpCi17Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlKGNlbnRlckluVmll
d0Nvb3JkaW5hdGVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJl
OjpSZXBseShjZW50ZXIpKTsKLX0KLQogYm9vbCBXZWJQYWdlUHJveHk6Om1ha2VHTENvbnRleHRD
dXJyZW50KCkKIHsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VNYWtlR0xDb250ZXh0Q3Vy
cmVudChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDAwYTNkMzA0YWE4Zi4uMDA1NGVlNTA0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTExMCwy
MyArMTEwLDYgQEAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRlbHRh
U2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCiAgICAgcmV0dXJuIHJlc2lzdGFuY2U7CiB9CiAK
LUZsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCi17Ci0gICAgRmxvYXRQb2ludCBz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7Ci0gICAgc2NhbGVkTWFnbmlmaWNhdGlv
bk9yaWdpbi5tb3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7Ci0gICAgZmxv
YXQgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAvIG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLnNjYWxl
KG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7Ci0gICAgcmV0dXJuIHNjYWxlZE1hZ25pZmljYXRp
b25PcmlnaW47Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0
LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQotewotICAgIHdpbGxCZWdp
bkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsKLSAgICBtX3Zpc2libGVDb250ZW50UmVj
dElzVmFsaWQgPSB0cnVlOwotICAgIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUg
PSBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Omdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAq
ZXZlbnQsIEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIGlmIChldmVudC50eXBlID09IE5TRXZl
bnRUeXBlTWFnbmlmeSkKQEAgLTE0NCw5ICsxMjcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxv
YQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBm
aXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3Qg
aGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCi0gICAgICAgIG1fbWFnbmlmaWNh
dGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBh
Z2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xs
ZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKLSAgICAgICAgbV9sYXN0TWFn
bmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CiAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE2NSwzNSArMTQ2LDEyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpo
YW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAKICAg
ICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CiAKLSAgICBpZiAobV9mcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdl
KG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG9yaWdpbikpOwotICAgIGVsc2UKLSAg
ICAgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbSht
X21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luLCBtX21hZ25p
ZmljYXRpb24pKTsKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGlmIChldmVudC5w
aGFzZSA9PSBOU0V2ZW50UGhhc2VFbmRlZCB8fCBldmVudC5waGFzZSA9PSBOU0V2ZW50UGhhc2VD
YW5jZWxsZWQpCiAgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiB9CiAKLXZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi17Ci0gICAg
aWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgbmV3TWFnbmlmaWNhdGlvbiA9IHN0ZDo6
bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlvbiksIG1heE1hZ25p
ZmljYXRpb24pOwotCi0gICAgaWYgKG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUp
Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LnNjYWxlUGFnZShuZXdNYWduaWZpY2F0aW9uLCByb3Vu
ZGVkSW50UG9pbnQobV9tYWduaWZpY2F0aW9uT3JpZ2luKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKSkKLSAg
ICAgICAgICAgIGRyYXdpbmdBcmVhLT5jb21taXRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRp
b24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdN
YWduaWZpY2F0aW9uKSk7Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKTsKLQotICAgIGRpZEVuZEdlc3R1cmUoKTsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7
CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQpA
QCAtMjU1LDYgKzIxMyw5IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0CiAgICAgRmxvYXRQb2lu
dCB0YXJnZXRPcmlnaW4odmlzaWJsZUNvbnRlbnRSZWN0LmNlbnRlcigpKTsKICAgICB0YXJnZXRP
cmlnaW4ubW92ZUJ5KC10YXJnZXRSZWN0LmNlbnRlcigpKTsKIAorICAgIG1faW5pdGlhbE1hZ25p
ZmljYXRpb25TY2FsZSA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1f
aW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4gPSBGbG9hdFBvaW50KCk7CisKICAgICBtX3dlYlBh
Z2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQo
KSwgbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94
eS5kcmF3aW5nQXJlYSgpLT5jb21taXRUcmFuc2llbnRab29tKHRhcmdldE1hZ25pZmljYXRpb24s
IHRhcmdldE9yaWdpbik7CiAKQEAgLTY1NSwxNCArNjE2LDYgQEAgdm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OnJlc2V0KCkKICAgICByZXNldFN0YXRlKCk7CiB9CiAKLWRvdWJsZSBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdAotewotICAgIGlmIChtX2FjdGl2
ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKLSAgICAgICAg
cmV0dXJuIG1fbWFnbmlmaWNhdGlvbjsKLQotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdl
U2NhbGVGYWN0b3IoKTsKLX0KLQogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU2lt
dWxhdGVkU3dpcGVJbkRpcmVjdGlvbkZvclRlc3RpbmcoU3dpcGVEaXJlY3Rpb24pCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDY4ZTM2OTE5ZmM3Zi4uNTE1M2E3OWYyZTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnNp
emVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICBub3RpZnlGbHVzaFJlcXVp
cmVkKG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQorYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlRmxhZ3M+IGZsYWdzKQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHByb3RlY3RvcihtX2lz
Rmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIGlm
IChtX292ZXJsYXlDb21wb3NpdGluZ0xheWVyKQogICAgICAgICBtX292ZXJsYXlDb21wb3NpdGlu
Z0xheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9y
b290TGF5ZXItPnNpemUoKSkpOwogCi0gICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KHsgRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQ
b3NpdGlvbnMgfSk7CisgICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKGZsYWdzKTsK
IAogICAgIGF1dG8mIGNvb3JkaW5hdGVkTGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI+KCptX3Jvb3RMYXllcik7CiAgICAgY29vcmRpbmF0ZWRMYXllci51cGRhdGVDb250
ZW50QnVmZmVyc0luY2x1ZGluZ1N1YkxheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3Jk
aW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBjM2FhZTlkZjNiYzguLmExODIy
MTdiNjk1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JjZUZy
YW1lU3luYygpIHsgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOyB9CiAKLSAgICBib29sIGZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
KE9wdGlvblNldDxXZWJDb3JlOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAgICAg
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3Rh
dGU7IH0KIAogICAgIHZvaWQgc3luY0Rpc3BsYXlTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CmluZGV4IGJjNmQ5MzdiZDYyYy4uNGEwODcyMzVlN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CkBAIC00ODMsNiArNDgzLDQ0IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
OjpkaWRVcGRhdGUoKQogICAgIGRpc3BsYXlUaW1lckZpcmVkKCk7CiB9CiAKKyNpZiBQTEFURk9S
TShHVEspCit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmICghbV90
cmFuc2llbnRab29tKSB7CisgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFn
ZS5tYWluRnJhbWVWaWV3KCk7CisgICAgICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJl
Y3QgPSBmcmFtZVZpZXcudW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygp
OworCisgICAgICAgIG1fdHJhbnNpZW50Wm9vbSA9IHRydWU7CisgICAgICAgIG1fdHJhbnNpZW50
Wm9vbUluaXRpYWxPcmlnaW4gPSB1bm9ic2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24oKTsKKyAg
ICB9CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+YWRqdXN0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIFdlIGNhbid0IGRvIHRyYW5zaWVudCB6b29tIGZvciBub24tQUMgbW9k
ZSwgc28ganVzdCB6b29tIGluIHBsYWNlIGluc3RlYWQuCisKKyAgICBGbG9hdFBvaW50IHVuc2Ny
b2xsZWRPcmlnaW4ob3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFu
c2llbnRab29tSW5pdGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxl
IC8gbV93ZWJQYWdlLnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xs
ZWRPcmlnaW4pKTsKK30KKwordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNv
bW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAg
ICBpZiAobV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRy
YW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbik7CisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRP
cmlnaW4ob3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRa
b29tSW5pdGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93
ZWJQYWdlLnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmln
aW4pKTsKKworICAgIG1fdHJhbnNpZW50Wm9vbSA9IGZhbHNlOworfQorI2VuZGlmCisKIHZvaWQg
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3Jl
U3RhdGUoKQogewogICAgIEFTU0VSVCghbV9pc1dhaXRpbmdGb3JEaWRVcGRhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmgKaW5kZXggYjE5NTlkMDQwZTIxLi44NTY1NjgzYjc4NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3MuaApAQCAtODQsNiArODQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdT
dG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVk
aWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRVcGRhdGUoKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFk
anVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lk
IHNlbmREaWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpOwogCiAgICAgdm9pZCBleGl0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGVTb29uKCk7CkBAIC0xNTAsNiArMTU1LDExIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2ZvcmNlUmVwYWludEFmdGVyQmFja2luZ1N0b3JlU3RhdGVVcGRhdGUgeyBm
YWxzZSB9OwogCiAgICAgUnVuTG9vcDo6VGltZXI8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzPiBtX2Rpc3BsYXlUaW1lcjsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJh
bnNpZW50Wm9vbSB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVu
dFpvb21Jbml0aWFsT3JpZ2luOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQwN2Y0ZjNm
YjFmYy4uZTAxN2M0MDNiYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CiAKKyNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgpA
QCAtMTQ0LDcgKzE0NiwyMCBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZp
cmVkKCkKICAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjaykKICAgICAgICAgbV9j
b29yZGluYXRvci5mb3JjZUZyYW1lU3luYygpOwogCi0gICAgYm9vbCBkaWRTeW5jID0gbV9jb29y
ZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBPcHRpb25TZXQ8RmluYWxp
emVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3M7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGlm
ICghbV90cmFuc2llbnRab29tKQorI2VuZGlmCisgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJl
bmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisK
KyAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cyhmbGFncyk7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBhY3Rp
dmUgdHJhbnNpZW50IHpvb20sIHdlIHdhbnQgdGhlIHpvb20gdG8gd2luIG92ZXIgYW55IGNoYW5n
ZXMKKyAgICAvLyB0aGF0IFdlYkNvcmUgbWFrZXMgdG8gdGhlIHJlbGV2YW50IGxheWVycywgc28g
cmUtYXBwbHkgb3VyIGNoYW5nZXMgYWZ0ZXIgZmx1c2hpbmcuCisgICAgaWYgKG1fdHJhbnNpZW50
Wm9vbSkKKyAgICAgICAgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2llbnRab29t
U2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7CisjZW5kaWYKIAogICAgIGlmIChtX25vdGlm
eUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCAmJiBkaWRTeW5jKSB7CiAgICAgICAgIG1fd2ViUGFn
ZS5kcmF3aW5nQXJlYSgpLT5sYXllckhvc3REaWRGbHVzaExheWVycygpOwpAQCAtMTg1LDggKzIw
MCwxNiBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCiAgICAgLy8gV2UgbmVl
ZCB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhlcndpc2UgdGhlIGZvcmNlZCBwYWludCBt
aWdodCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVzaC4KICAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKIAotICAgIGlmICghbV9pc1dhaXRpbmdGb3JSZW5kZXJlcikKLSAgICAgICAgbV9jb29y
ZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBpZiAoIW1faXNXYWl0aW5n
Rm9yUmVuZGVyZXIpIHsKKyAgICAgICAgT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
RmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgaWYgKCFtX3RyYW5zaWVu
dFpvb20pCisjZW5kaWYKKyAgICAgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisKKyAgICAgICAg
bV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoZmxhZ3MpOworICAgIH0KKwog
ICAgIG1fY29tcG9zaXRvci0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKQEAgLTQyNiw2ICs0NDksODEg
QEAgdm9pZCBMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoYm9vbCBmb3JjZVJlcGFpbnQp
CiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oR1RLKQorRmxvYXRQb2ludCBMYXllclRyZWVIb3N0
Ojpjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBv
cmlnaW4pIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbV93ZWJQYWdlLm1h
aW5GcmFtZVZpZXcoKTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gZnJhbWVW
aWV3LnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKKworICAgIEZsb2F0
UG9pbnQgY29uc3RyYWluZWRPcmlnaW4gPSB2aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKTsK
KyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLW9yaWdpbik7CisKKyAgICBJbnRTaXplIHNj
YWxlZFRvdGFsQ29udGVudHNTaXplID0gZnJhbWVWaWV3LnRvdGFsQ29udGVudHNTaXplKCk7Cisg
ICAgc2NhbGVkVG90YWxDb250ZW50c1NpemUuc2NhbGUoc2NhbGUgKiBtX3dlYlBhZ2Uudmlld1Nj
YWxlRmFjdG9yKCkgLyBtX3dlYlBhZ2UudG90YWxTY2FsZUZhY3RvcigpKTsKKworICAgIC8vIFNj
YWxpbmcgbWF5IGhhdmUgZXhwb3NlZCB0aGUgb3ZlcmhhbmcgYXJlYSwgc28gd2UgbmVlZCB0byBj
b25zdHJhaW4gdGhlIGZpbmFsCisgICAgLy8gbGF5ZXIgcG9zaXRpb24gZXhhY3RseSBsaWtlIHNj
cm9sbGluZyB3aWxsIG9uY2UgaXQncyBjb21taXR0ZWQsIHRvIGVuc3VyZSB0aGF0CisgICAgLy8g
c2Nyb2xsaW5nIGRvZXNuJ3QgbWFrZSB0aGUgdmlldyBqdW1wLgorICAgIGNvbnN0cmFpbmVkT3Jp
Z2luID0gU2Nyb2xsYWJsZUFyZWE6OmNvbnN0cmFpblNjcm9sbFBvc2l0aW9uRm9yT3Zlcmhhbmco
cm91bmRlZEludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KSwKKyAgICAgICAgc2NhbGVkVG90YWxD
b250ZW50c1NpemUsIHJvdW5kZWRJbnRQb2ludChjb25zdHJhaW5lZE9yaWdpbiksIGZyYW1lVmll
dy5zY3JvbGxPcmlnaW4oKSwKKyAgICAgICAgZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpLCBmcmFt
ZVZpZXcuZm9vdGVySGVpZ2h0KCkpOworICAgIGNvbnN0cmFpbmVkT3JpZ2luLm1vdmVCeSgtdmlz
aWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGNvbnN0cmFpbmVkT3JpZ2luID0gLWNv
bnN0cmFpbmVkT3JpZ2luOworCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkT3JpZ2luOworfQorCitD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZUhvc3Q6OmxheWVyRm9yVHJhbnNpZW50
Wm9vbSgpIGNvbnN0Cit7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiByZW5kZXJWaWV3QmFja2lu
ZyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+YmFj
a2luZygpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRzQ29udGFpbm1lbnRMYXll
ciA9IHJlbmRlclZpZXdCYWNraW5nLT5jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIoKSkKKyAgICAg
ICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpjb250ZW50c0Nv
bnRhaW5tZW50TGF5ZXIpOworCisgICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI+KCpyZW5kZXJWaWV3QmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsKK30KKwordm9p
ZCBMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyhkb3VibGUgc2NhbGUs
IEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBTY3JvbGxiYXJzIHNob3VsZCBz
dGF5IGluLXBsYWNlIGFuZCBjaGFuZ2UgaGVpZ2h0IHdoaWxlIHpvb21pbmcuCisgICAgRmxvYXRQ
b2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IGNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4oc2Nh
bGUsIG9yaWdpbik7CisgICAgYXV0byogem9vbUxheWVyID0gbGF5ZXJGb3JUcmFuc2llbnRab29t
KCk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7
CisgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgIHpvb21MYXllci0+c2V0VHJhbnNm
b3JtKHRyYW5zZm9ybSk7CisgICAgem9vbUxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
M0QoKSk7CisgICAgem9vbUxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOworfQorCit2
b2lkIExheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9h
dFBvaW50IG9yaWdpbikKK3sKKyAgICBtX3RyYW5zaWVudFpvb20gPSB0cnVlOworICAgIG1fdHJh
bnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7CisgICAgbV90cmFuc2llbnRab29tT3JpZ2luID0gb3Jp
Z2luOworCisgICAgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2llbnRab29tU2Nh
bGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6Y29t
bWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAg
IGlmIChtX3RyYW5zaWVudFpvb21TY2FsZSA9PSBzY2FsZSkgeworICAgICAgICAvLyBJZiB0aGUg
cGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgc2NhbGUsIHNldFBhZ2VTY2FsZUZhY3Rv
cigpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgICAgICAvLyBhbmQgbm90IGFwcGx5IHRoZSB0cmFu
c2Zvcm0sIHNvIHdlIGNhbid0IGRlcGVuZCBvbiBpdCB0byBkbyBzby4KKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggZmluYWxUcmFuc2Zvcm07CisgICAgICAgIGZpbmFsVHJhbnNmb3JtLnNj
YWxlKHNjYWxlKTsKKworICAgICAgICBsYXllckZvclRyYW5zaWVudFpvb20oKS0+c2V0VHJhbnNm
b3JtKGZpbmFsVHJhbnNmb3JtKTsKKyAgICB9CisKKyAgICBtX3RyYW5zaWVudFpvb20gPSBmYWxz
ZTsKKyAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9IDE7CisgICAgbV90cmFuc2llbnRab29tT3Jp
Z2luID0gRmxvYXRQb2ludCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVI
b3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3QuaAppbmRleCBkYjY1ZjgxMzI2N2QuLjQ5NDMzOTNhMmMzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKQEAgLTM4LDYgKzM4LDkgQEAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDxXZWJD
b3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oPgorI2VuZGlmCiAKICNpZiBVU0UoR1JBUEhJ
Q1NfTEFZRVJfVEVYVFVSRV9NQVBQRVIpCiAKQEAgLTk4LDYgKzEwMSwxMCBAQCBwdWJsaWM6CiAK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVy
biBtX2Rpc3BsYXlJRDsgfQogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQgYWRqdXN0VHJh
bnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZvaWQgY29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2VuZGlmCiBwcml2
YXRlOgogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIGxheWVyRmx1c2hU
aW1lckZpcmVkKCk7CkBAIC0xMjAsNiArMTI3LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXF1
ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAgICAgdm9pZCBoYW5kbGVEaXNwbGF5
UmVmcmVzaE1vbml0b3JVcGRhdGUoYm9vbCk7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRvdWJsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCkgY29uc3Q7CisgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKiBsYXllckZvclRyYW5zaWVudFpvb20oKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5VHJh
bnNpZW50Wm9vbVRvTGF5ZXJzKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7CisjZW5kaWYK
KwogICAgIGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhyZWFkZWRDb21w
b3NpdG9yOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xp
ZW50ICB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXBvc2l0b3JDbGllbnQpOwog
ICAgIHB1YmxpYzoKQEAgLTIwMCw2ICsyMTMsMTIgQEAgcHJpdmF0ZToKICAgICBDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yIG1fY29vcmRpbmF0b3I7CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxheUlEOworCisj
aWYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV90cmFuc2llbnRab29tIHsgZmFsc2UgfTsKKyAg
ICBkb3VibGUgbV90cmFuc2llbnRab29tU2NhbGUgeyAxIH07CisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBtX3RyYW5zaWVudFpvb21PcmlnaW47CisjZW5kaWYKIH07CiAKICNpZiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKaW5kZXggYmRjM2RiZWU3ZTU4Li43NDc3MWVjNDBjY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTgyLDEwICsx
ODIsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0o
R1RLKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRU
cmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsg
fQotCi0gICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNh
bGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCiAgICAgYm9vbCBt
X2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRl
eCBhOGZmNGY1YTc5NDcuLjlkNWY2ZGNhNmUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTM0LDEy
ICszNCwxNCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICBT
ZXRDb2xvclNwYWNlKHN0cnVjdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIAotICAgIEFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLSAgICBD
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pCi0gICAgCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXll
cklELCBTdHJpbmcga2V5LCBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSkKICAgICBBY2NlbGVyYXRl
ZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5KQogICAgIAogICAg
IEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyAgICBBZGp1
c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4p
CisgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCmlu
ZGV4IDNmZGRlYjgwNDVlMi4uMjk0ZmRmNDFmYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTQgQEAgdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpjb21wdXRlTWluaW11bUFuZE1heGltdW1WaWV3cG9ydFNjYWxlcyhkb3VibGUK
ICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZSgpCiB7CiAgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVj
dCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnVub2JzY3VyZWRDb250ZW50UmVjdEluY2x1
ZGluZ1Njcm9sbGJhcnMoKTsKICAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7
CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlk
Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0
LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwogfQotI2VuZGlmCiAKLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
c2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKIHsK
ICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gc2l6ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBmN2Y5OThhYWMwMTYuLjhjMjE2YjYwZjkyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtNTYsMTAgKzU2LDkgQEAgcHJpdmF0
ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9y
U21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAK
LSNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSgpOwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9p
ZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworCiAgICAgdm9pZCBz
ZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCk7CiAgICAgdm9p
ZCBzZW5kRGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGRJZk5lZWRlZCgpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgppbmRleCBjMTMz
NWZiMmE0YTUuLmRkMmNmNDUyZDFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yNSwxMSArMjUsOSBAQCBtZXNzYWdlcyAtPiBWaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yIE5vdFJlZkNvdW50ZWQgewogICAgIENvbGxlY3RHZW9tZXRy
eUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4p
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi0jZW5kaWYKIAot
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0
aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmNWNkN2VlMDkzM2MuLjAxN2ZlMDM0ZjVl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODg5
LDggKzg4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2hvd0Vtb2ppUGlja2VyKFdlYkNv
cmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldENlbnRlckZvclpvb21HZXN0dXJlKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCYmKT4mJik7Ci0KICAgICB2b2lkIHRoZW1lRGlkQ2hh
bmdlKFN0cmluZyYmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4M2ZlNTViMGM0MDQuLjI3MDQ4
MzZlZmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MzAsOCArNDMwLDYgQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCi0KLSAgICBHZXRDZW50ZXJGb3Jab29t
R2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBjZW50ZXJJblZpZXdDb29yZGluYXRlcykgLT4gKFdl
YkNvcmU6OkludFBvaW50IGNlbnRlcikgU3luY2hyb25vdXMKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
V2ViUGFnZUd0ay5jcHAKaW5kZXggZWRiOWQ0NDFiNTdmLi5jY2NkOGNhMTkzNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAK
QEAgLTE1OCwxNCArMTU4LDYgQEAgT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdl
YlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVAKICAgICByZXR1cm4g
UG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRDZW50
ZXJGb3Jab29tR2VzdHVyZShjb25zdCBJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UG9pbnQmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCi17Ci0gICAgSW50UG9pbnQgcmVzdWx0ID0gbWFpbkZyYW1lVmlldygpLT5yb290
Vmlld1RvQ29udGVudHMoY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpOwotICAgIGRvdWJsZSBzY2Fs
ZSA9IG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgcmVzdWx0LnNjYWxlKDEgLyBzY2Fs
ZSwgMSAvIHNjYWxlKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwot
fQotCiB2b2lkIFdlYlBhZ2U6OmNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKLS0gCjIuMzEuMQoK
</data>
<flag name="commit-queue"
          id="452425"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430826</attachid>
            <date>2021-06-08 02:58:42 -0700</date>
            <delta_ts>2021-06-08 08:08:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>47512</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAzZTk2MjIzODEzNTI3NzNhMGM5Njg4NzRkODljMjQ3ZmFhODBmMDJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCA4IEp1biAyMDIxIDE0OjI4OjE5ICswNTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgMTAxICsrKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwICAgfCAgMzQgKysrLS0tCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwICAgfCAgMTIgKysKIC4uLi9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oICAgICB8ICAgNSArCiAuLi4vVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAgICAgICAgfCAgNzcgKysrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDMzICsrKystLQogLi4uL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbiAgICAgICAgIHwgICAzICstCiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCAgICAgICAgfCAgIDQgLQogLi4uL2d0ay9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJHdGsuY3BwICAgICAgICAgIHwgIDMyICsrKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA1NyArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKysKIC4uLi9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgICAgICB8ICAxMCArKwogLi4uL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgICAgIHwgMTA0ICsrKysrKysrKysrKysrKysr
LQogLi4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oICAgICAgIHwgIDE5ICsr
KysKIC4uLi9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggICB8ICAgNiAr
LQogLi4uL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gICAgICAgICAgIHwgICA4ICst
CiAuLi4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAgfCAgIDQgKy0K
IC4uLi9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCAgICB8ICAgNSArLQog
Li4uL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gIHwgICA0ICstCiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgfCAgIDIgLQogLi4u
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwICAgICB8ICAgOCAtLQogMjUgZmls
ZXMgY2hhbmdlZCwgNDYwIGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGI5MjlhYTZhM2NiMy4uNmMxMGQ1MjU1MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBA
QAorMjAyMS0wNi0wOCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgor
CisgICAgICAgIFtHVEtdIFN1cHBvcnQgdHJhbnNpZW50IHpvb20KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzAwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWVkIHVwIHBpbmNoIHpvb20gZm9yIEFD
IG1vZGUuIFJldXNlIHRoZSBzYW1lIGluZnJhc3RydWN0dXJlIGFzIHRoZQorICAgICAgICBtYWNP
UyBpbXBsZW1lbnRhdGlvbi4gTW92ZSB0aGUgc2hhcmVkIGNvZGUgdG8gVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcAorICAgICAgICB3aGVyZSBwb3NzaWJsZS4KKworICAgICAgICBTbGlnaHRseSBh
ZGp1c3QgdGhlIHNoYXJlZCBjb2RlIHRvIHN1cHBvcnQgY2hhbmdpbmcgdGhlIGdlc3R1cmUgb3Jp
Z2luCisgICAgICAgIGR1cmluZyB0aGUgZ2VzdHVyZSBzaW5jZSB3ZSBzdXBwb3J0IGl0IG9uIGJv
dGggdG91Y2hzY3JlZW4gYW5kIHRvdWNocGFkLgorCisgICAgICAgIFRoZXJlJ3Mgbm90IG11Y2gg
d2UgY2FuIGRvIGZvciBub24tQUMgbW9kZSBzbyBqdXN0IGtlZXAgdGhlIGN1cnJlbnQKKyAgICAg
ICAgYmVoYXZpb3IgdGhlcmUsIHdyYXBwaW5nIHJlYWwtdGltZSB6b29tIGludG8gdHJhbnNpZW50
IHpvb20gQVBJIHNvIHRoYXQKKyAgICAgICAgaXQncyBjb25maW5lZCB0byB0aGUgd2ViIHByb2Nl
c3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKToKKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlWm9vbUVuZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVj
dGVkKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktp
dDo6RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpv
b20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
UHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6CisKKyAgICAgICAgU3VwcG9ydCBjaGFuZ2lu
ZyBvcmlnaW4gZHVyaW5nIHRoZSBnZXN0dXJlLCBjYWNoZSB0aGUgcGFnZSBzY2FsZSBmYWN0b3IK
KyAgICAgICAgdG8gYWNjb21tb2RhdGUgbm9uLUFDIG1vZGUgZG9pbmcgcmVhbC10aW1lIHpvb21p
bmcgaW5zdGVhZCBvZiB0cmFuc2llbnQKKyAgICAgICAgem9vbWluZy4KKworICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpw
cmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24gY29uc3QpOgorCisgICAg
ICAgIE1vdmVkIGZyb20gVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tLgorCisgICAgICAgICog
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRN
YWduaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpl
bmRNYWduaWZpY2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q2VudGVyRm9yWm9vbUdl
c3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omhh
bmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUpOgorCisgICAgICAgIFNldCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9y
ZSBjYWxsaW5nIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAgTW92ZWQg
dG8gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMpOgorCisgICAgICAgIFdlIG9ubHkgbmVlZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5n
VHJlZUxheWVyUG9zaXRpb25zIGZsYWcgd2hlbiBub3QKKyAgICAgICAgem9vbWluZywgc28gYWRk
IGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3Jk
aW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
SG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVI
b3N0Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICBEb24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJl
ZUxheWVyUG9zaXRpb25zIHdoZW4gdHJhbnNpZW50IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpv
b20gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVu
dFpvb21Ub0xheWVycyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRy
YW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFu
c2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50
Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
cjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgQnVpbGQgQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdl
c3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQu
CisKIDIwMjEtMDUtMjQgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLNF0gQWRkIHN1cHBvcnQgZm9yIG5hdmlnYXRpb24gZ2VzdHVyZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKaW5kZXggM2EzZjNlMjVkZGMwLi5lOWNmNzEzNTJiYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0z
MjksOCArMzI5LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogI2VuZGlm
CiAKICAgICAvLyBUb3VjaCBnZXN0dXJlcyBzdGF0ZQotICAgIGRvdWJsZSBpbml0aWFsWm9vbVNj
YWxlOwotICAgIEludFBvaW50IGluaXRpYWxab29tUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBkcmFn
T2Zmc2V0OwogICAgIGJvb2wgaXNMb25nUHJlc3NlZDsKICAgICBib29sIGlzQmVpbmdEcmFnZ2Vk
OwpAQCAtMTg0OSwxNyArMTg0NywyNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jh
c2VGb2N1cyhHdGtXaWRnZXQqIHdpZGdldCwgR3RrRGlyZWN0aW9uVHlwZSBkaXJlYwogICAgIHJl
dHVybiBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcykt
PmZvY3VzKHdpZGdldCwgZGlyZWN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2Vab29tQmVnaW4oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudFNl
cXVlbmNlKiBzZXF1ZW5jZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKK3N0YXRpYyB2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBn
ZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQogewogICAgIFdlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwotICAgIHByaXYtPmluaXRpYWxa
b29tU2NhbGUgPSBwcml2LT5wYWdlUHJveHktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgIGlmIChw
cml2LT5wYWdlR3JhYmJlZFRvdWNoKQorICAgICAgICByZXR1cm47CisKKyAgICBndGtfZ2VzdHVy
ZV9zZXRfc3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOworCisgICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOwogCiAgICAgZG91YmxlIHgsIHk7CiAgICAgZ3RrX2dlc3R1cmVfZ2V0X2Jv
dW5kaW5nX2JveF9jZW50ZXIoZ2VzdHVyZSwgJngsICZ5KTsKLSAgICBwcml2LT5wYWdlUHJveHkt
PmdldENlbnRlckZvclpvb21HZXN0dXJlKEludFBvaW50KHgsIHkpLCBwcml2LT5pbml0aWFsWm9v
bVBvaW50KTsKKyAgICBGbG9hdFBvaW50IG9yaWdpbiA9IEZsb2F0UG9pbnQoeCwgeSk7CisKKyAg
ICBjb250cm9sbGVyLT5zZXRNYWduaWZpY2F0aW9uKHNjYWxlLCBvcmlnaW4pOwogfQogCi1zdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgZ2RvdWJsZSBzY2FsZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKK3N0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUVuZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UsIEdka0V2ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQogewog
ICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2Owog
ICAgIGlmIChwcml2LT5wYWdlR3JhYmJlZFRvdWNoKQpAQCAtMTg2NywxNiArMTg3NCwxMSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZQogCiAgICAgZ3RrX2dlc3R1cmVfc2V0X3N0YXRlKGdlc3R1
cmUsIEdUS19FVkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKIAotICAgIGF1dG8gcGFnZVNjYWxlID0g
Y2xhbXBUbzxkb3VibGU+KHByaXYtPmluaXRpYWxab29tU2NhbGUgKiBzY2FsZSwgMSwgMyk7Ci0K
LSAgICBGbG9hdFBvaW50IHNjYWxlZFpvb21DZW50ZXIocHJpdi0+aW5pdGlhbFpvb21Qb2ludCk7
Ci0gICAgc2NhbGVkWm9vbUNlbnRlci5zY2FsZShwYWdlU2NhbGUpOwotCi0gICAgZG91YmxlIHgs
IHk7Ci0gICAgZ3RrX2dlc3R1cmVfZ2V0X2JvdW5kaW5nX2JveF9jZW50ZXIoZ2VzdHVyZSwgJngs
ICZ5KTsKLSAgICBGbG9hdFBvaW50IHZpZXdQb2ludCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAg
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmlld0Jhc2VWaWV3
R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOworICAgIGlmICghY29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT5zY2FsZVBhZ2UocGFnZVNjYWxl
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoRmxvYXRQb2ludChzY2FsZWRab29tQ2VudGVyIC0g
dmlld1BvaW50KSkpOworICAgIGNvbnRyb2xsZXItPmVuZE1hZ25pZmljYXRpb24oKTsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VUb3VjaExvbmdQcmVzcyhXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIGdkb3VibGUgeCwgZ2RvdWJsZSB5LCBHdGtHZXN0dXJlKikKQEAg
LTIwNTksOCArMjA2MSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogICAgIHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwID0gZ3RrX2dl
c3R1cmVfem9vbV9uZXcodmlld1dpZGdldCk7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChH
X09CSkVDVCh2aWV3V2lkZ2V0KSwgIndrLXZpZXctem9vbS1nZXN0dXJlIiwgcHJpdi0+dG91Y2hH
ZXN0dXJlR3JvdXAsIGdfb2JqZWN0X3VucmVmKTsKICNlbmRpZgotICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiYmVnaW4iLCBHX0NBTExCQUNLKHdl
YmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAi
c2NhbGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCks
IHZpZXdXaWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X29i
amVjdChwcml2LT50b3VjaEdlc3R1cmVHcm91cCwgImVuZCIsIEdfQ0FMTEJBQ0sod2Via2l0V2Vi
Vmlld0Jhc2Vab29tRW5kKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOwogCiAjaWYg
VVNFKEdUSzQpCiAgICAgZ2VzdHVyZSA9IGd0a19nZXN0dXJlX2xvbmdfcHJlc3NfbmV3KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDVhNTFiOWVjMWQ2OC4uMDM4ZDllZTJmNDFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNw
cApAQCAtMTUyLDYgKzE1MiwxOCBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjpzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wgaXNCYQogI2VuZGlmCiB9
CiAKKyNpZiBQTEFURk9STShHVEspCit2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdy
YXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkanVzdFRyYW5zaWVudFpv
b20oc2NhbGUsIG9yaWdpbikpOworfQorCit2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBv
cmlnaW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkNvbW1pdFRyYW5zaWVu
dFpvb20oc2NhbGUsIG9yaWdpbikpOworfQorI2VuZGlmCisKIHZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlE
LCBjb25zdCBVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogewogICAgIEFTU0VSVF9BUkcoYmFja2lu
Z1N0b3JlU3RhdGVJRCwgYmFja2luZ1N0b3JlU3RhdGVJRCA8PSBtX2N1cnJlbnRCYWNraW5nU3Rv
cmVTdGF0ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCBkNzY5NTA4OGU3Y2YuLmIyM2E0NWZmN2QzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuaApAQCAtNTcsNiArNTcsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhaXRGb3JCYWNr
aW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QmFja2lu
Z1N0b3JlSXNEaXNjYXJkYWJsZShib29sKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlm
CisKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgdXBkYXRlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRl
SUQsIGNvbnN0IFVwZGF0ZUluZm8mLCBjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNw
cAppbmRleCBhN2U2ZjBkMTkwMzEuLmIyNjA1NDg5MWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUg
IlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3JNZXNzYWdlcy5oIgogI2VuZGlmCkBAIC01OSw2
ICs2MCw5IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtSG9yaXpvbnRhbFN3aXBlRGlzdGFu
Y2UgPSAxNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3
aXBlID0gMC41OwogCiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5k
ZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OworCitzdGF0aWMgY29uc3QgZG91YmxlIG1p
bk1hZ25pZmljYXRpb24gPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9u
ID0gMzsKICNlbmRpZgogCiBzdGF0aWMgSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2Vz
KCkKQEAgLTY0Niw2ICs2NTAsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVl
c3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdl
U2VuZGVyID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkpIDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwg
ZG91YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdp
bihtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlm
aWNhdGlvbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0
aW9uT3JpZ2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmln
aW4gLSBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAg
d2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkpOworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsK
KyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21h
cnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CiAjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmlj
YXRpb24pKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdN
YWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlm
aWNhdGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01h
Z25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpv
b20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmlj
YXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKyNl
bmRpZgorCisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZp
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247
CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGU1MDNhZWZlOTliMi4uNmM4OGMzZWE0ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZp
Y2F0aW9uLAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1f
cGVuZGluZ1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9
CiAKICAgICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25z
dDsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxh
dGZvcm1TY3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgYXBwbHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRp
b25HZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2
ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxs
ZWQpOwogICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9v
bCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCk7CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAg
LTI2MywxNSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUg
c2NhbGUpOwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0U3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAg
ICB2b2lkIHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0
aW9uLCBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0zNTUsMjAgKzM2Mywy
NyBAQCBwcml2YXRlOgogICAgIFBlbmRpbmdTd2lwZVRyYWNrZXIgbV9wZW5kaW5nU3dpcGVUcmFj
a2VyOwogCiAgICAgYm9vbCBtX2hhc091dHN0YW5kaW5nUmVwYWludFJlcXVlc3QgeyBmYWxzZSB9
OwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlv
bjsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKIAorICAg
IGRvdWJsZSBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9pbml0aWFsTWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNjYWxl
ZFRhcmdldFJlY3Q7CiAgICAgYm9vbCBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0
TWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RT
bWFydE1hZ25pZmljYXRpb25PcmlnaW47CisjZW5kaWYKIAorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zpc2libGVDb250ZW50UmVjdDsKICAgICBi
b29sIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Zy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlIHsgZmFsc2UgfTsKKyNlbmRpZgogCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1N3aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcj4g
bV9zd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dp
cGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zd2lwZVNuYXBzaG90TGF5ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIubWVzc2FnZXMuaW4KaW5kZXggNmJjNGY5ZGFmOTE2Li5hOGNhYTRkYWY1OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
bWVzc2FnZXMuaW4KQEAgLTIyLDExICsyMiwxMiBAQAogCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSkKICAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwg
V2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJl
Y3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNj
YWxlKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaWRDb2xsZWN0
R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRCb3VuZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisK
ICAgICBEaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpCiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMmI0MGE2NGQ5NmI0Li4wMDgwZWI5ZDgy
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04OTEsMTAgKzg5
MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25h
bDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotICAg
IHZvaWQgZ2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNl
bnRlckluVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKTsKLSNlbmRp
ZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJhbWVzQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0
ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0
ZXMpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3Rr
LmNwcAppbmRleCBhN2Y2ZmM2MzllZjguLmE3YTc1M2YwNjY1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAK
QEAgLTYzLDYgKzYzLDkgQEAgc3RhdGljIGNvbnN0IEdza0NvbG9yU3RvcCBzd2lwZU92ZXJsYXlT
aGFkb3dTdG9wc1tdID0gewogfTsKICNlbmRpZgogCitzdGF0aWMgY29uc3QgZG91YmxlIG1pbk1h
Z25pZmljYXRpb24gPSAxOworc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9uID0g
MzsKKwogc3RhdGljIGJvb2wgaXNFdmVudFN0b3AoUGxhdGZvcm1HdGtTY3JvbGxEYXRhKiBldmVu
dCkKIHsKICAgICByZXR1cm4gZXZlbnQtPmlzRW5kOwpAQCAtNjYwLDQgKzY2MywzMyBAQCBib29s
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29tcGxldGVTaW11bGF0ZWRTd2lwZUluRGlyZWN0aW9u
Rm9yVGVzdGluZyhTd2lwZURpcgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6c2V0TWFnbmlmaWNhdGlvbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQg
b3JpZ2luKQoreworICAgIEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6Tm9uZSB8fCBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFn
bmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVy
ZVR5cGU6Ok5vbmUpIHsKKyAgICAgICAgcHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdp
bik7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRp
bmcgZm9yIHRoZSBEaWRDb2xsZWN0R2VvbWV0cnkgY2FsbGJhY2suCisgICAgaWYgKCFtX3Zpc2li
bGVDb250ZW50UmVjdElzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbGxCZWdpbkdl
c3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIGRvdWJsZSBhYnNv
bHV0ZVNjYWxlID0gc2NhbGUgKiBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIG1fbWFnbmlm
aWNhdGlvbiA9IGNsYW1wVG88ZG91YmxlPihhYnNvbHV0ZVNjYWxlLCBtaW5NYWduaWZpY2F0aW9u
LCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdp
bjsKKworICAgIGFwcGx5TWFnbmlmaWNhdGlvbigpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbigpCit7CisgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1
cmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDVjMGVlZjI3NzZlOC4uMWE3ZmE2
Yjc1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5
R3RrLmNwcApAQCAtNzIsMTEgKzcyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0
aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogICAgIHdl
YmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2
aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5W
aWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpCi17Ci0gICAgc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlKGNlbnRlckluVmll
d0Nvb3JkaW5hdGVzKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJl
OjpSZXBseShjZW50ZXIpKTsKLX0KLQogYm9vbCBXZWJQYWdlUHJveHk6Om1ha2VHTENvbnRleHRD
dXJyZW50KCkKIHsKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VNYWtlR0xDb250ZXh0Q3Vy
cmVudChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDAwYTNkMzA0YWE4Zi4uMDA1NGVlNTA0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTExMCwy
MyArMTEwLDYgQEAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRlbHRh
U2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCiAgICAgcmV0dXJuIHJlc2lzdGFuY2U7CiB9CiAK
LUZsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCi17Ci0gICAgRmxvYXRQb2ludCBz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7Ci0gICAgc2NhbGVkTWFnbmlmaWNhdGlv
bk9yaWdpbi5tb3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7Ci0gICAgZmxv
YXQgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAvIG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLnNjYWxl
KG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7Ci0gICAgcmV0dXJuIHNjYWxlZE1hZ25pZmljYXRp
b25PcmlnaW47Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0
LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQotewotICAgIHdpbGxCZWdp
bkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsKLSAgICBtX3Zpc2libGVDb250ZW50UmVj
dElzVmFsaWQgPSB0cnVlOwotICAgIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUg
PSBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Omdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUoTlNFdmVudCAq
ZXZlbnQsIEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIGlmIChldmVudC50eXBlID09IE5TRXZl
bnRUeXBlTWFnbmlmeSkKQEAgLTE0NCw5ICsxMjcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxv
YQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBm
aXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3Qg
aGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCi0gICAgICAgIG1fbWFnbmlmaWNh
dGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBh
Z2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xs
ZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKLSAgICAgICAgbV9sYXN0TWFn
bmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKKyAgICAgICAg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CiAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE2NSwzNSArMTQ2LDEyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpo
YW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAKICAg
ICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CiAKLSAgICBpZiAobV9mcmFtZUhhbmRs
ZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdl
KG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG9yaWdpbikpOwotICAgIGVsc2UKLSAg
ICAgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbSht
X21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luLCBtX21hZ25p
ZmljYXRpb24pKTsKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGlmIChldmVudC5w
aGFzZSA9PSBOU0V2ZW50UGhhc2VFbmRlZCB8fCBldmVudC5waGFzZSA9PSBOU0V2ZW50UGhhc2VD
YW5jZWxsZWQpCiAgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiB9CiAKLXZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi17Ci0gICAg
aWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgbmV3TWFnbmlmaWNhdGlvbiA9IHN0ZDo6
bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlvbiksIG1heE1hZ25p
ZmljYXRpb24pOwotCi0gICAgaWYgKG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUp
Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LnNjYWxlUGFnZShuZXdNYWduaWZpY2F0aW9uLCByb3Vu
ZGVkSW50UG9pbnQobV9tYWduaWZpY2F0aW9uT3JpZ2luKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKSkKLSAg
ICAgICAgICAgIGRyYXdpbmdBcmVhLT5jb21taXRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRp
b24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdN
YWduaWZpY2F0aW9uKSk7Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKTsKLQotICAgIGRpZEVuZEdlc3R1cmUoKTsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiB7
CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQpA
QCAtMjU1LDYgKzIxMyw5IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0CiAgICAgRmxvYXRQb2lu
dCB0YXJnZXRPcmlnaW4odmlzaWJsZUNvbnRlbnRSZWN0LmNlbnRlcigpKTsKICAgICB0YXJnZXRP
cmlnaW4ubW92ZUJ5KC10YXJnZXRSZWN0LmNlbnRlcigpKTsKIAorICAgIG1faW5pdGlhbE1hZ25p
ZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBtX2luaXRp
YWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludCgpOworCiAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX3dlYlBhZ2VQcm94eS5wYWdl
U2NhbGVGYWN0b3IoKSwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50KCksIG1f
d2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKSk7CiAgICAgbV93ZWJQYWdlUHJveHkuZHJh
d2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbSh0YXJnZXRNYWduaWZpY2F0aW9uLCB0YXJn
ZXRPcmlnaW4pOwogCkBAIC02NTUsMTQgKzYxNiw2IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpyZXNldCgpCiAgICAgcmVzZXRTdGF0ZSgpOwogfQogCi1kb3VibGUgVmlld0dlc3R1cmVD
b250cm9sbGVyOjptYWduaWZpY2F0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAobV9hY3RpdmVHZXN0
dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCi0gICAgICAgIHJldHVy
biBtX21hZ25pZmljYXRpb247Ci0KLSAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxl
RmFjdG9yKCk7Ci19Ci0KIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblNpbXVsYXRl
ZFN3aXBlSW5EaXJlY3Rpb25Gb3JUZXN0aW5nKFN3aXBlRGlyZWN0aW9uKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCA2OGUzNjkxOWZjN2YuLjUxNTNhNzlmMmU5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3Bw
CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzaXplRGlk
Q2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgbm90aWZ5Rmx1c2hSZXF1aXJlZCht
X3Jvb3RMYXllci5nZXQoKSk7CiB9CiAKLWJvb2wgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKK2Jvb2wgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZs
YWdzPiBmbGFncykKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiBwcm90ZWN0b3IobV9pc0ZsdXNo
aW5nTGF5ZXJDaGFuZ2VzLCB0cnVlKTsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgQ29tcG9z
aXRpbmdDb29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAgICBpZiAobV9v
dmVybGF5Q29tcG9zaXRpbmdMYXllcikKICAgICAgICAgbV9vdmVybGF5Q29tcG9zaXRpbmdMYXll
ci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fcm9vdExh
eWVyLT5zaXplKCkpKTsKIAotICAgIG1fcGFnZS5maW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSh7IEZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRp
b25zIH0pOworICAgIG1fcGFnZS5maW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShmbGFncyk7CiAKICAg
ICBhdXRvJiBjb29yZGluYXRlZExheWVyID0gZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyPigqbV9yb290TGF5ZXIpOwogICAgIGNvb3JkaW5hdGVkTGF5ZXIudXBkYXRlQ29udGVudEJ1
ZmZlcnNJbmNsdWRpbmdTdWJMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRv
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggYzNhYWU5ZGYzYmM4Li5hMTgyMjE3YjY5
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGlu
YXRvci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yY2VGcmFtZVN5
bmMoKSB7IG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsgfQogCi0gICAgYm9vbCBmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXMoKTsKKyAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhPcHRp
b25TZXQ8V2ViQ29yZTo6RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4pOwogICAgIFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9
CiAKICAgICB2b2lkIHN5bmNEaXNwbGF5U3RhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRl
eCBiYzZkOTM3YmQ2MmMuLjRhMDg3MjM1ZTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAt
NDgzLDYgKzQ4Myw0NCBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZGlk
VXBkYXRlKCkKICAgICBkaXNwbGF5VGltZXJGaXJlZCgpOwogfQogCisjaWYgUExBVEZPUk0oR1RL
KQordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAoIW1fdHJhbnNp
ZW50Wm9vbSkgeworICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICptX3dlYlBhZ2UubWFp
bkZyYW1lVmlldygpOworICAgICAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0g
ZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKKwor
ICAgICAgICBtX3RyYW5zaWVudFpvb20gPSB0cnVlOworICAgICAgICBtX3RyYW5zaWVudFpvb21J
bml0aWFsT3JpZ2luID0gdW5vYnNjdXJlZENvbnRlbnRSZWN0LmxvY2F0aW9uKCk7CisgICAgfQor
CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmFk
anVzdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBXZSBjYW4ndCBkbyB0cmFuc2llbnQgem9vbSBmb3Igbm9uLUFDIG1vZGUsIHNv
IGp1c3Qgem9vbSBpbiBwbGFjZSBpbnN0ZWFkLgorCisgICAgRmxvYXRQb2ludCB1bnNjcm9sbGVk
T3JpZ2luKG9yaWdpbik7CisgICAgdW5zY3JvbGxlZE9yaWdpbi5tb3ZlQnkoLW1fdHJhbnNpZW50
Wm9vbUluaXRpYWxPcmlnaW4pOworCisgICAgbV93ZWJQYWdlLnNjYWxlUGFnZShzY2FsZSAvIG1f
d2ViUGFnZS52aWV3U2NhbGVGYWN0b3IoKSwgcm91bmRlZEludFBvaW50KC11bnNjcm9sbGVkT3Jp
Z2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRU
cmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRUcmFuc2ll
bnRab29tKHNjYWxlLCBvcmlnaW4pOworCisgICAgRmxvYXRQb2ludCB1bnNjcm9sbGVkT3JpZ2lu
KG9yaWdpbik7CisgICAgdW5zY3JvbGxlZE9yaWdpbi5tb3ZlQnkoLW1fdHJhbnNpZW50Wm9vbUlu
aXRpYWxPcmlnaW4pOworCisgICAgbV93ZWJQYWdlLnNjYWxlUGFnZShzY2FsZSAvIG1fd2ViUGFn
ZS52aWV3U2NhbGVGYWN0b3IoKSwgcm91bmRlZEludFBvaW50KC11bnNjcm9sbGVkT3JpZ2luKSk7
CisKKyAgICBtX3RyYW5zaWVudFpvb20gPSBmYWxzZTsKK30KKyNlbmRpZgorCiB2b2lkIERyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6c2VuZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KCkKIHsKICAgICBBU1NFUlQoIW1faXNXYWl0aW5nRm9yRGlkVXBkYXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5oCmluZGV4IGIxOTU5ZDA0MGUyMS4uODU2NTY4M2I3ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgK
QEAgLTg0LDYgKzg0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVT
dGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBib29sIHJlc3BvbmRJbW1lZGlhdGVs
eSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
VXBkYXRlKCkgb3ZlcnJpZGU7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBhZGp1c3RU
cmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92
ZXJyaWRlOworICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgdm9pZCBzZW5k
RGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKTsKIAogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlU29vbigpOwpAQCAtMTUwLDYgKzE1NSwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9mb3JjZVJlcGFpbnRBZnRlckJhY2tpbmdTdG9yZVN0YXRlVXBkYXRlIHsgZmFsc2Ug
fTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcz4g
bV9kaXNwbGF5VGltZXI7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgYm9vbCBtX3RyYW5zaWVu
dFpvb20geyBmYWxzZSB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29t
SW5pdGlhbE9yaWdpbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAppbmRleCA0MDdmNGYzZmIxZmMu
LmUwMTdjNDAzYmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3Qu
Y3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgogCisjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJMYXllckJhY2tpbmcuaD4KKwogI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAj
aW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjZW5kaWYKQEAgLTE0
NCw3ICsxNDYsMjAgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGltZXJGaXJlZCgp
CiAgICAgaWYgKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2spCiAgICAgICAgIG1fY29vcmRp
bmF0b3IuZm9yY2VGcmFtZVN5bmMoKTsKIAotICAgIGJvb2wgZGlkU3luYyA9IG1fY29vcmRpbmF0
b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgT3B0aW9uU2V0PEZpbmFsaXplUmVu
ZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAoIW1f
dHJhbnNpZW50Wm9vbSkKKyNlbmRpZgorICAgICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJp
bmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworCisgICAg
Ym9vbCBkaWRTeW5jID0gbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoZmxh
Z3MpOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIElmIHdlIGhhdmUgYW4gYWN0aXZlIHRy
YW5zaWVudCB6b29tLCB3ZSB3YW50IHRoZSB6b29tIHRvIHdpbiBvdmVyIGFueSBjaGFuZ2VzCisg
ICAgLy8gdGhhdCBXZWJDb3JlIG1ha2VzIHRvIHRoZSByZWxldmFudCBsYXllcnMsIHNvIHJlLWFw
cGx5IG91ciBjaGFuZ2VzIGFmdGVyIGZsdXNoaW5nLgorICAgIGlmIChtX3RyYW5zaWVudFpvb20p
CisgICAgICAgIGFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNjYWxl
LCBtX3RyYW5zaWVudFpvb21PcmlnaW4pOworI2VuZGlmCiAKICAgICBpZiAobV9ub3RpZnlBZnRl
clNjaGVkdWxlZExheWVyRmx1c2ggJiYgZGlkU3luYykgewogICAgICAgICBtX3dlYlBhZ2UuZHJh
d2luZ0FyZWEoKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKTsKQEAgLTE4NSw4ICsyMDAsMTYg
QEAgdm9pZCBMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIC8vIFdlIG5lZWQgdG8g
c2NoZWR1bGUgYW5vdGhlciBmbHVzaCwgb3RoZXJ3aXNlIHRoZSBmb3JjZWQgcGFpbnQgbWlnaHQg
Y2FuY2VsIGEgbGF0ZXIgZXhwZWN0ZWQgZmx1c2guCiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7
CiAKLSAgICBpZiAoIW1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCi0gICAgICAgIG1fY29vcmRpbmF0
b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgaWYgKCFtX2lzV2FpdGluZ0ZvclJl
bmRlcmVyKSB7CisgICAgICAgIE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdz
PiBmbGFnczsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIGlmICghbV90cmFuc2llbnRab29t
KQorI2VuZGlmCisgICAgICAgICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVG
bGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworCisgICAgICAgIG1fY29v
cmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGZsYWdzKTsKKyAgICB9CisKICAgICBt
X2NvbXBvc2l0b3ItPmZvcmNlUmVwYWludCgpOwogfQogCkBAIC00MjYsNiArNDQ5LDgxIEBAIHZv
aWQgTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wgZm9yY2VSZXBhaW50KQogICAg
IH0KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK0Zsb2F0UG9pbnQgTGF5ZXJUcmVlSG9zdDo6Y29u
c3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2lu
KSBjb25zdAoreworICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5tYWluRnJh
bWVWaWV3KCk7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGZyYW1lVmlldy52
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CisKKyAgICBGbG9hdFBvaW50
IGNvbnN0cmFpbmVkT3JpZ2luID0gdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCk7CisgICAg
Y29uc3RyYWluZWRPcmlnaW4ubW92ZUJ5KC1vcmlnaW4pOworCisgICAgSW50U2l6ZSBzY2FsZWRU
b3RhbENvbnRlbnRzU2l6ZSA9IGZyYW1lVmlldy50b3RhbENvbnRlbnRzU2l6ZSgpOworICAgIHNj
YWxlZFRvdGFsQ29udGVudHNTaXplLnNjYWxlKHNjYWxlICogbV93ZWJQYWdlLnZpZXdTY2FsZUZh
Y3RvcigpIC8gbV93ZWJQYWdlLnRvdGFsU2NhbGVGYWN0b3IoKSk7CisKKyAgICAvLyBTY2FsaW5n
IG1heSBoYXZlIGV4cG9zZWQgdGhlIG92ZXJoYW5nIGFyZWEsIHNvIHdlIG5lZWQgdG8gY29uc3Ry
YWluIHRoZSBmaW5hbAorICAgIC8vIGxheWVyIHBvc2l0aW9uIGV4YWN0bHkgbGlrZSBzY3JvbGxp
bmcgd2lsbCBvbmNlIGl0J3MgY29tbWl0dGVkLCB0byBlbnN1cmUgdGhhdAorICAgIC8vIHNjcm9s
bGluZyBkb2Vzbid0IG1ha2UgdGhlIHZpZXcganVtcC4KKyAgICBjb25zdHJhaW5lZE9yaWdpbiA9
IFNjcm9sbGFibGVBcmVhOjpjb25zdHJhaW5TY3JvbGxQb3NpdGlvbkZvck92ZXJoYW5nKHJvdW5k
ZWRJbnRSZWN0KHZpc2libGVDb250ZW50UmVjdCksCisgICAgICAgIHNjYWxlZFRvdGFsQ29udGVu
dHNTaXplLCByb3VuZGVkSW50UG9pbnQoY29uc3RyYWluZWRPcmlnaW4pLCBmcmFtZVZpZXcuc2Ny
b2xsT3JpZ2luKCksCisgICAgICAgIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSwgZnJhbWVWaWV3
LmZvb3RlckhlaWdodCgpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLXZpc2libGVD
b250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbiA9IC1jb25zdHJh
aW5lZE9yaWdpbjsKKworICAgIHJldHVybiBjb25zdHJhaW5lZE9yaWdpbjsKK30KKworQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKiBMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpvb20o
KSBjb25zdAoreworICAgIFJlbmRlckxheWVyQmFja2luZyogcmVuZGVyVmlld0JhY2tpbmcgPSBt
X3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmJhY2tpbmco
KTsKKworICAgIGlmIChHcmFwaGljc0xheWVyKiBjb250ZW50c0NvbnRhaW5tZW50TGF5ZXIgPSBy
ZW5kZXJWaWV3QmFja2luZy0+Y29udGVudHNDb250YWlubWVudExheWVyKCkpCisgICAgICAgIHJl
dHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqY29udGVudHNDb250YWlu
bWVudExheWVyKTsKKworICAgIHJldHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyPigqcmVuZGVyVmlld0JhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7Cit9CisKK3ZvaWQgTGF5
ZXJUcmVlSG9zdDo6YXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91YmxlIHNjYWxlLCBGbG9h
dFBvaW50IG9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogU2Nyb2xsYmFycyBzaG91bGQgc3RheSBp
bi1wbGFjZSBhbmQgY2hhbmdlIGhlaWdodCB3aGlsZSB6b29taW5nLgorICAgIEZsb2F0UG9pbnQg
Y29uc3RyYWluZWRPcmlnaW4gPSBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKHNjYWxlLCBv
cmlnaW4pOworICAgIGF1dG8qIHpvb21MYXllciA9IGxheWVyRm9yVHJhbnNpZW50Wm9vbSgpOwor
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoY29uc3RyYWluZWRPcmlnaW4ueCgpLCBjb25zdHJhaW5lZE9yaWdpbi55KCkpOworICAg
IHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CisKKyAgICB6b29tTGF5ZXItPnNldFRyYW5zZm9ybSh0
cmFuc2Zvcm0pOworICAgIHpvb21MYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkp
OworICAgIHpvb21MYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKK30KKwordm9pZCBM
YXllclRyZWVIb3N0OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2lu
dCBvcmlnaW4pCit7CisgICAgbV90cmFuc2llbnRab29tID0gdHJ1ZTsKKyAgICBtX3RyYW5zaWVu
dFpvb21TY2FsZSA9IHNjYWxlOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdpbiA9IG9yaWdpbjsK
KworICAgIGFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNjYWxlLCBt
X3RyYW5zaWVudFpvb21PcmlnaW4pOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmNvbW1pdFRy
YW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAo
bV90cmFuc2llbnRab29tU2NhbGUgPT0gc2NhbGUpIHsKKyAgICAgICAgLy8gSWYgdGhlIHBhZ2Ug
c2NhbGUgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IHNjYWxlLCBzZXRQYWdlU2NhbGVGYWN0b3IoKSB3
aWxsIHNob3J0LWNpcmN1aXQKKyAgICAgICAgLy8gYW5kIG5vdCBhcHBseSB0aGUgdHJhbnNmb3Jt
LCBzbyB3ZSBjYW4ndCBkZXBlbmQgb24gaXQgdG8gZG8gc28uCisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGZpbmFsVHJhbnNmb3JtOworICAgICAgICBmaW5hbFRyYW5zZm9ybS5zY2FsZShz
Y2FsZSk7CisKKyAgICAgICAgbGF5ZXJGb3JUcmFuc2llbnRab29tKCktPnNldFRyYW5zZm9ybShm
aW5hbFRyYW5zZm9ybSk7CisgICAgfQorCisgICAgbV90cmFuc2llbnRab29tID0gZmFsc2U7Cisg
ICAgbV90cmFuc2llbnRab29tU2NhbGUgPSAxOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdpbiA9
IEZsb2F0UG9pbnQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVIb3N0LmgKaW5kZXggZGI2NWY4MTMyNjdkLi40OTQzMzkzYTJjMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC0zOCw2ICszOCw5IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KKyNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xB
WUVSX1RFWFRVUkVfTUFQUEVSKQogCkBAIC05OCw2ICsxMDEsMTAgQEAgcHVibGljOgogCiAgICAg
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5SUQ7IH0KIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRyYW5zaWVu
dFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyAgICB2b2lkIGNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyNlbmRpZgogcHJpdmF0ZToK
ICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBsYXllckZsdXNoVGltZXJG
aXJlZCgpOwpAQCAtMTIwLDYgKzEyNywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdERp
c3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOwogICAgIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJl
c2hNb25pdG9yVXBkYXRlKGJvb2wpOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgY29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQpIGNvbnN0OworICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciogbGF5ZXJGb3JUcmFuc2llbnRab29tKCkgY29uc3Q7CisgICAgdm9pZCBhcHBseVRyYW5zaWVu
dFpvb21Ub0xheWVycyhkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2VuZGlmCisKICAg
ICBjbGFzcyBDb21wb3NpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGVkQ29tcG9zaXRv
cjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNsaWVudCAg
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdG9yQ2xpZW50KTsKICAgICBw
dWJsaWM6CkBAIC0yMDAsNiArMjEzLDEyIEBAIHByaXZhdGU6CiAgICAgQ29tcG9zaXRpbmdDb29y
ZGluYXRvciBtX2Nvb3JkaW5hdG9yOwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKworI2lmIFBM
QVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJhbnNpZW50Wm9vbSB7IGZhbHNlIH07CisgICAgZG91
YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV90cmFuc2llbnRab29tT3JpZ2luOworI2VuZGlmCiB9OwogCiAjaWYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCmluZGV4IGJkYzNkYmVlN2U1OC4uNzQ3NzFlYzQwY2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE4MiwxMCArMTgyLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGFkZFRy
YW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykK
ICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFj
a0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV9oYXNS
ZW1vdmVkTWVzc2FnZVJlY2VpdmVyIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggYThm
ZjRmNWE3OTQ3Li45ZDVmNmRjYTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0zNCwxMiArMzQs
MTQgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0Q29s
b3JTcGFjZShzdHJ1Y3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKLSAgICBBZGp1c3RUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0gICAgQ29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQot
ICAgIAogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwg
U3RyaW5nIGtleSwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRBbmlt
YXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSkKICAgICAKICAgICBBZGRU
cmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisgICAgQWRqdXN0VHJh
bnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQorICAg
IENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbikKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCAz
ZmRkZWI4MDQ1ZTIuLjI5NGZkZjQxZmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAKQEAgLTI0NCwxNiArMjQ0LDE0IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6Y29tcHV0ZU1pbmltdW1BbmRNYXhpbXVtVmlld3BvcnRTY2FsZXMoZG91YmxlCiAjZW5k
aWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZv
aWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKQogewogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBt
X3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3RJbmNsdWRpbmdT
Y3JvbGxiYXJzKCk7CiAgICAgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9
IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUoKS5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOwogICAg
IG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxl
Y3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KLSNlbmRpZgogCi0jaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnNldFJl
bmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiB7CiAgICAg
bV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IHNpemU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggZjdmOTk4YWFjMDE2Li44YzIxNmI2MGY5MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTU2LDEwICs1Niw5IEBAIHByaXZhdGU6CiAg
ICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCi0jaWYg
UExBVEZPUk0oTUFDKQotICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdl
c3R1cmUoKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZvaWQgY29s
bGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKwogICAgIHZvaWQgc2V0UmVu
ZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3QpOwogICAgIHZvaWQgc2Vu
ZERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkSWZOZWVkZWQoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzEzMzVmYjJh
NGE1Li5kZDJjZjQ1MmQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5tZXNzYWdlcy5pbgpAQCAtMjUsMTEgKzI1LDkgQEAgbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3RvciBOb3RSZWZDb3VudGVkIHsKICAgICBDb2xsZWN0R2VvbWV0cnlGb3JT
bWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotI2VuZGlmCiAKLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRo
cmVzaG9sZCh1aW50NjRfdCBzaXplKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjVjZDdlZTA5MzNjLi4wMTdmZTAzNGY1ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg4OSw4ICs4
ODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHNob3dFbW9qaVBpY2tlcihXZWJDb3JlOjpG
cmFtZSYpOwogCi0gICAgdm9pZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6SW50UG9pbnQmJik+JiYpOwotCiAgICAgdm9pZCB0aGVtZURpZENoYW5nZShT
dHJpbmcmJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggODNmZTU1YjBjNDA0Li4yNzA0ODM2ZWZi
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNDMwLDggKzQzMCw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgQ29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQotCi0gICAgR2V0Q2VudGVyRm9yWm9vbUdlc3R1
cmUoV2ViQ29yZTo6SW50UG9pbnQgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpIC0+IChXZWJDb3Jl
OjpJbnRQb2ludCBjZW50ZXIpIFN5bmNocm9ub3VzCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwCmluZGV4IGVkYjlkNDQxYjU3Zi4uY2NjZDhjYTE5MzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC0x
NTgsMTQgKzE1OCw2IEBAIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJQYWdl
Ojpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQCiAgICAgcmV0dXJuIFBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q2VudGVyRm9y
Wm9vbUdlc3R1cmUoY29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFBvaW50JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQotewotICAgIEludFBvaW50IHJlc3VsdCA9IG1haW5GcmFtZVZpZXcoKS0+cm9vdFZpZXdU
b0NvbnRlbnRzKGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKTsKLSAgICBkb3VibGUgc2NhbGUgPSBt
X3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwotICAgIHJlc3VsdC5zY2FsZSgxIC8gc2NhbGUsIDEg
LyBzY2FsZSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLX0KLQog
dm9pZCBXZWJQYWdlOjpjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCk7Ci0tIAoyLjMxLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430844</attachid>
            <date>2021-06-08 08:08:44 -0700</date>
            <delta_ts>2021-06-08 08:49:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>47697</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAwYzg4ZGY5OGE2YTVjMjI2NjQ0NjVkNDcxZjg1ZTFiZGEzODFjNjczIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCA4IEp1biAyMDIxIDE0OjI4OjE5ICswNTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgMTAxICsrKysrKysrKysrKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAgICB8ICAzNCArKystLS0KIC4uLi9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAgICB8ICAxMiArKwogLi4uL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzLmggICAgIHwgICA1ICsKIC4uLi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcCAgICAgICB8ICA3NyArKysrKysrKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAgfCAgMzMgKysrKy0tCiAuLi4vVmlld0dlc3R1cmVDb250
cm9sbGVyLm1lc3NhZ2VzLmluICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCAtCiAuLi4vZ3RrL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlckd0ay5jcHAgICAgICAgICAgfCAgMzIgKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCAgfCAgIDUgLQogLi4uL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIHwgIDU3ICstLS0tLS0tLQogLi4uL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuY3BwICAgICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwICAgICAgICB8ICAzOCArKysrKysKIC4uLi9EcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgICAgICB8ICAxMCArKwogLi4uL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrLQog
Li4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oICAgICAgIHwgIDE5ICsrKwog
Li4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCAgIHwgICA2ICstCiAu
Li4vV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAgIDggKy0KIC4u
Li9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwICB8ICAgNCArLQogLi4u
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oICAgIHwgICA1ICstCiAuLi4v
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiAgfCAgIDQgKy0KIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgIDIgLQogLi4uL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgICAgIHwgICA4IC0tCiAyNSBmaWxlcyBj
aGFuZ2VkLCA0NjQgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YjkyOWFhNmEzY2IzLi42YzEwZDUyNTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisy
MDIxLTA2LTA4ICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisKKyAg
ICAgICAgW0dUS10gU3VwcG9ydCB0cmFuc2llbnQgem9vbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgcGluY2ggem9vbSBmb3IgQUMgbW9k
ZS4gUmV1c2UgdGhlIHNhbWUgaW5mcmFzdHJ1Y3R1cmUgYXMgdGhlCisgICAgICAgIG1hY09TIGlt
cGxlbWVudGF0aW9uLiBNb3ZlIHRoZSBzaGFyZWQgY29kZSB0byBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwCisgICAgICAgIHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgIFNsaWdodGx5IGFkanVz
dCB0aGUgc2hhcmVkIGNvZGUgdG8gc3VwcG9ydCBjaGFuZ2luZyB0aGUgZ2VzdHVyZSBvcmlnaW4K
KyAgICAgICAgZHVyaW5nIHRoZSBnZXN0dXJlIHNpbmNlIHdlIHN1cHBvcnQgaXQgb24gYm90aCB0
b3VjaHNjcmVlbiBhbmQgdG91Y2hwYWQuCisKKyAgICAgICAgVGhlcmUncyBub3QgbXVjaCB3ZSBj
YW4gZG8gZm9yIG5vbi1BQyBtb2RlIHNvIGp1c3Qga2VlcCB0aGUgY3VycmVudAorICAgICAgICBi
ZWhhdmlvciB0aGVyZSwgd3JhcHBpbmcgcmVhbC10aW1lIHpvb20gaW50byB0cmFuc2llbnQgem9v
bSBBUEkgc28gdGhhdAorICAgICAgICBpdCdzIGNvbmZpbmVkIHRvIHRoZSB3ZWIgcHJvY2Vzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2Vab29tRW5kKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKToKKworICAgICAgICBTdXBwb3J0IGNoYW5naW5nIG9y
aWdpbiBkdXJpbmcgdGhlIGdlc3R1cmUsIGNhY2hlIHRoZSBwYWdlIHNjYWxlIGZhY3RvcgorICAg
ICAgICB0byBhY2NvbW1vZGF0ZSBub24tQUMgbW9kZSBkb2luZyByZWFsLXRpbWUgem9vbWluZyBp
bnN0ZWFkIG9mIHRyYW5zaWVudAorICAgICAgICB6b29taW5nLgorCisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnByZXBh
cmVNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6YXBwbHlNYWduaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAg
TW92ZWQgZnJvbSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldE1hZ25p
ZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1h
Z25pZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDZW50ZXJGb3Jab29tR2VzdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxl
TWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisKKyAgICAgICAgU2V0IHRoZSBpbml0aWFsIHNjYWxlIGFuZCBvcmlnaW4gYmVmb3JlIGNh
bGxpbmcgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbigpLgorCisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAgICBNb3ZlZCB0byBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cyk6CisKKyAgICAgICAgV2Ugb25seSBuZWVkIHRvIHNldCB0aGUgQXBwbHlTY3JvbGxpbmdUcmVl
TGF5ZXJQb3NpdGlvbnMgZmxhZyB3aGVuIG5vdAorICAgICAgICB6b29taW5nLCBzbyBhZGQgYSBw
YXJhbWV0ZXIgdG8gZG8gdGhhdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
OjpsYXllckZsdXNoVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmZvcmNlUmVwYWludCk6CisgICAgICAgIERvbid0IHBhc3MgQXBwbHlTY3JvbGxpbmdUcmVlTGF5
ZXJQb3NpdGlvbnMgd2hlbiB0cmFuc2llbnQgem9vbSBpcyBhY3RpdmUuCisKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdDo6Y29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmxheWVyRm9yVHJhbnNpZW50Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFwcGx5VHJhbnNpZW50Wm9v
bVRvTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6YWRqdXN0VHJhbnNp
ZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbW1pdFRyYW5zaWVu
dFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpj
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5p
bjoKKworICAgICAgICBCdWlsZCBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVy
ZSBmb3IgR1RLIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldENlbnRlckZvclpvb21HZXN0dXJlKTogRGVsZXRlZC4KKwog
MjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAg
ICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCAzYTNmM2UyNWRkYzAuLmU5Y2Y3MTM1MmJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTMyOSw4
ICszMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAjZW5kaWYKIAog
ICAgIC8vIFRvdWNoIGdlc3R1cmVzIHN0YXRlCi0gICAgZG91YmxlIGluaXRpYWxab29tU2NhbGU7
Ci0gICAgSW50UG9pbnQgaW5pdGlhbFpvb21Qb2ludDsKICAgICBGbG9hdFBvaW50IGRyYWdPZmZz
ZXQ7CiAgICAgYm9vbCBpc0xvbmdQcmVzc2VkOwogICAgIGJvb2wgaXNCZWluZ0RyYWdnZWQ7CkBA
IC0xODQ5LDE3ICsxODQ3LDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUZv
Y3VzKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEaXJlY3Rpb25UeXBlIGRpcmVjCiAgICAgcmV0dXJu
IEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+Zm9j
dXMod2lkZ2V0LCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVpvb21CZWdpbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50U2VxdWVu
Y2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGdkb3Vi
bGUgc2NhbGUsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgcHJpdi0+aW5pdGlhbFpvb21T
Y2FsZSA9IHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgaWYgKHByaXYt
PnBhZ2VHcmFiYmVkVG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAgIGd0a19nZXN0dXJlX3Nl
dF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1FRCk7CisKKyAgICBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0
dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CiAKICAgICBkb3VibGUgeCwgeTsKICAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRp
bmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkpOwotICAgIHByaXYtPnBhZ2VQcm94eS0+Z2V0
Q2VudGVyRm9yWm9vbUdlc3R1cmUoSW50UG9pbnQoeCwgeSksIHByaXYtPmluaXRpYWxab29tUG9p
bnQpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh4LCB5KTsKKworICAgIGNv
bnRyb2xsZXItPnNldE1hZ25pZmljYXRpb24oc2NhbGUsIG9yaWdpbik7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBnZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2Vab29tRW5kKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwg
R2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAg
aWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCkBAIC0xODY3LDE2ICsxODc0LDExIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlLCBnZG91YmxlCiAKICAgICBndGtfZ2VzdHVyZV9zZXRfc3RhdGUoZ2VzdHVyZSwg
R1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgYXV0byBwYWdlU2NhbGUgPSBjbGFt
cFRvPGRvdWJsZT4ocHJpdi0+aW5pdGlhbFpvb21TY2FsZSAqIHNjYWxlLCAxLCAzKTsKLQotICAg
IEZsb2F0UG9pbnQgc2NhbGVkWm9vbUNlbnRlcihwcml2LT5pbml0aWFsWm9vbVBvaW50KTsKLSAg
ICBzY2FsZWRab29tQ2VudGVyLnNjYWxlKHBhZ2VTY2FsZSk7Ci0KLSAgICBkb3VibGUgeCwgeTsK
LSAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkp
OwotICAgIEZsb2F0UG9pbnQgdmlld1BvaW50ID0gRmxvYXRQb2ludCh4LCB5KTsKKyAgICBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0
dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFnZShwYWdlU2NhbGUsIFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KHNjYWxlZFpvb21DZW50ZXIgLSB2aWV3
UG9pbnQpKSk7CisgICAgY29udHJvbGxlci0+ZW5kTWFnbmlmaWNhdGlvbigpOwogfQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoTG9uZ1ByZXNzKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHksIEd0a0dlc3R1cmUqKQpAQCAtMjA1
OSw4ICsyMDYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChH
T2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAgPSBndGtfZ2VzdHVy
ZV96b29tX25ldyh2aWV3V2lkZ2V0KTsKICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JK
RUNUKHZpZXdXaWRnZXQpLCAid2stdmlldy16b29tLWdlc3R1cmUiLCBwcml2LT50b3VjaEdlc3R1
cmVHcm91cCwgZ19vYmplY3RfdW5yZWYpOwogI2VuZGlmCi0gICAgZ19zaWduYWxfY29ubmVjdF9v
YmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJiZWdpbiIsIEdfQ0FMTEJBQ0sod2Via2l0
V2ViVmlld0Jhc2Vab29tQmVnaW4pLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBFRCk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJzY2Fs
ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKSwgdmll
d1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0
KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiZW5kIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3
QmFzZVpvb21FbmQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBFRCk7CiAKICNpZiBVU0Uo
R1RLNCkKICAgICBnZXN0dXJlID0gZ3RrX2dlc3R1cmVfbG9uZ19wcmVzc19uZXcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAKaW5kZXggNWE1MWI5ZWMxZDY4Li4wMzhkOWVlMmY0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBA
IC0xNTIsNiArMTUyLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCBpc0JhCiAjZW5kaWYKIH0KIAor
I2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0VHJhbnNpZW50Wm9vbShz
Y2FsZSwgb3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdp
bikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29tbWl0VHJhbnNpZW50Wm9v
bShzY2FsZSwgb3JpZ2luKSk7Cit9CisjZW5kaWYKKwogdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNv
bnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUX0FSRyhiYWNraW5nU3Rv
cmVTdGF0ZUlELCBiYWNraW5nU3RvcmVTdGF0ZUlEIDw9IG1fY3VycmVudEJhY2tpbmdTdG9yZVN0
YXRlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljcy5oCmluZGV4IGQ3Njk1MDg4ZTdjZi4uYjIzYTQ1ZmY3ZDMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZvckJhY2tpbmdT
dG9yZVVwZGF0ZU9uTmV4dFBhaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAg
IHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisjZW5kaWYKKwog
ICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB1cGRhdGUodWludDY0X3QgYmFj
a2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwg
Y29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGE3ZTZmMGQxOTAzMS4uYjI2MDU0ODkxZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eS5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAgLTU5LDYgKzYw
LDkgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1Ib3Jpem9udGFsU3dpcGVEaXN0YW5jZSA9
IDE1Owogc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dpcGUg
PSAwLjU7CiAKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRy
ZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgbWluTWFn
bmlmaWNhdGlvbiA9IDE7CitzdGF0aWMgY29uc3QgZG91YmxlIG1heE1hZ25pZmljYXRpb24gPSAz
OwogI2VuZGlmCiAKIHN0YXRpYyBIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQpA
QCAtNjQ2LDYgKzY1MCw3OSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJl
bmRlclRyZWVTaXplTm90aWZpY2F0aW9uSWZOZWVkZWQoKQogICAgIGF1dG8qIG1lc3NhZ2VTZW5k
ZXIgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbFBhZ2VQcm94eSgpID8gc3RhdGljX2Nhc3Q8
SVBDOjpNZXNzYWdlU2VuZGVyKj4obV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHko
KSkgOiAmbV93ZWJQYWdlUHJveHk7CiAgICAgbWVzc2FnZVNlbmRlci0+c2VuZChNZXNzYWdlczo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6U2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRp
b25UaHJlc2hvbGQodGhyZXNob2xkKSk7CiB9CisKK0Zsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3Vi
bGUgc2NhbGUpCit7CisgICAgRmxvYXRQb2ludCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1f
aW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4pOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25Pcmln
aW4ubW92ZUJ5KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGZsb2F0IG1h
Z25pZmljYXRpb25PcmlnaW5TY2FsZSA9IDEgLSAoc2NhbGUgLyBtX2luaXRpYWxNYWduaWZpY2F0
aW9uKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLnNjYWxlKG1hZ25pZmljYXRpb25P
cmlnaW5TY2FsZSk7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5tb3ZlKG9yaWdpbiAt
IG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4pOworICAgIHJldHVybiBzY2FsZWRNYWduaWZp
Y2F0aW9uT3JpZ2luOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRSZWN0IHZpc2libGVDb250ZW50
UmVjdCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKK3sKKyAgICB3aWxs
QmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7CisgICAgbV92aXNp
YmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7CisgICAgbV92aXNpYmxlQ29udGVu
dFJlY3RJc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlID0gZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmU7Cit9CisKK3ZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpwcmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBv
cmlnaW4pCit7CisgICAgbV9tYWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxl
RmFjdG9yKCk7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUo
KSk7CisKKyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uID0gbV9tYWduaWZpY2F0aW9uOworICAg
IG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4gPSBGbG9hdFBvaW50KG9yaWdpbik7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1h
Z25pZmljYXRpb24gPSBmYWxzZTsKICNlbmRpZgorfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6YXBwbHlNYWduaWZpY2F0aW9uKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlw
ZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAgICBtX3dl
YlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9tYWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQobV9t
YWduaWZpY2F0aW9uT3JpZ2luKSk7CisgICAgZWxzZQorICAgICAgICBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFnbmlmaWNhdGlvbiwgc2NhbGVk
TWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG1fbWFnbmlmaWNhdGlv
bikpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdl
c3R1cmUoKQoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlw
ZTo6TWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIG5ld01hZ25p
ZmljYXRpb24gPSBjbGFtcFRvPGRvdWJsZT4obV9tYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0
aW9uLCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmlj
YXRpb25HZXN0dXJlKQorICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobmV3TWFnbmlm
aWNhdGlvbiwgcm91bmRlZEludFBvaW50KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVs
c2UgeworICAgICAgICBpZiAoYXV0byBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCkpCisgICAgICAgICAgICBkcmF3aW5nQXJlYS0+Y29tbWl0VHJhbnNpZW50Wm9vbShu
ZXdNYWduaWZpY2F0aW9uLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlv
bk9yaWdpbiwgbmV3TWFnbmlmaWNhdGlvbikpOworICAgIH0KKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworI2VuZGlm
CisKKyAgICBkaWRFbmRHZXN0dXJlKCk7CisgICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlk
ID0gZmFsc2U7Cit9CisKK2RvdWJsZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRp
b24oKSBjb25zdAoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6TWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbWFnbmlmaWNhdGlvbjsKKwor
ICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKworI2VuZGlm
IC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggZTUw
M2FlZmU5OWIyLi42Yzg4YzNlYTRlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xMDgsOCArMTA4LDEwIEBAIHB1YmxpYzoKIAog
ICAgIGVudW0gY2xhc3MgVmlld0dlc3R1cmVUeXBlIHsKICAgICAgICAgTm9uZSwKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIE1hZ25pZmljYXRp
b24sCisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFNtYXJ0TWFnbmlmaWNhdGlv
biwKICNlbmRpZgogICAgICAgICBTd2lwZQpAQCAtMTMwLDE1ICsxMzIsMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2hvdWxkSWdub3JlUGlubmVkU3RhdGUoYm9vbCBpZ25vcmUpIHsgbV9wZW5k
aW5nU3dpcGVUcmFja2VyLnNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGlnbm9yZSk7IH0KIAog
ICAgIGJvb2wgaXNQaHlzaWNhbGx5U3dpcGluZ0xlZnQoU3dpcGVEaXJlY3Rpb24pIGNvbnN0Owot
I2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgZG91YmxlIG1hZ25pZmljYXRpb24oKSBj
b25zdDsKIAotICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9y
bVNjcm9sbEV2ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisgICAgdm9pZCBwcmVw
YXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCk7CisgICAgdm9pZCBh
cHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlTWFnbmlmaWNhdGlvbkdl
c3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6TWFnbmlmaWNhdGlvbjsgfQorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
dm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KFBsYXRmb3JtU2Nyb2xsRXZlbnQs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKICAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCiAgICAgdm9pZCBn
ZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKQEAgLTE1NSw2ICsxNTksOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRl
bSwgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBib29sIGNhbmNlbGxlZCk7
CiAgICAgdm9pZCB3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJlZShib29sKTsK
ICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplKHVpbnQ2NF90KTsKKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyAgICB2b2lkIHNldE1hZ25pZmljYXRpb24oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
KTsKKyAgICB2b2lkIGVuZE1hZ25pZmljYXRpb24oKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRB
bHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKFdlYlBhZ2VQcm94eSopOwpAQCAtMjYz
LDE1ICsyNzAsMTYgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzLgotICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKTsKICAgICB2b2lkIGRpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWlu
aW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpOworI2VuZGlmCisKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywg
Ym9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAKICAgICB2b2lkIGVuZE1h
Z25pZmljYXRpb25HZXN0dXJlKCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1h
Z25pZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2Fs
ZSk7Ci0jZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc3RhcnRT
d2lwZUdlc3R1cmUoUGxhdGZvcm1TY3JvbGxFdmVudCwgU3dpcGVEaXJlY3Rpb24pOwogICAgIHZv
aWQgdHJhY2tTd2lwZUdlc3R1cmUoUGxhdGZvcm1TY3JvbGxFdmVudCwgU3dpcGVEaXJlY3Rpb24s
IFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPik7CiAKQEAgLTM1NSwyMCArMzYzLDI3IEBA
IHByaXZhdGU6CiAgICAgUGVuZGluZ1N3aXBlVHJhY2tlciBtX3BlbmRpbmdTd2lwZVRyYWNrZXI7
CiAKICAgICBib29sIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVzdCB7IGZhbHNlIH07Ci0j
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBkb3VibGUgbV9tYWduaWZpY2F0aW9uOwog
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9tYWduaWZpY2F0aW9uT3JpZ2luOwogCisgICAgZG91
YmxlIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2lu
aXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luOworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNtYXJ0TWFnbmlmaWNhdGlvblVuc2NhbGVkVGFy
Z2V0UmVjdDsKICAgICBib29sIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWdu
aWZpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNtYXJ0
TWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgogCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwogICAgIGJvb2wg
bV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZnJhbWVI
YW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgeyBmYWxzZSB9OworI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdLU3dpcGVDYW5jZWxsYXRpb25UcmFja2VyPiBtX3N3
aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zd2lwZUxh
eWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3aXBlU25hcHNob3RMYXllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5t
ZXNzYWdlcy5pbgppbmRleCA2YmM0ZjlkYWY5MTYuLmE4Y2FhNGRhZjU5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNz
YWdlcy5pbgpAQCAtMjIsMTEgKzIyLDEyIEBACiAKIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlQ29u
dHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQog
ICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJD
b3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50aXJlUmVjdCwg
ZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUp
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIERpZENvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKwogICAg
IERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyYjQwYTY0ZDk2YjQuLjAwODBlYjlkODJjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg5MSwxMCArODkxLDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShzdGQ6Om9wdGlvbmFsPElu
cHV0TWV0aG9kU3RhdGU+JiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCi0gICAgdm9p
ZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVy
SW5WaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyk7
CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3Bw
CmluZGV4IGE3ZjZmYzYzOWVmOC4uYTdhNzUzZjA2NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcApAQCAt
NjMsNiArNjMsOSBAQCBzdGF0aWMgY29uc3QgR3NrQ29sb3JTdG9wIHN3aXBlT3ZlcmxheVNoYWRv
d1N0b3BzW10gPSB7CiB9OwogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBkb3VibGUgbWluTWFnbmlm
aWNhdGlvbiA9IDE7CitzdGF0aWMgY29uc3QgZG91YmxlIG1heE1hZ25pZmljYXRpb24gPSAzOwor
CiBzdGF0aWMgYm9vbCBpc0V2ZW50U3RvcChQbGF0Zm9ybUd0a1Njcm9sbERhdGEqIGV2ZW50KQog
ewogICAgIHJldHVybiBldmVudC0+aXNFbmQ7CkBAIC02NjAsNCArNjYzLDMzIEBAIGJvb2wgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpjb21wbGV0ZVNpbXVsYXRlZFN3aXBlSW5EaXJlY3Rpb25Gb3JU
ZXN0aW5nKFN3aXBlRGlyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBl
OjpOb25lIHx8IG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZp
Y2F0aW9uKTsKKworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlw
ZTo6Tm9uZSkgeworICAgICAgICBwcmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKTsK
KworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UncmUgc3RpbGwgd2FpdGluZyBm
b3IgdGhlIERpZENvbGxlY3RHZW9tZXRyeSBjYWxsYmFjay4KKyAgICBpZiAoIW1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2lsbEJlZ2luR2VzdHVy
ZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworCisgICAgZG91YmxlIGFic29sdXRl
U2NhbGUgPSBzY2FsZSAqIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAgbV9tYWduaWZpY2F0
aW9uID0gY2xhbXBUbzxkb3VibGU+KGFic29sdXRlU2NhbGUsIG1pbk1hZ25pZmljYXRpb24sIG1h
eE1hZ25pZmljYXRpb24pOworCisgICAgbV9tYWduaWZpY2F0aW9uT3JpZ2luID0gb3JpZ2luOwor
CisgICAgYXBwbHlNYWduaWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjplbmRNYWduaWZpY2F0aW9uKCkKK3sKKyAgICBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggNWMwZWVmMjc3NmU4Li4xYTdmYTZiNzVl
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwCkBAIC03MiwxMSArNzIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RT
dGF0ZShzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCiAgICAgd2Via2l0
V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdX
aWRnZXQoKSksIFdURk1vdmUoc3RhdGUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldENl
bnRlckZvclpvb21HZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdD
b29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlcikKLXsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY2VudGVySW5WaWV3Q29v
cmRpbmF0ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmU6OlJl
cGx5KGNlbnRlcikpOwotfQotCiBib29sIFdlYlBhZ2VQcm94eTo6bWFrZUdMQ29udGV4dEN1cnJl
bnQoKQogewogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZU1ha2VHTENvbnRleHRDdXJyZW50
KFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXgg
MDBhM2QzMDRhYThmLi4wMDU0ZWU1MDQxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMTEwLDIzICsx
MTAsNiBAQCBzdGF0aWMgZG91YmxlIHJlc2lzdGFuY2VGb3JEZWx0YShkb3VibGUgZGVsdGFTY2Fs
ZSwgZG91YmxlIGN1cnJlbnRTY2FsZSkKICAgICByZXR1cm4gcmVzaXN0YW5jZTsKIH0KIAotRmxv
YXRQb2ludCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4o
RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSkKLXsKLSAgICBGbG9hdFBvaW50IHNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKLSAgICBmbG9hdCBt
YWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV93ZWJQYWdlUHJveHkucGFn
ZVNjYWxlRmFjdG9yKCkpOwotICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4uc2NhbGUobWFn
bmlmaWNhdGlvbk9yaWdpblNjYWxlKTsKLSAgICByZXR1cm4gc2NhbGVkTWFnbmlmaWNhdGlvbk9y
aWdpbjsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRy
eUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi17Ci0gICAgd2lsbEJlZ2luR2Vz
dHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOwotICAgIG1fdmlzaWJsZUNvbnRl
bnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IHRydWU7Ci0gICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6Z2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShOU0V2ZW50ICpldmVu
dCwgRmxvYXRQb2ludCBvcmlnaW4pCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTlNFdmVudFR5
cGVNYWduaWZ5KQpAQCAtMTQ0LDkgKzEyNyw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZpcnN0
IGZyYW1lIG9mIHRoZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBoYXZl
IHRoZSB2aXNpYmxlIGNvbnRlbnQgYm91bmRzIHlldC4KLSAgICAgICAgbV9tYWduaWZpY2F0aW9u
ID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1fd2ViUGFnZVBy
b3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkpOwotICAgICAgICBtX2xhc3RNYWduaWZp
Y2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFnbmlmaWNhdGlvbiA9IGZhbHNlOworICAgICAgICBwcmVw
YXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKTsKIAogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTY1LDM1ICsxNDYsMTIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRs
ZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAgIG1f
bWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdpbjsKIAotICAgIGlmIChtX2ZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlKQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9t
YWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFn
bmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4sIG1fbWFnbmlmaWNh
dGlvbikpOworICAgIGFwcGx5TWFnbmlmaWNhdGlvbigpOwogCiAgICAgaWYgKGV2ZW50LnBoYXNl
ID09IE5TRXZlbnRQaGFzZUVuZGVkIHx8IGV2ZW50LnBoYXNlID09IE5TRXZlbnRQaGFzZUNhbmNl
bGxlZCkKICAgICAgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKIH0KIAotdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKLXsKLSAgICBpZiAo
bV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBuZXdNYWduaWZpY2F0aW9uID0gc3RkOjptaW4o
c3RkOjptYXgobV9tYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlmaWNh
dGlvbik7Ci0KLSAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAg
ICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5kZWRJ
bnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYg
KGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpKQotICAgICAg
ICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwg
c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25p
ZmljYXRpb24pKTsKLSAgICB9Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZpY2F0
aW9uR2VzdHVyZSgpOwotCi0gICAgZGlkRW5kR2VzdHVyZSgpOwotICAgIG1fdmlzaWJsZUNvbnRl
bnRSZWN0SXNWYWxpZCA9IGZhbHNlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKIHsKICAg
ICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCkBAIC0y
NTUsNiArMjEzLDkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXQKICAgICBGbG9hdFBvaW50IHRh
cmdldE9yaWdpbih2aXNpYmxlQ29udGVudFJlY3QuY2VudGVyKCkpOwogICAgIHRhcmdldE9yaWdp
bi5tb3ZlQnkoLXRhcmdldFJlY3QuY2VudGVyKCkpOwogCisgICAgbV9pbml0aWFsTWFnbmlmaWNh
dGlvblNjYWxlID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgbV9pbml0
aWFsTWFnbmlmaWNhdGlvbk9yaWdpbiA9IEZsb2F0UG9pbnQoKTsKKwogICAgIG1fd2ViUGFnZVBy
b3h5LmRyYXdpbmdBcmVhKCktPmFkanVzdFRyYW5zaWVudFpvb20obV93ZWJQYWdlUHJveHkucGFn
ZVNjYWxlRmFjdG9yKCksIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oRmxvYXRQb2ludCgpLCBt
X3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSkpOwogICAgIG1fd2ViUGFnZVByb3h5LmRy
YXdpbmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20odGFyZ2V0TWFnbmlmaWNhdGlvbiwgdGFy
Z2V0T3JpZ2luKTsKIApAQCAtNjU1LDE0ICs2MTYsNiBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6cmVzZXQoKQogICAgIHJlc2V0U3RhdGUoKTsKIH0KIAotZG91YmxlIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fYWN0aXZlR2Vz
dHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQotICAgICAgICByZXR1
cm4gbV9tYWduaWZpY2F0aW9uOwotCi0gICAgcmV0dXJuIG1fd2ViUGFnZVByb3h5LnBhZ2VTY2Fs
ZUZhY3RvcigpOwotfQotCiBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5TaW11bGF0
ZWRTd2lwZUluRGlyZWN0aW9uRm9yVGVzdGluZyhTd2lwZURpcmVjdGlvbikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggNjhlMzY5MTlmYzdmLi41MTUzYTc5ZjJlOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c2l6ZURp
ZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQo
bV9yb290TGF5ZXIuZ2V0KCkpOwogfQogCi1ib29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCitib29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVG
bGFncz4gZmxhZ3MpCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gcHJvdGVjdG9yKG1faXNGbHVz
aGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgaWYgKG1f
b3ZlcmxheUNvbXBvc2l0aW5nTGF5ZXIpCiAgICAgICAgIG1fb3ZlcmxheUNvbXBvc2l0aW5nTGF5
ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3Jvb3RM
YXllci0+c2l6ZSgpKSk7CiAKLSAgICBtX3BhZ2UuZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoeyBG
aW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0
aW9ucyB9KTsKKyAgICBtX3BhZ2UuZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoZmxhZ3MpOwogCiAg
ICAgYXV0byYgY29vcmRpbmF0ZWRMYXllciA9IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcj4oKm1fcm9vdExheWVyKTsKICAgICBjb29yZGluYXRlZExheWVyLnVwZGF0ZUNvbnRlbnRC
dWZmZXJzSW5jbHVkaW5nU3ViTGF5ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0
b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCmluZGV4IGMzYWFlOWRmM2JjOC4uYTE4MjIxN2I2
OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvcmNlRnJhbWVT
eW5jKCkgeyBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7IH0KIAotICAgIGJvb2wgZmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoT3B0
aW9uU2V0PFdlYkNvcmU6OkZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzKTsKICAg
ICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKCkgeyByZXR1cm4gbV9z
dGF0ZTsgfQogCiAgICAgdm9pZCBzeW5jRGlzcGxheVN0YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAKaW5kZXggYmM2ZDkzN2JkNjJjLi40YTA4NzIzNWU3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAKQEAgLTQ4Myw2ICs0ODMsNDQgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmRpZFVwZGF0ZSgpCiAgICAgZGlzcGxheVRpbWVyRmlyZWQoKTsKIH0KIAorI2lmIFBMQVRG
T1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgaWYgKCFt
X3RyYW5zaWVudFpvb20pIHsKKyAgICAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbV93ZWJQ
YWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICAgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRDb250ZW50
UmVjdCA9IGZyYW1lVmlldy51bm9ic2N1cmVkQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJz
KCk7CisKKyAgICAgICAgbV90cmFuc2llbnRab29tID0gdHJ1ZTsKKyAgICAgICAgbV90cmFuc2ll
bnRab29tSW5pdGlhbE9yaWdpbiA9IHVub2JzY3VyZWRDb250ZW50UmVjdC5sb2NhdGlvbigpOwor
ICAgIH0KKworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5hZGp1c3RUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gV2UgY2FuJ3QgZG8gdHJhbnNpZW50IHpvb20gZm9yIG5vbi1BQyBt
b2RlLCBzbyBqdXN0IHpvb20gaW4gcGxhY2UgaW5zdGVhZC4KKworICAgIEZsb2F0UG9pbnQgdW5z
Y3JvbGxlZE9yaWdpbihvcmlnaW4pOworICAgIHVuc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KC1tX3Ry
YW5zaWVudFpvb21Jbml0aWFsT3JpZ2luKTsKKworICAgIG1fd2ViUGFnZS5zY2FsZVBhZ2Uoc2Nh
bGUgLyBtX3dlYlBhZ2Uudmlld1NjYWxlRmFjdG9yKCksIHJvdW5kZWRJbnRQb2ludCgtdW5zY3Jv
bGxlZE9yaWdpbikpOworfQorCit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6
Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQorewor
ICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKTsKKworICAgIEZsb2F0UG9pbnQgdW5zY3JvbGxl
ZE9yaWdpbihvcmlnaW4pOworICAgIHVuc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KC1tX3RyYW5zaWVu
dFpvb21Jbml0aWFsT3JpZ2luKTsKKworICAgIG1fd2ViUGFnZS5zY2FsZVBhZ2Uoc2NhbGUgLyBt
X3dlYlBhZ2Uudmlld1NjYWxlRmFjdG9yKCksIHJvdW5kZWRJbnRQb2ludCgtdW5zY3JvbGxlZE9y
aWdpbikpOworCisgICAgbV90cmFuc2llbnRab29tID0gZmFsc2U7Cit9CisjZW5kaWYKKwogdm9p
ZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OnNlbmREaWRVcGRhdGVCYWNraW5nU3Rv
cmVTdGF0ZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzV2FpdGluZ0ZvckRpZFVwZGF0ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuaAppbmRleCBiMTk1OWQwNDBlMjEuLjg1NjU2ODNiNzg2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFw
aGljcy5oCkBAIC04NCw2ICs4NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQmFja2lu
Z1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgYm9vbCByZXNwb25kSW1t
ZWRpYXRlbHksIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFVwZGF0ZSgpIG92ZXJyaWRlOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQg
YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIHZv
aWQgc2VuZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKCk7CiAKICAgICB2b2lkIGV4aXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZVNvb24oKTsKQEAgLTE1MCw2ICsxNTUsMTEgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fZm9yY2VSZXBhaW50QWZ0ZXJCYWNraW5nU3RvcmVTdGF0ZVVwZGF0ZSB7
IGZhbHNlIH07CiAKICAgICBSdW5Mb29wOjpUaW1lcjxEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M+IG1fZGlzcGxheVRpbWVyOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV90
cmFuc2llbnRab29tIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fdHJhbnNp
ZW50Wm9vbUluaXRpYWxPcmlnaW47CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNDA3ZjRm
M2ZiMWZjLi45MTIyNmRkNzZiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVIb3N0LmNwcApAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaD4KIAorI2luY2x1
ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CisKICNpZiBVU0UoR0xJQl9FVkVOVF9M
T09QKQogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2VuZGlm
CkBAIC0xNDQsNyArMTQ2LDIyIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVy
RmlyZWQoKQogICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxiYWNrKQogICAgICAgICBt
X2Nvb3JkaW5hdG9yLmZvcmNlRnJhbWVTeW5jKCk7CiAKLSAgICBib29sIGRpZFN5bmMgPSBtX2Nv
b3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAgIE9wdGlvblNldDxGaW5h
bGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFnczsKKyNpZiBQTEFURk9STShHVEspCisgICAg
aWYgKCFtX3RyYW5zaWVudFpvb20pCisgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisjZWxzZQor
ICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGlu
Z1RyZWVMYXllclBvc2l0aW9ucyk7CisjZW5kaWYKKworICAgIGJvb2wgZGlkU3luYyA9IG1fY29v
cmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGZsYWdzKTsKKworI2lmIFBMQVRGT1JN
KEdUSykKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGFjdGl2ZSB0cmFuc2llbnQgem9vbSwgd2Ugd2Fu
dCB0aGUgem9vbSB0byB3aW4gb3ZlciBhbnkgY2hhbmdlcworICAgIC8vIHRoYXQgV2ViQ29yZSBt
YWtlcyB0byB0aGUgcmVsZXZhbnQgbGF5ZXJzLCBzbyByZS1hcHBseSBvdXIgY2hhbmdlcyBhZnRl
ciBmbHVzaGluZy4KKyAgICBpZiAobV90cmFuc2llbnRab29tKQorICAgICAgICBhcHBseVRyYW5z
aWVudFpvb21Ub0xheWVycyhtX3RyYW5zaWVudFpvb21TY2FsZSwgbV90cmFuc2llbnRab29tT3Jp
Z2luKTsKKyNlbmRpZgogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNo
ICYmIGRpZFN5bmMpIHsKICAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmxheWVySG9z
dERpZEZsdXNoTGF5ZXJzKCk7CkBAIC0xODUsOCArMjAyLDE4IEBAIHZvaWQgTGF5ZXJUcmVlSG9z
dDo6Zm9yY2VSZXBhaW50KCkKICAgICAvLyBXZSBuZWVkIHRvIHNjaGVkdWxlIGFub3RoZXIgZmx1
c2gsIG90aGVyd2lzZSB0aGUgZm9yY2VkIHBhaW50IG1pZ2h0IGNhbmNlbCBhIGxhdGVyIGV4cGVj
dGVkIGZsdXNoLgogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogCi0gICAgaWYgKCFtX2lzV2Fp
dGluZ0ZvclJlbmRlcmVyKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcygpOworICAgIGlmICghbV9pc1dhaXRpbmdGb3JSZW5kZXJlcikgeworICAgICAgICBP
cHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3M7CisjaWYgUExBVEZP
Uk0oR1RLKQorICAgICAgICBpZiAoIW1fdHJhbnNpZW50Wm9vbSkKKyAgICAgICAgICAgIGZsYWdz
LmFkZChGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXll
clBvc2l0aW9ucyk7CisjZWxzZQorICAgICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJpbmdV
cGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworI2VuZGlmCisK
KyAgICAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoZmxhZ3MpOwor
ICAgIH0KKwogICAgIG1fY29tcG9zaXRvci0+Zm9yY2VSZXBhaW50KCk7CiB9CiAKQEAgLTQyNiw2
ICs0NTMsODEgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoYm9vbCBmb3Jj
ZVJlcGFpbnQpCiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oR1RLKQorRmxvYXRQb2ludCBMYXll
clRyZWVIb3N0Ojpjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRvdWJsZSBzY2FsZSwgRmxv
YXRQb2ludCBvcmlnaW4pIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqbV93
ZWJQYWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0
ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKKwor
ICAgIEZsb2F0UG9pbnQgY29uc3RyYWluZWRPcmlnaW4gPSB2aXNpYmxlQ29udGVudFJlY3QubG9j
YXRpb24oKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLW9yaWdpbik7CisKKyAgICBJ
bnRTaXplIHNjYWxlZFRvdGFsQ29udGVudHNTaXplID0gZnJhbWVWaWV3LnRvdGFsQ29udGVudHNT
aXplKCk7CisgICAgc2NhbGVkVG90YWxDb250ZW50c1NpemUuc2NhbGUoc2NhbGUgKiBtX3dlYlBh
Z2Uudmlld1NjYWxlRmFjdG9yKCkgLyBtX3dlYlBhZ2UudG90YWxTY2FsZUZhY3RvcigpKTsKKwor
ICAgIC8vIFNjYWxpbmcgbWF5IGhhdmUgZXhwb3NlZCB0aGUgb3ZlcmhhbmcgYXJlYSwgc28gd2Ug
bmVlZCB0byBjb25zdHJhaW4gdGhlIGZpbmFsCisgICAgLy8gbGF5ZXIgcG9zaXRpb24gZXhhY3Rs
eSBsaWtlIHNjcm9sbGluZyB3aWxsIG9uY2UgaXQncyBjb21taXR0ZWQsIHRvIGVuc3VyZSB0aGF0
CisgICAgLy8gc2Nyb2xsaW5nIGRvZXNuJ3QgbWFrZSB0aGUgdmlldyBqdW1wLgorICAgIGNvbnN0
cmFpbmVkT3JpZ2luID0gU2Nyb2xsYWJsZUFyZWE6OmNvbnN0cmFpblNjcm9sbFBvc2l0aW9uRm9y
T3Zlcmhhbmcocm91bmRlZEludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0KSwKKyAgICAgICAgc2Nh
bGVkVG90YWxDb250ZW50c1NpemUsIHJvdW5kZWRJbnRQb2ludChjb25zdHJhaW5lZE9yaWdpbiks
IGZyYW1lVmlldy5zY3JvbGxPcmlnaW4oKSwKKyAgICAgICAgZnJhbWVWaWV3LmhlYWRlckhlaWdo
dCgpLCBmcmFtZVZpZXcuZm9vdGVySGVpZ2h0KCkpOworICAgIGNvbnN0cmFpbmVkT3JpZ2luLm1v
dmVCeSgtdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGNvbnN0cmFpbmVkT3Jp
Z2luID0gLWNvbnN0cmFpbmVkT3JpZ2luOworCisgICAgcmV0dXJuIGNvbnN0cmFpbmVkT3JpZ2lu
OworfQorCitDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIExheWVyVHJlZUhvc3Q6OmxheWVyRm9y
VHJhbnNpZW50Wm9vbSgpIGNvbnN0Cit7CisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiByZW5kZXJW
aWV3QmFja2luZyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKS0+bGF5
ZXIoKS0+YmFja2luZygpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRzQ29udGFp
bm1lbnRMYXllciA9IHJlbmRlclZpZXdCYWNraW5nLT5jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIo
KSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpj
b250ZW50c0NvbnRhaW5tZW50TGF5ZXIpOworCisgICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI+KCpyZW5kZXJWaWV3QmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsK
K30KKwordm9pZCBMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyhkb3Vi
bGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBTY3JvbGxiYXJz
IHNob3VsZCBzdGF5IGluLXBsYWNlIGFuZCBjaGFuZ2UgaGVpZ2h0IHdoaWxlIHpvb21pbmcuCisg
ICAgRmxvYXRQb2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IGNvbnN0cmFpblRyYW5zaWVudFpvb21P
cmlnaW4oc2NhbGUsIG9yaWdpbik7CisgICAgYXV0byogem9vbUxheWVyID0gbGF5ZXJGb3JUcmFu
c2llbnRab29tKCk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCksIGNvbnN0cmFpbmVkT3Jp
Z2luLnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgIHpvb21MYXllci0+
c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgem9vbUxheWVyLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50M0QoKSk7CisgICAgem9vbUxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkp
OworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBtX3RyYW5zaWVudFpvb20gPSB0cnVlOwor
ICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7CisgICAgbV90cmFuc2llbnRab29tT3Jp
Z2luID0gb3JpZ2luOworCisgICAgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2ll
bnRab29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7Cit9CisKK3ZvaWQgTGF5ZXJUcmVl
SG9zdDo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2lu
KQoreworICAgIGlmIChtX3RyYW5zaWVudFpvb21TY2FsZSA9PSBzY2FsZSkgeworICAgICAgICAv
LyBJZiB0aGUgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQgc2NhbGUsIHNldFBhZ2VT
Y2FsZUZhY3RvcigpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgICAgICAvLyBhbmQgbm90IGFwcGx5
IHRoZSB0cmFuc2Zvcm0sIHNvIHdlIGNhbid0IGRlcGVuZCBvbiBpdCB0byBkbyBzby4KKyAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmluYWxUcmFuc2Zvcm07CisgICAgICAgIGZpbmFsVHJh
bnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgICAgICBsYXllckZvclRyYW5zaWVudFpvb20oKS0+
c2V0VHJhbnNmb3JtKGZpbmFsVHJhbnNmb3JtKTsKKyAgICB9CisKKyAgICBtX3RyYW5zaWVudFpv
b20gPSBmYWxzZTsKKyAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9IDE7CisgICAgbV90cmFuc2ll
bnRab29tT3JpZ2luID0gRmxvYXRQb2ludCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAppbmRleCBkYjY1ZjgxMzI2N2QuLjQ5NDMzOTNh
MmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKQEAgLTM4LDYg
KzM4LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNs
dWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oPgorI2VuZGlmCiAKICNpZiBV
U0UoR1JBUEhJQ1NfTEFZRVJfVEVYVFVSRV9NQVBQRVIpCiAKQEAgLTk4LDYgKzEwMSwxMCBAQCBw
dWJsaWM6CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25z
dCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZvaWQg
YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2Vu
ZGlmCiBwcml2YXRlOgogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICB2b2lkIGxh
eWVyRmx1c2hUaW1lckZpcmVkKCk7CkBAIC0xMjAsNiArMTI3LDEyIEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7CiAgICAgdm9pZCBoYW5k
bGVEaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoYm9vbCk7CiAKKyNpZiBQTEFURk9STShHVEsp
CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRv
dWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCkgY29uc3Q7CisgICAgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKiBsYXllckZvclRyYW5zaWVudFpvb20oKSBjb25zdDsKKyAgICB2b2lk
IGFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7
CisjZW5kaWYKKwogICAgIGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgVGhy
ZWFkZWRDb21wb3NpdG9yOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvcjo6Q2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXBvc2l0b3JD
bGllbnQpOwogICAgIHB1YmxpYzoKQEAgLTIwMCw2ICsyMTMsMTIgQEAgcHJpdmF0ZToKICAgICBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yIG1fY29vcmRpbmF0b3I7CiAjZW5kaWYgLy8gVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogICAgIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIG1fZGlzcGxh
eUlEOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV90cmFuc2llbnRab29tIHsgZmFs
c2UgfTsKKyAgICBkb3VibGUgbV90cmFuc2llbnRab29tU2NhbGUgeyAxIH07CisgICAgV2ViQ29y
ZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21PcmlnaW47CisjZW5kaWYKIH07CiAKICNpZiAh
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggYmRjM2RiZWU3ZTU4Li43NDc3MWVjNDBjY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAt
MTgyLDEwICsxODIsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgeyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwg
UExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChX
ZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCiAg
ICAgYm9vbCBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbgppbmRleCBhOGZmNGY1YTc5NDcuLjlkNWY2ZGNhNmUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4K
QEAgLTM0LDEyICszNCwxNCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZDb3VudGVk
IHsKICAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3RXhwb3NlZFJlY3Qoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIAotICAgIEFk
anVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdp
bikKLSAgICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pCi0gICAgCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50
NjRfdCBsYXllcklELCBTdHJpbmcga2V5LCBNb25vdG9uaWNUaW1lIHN0YXJ0VGltZSkKICAgICBB
Y2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5KQog
ICAgIAogICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykK
KyAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pCisgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwCmluZGV4IDNmZGRlYjgwNDVlMi4uMjk0ZmRmNDFmYzhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTQgQEAgdm9pZCBWaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlTWluaW11bUFuZE1heGltdW1WaWV3cG9ydFNjYWxl
cyhkb3VibGUKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2Vv
bWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiB7CiAgICAgRmxvYXRSZWN0IHZpc2libGVD
b250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnVub2JzY3VyZWRDb250ZW50
UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKICAgICBib29sIGZyYW1lSGFuZGxlc01hZ25pZmlj
YXRpb25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLmhhbmRsZXNQYWdlU2NhbGVH
ZXN0dXJlKCk7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUodmlzaWJsZUNv
bnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkpOwogfQotI2VuZGlm
CiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6c2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qg
c2l6ZSkKIHsKICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkID0gc2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBmN2Y5OThhYWMwMTYuLjhjMjE2
YjYwZjkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtNTYsMTAgKzU2LDkg
QEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgY29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbik7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZSgpOwotI2VuZGlmCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworCiAg
ICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRfdCk7
CiAgICAgdm9pZCBzZW5kRGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGRJZk5lZWRlZCgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgpp
bmRleCBjMTMzNWZiMmE0YTUuLmRkMmNmNDUyZDFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yNSwxMSArMjUsOSBAQCBtZXNzYWdlcyAt
PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIE5vdFJlZkNvdW50ZWQgewogICAgIENvbGxl
Y3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCi0j
ZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNldFJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmNWNkN2VlMDkzM2MuLjAx
N2ZlMDM0ZjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtODg5LDggKzg4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbGxhcHNlU2VsZWN0aW9u
SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2hvd0Vtb2ppUGlj
a2VyKFdlYkNvcmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldENlbnRlckZvclpvb21HZXN0dXJl
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCYmKT4mJik7Ci0KICAgICB2b2lkIHRo
ZW1lRGlkQ2hhbmdlKFN0cmluZyYmKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4M2ZlNTViMGM0
MDQuLjI3MDQ4MzZlZmJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MzAsOCArNDMwLDYgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBDb2xsYXBzZVNlbGVjdGlv
bkluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCi0KLSAgICBHZXRDZW50
ZXJGb3Jab29tR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBjZW50ZXJJblZpZXdDb29yZGluYXRl
cykgLT4gKFdlYkNvcmU6OkludFBvaW50IGNlbnRlcikgU3luY2hyb25vdXMKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggZWRiOWQ0NDFiNTdmLi5jY2NkOGNhMTkzNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHAKQEAgLTE1OCwxNCArMTU4LDYgQEAgT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFsbEF2YWlsYWJsZVAKICAg
ICByZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBJbnRQb2ludCYgY2VudGVySW5WaWV3Q29v
cmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6SW50UG9pbnQmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgSW50UG9pbnQgcmVzdWx0ID0gbWFpbkZyYW1lVmll
dygpLT5yb290Vmlld1RvQ29udGVudHMoY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpOwotICAgIGRv
dWJsZSBzY2FsZSA9IG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgcmVzdWx0LnNjYWxl
KDEgLyBzY2FsZSwgMSAvIHNjYWxlKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOwotfQotCiB2b2lkIFdlYlBhZ2U6OmNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKLS0gCjIuMzEuMQoK
</data>
<flag name="commit-queue"
          id="452449"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430846</attachid>
            <date>2021-06-08 08:46:51 -0700</date>
            <delta_ts>2021-06-15 05:12:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>47686</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA4ZDRmMjNkMjQyZmI4N2JkMjllOWM4YjNkOTI3MTFjNzI1ZWZkZWJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCA4IEp1biAyMDIxIDE0OjI4OjE5ICswNTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
IHwgMTAxICsrKysrKysrKysrKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAgICB8ICAzNCArKystLS0KIC4uLi9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAgICB8ICAxMiArKwogLi4uL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzLmggICAgIHwgICA1ICsKIC4uLi9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcCAgICAgICB8ICA3NyArKysrKysrKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAgfCAgMzMgKysrKy0tCiAuLi4vVmlld0dlc3R1cmVDb250
cm9sbGVyLm1lc3NhZ2VzLmluICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCAtCiAuLi4vZ3RrL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlckd0ay5jcHAgICAgICAgICAgfCAgMzIgKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCAgfCAgIDUgLQogLi4uL1VJUHJvY2Vzcy9tYWMvVmll
d0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIHwgIDU3ICstLS0tLS0tLQogLi4uL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuY3BwICAgICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwICAgICAgICB8ICAzOCArKysrKysKIC4uLi9EcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgICAgICB8ICAxMCArKwogLi4uL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrLQog
Li4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oICAgICAgIHwgIDE5ICsrKwog
Li4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCAgIHwgICA2ICstCiAu
Li4vV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAgIDggKy0KIC4u
Li9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwICB8ICAgNCArLQogLi4u
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oICAgIHwgICA1ICstCiAuLi4v
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiAgfCAgIDQgKy0KIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgIDIgLQogLi4uL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgICAgIHwgICA4IC0tCiAyNSBmaWxlcyBj
aGFuZ2VkLCA0NjQgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YjkyOWFhNmEzY2IzLi42YzEwZDUyNTUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisy
MDIxLTA2LTA4ICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisKKyAg
ICAgICAgW0dUS10gU3VwcG9ydCB0cmFuc2llbnQgem9vbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgcGluY2ggem9vbSBmb3IgQUMgbW9k
ZS4gUmV1c2UgdGhlIHNhbWUgaW5mcmFzdHJ1Y3R1cmUgYXMgdGhlCisgICAgICAgIG1hY09TIGlt
cGxlbWVudGF0aW9uLiBNb3ZlIHRoZSBzaGFyZWQgY29kZSB0byBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwCisgICAgICAgIHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgIFNsaWdodGx5IGFkanVz
dCB0aGUgc2hhcmVkIGNvZGUgdG8gc3VwcG9ydCBjaGFuZ2luZyB0aGUgZ2VzdHVyZSBvcmlnaW4K
KyAgICAgICAgZHVyaW5nIHRoZSBnZXN0dXJlIHNpbmNlIHdlIHN1cHBvcnQgaXQgb24gYm90aCB0
b3VjaHNjcmVlbiBhbmQgdG91Y2hwYWQuCisKKyAgICAgICAgVGhlcmUncyBub3QgbXVjaCB3ZSBj
YW4gZG8gZm9yIG5vbi1BQyBtb2RlIHNvIGp1c3Qga2VlcCB0aGUgY3VycmVudAorICAgICAgICBi
ZWhhdmlvciB0aGVyZSwgd3JhcHBpbmcgcmVhbC10aW1lIHpvb20gaW50byB0cmFuc2llbnQgem9v
bSBBUEkgc28gdGhhdAorICAgICAgICBpdCdzIGNvbmZpbmVkIHRvIHRoZSB3ZWIgcHJvY2Vzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2Vab29tRW5kKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKToKKworICAgICAgICBTdXBwb3J0IGNoYW5naW5nIG9y
aWdpbiBkdXJpbmcgdGhlIGdlc3R1cmUsIGNhY2hlIHRoZSBwYWdlIHNjYWxlIGZhY3RvcgorICAg
ICAgICB0byBhY2NvbW1vZGF0ZSBub24tQUMgbW9kZSBkb2luZyByZWFsLXRpbWUgem9vbWluZyBp
bnN0ZWFkIG9mIHRyYW5zaWVudAorICAgICAgICB6b29taW5nLgorCisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnByZXBh
cmVNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6YXBwbHlNYWduaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAg
TW92ZWQgZnJvbSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldE1hZ25p
ZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1h
Z25pZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDZW50ZXJGb3Jab29tR2VzdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxl
TWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisKKyAgICAgICAgU2V0IHRoZSBpbml0aWFsIHNjYWxlIGFuZCBvcmlnaW4gYmVmb3JlIGNh
bGxpbmcgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbigpLgorCisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAgICBNb3ZlZCB0byBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cyk6CisKKyAgICAgICAgV2Ugb25seSBuZWVkIHRvIHNldCB0aGUgQXBwbHlTY3JvbGxpbmdUcmVl
TGF5ZXJQb3NpdGlvbnMgZmxhZyB3aGVuIG5vdAorICAgICAgICB6b29taW5nLCBzbyBhZGQgYSBw
YXJhbWV0ZXIgdG8gZG8gdGhhdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
OjpsYXllckZsdXNoVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmZvcmNlUmVwYWludCk6CisgICAgICAgIERvbid0IHBhc3MgQXBwbHlTY3JvbGxpbmdUcmVlTGF5
ZXJQb3NpdGlvbnMgd2hlbiB0cmFuc2llbnQgem9vbSBpcyBhY3RpdmUuCisKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdDo6Y29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmxheWVyRm9yVHJhbnNpZW50Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFwcGx5VHJhbnNpZW50Wm9v
bVRvTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6YWRqdXN0VHJhbnNp
ZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbW1pdFRyYW5zaWVu
dFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpj
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5p
bjoKKworICAgICAgICBCdWlsZCBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVy
ZSBmb3IgR1RLIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldENlbnRlckZvclpvb21HZXN0dXJlKTogRGVsZXRlZC4KKwog
MjAyMS0wNS0yNCAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAg
ICAgICAgIFtHVEs0XSBBZGQgc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBnZXN0dXJlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAppbmRleCAzYTNmM2UyNWRkYzAuLmU5Y2Y3MTM1MmJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTMyOSw4
ICszMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAjZW5kaWYKIAog
ICAgIC8vIFRvdWNoIGdlc3R1cmVzIHN0YXRlCi0gICAgZG91YmxlIGluaXRpYWxab29tU2NhbGU7
Ci0gICAgSW50UG9pbnQgaW5pdGlhbFpvb21Qb2ludDsKICAgICBGbG9hdFBvaW50IGRyYWdPZmZz
ZXQ7CiAgICAgYm9vbCBpc0xvbmdQcmVzc2VkOwogICAgIGJvb2wgaXNCZWluZ0RyYWdnZWQ7CkBA
IC0xODQ5LDE3ICsxODQ3LDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUZv
Y3VzKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEaXJlY3Rpb25UeXBlIGRpcmVjCiAgICAgcmV0dXJu
IEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+Zm9j
dXMod2lkZ2V0LCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVpvb21CZWdpbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50U2VxdWVu
Y2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGdkb3Vi
bGUgc2NhbGUsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgcHJpdi0+aW5pdGlhbFpvb21T
Y2FsZSA9IHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgaWYgKHByaXYt
PnBhZ2VHcmFiYmVkVG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAgIGd0a19nZXN0dXJlX3Nl
dF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1FRCk7CisKKyAgICBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0
dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CiAKICAgICBkb3VibGUgeCwgeTsKICAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRp
bmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkpOwotICAgIHByaXYtPnBhZ2VQcm94eS0+Z2V0
Q2VudGVyRm9yWm9vbUdlc3R1cmUoSW50UG9pbnQoeCwgeSksIHByaXYtPmluaXRpYWxab29tUG9p
bnQpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh4LCB5KTsKKworICAgIGNv
bnRyb2xsZXItPnNldE1hZ25pZmljYXRpb24oc2NhbGUsIG9yaWdpbik7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBnZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2Vab29tRW5kKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwg
R2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAg
aWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCkBAIC0xODY3LDE2ICsxODc0LDExIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlLCBnZG91YmxlCiAKICAgICBndGtfZ2VzdHVyZV9zZXRfc3RhdGUoZ2VzdHVyZSwg
R1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgYXV0byBwYWdlU2NhbGUgPSBjbGFt
cFRvPGRvdWJsZT4ocHJpdi0+aW5pdGlhbFpvb21TY2FsZSAqIHNjYWxlLCAxLCAzKTsKLQotICAg
IEZsb2F0UG9pbnQgc2NhbGVkWm9vbUNlbnRlcihwcml2LT5pbml0aWFsWm9vbVBvaW50KTsKLSAg
ICBzY2FsZWRab29tQ2VudGVyLnNjYWxlKHBhZ2VTY2FsZSk7Ci0KLSAgICBkb3VibGUgeCwgeTsK
LSAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkp
OwotICAgIEZsb2F0UG9pbnQgdmlld1BvaW50ID0gRmxvYXRQb2ludCh4LCB5KTsKKyAgICBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0
dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250cm9sbGVyKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFnZShwYWdlU2NhbGUsIFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KHNjYWxlZFpvb21DZW50ZXIgLSB2aWV3
UG9pbnQpKSk7CisgICAgY29udHJvbGxlci0+ZW5kTWFnbmlmaWNhdGlvbigpOwogfQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoTG9uZ1ByZXNzKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHksIEd0a0dlc3R1cmUqKQpAQCAtMjA1
OSw4ICsyMDYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3RlZChH
T2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAgPSBndGtfZ2VzdHVy
ZV96b29tX25ldyh2aWV3V2lkZ2V0KTsKICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JK
RUNUKHZpZXdXaWRnZXQpLCAid2stdmlldy16b29tLWdlc3R1cmUiLCBwcml2LT50b3VjaEdlc3R1
cmVHcm91cCwgZ19vYmplY3RfdW5yZWYpOwogI2VuZGlmCi0gICAgZ19zaWduYWxfY29ubmVjdF9v
YmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJiZWdpbiIsIEdfQ0FMTEJBQ0sod2Via2l0
V2ViVmlld0Jhc2Vab29tQmVnaW4pLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBFRCk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJzY2Fs
ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKSwgdmll
d1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0
KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiZW5kIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3
QmFzZVpvb21FbmQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBFRCk7CiAKICNpZiBVU0Uo
R1RLNCkKICAgICBnZXN0dXJlID0gZ3RrX2dlc3R1cmVfbG9uZ19wcmVzc19uZXcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAKaW5kZXggNWE1MWI5ZWMxZDY4Li4wMzhkOWVlMmY0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBA
IC0xNTIsNiArMTUyLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCBpc0JhCiAjZW5kaWYKIH0KIAor
I2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikK
K3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0VHJhbnNpZW50Wm9vbShz
Y2FsZSwgb3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdp
bikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29tbWl0VHJhbnNpZW50Wm9v
bShzY2FsZSwgb3JpZ2luKSk7Cit9CisjZW5kaWYKKwogdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNv
bnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUX0FSRyhiYWNraW5nU3Rv
cmVTdGF0ZUlELCBiYWNraW5nU3RvcmVTdGF0ZUlEIDw9IG1fY3VycmVudEJhY2tpbmdTdG9yZVN0
YXRlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRp
bmF0ZWRHcmFwaGljcy5oCmluZGV4IGQ3Njk1MDg4ZTdjZi4uYjIzYTQ1ZmY3ZDMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZvckJhY2tpbmdT
dG9yZVVwZGF0ZU9uTmV4dFBhaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRCYWNraW5nU3Rv
cmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAg
IHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisjZW5kaWYKKwog
ICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB1cGRhdGUodWludDY0X3QgYmFj
a2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwg
Y29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGE3ZTZmMGQxOTAzMS4uYjI2MDU0ODkxZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNl
bmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eS5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiVmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAgLTU5LDYgKzYw
LDkgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1Ib3Jpem9udGFsU3dpcGVEaXN0YW5jZSA9
IDE1Owogc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dpcGUg
PSAwLjU7CiAKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRy
ZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CisKK3N0YXRpYyBjb25zdCBkb3VibGUgbWluTWFn
bmlmaWNhdGlvbiA9IDE7CitzdGF0aWMgY29uc3QgZG91YmxlIG1heE1hZ25pZmljYXRpb24gPSAz
OwogI2VuZGlmCiAKIHN0YXRpYyBIYXNoTWFwPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQpA
QCAtNjQ2LDYgKzY1MCw3OSBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJl
bmRlclRyZWVTaXplTm90aWZpY2F0aW9uSWZOZWVkZWQoKQogICAgIGF1dG8qIG1lc3NhZ2VTZW5k
ZXIgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbFBhZ2VQcm94eSgpID8gc3RhdGljX2Nhc3Q8
SVBDOjpNZXNzYWdlU2VuZGVyKj4obV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHko
KSkgOiAmbV93ZWJQYWdlUHJveHk7CiAgICAgbWVzc2FnZVNlbmRlci0+c2VuZChNZXNzYWdlczo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6U2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRp
b25UaHJlc2hvbGQodGhyZXNob2xkKSk7CiB9CisKK0Zsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3Vi
bGUgc2NhbGUpCit7CisgICAgRmxvYXRQb2ludCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1f
aW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4pOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25Pcmln
aW4ubW92ZUJ5KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAgIGZsb2F0IG1h
Z25pZmljYXRpb25PcmlnaW5TY2FsZSA9IDEgLSAoc2NhbGUgLyBtX2luaXRpYWxNYWduaWZpY2F0
aW9uKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLnNjYWxlKG1hZ25pZmljYXRpb25P
cmlnaW5TY2FsZSk7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5tb3ZlKG9yaWdpbiAt
IG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4pOworICAgIHJldHVybiBzY2FsZWRNYWduaWZp
Y2F0aW9uT3JpZ2luOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRSZWN0IHZpc2libGVDb250ZW50
UmVjdCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKK3sKKyAgICB3aWxs
QmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7CisgICAgbV92aXNp
YmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7CisgICAgbV92aXNpYmxlQ29udGVu
dFJlY3RJc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlID0gZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmU7Cit9CisKK3ZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpwcmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBv
cmlnaW4pCit7CisgICAgbV9tYWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxl
RmFjdG9yKCk7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUo
KSk7CisKKyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uID0gbV9tYWduaWZpY2F0aW9uOworICAg
IG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4gPSBGbG9hdFBvaW50KG9yaWdpbik7CisKKyNp
ZiBQTEFURk9STShNQUMpCisgICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1h
Z25pZmljYXRpb24gPSBmYWxzZTsKICNlbmRpZgorfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6YXBwbHlNYWduaWZpY2F0aW9uKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlw
ZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAgICBtX3dl
YlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9tYWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQobV9t
YWduaWZpY2F0aW9uT3JpZ2luKSk7CisgICAgZWxzZQorICAgICAgICBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFnbmlmaWNhdGlvbiwgc2NhbGVk
TWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG1fbWFnbmlmaWNhdGlv
bikpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdl
c3R1cmUoKQoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlw
ZTo6TWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIG5ld01hZ25p
ZmljYXRpb24gPSBjbGFtcFRvPGRvdWJsZT4obV9tYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0
aW9uLCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmlj
YXRpb25HZXN0dXJlKQorICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobmV3TWFnbmlm
aWNhdGlvbiwgcm91bmRlZEludFBvaW50KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVs
c2UgeworICAgICAgICBpZiAoYXV0byBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCkpCisgICAgICAgICAgICBkcmF3aW5nQXJlYS0+Y29tbWl0VHJhbnNpZW50Wm9vbShu
ZXdNYWduaWZpY2F0aW9uLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlv
bk9yaWdpbiwgbmV3TWFnbmlmaWNhdGlvbikpOworICAgIH0KKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOworI2VuZGlm
CisKKyAgICBkaWRFbmRHZXN0dXJlKCk7CisgICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlk
ID0gZmFsc2U7Cit9CisKK2RvdWJsZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRp
b24oKSBjb25zdAoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6TWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuIG1fbWFnbmlmaWNhdGlvbjsKKwor
ICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKK30KKworI2VuZGlm
IC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggZTUw
M2FlZmU5OWIyLi42Yzg4YzNlYTRlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xMDgsOCArMTA4LDEwIEBAIHB1YmxpYzoKIAog
ICAgIGVudW0gY2xhc3MgVmlld0dlc3R1cmVUeXBlIHsKICAgICAgICAgTm9uZSwKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIE1hZ25pZmljYXRp
b24sCisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFNtYXJ0TWFnbmlmaWNhdGlv
biwKICNlbmRpZgogICAgICAgICBTd2lwZQpAQCAtMTMwLDE1ICsxMzIsMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2hvdWxkSWdub3JlUGlubmVkU3RhdGUoYm9vbCBpZ25vcmUpIHsgbV9wZW5k
aW5nU3dpcGVUcmFja2VyLnNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGlnbm9yZSk7IH0KIAog
ICAgIGJvb2wgaXNQaHlzaWNhbGx5U3dpcGluZ0xlZnQoU3dpcGVEaXJlY3Rpb24pIGNvbnN0Owot
I2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgZG91YmxlIG1hZ25pZmljYXRpb24oKSBj
b25zdDsKIAotICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9y
bVNjcm9sbEV2ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CisgICAgdm9pZCBwcmVw
YXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCk7CisgICAgdm9pZCBh
cHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGJvb2wgaGFzQWN0aXZlTWFnbmlmaWNhdGlvbkdl
c3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJl
VHlwZTo6TWFnbmlmaWNhdGlvbjsgfQorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisgICAg
dm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KFBsYXRmb3JtU2Nyb2xsRXZlbnQs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKICAgICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCiAgICAgdm9pZCBn
ZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKQEAgLTE1NSw2ICsxNTksOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRl
bSwgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBib29sIGNhbmNlbGxlZCk7
CiAgICAgdm9pZCB3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJlZShib29sKTsK
ICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplKHVpbnQ2NF90KTsKKyNlbGlmIFBMQVRGT1JNKEdU
SykKKyAgICB2b2lkIHNldE1hZ25pZmljYXRpb24oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
KTsKKyAgICB2b2lkIGVuZE1hZ25pZmljYXRpb24oKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRB
bHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlKFdlYlBhZ2VQcm94eSopOwpAQCAtMjYz
LDE1ICsyNzAsMTYgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzLgotICAgIHZvaWQgZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKTsKICAgICB2b2lkIGRpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWlu
aW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUpOworI2VuZGlmCisKKyNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywg
Ym9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAKICAgICB2b2lkIGVuZE1h
Z25pZmljYXRpb25HZXN0dXJlKCk7CiAKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1h
Z25pZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2Fs
ZSk7Ci0jZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZvaWQgc3RhcnRT
d2lwZUdlc3R1cmUoUGxhdGZvcm1TY3JvbGxFdmVudCwgU3dpcGVEaXJlY3Rpb24pOwogICAgIHZv
aWQgdHJhY2tTd2lwZUdlc3R1cmUoUGxhdGZvcm1TY3JvbGxFdmVudCwgU3dpcGVEaXJlY3Rpb24s
IFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPik7CiAKQEAgLTM1NSwyMCArMzYzLDI3IEBA
IHByaXZhdGU6CiAgICAgUGVuZGluZ1N3aXBlVHJhY2tlciBtX3BlbmRpbmdTd2lwZVRyYWNrZXI7
CiAKICAgICBib29sIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVzdCB7IGZhbHNlIH07Ci0j
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBkb3VibGUgbV9tYWduaWZpY2F0aW9uOwog
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9tYWduaWZpY2F0aW9uT3JpZ2luOwogCisgICAgZG91
YmxlIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2lu
aXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luOworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNtYXJ0TWFnbmlmaWNhdGlvblVuc2NhbGVkVGFy
Z2V0UmVjdDsKICAgICBib29sIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWdu
aWZpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNtYXJ0
TWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgogCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwogICAgIGJvb2wg
bV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkIHsgZmFsc2UgfTsKICAgICBib29sIG1fZnJhbWVI
YW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgeyBmYWxzZSB9OworI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdLU3dpcGVDYW5jZWxsYXRpb25UcmFja2VyPiBtX3N3
aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zd2lwZUxh
eWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3aXBlU25hcHNob3RMYXllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5t
ZXNzYWdlcy5pbgppbmRleCA2YmM0ZjlkYWY5MTYuLmE4Y2FhNGRhZjU5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNz
YWdlcy5pbgpAQCAtMjIsMTEgKzIyLDEyIEBACiAKIG1lc3NhZ2VzIC0+IFZpZXdHZXN0dXJlQ29u
dHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQog
ICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0LCBXZWJD
b3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50aXJlUmVjdCwg
ZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVtU2NhbGUp
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIERpZENvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKwogICAg
IERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyYjQwYTY0ZDk2YjQuLjAwODBlYjlkODJjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg5MSwxMCArODkxLDYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShzdGQ6Om9wdGlvbmFsPElu
cHV0TWV0aG9kU3RhdGU+JiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspCi0gICAgdm9p
ZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVy
SW5WaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyk7
CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3Bw
CmluZGV4IGE3ZjZmYzYzOWVmOC4uYTdhNzUzZjA2NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcApAQCAt
NjMsNiArNjMsOSBAQCBzdGF0aWMgY29uc3QgR3NrQ29sb3JTdG9wIHN3aXBlT3ZlcmxheVNoYWRv
d1N0b3BzW10gPSB7CiB9OwogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBkb3VibGUgbWluTWFnbmlm
aWNhdGlvbiA9IDE7CitzdGF0aWMgY29uc3QgZG91YmxlIG1heE1hZ25pZmljYXRpb24gPSAzOwor
CiBzdGF0aWMgYm9vbCBpc0V2ZW50U3RvcChQbGF0Zm9ybUd0a1Njcm9sbERhdGEqIGV2ZW50KQog
ewogICAgIHJldHVybiBldmVudC0+aXNFbmQ7CkBAIC02NjAsNCArNjYzLDMzIEBAIGJvb2wgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpjb21wbGV0ZVNpbXVsYXRlZFN3aXBlSW5EaXJlY3Rpb25Gb3JU
ZXN0aW5nKFN3aXBlRGlyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVD
b250cm9sbGVyOjpzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBl
OjpOb25lIHx8IG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZp
Y2F0aW9uKTsKKworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlw
ZTo6Tm9uZSkgeworICAgICAgICBwcmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKTsK
KworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UncmUgc3RpbGwgd2FpdGluZyBm
b3IgdGhlIERpZENvbGxlY3RHZW9tZXRyeSBjYWxsYmFjay4KKyAgICBpZiAoIW1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2lsbEJlZ2luR2VzdHVy
ZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworCisgICAgZG91YmxlIGFic29sdXRl
U2NhbGUgPSBzY2FsZSAqIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAgbV9tYWduaWZpY2F0
aW9uID0gY2xhbXBUbzxkb3VibGU+KGFic29sdXRlU2NhbGUsIG1pbk1hZ25pZmljYXRpb24sIG1h
eE1hZ25pZmljYXRpb24pOworCisgICAgbV9tYWduaWZpY2F0aW9uT3JpZ2luID0gb3JpZ2luOwor
CisgICAgYXBwbHlNYWduaWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjplbmRNYWduaWZpY2F0aW9uKCkKK3sKKyAgICBlbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggNWMwZWVmMjc3NmU4Li4xYTdmYTZiNzVl
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwCkBAIC03MiwxMSArNzIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RT
dGF0ZShzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCiAgICAgd2Via2l0
V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdX
aWRnZXQoKSksIFdURk1vdmUoc3RhdGUpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmdldENl
bnRlckZvclpvb21HZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdD
b29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlcikKLXsKLSAgICBzZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY2VudGVySW5WaWV3Q29v
cmRpbmF0ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmU6OlJl
cGx5KGNlbnRlcikpOwotfQotCiBib29sIFdlYlBhZ2VQcm94eTo6bWFrZUdMQ29udGV4dEN1cnJl
bnQoKQogewogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZU1ha2VHTENvbnRleHRDdXJyZW50
KFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXgg
MDBhM2QzMDRhYThmLi4wOTBmMmI1YmIwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMTEwLDIzICsx
MTAsNiBAQCBzdGF0aWMgZG91YmxlIHJlc2lzdGFuY2VGb3JEZWx0YShkb3VibGUgZGVsdGFTY2Fs
ZSwgZG91YmxlIGN1cnJlbnRTY2FsZSkKICAgICByZXR1cm4gcmVzaXN0YW5jZTsKIH0KIAotRmxv
YXRQb2ludCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4o
RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSkKLXsKLSAgICBGbG9hdFBvaW50IHNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKLSAgICBmbG9hdCBt
YWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV93ZWJQYWdlUHJveHkucGFn
ZVNjYWxlRmFjdG9yKCkpOwotICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4uc2NhbGUobWFn
bmlmaWNhdGlvbk9yaWdpblNjYWxlKTsKLSAgICByZXR1cm4gc2NhbGVkTWFnbmlmaWNhdGlvbk9y
aWdpbjsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRy
eUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi17Ci0gICAgd2lsbEJlZ2luR2Vz
dHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOwotICAgIG1fdmlzaWJsZUNvbnRl
bnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IHRydWU7Ci0gICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IGZy
YW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6Z2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShOU0V2ZW50ICpldmVu
dCwgRmxvYXRQb2ludCBvcmlnaW4pCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTlNFdmVudFR5
cGVNYWduaWZ5KQpAQCAtMTQ0LDkgKzEyNyw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZpcnN0
IGZyYW1lIG9mIHRoZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBoYXZl
IHRoZSB2aXNpYmxlIGNvbnRlbnQgYm91bmRzIHlldC4KLSAgICAgICAgbV9tYWduaWZpY2F0aW9u
ID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1fd2ViUGFnZVBy
b3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkpOwotICAgICAgICBtX2xhc3RNYWduaWZp
Y2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFnbmlmaWNhdGlvbiA9IGZhbHNlOworICAgICAgICBwcmVw
YXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKTsKIAogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTY1LDM1ICsxNDYsMTIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRs
ZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAgIG1f
bWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdpbjsKIAotICAgIGlmIChtX2ZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlKQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9t
YWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7Ci0gICAgZWxzZQotICAgICAg
ICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFn
bmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4sIG1fbWFnbmlmaWNh
dGlvbikpOworICAgIGFwcGx5TWFnbmlmaWNhdGlvbigpOwogCiAgICAgaWYgKGV2ZW50LnBoYXNl
ID09IE5TRXZlbnRQaGFzZUVuZGVkIHx8IGV2ZW50LnBoYXNlID09IE5TRXZlbnRQaGFzZUNhbmNl
bGxlZCkKICAgICAgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKIH0KIAotdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKLXsKLSAgICBpZiAo
bV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBuZXdNYWduaWZpY2F0aW9uID0gc3RkOjptaW4o
c3RkOjptYXgobV9tYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlmaWNh
dGlvbik7Ci0KLSAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAg
ICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5kZWRJ
bnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYg
KGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpKQotICAgICAg
ICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwg
c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25p
ZmljYXRpb24pKTsKLSAgICB9Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZpY2F0
aW9uR2VzdHVyZSgpOwotCi0gICAgZGlkRW5kR2VzdHVyZSgpOwotICAgIG1fdmlzaWJsZUNvbnRl
bnRSZWN0SXNWYWxpZCA9IGZhbHNlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKIHsKICAg
ICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCkBAIC0y
NTUsNiArMjEzLDkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9t
ZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXQKICAgICBGbG9hdFBvaW50IHRh
cmdldE9yaWdpbih2aXNpYmxlQ29udGVudFJlY3QuY2VudGVyKCkpOwogICAgIHRhcmdldE9yaWdp
bi5tb3ZlQnkoLXRhcmdldFJlY3QuY2VudGVyKCkpOwogCisgICAgbV9pbml0aWFsTWFnbmlmaWNh
dGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1faW5pdGlhbE1h
Z25pZmljYXRpb25PcmlnaW4gPSBGbG9hdFBvaW50KCk7CisKICAgICBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fd2ViUGFnZVByb3h5LnBhZ2VTY2Fs
ZUZhY3RvcigpLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQoKSwgbV93ZWJQ
YWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5n
QXJlYSgpLT5jb21taXRUcmFuc2llbnRab29tKHRhcmdldE1hZ25pZmljYXRpb24sIHRhcmdldE9y
aWdpbik7CiAKQEAgLTY1NSwxNCArNjE2LDYgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnJlc2V0KCkKICAgICByZXNldFN0YXRlKCk7CiB9CiAKLWRvdWJsZSBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdAotewotICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVU
eXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIG1f
bWFnbmlmaWNhdGlvbjsKLQotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0
b3IoKTsKLX0KLQogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU2ltdWxhdGVkU3dp
cGVJbkRpcmVjdGlvbkZvclRlc3RpbmcoU3dpcGVEaXJlY3Rpb24pCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29v
cmRpbmF0b3IuY3BwCmluZGV4IDY4ZTM2OTE5ZmM3Zi4uNTE1M2E3OWYyZTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAg
LTExNSw3ICsxMTUsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnNpemVEaWRDaGFu
Z2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKG1fcm9v
dExheWVyLmdldCgpKTsKIH0KIAotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMoKQorYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+
IGZsYWdzKQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hpbmdM
YXllckNoYW5nZXMsIHRydWUpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIGlmIChtX292ZXJs
YXlDb21wb3NpdGluZ0xheWVyKQogICAgICAgICBtX292ZXJsYXlDb21wb3NpdGluZ0xheWVyLT5m
bHVzaENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9yb290TGF5ZXIt
PnNpemUoKSkpOwogCi0gICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHsgRmluYWxp
emVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMg
fSk7CisgICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKGZsYWdzKTsKIAogICAgIGF1
dG8mIGNvb3JkaW5hdGVkTGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+
KCptX3Jvb3RMYXllcik7CiAgICAgY29vcmRpbmF0ZWRMYXllci51cGRhdGVDb250ZW50QnVmZmVy
c0luY2x1ZGluZ1N1YkxheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBjM2FhZTlkZjNiYzguLmVlZDMwZmVjODU3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9y
LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JjZUZyYW1lU3luYygp
IHsgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOyB9CiAKLSAgICBib29sIGZsdXNoUGVuZGluZ0xh
eWVyQ2hhbmdlcygpOworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKE9wdGlvblNl
dDxXZWJDb3JlOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAgICAgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIAog
ICAgIHZvaWQgc3luY0Rpc3BsYXlTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGJj
NmQ5MzdiZDYyYy4uNGEwODcyMzVlN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC00ODMs
NiArNDgzLDQ0IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaWRVcGRh
dGUoKQogICAgIGRpc3BsYXlUaW1lckZpcmVkKCk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspCit2
b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmICghbV90cmFuc2llbnRa
b29tKSB7CisgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5tYWluRnJh
bWVWaWV3KCk7CisgICAgICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QgPSBmcmFt
ZVZpZXcudW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOworCisgICAg
ICAgIG1fdHJhbnNpZW50Wm9vbSA9IHRydWU7CisgICAgICAgIG1fdHJhbnNpZW50Wm9vbUluaXRp
YWxPcmlnaW4gPSB1bm9ic2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24oKTsKKyAgICB9CisKKyAg
ICBpZiAobV9sYXllclRyZWVIb3N0KSB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YWRqdXN0
VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIFdlIGNhbid0IGRvIHRyYW5zaWVudCB6b29tIGZvciBub24tQUMgbW9kZSwgc28ganVz
dCB6b29tIGluIHBsYWNlIGluc3RlYWQuCisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmln
aW4ob3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRab29t
SW5pdGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93ZWJQ
YWdlLnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmlnaW4p
KTsKK30KKwordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAobV9s
YXllclRyZWVIb3N0KQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRyYW5zaWVudFpv
b20oc2NhbGUsIG9yaWdpbik7CisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4ob3Jp
Z2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRab29tSW5pdGlh
bE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93ZWJQYWdlLnZp
ZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmlnaW4pKTsKKwor
ICAgIG1fdHJhbnNpZW50Wm9vbSA9IGZhbHNlOworfQorI2VuZGlmCisKIHZvaWQgRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKQog
ewogICAgIEFTU0VSVCghbV9pc1dhaXRpbmdGb3JEaWRVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgK
aW5kZXggYjE5NTlkMDQwZTIxLi44NTY1NjgzYjc4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29y
ZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaApAQCAt
ODQsNiArODQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRl
KHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRh
dGUoKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHNlbmREaWRV
cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpOwogCiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVTb29uKCk7CkBAIC0xNTAsNiArMTU1LDExIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2ZvcmNlUmVwYWludEFmdGVyQmFja2luZ1N0b3JlU3RhdGVVcGRhdGUgeyBmYWxzZSB9Owog
CiAgICAgUnVuTG9vcDo6VGltZXI8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPiBtX2Rp
c3BsYXlUaW1lcjsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJhbnNpZW50Wm9v
bSB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21Jbml0
aWFsT3JpZ2luOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQwN2Y0ZjNmYjFmYy4uOTEy
MjZkZDc2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CiAKKyNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlckxheWVyQmFja2luZy5oPgorCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNpbmNs
dWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgpAQCAtMTQ0LDcg
KzE0NiwyMiBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKICAg
ICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjaykKICAgICAgICAgbV9jb29yZGluYXRv
ci5mb3JjZUZyYW1lU3luYygpOwogCi0gICAgYm9vbCBkaWRTeW5jID0gbV9jb29yZGluYXRvci5m
bHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJp
bmdVcGRhdGVGbGFncz4gZmxhZ3M7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGlmICghbV90cmFu
c2llbnRab29tKQorICAgICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFn
czo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworI2Vsc2UKKyAgICBmbGFncy5h
ZGQoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQ
b3NpdGlvbnMpOworI2VuZGlmCisKKyAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhmbGFncyk7CisKKyNpZiBQTEFURk9STShHVEspCisgICAg
Ly8gSWYgd2UgaGF2ZSBhbiBhY3RpdmUgdHJhbnNpZW50IHpvb20sIHdlIHdhbnQgdGhlIHpvb20g
dG8gd2luIG92ZXIgYW55IGNoYW5nZXMKKyAgICAvLyB0aGF0IFdlYkNvcmUgbWFrZXMgdG8gdGhl
IHJlbGV2YW50IGxheWVycywgc28gcmUtYXBwbHkgb3VyIGNoYW5nZXMgYWZ0ZXIgZmx1c2hpbmcu
CisgICAgaWYgKG1fdHJhbnNpZW50Wm9vbSkKKyAgICAgICAgYXBwbHlUcmFuc2llbnRab29tVG9M
YXllcnMobV90cmFuc2llbnRab29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7CisjZW5k
aWYKIAogICAgIGlmIChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCAmJiBkaWRTeW5j
KSB7CiAgICAgICAgIG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpLT5sYXllckhvc3REaWRGbHVzaExh
eWVycygpOwpAQCAtMTg1LDggKzIwMiwxOCBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVw
YWludCgpCiAgICAgLy8gV2UgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhlcndp
c2UgdGhlIGZvcmNlZCBwYWludCBtaWdodCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVzaC4K
ICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIAotICAgIGlmICghbV9pc1dhaXRpbmdGb3JSZW5k
ZXJlcikKLSAgICAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsK
KyAgICBpZiAoIW1faXNXYWl0aW5nRm9yUmVuZGVyZXIpIHsKKyAgICAgICAgT3B0aW9uU2V0PEZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykKKyAg
ICAgICAgaWYgKCFtX3RyYW5zaWVudFpvb20pCisgICAgICAgICAgICBmbGFncy5hZGQoRmluYWxp
emVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMp
OworI2Vsc2UKKyAgICAgICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6
OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbmRpZgorCisgICAgICAgIG1f
Y29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGZsYWdzKTsKKyAgICB9CisKICAg
ICBtX2NvbXBvc2l0b3ItPmZvcmNlUmVwYWludCgpOwogfQogCkBAIC00MjYsNiArNDUzLDgxIEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wgZm9yY2VSZXBhaW50KQog
ICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK0Zsb2F0UG9pbnQgTGF5ZXJUcmVlSG9zdDo6
Y29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3Jp
Z2luKSBjb25zdAoreworICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5tYWlu
RnJhbWVWaWV3KCk7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGZyYW1lVmll
dy52aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CisKKyAgICBGbG9hdFBv
aW50IGNvbnN0cmFpbmVkT3JpZ2luID0gdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCk7Cisg
ICAgY29uc3RyYWluZWRPcmlnaW4ubW92ZUJ5KC1vcmlnaW4pOworCisgICAgSW50U2l6ZSBzY2Fs
ZWRUb3RhbENvbnRlbnRzU2l6ZSA9IGZyYW1lVmlldy50b3RhbENvbnRlbnRzU2l6ZSgpOworICAg
IHNjYWxlZFRvdGFsQ29udGVudHNTaXplLnNjYWxlKHNjYWxlICogbV93ZWJQYWdlLnZpZXdTY2Fs
ZUZhY3RvcigpIC8gbV93ZWJQYWdlLnRvdGFsU2NhbGVGYWN0b3IoKSk7CisKKyAgICAvLyBTY2Fs
aW5nIG1heSBoYXZlIGV4cG9zZWQgdGhlIG92ZXJoYW5nIGFyZWEsIHNvIHdlIG5lZWQgdG8gY29u
c3RyYWluIHRoZSBmaW5hbAorICAgIC8vIGxheWVyIHBvc2l0aW9uIGV4YWN0bHkgbGlrZSBzY3Jv
bGxpbmcgd2lsbCBvbmNlIGl0J3MgY29tbWl0dGVkLCB0byBlbnN1cmUgdGhhdAorICAgIC8vIHNj
cm9sbGluZyBkb2Vzbid0IG1ha2UgdGhlIHZpZXcganVtcC4KKyAgICBjb25zdHJhaW5lZE9yaWdp
biA9IFNjcm9sbGFibGVBcmVhOjpjb25zdHJhaW5TY3JvbGxQb3NpdGlvbkZvck92ZXJoYW5nKHJv
dW5kZWRJbnRSZWN0KHZpc2libGVDb250ZW50UmVjdCksCisgICAgICAgIHNjYWxlZFRvdGFsQ29u
dGVudHNTaXplLCByb3VuZGVkSW50UG9pbnQoY29uc3RyYWluZWRPcmlnaW4pLCBmcmFtZVZpZXcu
c2Nyb2xsT3JpZ2luKCksCisgICAgICAgIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSwgZnJhbWVW
aWV3LmZvb3RlckhlaWdodCgpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLXZpc2li
bGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbiA9IC1jb25z
dHJhaW5lZE9yaWdpbjsKKworICAgIHJldHVybiBjb25zdHJhaW5lZE9yaWdpbjsKK30KKworQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKiBMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpv
b20oKSBjb25zdAoreworICAgIFJlbmRlckxheWVyQmFja2luZyogcmVuZGVyVmlld0JhY2tpbmcg
PSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmJhY2tp
bmcoKTsKKworICAgIGlmIChHcmFwaGljc0xheWVyKiBjb250ZW50c0NvbnRhaW5tZW50TGF5ZXIg
PSByZW5kZXJWaWV3QmFja2luZy0+Y29udGVudHNDb250YWlubWVudExheWVyKCkpCisgICAgICAg
IHJldHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqY29udGVudHNDb250
YWlubWVudExheWVyKTsKKworICAgIHJldHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyPigqcmVuZGVyVmlld0JhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7Cit9CisKK3ZvaWQg
TGF5ZXJUcmVlSG9zdDo6YXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91YmxlIHNjYWxlLCBG
bG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogU2Nyb2xsYmFycyBzaG91bGQgc3Rh
eSBpbi1wbGFjZSBhbmQgY2hhbmdlIGhlaWdodCB3aGlsZSB6b29taW5nLgorICAgIEZsb2F0UG9p
bnQgY29uc3RyYWluZWRPcmlnaW4gPSBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKHNjYWxl
LCBvcmlnaW4pOworICAgIGF1dG8qIHpvb21MYXllciA9IGxheWVyRm9yVHJhbnNpZW50Wm9vbSgp
OworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUoY29uc3RyYWluZWRPcmlnaW4ueCgpLCBjb25zdHJhaW5lZE9yaWdpbi55KCkpOwor
ICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CisKKyAgICB6b29tTGF5ZXItPnNldFRyYW5zZm9y
bSh0cmFuc2Zvcm0pOworICAgIHpvb21MYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNE
KCkpOworICAgIHpvb21MYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKK30KKwordm9p
ZCBMYXllclRyZWVIb3N0OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQ
b2ludCBvcmlnaW4pCit7CisgICAgbV90cmFuc2llbnRab29tID0gdHJ1ZTsKKyAgICBtX3RyYW5z
aWVudFpvb21TY2FsZSA9IHNjYWxlOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdpbiA9IG9yaWdp
bjsKKworICAgIGFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNjYWxl
LCBtX3RyYW5zaWVudFpvb21PcmlnaW4pOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmNvbW1p
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBp
ZiAobV90cmFuc2llbnRab29tU2NhbGUgPT0gc2NhbGUpIHsKKyAgICAgICAgLy8gSWYgdGhlIHBh
Z2Ugc2NhbGUgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IHNjYWxlLCBzZXRQYWdlU2NhbGVGYWN0b3Io
KSB3aWxsIHNob3J0LWNpcmN1aXQKKyAgICAgICAgLy8gYW5kIG5vdCBhcHBseSB0aGUgdHJhbnNm
b3JtLCBzbyB3ZSBjYW4ndCBkZXBlbmQgb24gaXQgdG8gZG8gc28uCisgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZpbmFsVHJhbnNmb3JtOworICAgICAgICBmaW5hbFRyYW5zZm9ybS5zY2Fs
ZShzY2FsZSk7CisKKyAgICAgICAgbGF5ZXJGb3JUcmFuc2llbnRab29tKCktPnNldFRyYW5zZm9y
bShmaW5hbFRyYW5zZm9ybSk7CisgICAgfQorCisgICAgbV90cmFuc2llbnRab29tID0gZmFsc2U7
CisgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSAxOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdp
biA9IEZsb2F0UG9pbnQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9z
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVIb3N0LmgKaW5kZXggZGI2NWY4MTMyNjdkLi40OTQzMzkzYTJjMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC0zOCw2ICszOCw5IEBACiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29y
ZS9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KKyNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNT
X0xBWUVSX1RFWFRVUkVfTUFQUEVSKQogCkBAIC05OCw2ICsxMDEsMTAgQEAgcHVibGljOgogCiAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5SUQ7IH0KIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyAgICB2b2lkIGNvbW1pdFRy
YW5zaWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyNlbmRpZgogcHJpdmF0
ZToKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBsYXllckZsdXNoVGlt
ZXJGaXJlZCgpOwpAQCAtMTIwLDYgKzEyNywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVz
dERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOwogICAgIHZvaWQgaGFuZGxlRGlzcGxheVJl
ZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wpOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQgY29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQpIGNvbnN0OworICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciogbGF5ZXJGb3JUcmFuc2llbnRab29tKCkgY29uc3Q7CisgICAgdm9pZCBhcHBseVRyYW5z
aWVudFpvb21Ub0xheWVycyhkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2VuZGlmCisK
ICAgICBjbGFzcyBDb21wb3NpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGVkQ29tcG9z
aXRvcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNsaWVu
dCAgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdG9yQ2xpZW50KTsKICAg
ICBwdWJsaWM6CkBAIC0yMDAsNiArMjEzLDEyIEBAIHByaXZhdGU6CiAgICAgQ29tcG9zaXRpbmdD
b29yZGluYXRvciBtX2Nvb3JkaW5hdG9yOwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKworI2lm
IFBMQVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJhbnNpZW50Wm9vbSB7IGZhbHNlIH07CisgICAg
ZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgbV90cmFuc2llbnRab29tT3JpZ2luOworI2VuZGlmCiB9OwogCiAjaWYgIVVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCmluZGV4IGJkYzNkYmVlN2U1OC4uNzQ3NzFlYzQwY2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE4MiwxMCArMTgy
LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGFk
ZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdU
SykKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJh
bnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxs
YmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV9o
YXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXgg
YThmZjRmNWE3OTQ3Li45ZDVmNmRjYTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0zNCwxMiAr
MzQsMTQgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0
Q29sb3JTcGFjZShzdHJ1Y3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKLSAgICBBZGp1c3RUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0gICAgQ29t
bWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KQotICAgIAogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJ
RCwgU3RyaW5nIGtleSwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRB
bmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSkKICAgICAKICAgICBB
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAj
ZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisgICAgQWRqdXN0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQor
ICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRl
eCAzZmRkZWI4MDQ1ZTIuLjI5NGZkZjQxZmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAKQEAgLTI0NCwxNiArMjQ0LDE0IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Y29tcHV0ZU1pbmltdW1BbmRNYXhpbXVtVmlld3BvcnRTY2FsZXMoZG91YmxlCiAj
ZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKQogewogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3Qg
PSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3RJbmNsdWRp
bmdTY3JvbGxiYXJzKCk7CiAgICAgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSA9IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUoKS5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOwog
ICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KLSNlbmRpZgogCi0jaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnNl
dFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiB7CiAg
ICAgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IHNpemU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggZjdmOTk4YWFjMDE2Li44YzIxNmI2MGY5MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTU2LDEwICs1Niw5IEBAIHByaXZhdGU6
CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvclNt
YXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCi0j
aWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZvaWQg
Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKwogICAgIHZvaWQgc2V0
UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3QpOwogICAgIHZvaWQg
c2VuZERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkSWZOZWVkZWQoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzEzMzVm
YjJhNGE1Li5kZDJjZjQ1MmQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5tZXNzYWdlcy5pbgpAQCAtMjUsMTEgKzI1LDkgQEAgbWVzc2FnZXMgLT4gVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3RvciBOb3RSZWZDb3VudGVkIHsKICAgICBDb2xsZWN0R2VvbWV0cnlG
b3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotI2VuZGlmCiAKLSNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlv
blRocmVzaG9sZCh1aW50NjRfdCBzaXplKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjVjZDdlZTA5MzNjLi4wMTdmZTAzNGY1ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg4OSw4
ICs4ODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHNob3dFbW9qaVBpY2tlcihXZWJDb3Jl
OjpGcmFtZSYpOwogCi0gICAgdm9pZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6SW50UG9pbnQmJik+JiYpOwotCiAgICAgdm9pZCB0aGVtZURpZENoYW5n
ZShTdHJpbmcmJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggODNmZTU1YjBjNDA0Li4yNzA0ODM2
ZWZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtNDMwLDggKzQzMCw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAKICNpZiBQTEFURk9STShHVEspCiAgICAgQ29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQotCi0gICAgR2V0Q2VudGVyRm9yWm9vbUdl
c3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpIC0+IChXZWJD
b3JlOjpJbnRQb2ludCBjZW50ZXIpIFN5bmNocm9ub3VzCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlBhZ2VHdGsuY3BwCmluZGV4IGVkYjlkNDQxYjU3Zi4uY2NjZDhjYTE5MzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBA
IC0xNTgsMTQgKzE1OCw2IEBAIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJQ
YWdlOjpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQCiAgICAgcmV0dXJuIFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q2VudGVy
Rm9yWm9vbUdlc3R1cmUoY29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFBvaW50JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQotewotICAgIEludFBvaW50IHJlc3VsdCA9IG1haW5GcmFtZVZpZXcoKS0+cm9vdFZp
ZXdUb0NvbnRlbnRzKGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKTsKLSAgICBkb3VibGUgc2NhbGUg
PSBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwotICAgIHJlc3VsdC5zY2FsZSgxIC8gc2NhbGUs
IDEgLyBzY2FsZSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLX0K
LQogdm9pZCBXZWJQYWdlOjpjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViRnJhbWUoZnJhbWVJRCk7Ci0tIAoyLjMxLjEKCg==
</data>
<flag name="review"
          id="452446"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431424</attachid>
            <date>2021-06-15 05:12:16 -0700</date>
            <delta_ts>2021-06-15 05:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>47642</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA0YjcwMTM5YWU2YTAyZjMzNThkZjUzY2E0Yzc2YjNkMzM0ZjdjOTcyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCAxNSBKdW4gMjAyMSAxNzoxMDowNSArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDEwMSArKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwICAgfCAgMzQgKysrLS0tCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuY3BwICAgfCAgMTIgKysKIC4uLi9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oICAgICB8ICAgNSArCiAuLi4vVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAgICAgICAgfCAgNzQgKysrKysrKysrKysrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaCAgfCAgMzggKysrKy0tCiAuLi4vVmlld0dlc3R1cmVDb250
cm9sbGVyLm1lc3NhZ2VzLmluICAgICAgICAgfCAgIDMgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oICAgICAgICB8ICAgNCAtCiAuLi4vZ3RrL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlckd0ay5jcHAgICAgICAgICAgfCAgMjkgKysrKysKIC4uLi9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwICB8ICAgNSAtCiAuLi4vVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gfCAgNjAgKy0tLS0tLS0tLQogLi4uL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuY3BwICAgICAgICAgICAgICAgIHwgICA0ICstCiAuLi4vQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9EcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwICAgICAgICB8ICAzOCArKysrKysKIC4uLi9EcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgICAgICB8ICAxMCArKwogLi4uL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAgICAgIHwgMTA4ICsrKysrKysrKysrKysrKysrLQog
Li4uL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oICAgICAgIHwgIDE5ICsrKwog
Li4uL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCAgIHwgICA2ICstCiAu
Li4vV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAgIDggKy0KIC4u
Li9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwICB8ICAgNCArLQogLi4u
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oICAgIHwgICA1ICstCiAuLi4v
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiAgfCAgIDQgKy0KIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gICAgfCAgIDIgLQogLi4uL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgICAgIHwgICA4IC0tCiAyNSBmaWxlcyBj
aGFuZ2VkLCA0NjMgaW5zZXJ0aW9ucygrKSwgMTIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MTRlMmY3OTM4MWRkLi5mOTdiNzM2NmNhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisy
MDIxLTA2LTA4ICBBbGV4YW5kZXIgTWlraGF5bGVua28gIDxhbGV4bUBnbm9tZS5vcmc+CisKKyAg
ICAgICAgW0dUS10gU3VwcG9ydCB0cmFuc2llbnQgem9vbQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlZWQgdXAgcGluY2ggem9vbSBmb3IgQUMgbW9k
ZS4gUmV1c2UgdGhlIHNhbWUgaW5mcmFzdHJ1Y3R1cmUgYXMgdGhlCisgICAgICAgIG1hY09TIGlt
cGxlbWVudGF0aW9uLiBNb3ZlIHRoZSBzaGFyZWQgY29kZSB0byBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwCisgICAgICAgIHdoZXJlIHBvc3NpYmxlLgorCisgICAgICAgIFNsaWdodGx5IGFkanVz
dCB0aGUgc2hhcmVkIGNvZGUgdG8gc3VwcG9ydCBjaGFuZ2luZyB0aGUgZ2VzdHVyZSBvcmlnaW4K
KyAgICAgICAgZHVyaW5nIHRoZSBnZXN0dXJlIHNpbmNlIHdlIHN1cHBvcnQgaXQgb24gYm90aCB0
b3VjaHNjcmVlbiBhbmQgdG91Y2hwYWQuCisKKyAgICAgICAgVGhlcmUncyBub3QgbXVjaCB3ZSBj
YW4gZG8gZm9yIG5vbi1BQyBtb2RlIHNvIGp1c3Qga2VlcCB0aGUgY3VycmVudAorICAgICAgICBi
ZWhhdmlvciB0aGVyZSwgd3JhcHBpbmcgcmVhbC10aW1lIHpvb20gaW50byB0cmFuc2llbnQgem9v
bSBBUEkgc28gdGhhdAorICAgICAgICBpdCdzIGNvbmZpbmVkIHRvIHRoZSB3ZWIgcHJvY2Vzcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAg
ICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQpOgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2Vab29tRW5kKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ29uc3RydWN0ZWQp
OgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpz
Y2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKToKKworICAgICAgICBTdXBwb3J0IGNoYW5naW5nIG9y
aWdpbiBkdXJpbmcgdGhlIGdlc3R1cmUsIGNhY2hlIHRoZSBwYWdlIHNjYWxlIGZhY3RvcgorICAg
ICAgICB0byBhY2NvbW1vZGF0ZSBub24tQUMgbW9kZSBkb2luZyByZWFsLXRpbWUgem9vbWluZyBp
bnN0ZWFkIG9mIHRyYW5zaWVudAorICAgICAgICB6b29taW5nLgorCisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnByZXBh
cmVNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6YXBwbHlNYWduaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAg
TW92ZWQgZnJvbSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldE1hZ25p
ZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1h
Z25pZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDZW50ZXJGb3Jab29tR2VzdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxl
TWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisKKyAgICAgICAgU2V0IHRoZSBpbml0aWFsIHNjYWxlIGFuZCBvcmlnaW4gYmVmb3JlIGNh
bGxpbmcgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbigpLgorCisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbik6CisgICAgICAg
IChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAgICBNb3ZlZCB0byBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cyk6CisKKyAgICAgICAgV2Ugb25seSBuZWVkIHRvIHNldCB0aGUgQXBwbHlTY3JvbGxpbmdUcmVl
TGF5ZXJQb3NpdGlvbnMgZmxhZyB3aGVuIG5vdAorICAgICAgICB6b29taW5nLCBzbyBhZGQgYSBw
YXJhbWV0ZXIgdG8gZG8gdGhhdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
OjpsYXllckZsdXNoVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmZvcmNlUmVwYWludCk6CisgICAgICAgIERvbid0IHBhc3MgQXBwbHlTY3JvbGxpbmdUcmVlTGF5
ZXJQb3NpdGlvbnMgd2hlbiB0cmFuc2llbnQgem9vbSBpcyBhY3RpdmUuCisKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlSG9zdDo6Y29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmxheWVyRm9yVHJhbnNpZW50Wm9vbSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFwcGx5VHJhbnNpZW50Wm9v
bVRvTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6YWRqdXN0VHJhbnNp
ZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbW1pdFRyYW5zaWVu
dFpvb20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJh
Y2tJRCk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpj
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5p
bjoKKworICAgICAgICBCdWlsZCBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVy
ZSBmb3IgR1RLIGFzIHdlbGwuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldENlbnRlckZvclpvb21HZXN0dXJlKTogRGVsZXRlZC4KKwog
MjAyMS0wNi0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gTmV3IHNuYXAgY29udGFpbmVycyBhbHdheXMgc25hcCB0
byB0aGUgZmlyc3Qgc2Nyb2xsIHBvc2l0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDNhM2YzZTI1ZGRjMC4u
ZTljZjcxMzUyYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMzI5LDggKzMyOSw2IEBAIHN0cnVjdCBfV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICNlbmRpZgogCiAgICAgLy8gVG91Y2ggZ2VzdHVyZXMg
c3RhdGUKLSAgICBkb3VibGUgaW5pdGlhbFpvb21TY2FsZTsKLSAgICBJbnRQb2ludCBpbml0aWFs
Wm9vbVBvaW50OwogICAgIEZsb2F0UG9pbnQgZHJhZ09mZnNldDsKICAgICBib29sIGlzTG9uZ1By
ZXNzZWQ7CiAgICAgYm9vbCBpc0JlaW5nRHJhZ2dlZDsKQEAgLTE4NDksMTcgKzE4NDcsMjYgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQs
IEd0a0RpcmVjdGlvblR5cGUgZGlyZWMKICAgICByZXR1cm4gR1RLX1dJREdFVF9DTEFTUyh3ZWJr
aXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5mb2N1cyh3aWRnZXQsIGRpcmVjdGlvbik7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUJlZ2luKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1
cmUqIGdlc3R1cmUpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFuZ2VkKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSBzY2FsZSwgR3RrR2VzdHVyZSog
Z2VzdHVyZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3
QmFzZS0+cHJpdjsKLSAgICBwcml2LT5pbml0aWFsWm9vbVNjYWxlID0gcHJpdi0+cGFnZVByb3h5
LT5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICBpZiAocHJpdi0+cGFnZUdyYWJiZWRUb3VjaCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZ3RrX2dlc3R1cmVfc2V0X3N0YXRlKGdlc3R1cmUsIEdUS19F
VkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKKworICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHdlYmtpdFdlYlZpZXdCYXNlVmlld0dlc3R1cmVDb250cm9sbGVyKHdlYlZpZXdC
YXNlKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKIAogICAgIGRvdWJs
ZSB4LCB5OwogICAgIGd0a19nZXN0dXJlX2dldF9ib3VuZGluZ19ib3hfY2VudGVyKGdlc3R1cmUs
ICZ4LCAmeSk7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5nZXRDZW50ZXJGb3Jab29tR2VzdHVyZShJ
bnRQb2ludCh4LCB5KSwgcHJpdi0+aW5pdGlhbFpvb21Qb2ludCk7CisgICAgRmxvYXRQb2ludCBv
cmlnaW4gPSBGbG9hdFBvaW50KHgsIHkpOworCisgICAgY29udHJvbGxlci0+c2V0TWFnbmlmaWNh
dGlvbihzY2FsZSwgb3JpZ2luKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2Va
b29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGdkb3VibGUgc2NhbGUs
IEd0a0dlc3R1cmUqIGdlc3R1cmUpCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVpvb21F
bmQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudFNlcXVlbmNlKiBzZXF1
ZW5jZSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKICAgICBpZiAocHJpdi0+cGFnZUdyYWJiZWRU
b3VjaCkKQEAgLTE4NjcsMTYgKzE4NzQsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGdkb3VibGUKIAog
ICAgIGd0a19nZXN0dXJlX3NldF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xB
SU1FRCk7CiAKLSAgICBhdXRvIHBhZ2VTY2FsZSA9IGNsYW1wVG88ZG91YmxlPihwcml2LT5pbml0
aWFsWm9vbVNjYWxlICogc2NhbGUsIDEsIDMpOwotCi0gICAgRmxvYXRQb2ludCBzY2FsZWRab29t
Q2VudGVyKHByaXYtPmluaXRpYWxab29tUG9pbnQpOwotICAgIHNjYWxlZFpvb21DZW50ZXIuc2Nh
bGUocGFnZVNjYWxlKTsKLQotICAgIGRvdWJsZSB4LCB5OwotICAgIGd0a19nZXN0dXJlX2dldF9i
b3VuZGluZ19ib3hfY2VudGVyKGdlc3R1cmUsICZ4LCAmeSk7Ci0gICAgRmxvYXRQb2ludCB2aWV3
UG9pbnQgPSBGbG9hdFBvaW50KHgsIHkpOworICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29u
dHJvbGxlciA9IHdlYmtpdFdlYlZpZXdCYXNlVmlld0dlc3R1cmVDb250cm9sbGVyKHdlYlZpZXdC
YXNlKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKIAotICAgIHByaXYt
PnBhZ2VQcm94eS0+c2NhbGVQYWdlKHBhZ2VTY2FsZSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KEZsb2F0UG9pbnQoc2NhbGVkWm9vbUNlbnRlciAtIHZpZXdQb2ludCkpKTsKKyAgICBjb250cm9s
bGVyLT5lbmRNYWduaWZpY2F0aW9uKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlVG91Y2hMb25nUHJlc3MoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91Ymxl
IHgsIGdkb3VibGUgeSwgR3RrR2VzdHVyZSopCkBAIC0yMDU5LDggKzIwNjEsOCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBw
cml2LT50b3VjaEdlc3R1cmVHcm91cCA9IGd0a19nZXN0dXJlX3pvb21fbmV3KHZpZXdXaWRnZXQp
OwogICAgIGdfb2JqZWN0X3NldF9kYXRhX2Z1bGwoR19PQkpFQ1Qodmlld1dpZGdldCksICJ3ay12
aWV3LXpvb20tZ2VzdHVyZSIsIHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCBnX29iamVjdF91bnJl
Zik7CiAjZW5kaWYKLSAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdChwcml2LT50b3VjaEdlc3R1
cmVHcm91cCwgImJlZ2luIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbiks
IHZpZXdXaWRnZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X29i
amVjdChwcml2LT50b3VjaEdlc3R1cmVHcm91cCwgInNjYWxlLWNoYW5nZWQiLCBHX0NBTExCQUNL
KHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dB
UFBFRCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3Jv
dXAsICJlbmQiLCBHX0NBTExCQUNLKHdlYmtpdFdlYlZpZXdCYXNlWm9vbUVuZCksIHZpZXdXaWRn
ZXQsIEdfQ09OTkVDVF9TV0FQUEVEKTsKIAogI2lmIFVTRShHVEs0KQogICAgIGdlc3R1cmUgPSBn
dGtfZ2VzdHVyZV9sb25nX3ByZXNzX25ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCA1YTUxYjllYzFk
NjguLjAzOGQ5ZWUyZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTE1Miw2ICsxNTIsMTggQEAgdm9p
ZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6c2V0QmFja2luZ1N0b3JlSXNE
aXNjYXJkYWJsZShib29sIGlzQmEKICNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oR1RLKQordm9p
ZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIHNlbmQoTWVzc2FnZXM6
OkRyYXdpbmdBcmVhOjpBZGp1c3RUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pKTsKK30KKwor
dm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6Y29tbWl0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OkRyYXdpbmdBcmVhOjpDb21taXRUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pKTsKK30K
KyNlbmRpZgorCiB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRh
dGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKIHsKICAgICBBU1NFUlRfQVJHKGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJhY2tpbmdTdG9y
ZVN0YXRlSUQgPD0gbV9jdXJyZW50QmFja2luZ1N0b3JlU3RhdGVJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJv
eHlDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXgg
ZDc2OTUwODhlN2NmLi5iMjNhNDVmZjdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3Jh
cGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTU3LDYgKzU3LDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQo
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCkg
b3ZlcnJpZGU7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9pZCBhZGp1c3RUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgLy8gSVBDIG1lc3NhZ2UgaGFu
ZGxlcnMKICAgICB2b2lkIHVwZGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25z
dCBVcGRhdGVJbmZvJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGVCYWNraW5nU3RvcmVT
dGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBVcGRhdGVJbmZvJiwgY29u
c3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggYTdlNmYwZDE5MDMxLi4xNjU1
OTFlNDAyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUHJv
dmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yTWVzc2FnZXMuaCIKICNlbmRpZgpAQCAtNjQ2LDYgKzY0Nyw3OSBAQCB2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uSWZOZWVkZWQo
KQogICAgIGF1dG8qIG1lc3NhZ2VTZW5kZXIgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbFBh
Z2VQcm94eSgpID8gc3RhdGljX2Nhc3Q8SVBDOjpNZXNzYWdlU2VuZGVyKj4obV93ZWJQYWdlUHJv
eHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSkgOiAmbV93ZWJQYWdlUHJveHk7CiAgICAgbWVzc2Fn
ZVNlbmRlci0+c2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6U2V0
UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodGhyZXNob2xkKSk7CiB9CisKK0Zs
b2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2lu
KEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCit7CisgICAgRmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4pOworICAg
IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZUJ5KG1fdmlzaWJsZUNvbnRlbnRSZWN0Lmxv
Y2F0aW9uKCkpOworICAgIGZsb2F0IG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSA9IDEgLSAoc2Nh
bGUgLyBtX2luaXRpYWxNYWduaWZpY2F0aW9uKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luLnNjYWxlKG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7CisgICAgc2NhbGVkTWFnbmlmaWNh
dGlvbk9yaWdpbi5tb3ZlKG9yaWdpbiAtIG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4pOwor
ICAgIHJldHVybiBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luOworfQorCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUo
RmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSkKK3sKKyAgICB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZTo6TWFn
bmlmaWNhdGlvbik7CisgICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJl
Y3Q7CisgICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZyYW1l
SGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdl
c3R1cmU7Cit9CisKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpwcmVwYXJlTWFnbmlmaWNh
dGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgbV9tYWduaWZpY2F0aW9uID0g
bV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgbV93ZWJQYWdlUHJveHkuc2Vu
ZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5
Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSk7CisKKyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9u
ID0gbV9tYWduaWZpY2F0aW9uOworICAgIG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW4gPSBG
bG9hdFBvaW50KG9yaWdpbik7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgbV9sYXN0TWFnbmlm
aWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKKyNlbmRpZgorfQor
Cit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YXBwbHlNYWduaWZpY2F0aW9uKCkKK3sKKyAg
ICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRp
b25HZXN0dXJlKQorICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9tYWduaWZpY2F0
aW9uLCByb3VuZGVkSW50UG9pbnQobV9tYWduaWZpY2F0aW9uT3JpZ2luKSk7CisgICAgZWxzZQor
ICAgICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29t
KG1fbWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRp
b25PcmlnaW4sIG1fbWFnbmlmaWNhdGlvbikpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQoreworICAgIGlmIChtX2FjdGl2ZUdlc3R1
cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgZG91YmxlIG5ld01hZ25pZmljYXRpb24gPSBjbGFtcFRvPGRvdWJsZT4obV9tYWdu
aWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uLCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIGlm
IChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorICAgICAgICBtX3dlYlBhZ2VQ
cm94eS5zY2FsZVBhZ2UobmV3TWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG1fbWFnbmlm
aWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UgeworICAgICAgICBpZiAoYXV0byBkcmF3aW5nQXJl
YSA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCkpCisgICAgICAgICAgICBkcmF3aW5nQXJl
YS0+Y29tbWl0VHJhbnNpZW50Wm9vbShuZXdNYWduaWZpY2F0aW9uLCBzY2FsZWRNYWduaWZpY2F0
aW9uT3JpZ2luKG1fbWFnbmlmaWNhdGlvbk9yaWdpbiwgbmV3TWFnbmlmaWNhdGlvbikpOworICAg
IH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZp
Y2F0aW9uR2VzdHVyZSgpOwogI2VuZGlmCiAKKyAgICBkaWRFbmRHZXN0dXJlKCk7CisgICAgbV92
aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gZmFsc2U7Cit9CisKK2RvdWJsZSBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdAoreworICAgIGlmIChtX2FjdGl2ZUdl
c3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKKyAgICAgICAgcmV0
dXJuIG1fbWFnbmlmaWNhdGlvbjsKKworICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdlU2Nh
bGVGYWN0b3IoKTsKK30KKworI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKaW5kZXggZTUwM2FlZmU5OWIyLi5iN2JjODhlZDA0MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xMDgs
OCArMTA4LDEwIEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgVmlld0dlc3R1cmVUeXBlIHsK
ICAgICAgICAgTm9uZSwKLSNpZiBQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIE1hZ25pZmljYXRpb24sCisjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpCiAg
ICAgICAgIFNtYXJ0TWFnbmlmaWNhdGlvbiwKICNlbmRpZgogICAgICAgICBTd2lwZQpAQCAtMTMw
LDE1ICsxMzIsMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkSWdub3JlUGlubmVkU3Rh
dGUoYm9vbCBpZ25vcmUpIHsgbV9wZW5kaW5nU3dpcGVUcmFja2VyLnNldFNob3VsZElnbm9yZVBp
bm5lZFN0YXRlKGlnbm9yZSk7IH0KIAogICAgIGJvb2wgaXNQaHlzaWNhbGx5U3dpcGluZ0xlZnQo
U3dpcGVEaXJlY3Rpb24pIGNvbnN0OwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAg
ZG91YmxlIG1hZ25pZmljYXRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNh
dGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbik7CisgICAgdm9pZCBwcmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6
RmxvYXRQb2ludCk7CisgICAgdm9pZCBhcHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGJvb2wg
aGFzQWN0aXZlTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUdl
c3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjsgfQorI2VuZGlmCiAK
KyNpZiBQTEFURk9STShNQUMpCisgICAgdm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2
ZW50KFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKICAg
ICB2b2lkIGhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2lu
dCBvcmlnaW4pOwogCiAgICAgdm9pZCBnZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3Jl
KFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKQEAgLTE1
NSw2ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29u
dGV4dCAqLCBib29sIGNhbmNlbGxlZCk7CiAgICAgdm9pZCB3aWxsQ29tbWl0UG9zdFN3aXBlVHJh
bnNpdGlvbkxheWVyVHJlZShib29sKTsKICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplKHVpbnQ2
NF90KTsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIHNldE1hZ25pZmljYXRpb24oZG91
YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyAgICB2b2lkIGVuZE1hZ25pZmljYXRpb24oKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzZXRBbHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdl
KFdlYlBhZ2VQcm94eSopOwpAQCAtMjYzLDE1ICsyNzAsMTYgQEAgcHJpdmF0ZToKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgZGlkQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKTsK
ICAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJSZWN0
LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50aXJl
UmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhpbXVt
U2NhbGUpOworI2VuZGlmCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIGRp
ZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2Vz
dHVyZSk7CiAKICAgICB2b2lkIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiAKICAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSk7Ci0jZW5kaWYKIAotI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHZvaWQgc3RhcnRTd2lwZUdlc3R1cmUoUGxhdGZvcm1TY3JvbGxFdmVudCwg
U3dpcGVEaXJlY3Rpb24pOwogICAgIHZvaWQgdHJhY2tTd2lwZUdlc3R1cmUoUGxhdGZvcm1TY3Jv
bGxFdmVudCwgU3dpcGVEaXJlY3Rpb24sIFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPik7
CiAKQEAgLTM1NSwyMCArMzYzLDI3IEBAIHByaXZhdGU6CiAgICAgUGVuZGluZ1N3aXBlVHJhY2tl
ciBtX3BlbmRpbmdTd2lwZVRyYWNrZXI7CiAKICAgICBib29sIG1faGFzT3V0c3RhbmRpbmdSZXBh
aW50UmVxdWVzdCB7IGZhbHNlIH07Ci0jZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBk
b3VibGUgbV9tYWduaWZpY2F0aW9uOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9tYWduaWZp
Y2F0aW9uT3JpZ2luOwogCisgICAgZG91YmxlIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAg
V2ViQ29yZTo6RmxvYXRQb2ludCBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luOworI2VuZGlm
CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNtYXJ0
TWFnbmlmaWNhdGlvblVuc2NhbGVkVGFyZ2V0UmVjdDsKICAgICBib29sIG1fbGFzdE1hZ25pZmlj
YXRpb25HZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBXZWJDb3Jl
OjpGbG9hdFBvaW50IG1fbGFzdFNtYXJ0TWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgogCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJs
ZUNvbnRlbnRSZWN0OwogICAgIGJvb2wgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgeyBmYWxz
ZSB9OworI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdLU3dpcGVD
YW5jZWxsYXRpb25UcmFja2VyPiBtX3N3aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcjsKICAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gbV9zd2lwZUxheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3
aXBlU25hcHNob3RMYXllcjsKQEAgLTQ2Nyw2ICs0ODIsMTEgQEAgcHJpdmF0ZToKIAogICAgIFNu
YXBzaG90UmVtb3ZhbFRyYWNrZXIgbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyOwogICAgIFdURjo6
RnVuY3Rpb248dm9pZCgpPiBtX2xvYWRDYWxsYmFjazsKKworI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1pbk1hZ25pZmljYXRpb24geyAxIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWF4TWFnbmlmaWNhdGlvbiB7IDMgfTsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5kZXgg
NmJjNGY5ZGFmOTE2Li5hOGNhYTRkYWY1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTIyLDEx
ICsyMiwxMiBAQAogCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgTm90UmVmQ291
bnRlZCB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywg
Ym9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKICAgICBEaWRDb2xsZWN0R2Vv
bWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZp
c2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1p
bmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQogI2VuZGlmCiAKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wg
ZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisKICAgICBEaWRIaXRSZW5kZXJUcmVl
U2l6ZVRocmVzaG9sZCgpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNDg1Zjc0YjRlYmZhLi4zYWFhNjRkMWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04ODYsMTAgKzg4Niw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYm
KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgZ2V0Q2VudGVyRm9yWm9v
bUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVz
LCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpOwogICAgIHZvaWQgc2V0TWFp
bkZyYW1lSXNTY3JvbGxhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAppbmRleCBhN2Y2ZmM2Mzll
ZjguLjgwNmJiZmZlZTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKQEAgLTY2MCw0ICs2NjAsMzMgQEAg
Ym9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbXBsZXRlU2ltdWxhdGVkU3dpcGVJbkRpcmVj
dGlvbkZvclRlc3RpbmcoU3dpcGVEaXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OnNldE1hZ25pZmljYXRpb24oZG91YmxlIHNjYWxlLCBGbG9hdFBv
aW50IG9yaWdpbikKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok5vbmUgfHwgbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6
Ok1hZ25pZmljYXRpb24pOworCisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dl
c3R1cmVUeXBlOjpOb25lKSB7CisgICAgICAgIHByZXBhcmVNYWduaWZpY2F0aW9uR2VzdHVyZShv
cmlnaW4pOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBzdGlsbCB3
YWl0aW5nIGZvciB0aGUgRGlkQ29sbGVjdEdlb21ldHJ5IGNhbGxiYWNrLgorICAgIGlmICghbV92
aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICB3aWxsQmVn
aW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7CisKKyAgICBkb3VibGUg
YWJzb2x1dGVTY2FsZSA9IHNjYWxlICogbV9pbml0aWFsTWFnbmlmaWNhdGlvbjsKKyAgICBtX21h
Z25pZmljYXRpb24gPSBjbGFtcFRvPGRvdWJsZT4oYWJzb2x1dGVTY2FsZSwgbWluTWFnbmlmaWNh
dGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBv
cmlnaW47CisKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKK30KKwordm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb24oKQoreworICAgIGVuZE1hZ25pZmljYXRpb25H
ZXN0dXJlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA1YzBlZWYyNzc2ZTguLjFh
N2ZhNmI3NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKQEAgLTcyLDExICs3Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnB1
dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKICAg
ICB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUoV0VCS0lUX1dFQl9WSUVXX0JB
U0Uodmlld1dpZGdldCgpKSwgV1RGTW92ZShzdGF0ZSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRl
ckluVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKQotewotICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjZW50ZXJJ
blZpZXdDb29yZGluYXRlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDZW50ZXJGb3Jab29tR2Vz
dHVyZTo6UmVwbHkoY2VudGVyKSk7Ci19Ci0KIGJvb2wgV2ViUGFnZVByb3h5OjptYWtlR0xDb250
ZXh0Q3VycmVudCgpCiB7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlTWFrZUdMQ29udGV4
dEN1cnJlbnQoV0VCS0lUX1dFQl9WSUVXX0JBU0Uodmlld1dpZGdldCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5t
bQppbmRleCAwMGEzZDMwNGFhOGYuLjkzMWE4MGNiZDFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC01
MCw5ICs1MCw2IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNp
bXBvcnQgPHBhbC9zcGkvbWFjL05TRXZlbnRTUEkuaD4KIAotc3RhdGljIGNvbnN0IGRvdWJsZSBt
aW5NYWduaWZpY2F0aW9uID0gMTsKLXN0YXRpYyBjb25zdCBkb3VibGUgbWF4TWFnbmlmaWNhdGlv
biA9IDM7Ci0KIHN0YXRpYyBjb25zdCBkb3VibGUgbWluRWxhc3RpY01hZ25pZmljYXRpb24gPSAw
Ljc1Owogc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhFbGFzdGljTWFnbmlmaWNhdGlvbiA9IDQ7CiAK
QEAgLTExMCwyMyArMTA3LDYgQEAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91
YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCiAgICAgcmV0dXJuIHJlc2lzdGFu
Y2U7CiB9CiAKLUZsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRNYWduaWZp
Y2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCi17Ci0gICAgRmxv
YXRQb2ludCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7Ci0gICAgc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbi5tb3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7
Ci0gICAgZmxvYXQgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAvIG1fd2Vi
UGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3Jp
Z2luLnNjYWxlKG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7Ci0gICAgcmV0dXJuIHNjYWxlZE1h
Z25pZmljYXRpb25PcmlnaW47Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRD
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQotewotICAg
IHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKLSAgICBt
X3Zpc2libGVDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsKLSAgICBtX3Zpc2libGVD
b250ZW50UmVjdElzVmFsaWQgPSB0cnVlOwotICAgIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlv
bkdlc3R1cmUgPSBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKLX0KLQogdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6Omdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUo
TlNFdmVudCAqZXZlbnQsIEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIGlmIChldmVudC50eXBl
ID09IE5TRXZlbnRUeXBlTWFnbmlmeSkKQEAgLTE0NCw5ICsxMjQsNyBAQCB2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpl
dmVudCwgRmxvYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBk
cm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ug
d2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCi0gICAgICAgIG1f
bWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAg
ICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKLSAgICAgICAg
bV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsK
KyAgICAgICAgcHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CiAKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE2NSwzNSArMTQzLDEyIEBAIHZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBG
bG9hCiAKICAgICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CiAKLSAgICBpZiAobV9m
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICAgICAgbV93ZWJQYWdlUHJveHku
c2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG9yaWdpbikpOwotICAg
IGVsc2UKLSAgICAgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNp
ZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2lu
LCBtX21hZ25pZmljYXRpb24pKTsKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKIAogICAgIGlm
IChldmVudC5waGFzZSA9PSBOU0V2ZW50UGhhc2VFbmRlZCB8fCBldmVudC5waGFzZSA9PSBOU0V2
ZW50UGhhc2VDYW5jZWxsZWQpCiAgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7CiB9
CiAKLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgp
Ci17Ci0gICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWdu
aWZpY2F0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgbmV3TWFnbmlmaWNhdGlv
biA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlvbiks
IG1heE1hZ25pZmljYXRpb24pOwotCi0gICAgaWYgKG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlv
bkdlc3R1cmUpCi0gICAgICAgIG1fd2ViUGFnZVByb3h5LnNjYWxlUGFnZShuZXdNYWduaWZpY2F0
aW9uLCByb3VuZGVkSW50UG9pbnQobV9tYWduaWZpY2F0aW9uT3JpZ2luKSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkuZHJhd2luZ0Fy
ZWEoKSkKLSAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5jb21taXRUcmFuc2llbnRab29tKG5ld01h
Z25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3Jp
Z2luLCBuZXdNYWduaWZpY2F0aW9uKSk7Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlUHJveHkuZGlk
RW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKLQotICAgIGRpZEVuZEdlc3R1cmUoKTsKLSAgICBt
X3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKLX0KLQogdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBv
cmlnaW4pCiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBl
OjpOb25lKQpAQCAtMjU1LDYgKzIxMCw5IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpk
aWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0CiAgICAg
RmxvYXRQb2ludCB0YXJnZXRPcmlnaW4odmlzaWJsZUNvbnRlbnRSZWN0LmNlbnRlcigpKTsKICAg
ICB0YXJnZXRPcmlnaW4ubW92ZUJ5KC10YXJnZXRSZWN0LmNlbnRlcigpKTsKIAorICAgIG1faW5p
dGlhbE1hZ25pZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKKyAg
ICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludCgpOworCiAgICAgbV93
ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX3dlYlBhZ2VQ
cm94eS5wYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBv
aW50KCksIG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKSk7CiAgICAgbV93ZWJQYWdl
UHJveHkuZHJhd2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbSh0YXJnZXRNYWduaWZpY2F0
aW9uLCB0YXJnZXRPcmlnaW4pOwogCkBAIC02NTUsMTQgKzYxMyw2IEBAIHZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpyZXNldCgpCiAgICAgcmVzZXRTdGF0ZSgpOwogfQogCi1kb3VibGUgVmll
d0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uKCkgY29uc3QKLXsKLSAgICBpZiAobV9h
Y3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCi0gICAg
ICAgIHJldHVybiBtX21hZ25pZmljYXRpb247Ci0KLSAgICByZXR1cm4gbV93ZWJQYWdlUHJveHku
cGFnZVNjYWxlRmFjdG9yKCk7Ci19Ci0KIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdp
blNpbXVsYXRlZFN3aXBlSW5EaXJlY3Rpb25Gb3JUZXN0aW5nKFN3aXBlRGlyZWN0aW9uKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA2OGUzNjkxOWZjN2YuLjUxNTNhNzlmMmU5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgbm90aWZ5Rmx1c2hS
ZXF1aXJlZChtX3Jvb3RMYXllci5nZXQoKSk7CiB9CiAKLWJvb2wgQ29tcG9zaXRpbmdDb29yZGlu
YXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKK2Jvb2wgQ29tcG9zaXRpbmdDb29yZGlu
YXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZUZsYWdzPiBmbGFncykKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiBwcm90ZWN0b3Io
bV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0cnVlKTsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIGJv
b2wgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAg
ICBpZiAobV9vdmVybGF5Q29tcG9zaXRpbmdMYXllcikKICAgICAgICAgbV9vdmVybGF5Q29tcG9z
aXRpbmdMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IG1fcm9vdExheWVyLT5zaXplKCkpKTsKIAotICAgIG1fcGFnZS5maW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZSh7IEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxh
eWVyUG9zaXRpb25zIH0pOworICAgIG1fcGFnZS5maW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShmbGFn
cyk7CiAKICAgICBhdXRvJiBjb29yZGluYXRlZExheWVyID0gZG93bmNhc3Q8Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyPigqbV9yb290TGF5ZXIpOwogICAgIGNvb3JkaW5hdGVkTGF5ZXIudXBkYXRl
Q29udGVudEJ1ZmZlcnNJbmNsdWRpbmdTdWJMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggYzNhYWU5ZGYzYmM4Li5l
ZWQzMGZlYzg1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRp
bmdDb29yZGluYXRvci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9y
Y2VGcmFtZVN5bmMoKSB7IG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsgfQogCi0gICAgYm9vbCBm
bHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hh
bmdlcyhPcHRpb25TZXQ8V2ViQ29yZTo6RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4pOwog
ICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUoKSB7IHJldHVybiBt
X3N0YXRlOyB9CiAKICAgICB2b2lkIHN5bmNEaXNwbGF5U3RhdGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
LmNwcAppbmRleCBiYzZkOTM3YmQ2MmMuLjRhMDg3MjM1ZTdiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
LmNwcApAQCAtNDgzLDYgKzQ4Myw0NCBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFw
aGljczo6ZGlkVXBkYXRlKCkKICAgICBkaXNwbGF5VGltZXJGaXJlZCgpOwogfQogCisjaWYgUExB
VEZPUk0oR1RLKQordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmFkanVzdFRy
YW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAo
IW1fdHJhbnNpZW50Wm9vbSkgeworICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICptX3dl
YlBhZ2UubWFpbkZyYW1lVmlldygpOworICAgICAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRl
bnRSZWN0ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJh
cnMoKTsKKworICAgICAgICBtX3RyYW5zaWVudFpvb20gPSB0cnVlOworICAgICAgICBtX3RyYW5z
aWVudFpvb21Jbml0aWFsT3JpZ2luID0gdW5vYnNjdXJlZENvbnRlbnRSZWN0LmxvY2F0aW9uKCk7
CisgICAgfQorCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmFkanVzdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBXZSBjYW4ndCBkbyB0cmFuc2llbnQgem9vbSBmb3Igbm9uLUFD
IG1vZGUsIHNvIGp1c3Qgem9vbSBpbiBwbGFjZSBpbnN0ZWFkLgorCisgICAgRmxvYXRQb2ludCB1
bnNjcm9sbGVkT3JpZ2luKG9yaWdpbik7CisgICAgdW5zY3JvbGxlZE9yaWdpbi5tb3ZlQnkoLW1f
dHJhbnNpZW50Wm9vbUluaXRpYWxPcmlnaW4pOworCisgICAgbV93ZWJQYWdlLnNjYWxlUGFnZShz
Y2FsZSAvIG1fd2ViUGFnZS52aWV3U2NhbGVGYWN0b3IoKSwgcm91bmRlZEludFBvaW50KC11bnNj
cm9sbGVkT3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
Ojpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7
CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21t
aXRUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pOworCisgICAgRmxvYXRQb2ludCB1bnNjcm9s
bGVkT3JpZ2luKG9yaWdpbik7CisgICAgdW5zY3JvbGxlZE9yaWdpbi5tb3ZlQnkoLW1fdHJhbnNp
ZW50Wm9vbUluaXRpYWxPcmlnaW4pOworCisgICAgbV93ZWJQYWdlLnNjYWxlUGFnZShzY2FsZSAv
IG1fd2ViUGFnZS52aWV3U2NhbGVGYWN0b3IoKSwgcm91bmRlZEludFBvaW50KC11bnNjcm9sbGVk
T3JpZ2luKSk7CisKKyAgICBtX3RyYW5zaWVudFpvb20gPSBmYWxzZTsKK30KKyNlbmRpZgorCiB2
b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6c2VuZERpZFVwZGF0ZUJhY2tpbmdT
dG9yZVN0YXRlKCkKIHsKICAgICBBU1NFUlQoIW1faXNXYWl0aW5nRm9yRGlkVXBkYXRlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5oCmluZGV4IGIxOTU5ZDA0MGUyMS4uODU2NTY4M2I3ODZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmgKQEAgLTg0LDYgKzg0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVCYWNr
aW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBib29sIHJlc3BvbmRJ
bW1lZGlhdGVseSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkVXBkYXRlKCkgb3ZlcnJpZGU7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9p
ZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAg
dm9pZCBzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKTsKIAogICAgIHZvaWQgZXhpdEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlU29vbigpOwpAQCAtMTUwLDYgKzE1NSwxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9mb3JjZVJlcGFpbnRBZnRlckJhY2tpbmdTdG9yZVN0YXRlVXBkYXRl
IHsgZmFsc2UgfTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcz4gbV9kaXNwbGF5VGltZXI7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgYm9vbCBt
X3RyYW5zaWVudFpvb20geyBmYWxzZSB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFu
c2llbnRab29tSW5pdGlhbE9yaWdpbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAppbmRleCA0MDdm
NGYzZmIxZmMuLjkxMjI2ZGQ3NmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUhvc3QuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZp
ZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgogCisjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllckJhY2tpbmcuaD4KKwogI2lmIFVTRShHTElCX0VWRU5U
X0xPT1ApCiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+CiAjZW5k
aWYKQEAgLTE0NCw3ICsxNDYsMjIgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpsYXllckZsdXNoVGlt
ZXJGaXJlZCgpCiAgICAgaWYgKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2spCiAgICAgICAg
IG1fY29vcmRpbmF0b3IuZm9yY2VGcmFtZVN5bmMoKTsKIAotICAgIGJvb2wgZGlkU3luYyA9IG1f
Y29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgT3B0aW9uU2V0PEZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykKKyAg
ICBpZiAoIW1fdHJhbnNpZW50Wm9vbSkKKyAgICAgICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVy
aW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbHNl
CisgICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xs
aW5nVHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbmRpZgorCisgICAgYm9vbCBkaWRTeW5jID0gbV9j
b29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoZmxhZ3MpOworCisjaWYgUExBVEZP
Uk0oR1RLKQorICAgIC8vIElmIHdlIGhhdmUgYW4gYWN0aXZlIHRyYW5zaWVudCB6b29tLCB3ZSB3
YW50IHRoZSB6b29tIHRvIHdpbiBvdmVyIGFueSBjaGFuZ2VzCisgICAgLy8gdGhhdCBXZWJDb3Jl
IG1ha2VzIHRvIHRoZSByZWxldmFudCBsYXllcnMsIHNvIHJlLWFwcGx5IG91ciBjaGFuZ2VzIGFm
dGVyIGZsdXNoaW5nLgorICAgIGlmIChtX3RyYW5zaWVudFpvb20pCisgICAgICAgIGFwcGx5VHJh
bnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNjYWxlLCBtX3RyYW5zaWVudFpvb21P
cmlnaW4pOworI2VuZGlmCiAKICAgICBpZiAobV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2ggJiYgZGlkU3luYykgewogICAgICAgICBtX3dlYlBhZ2UuZHJhd2luZ0FyZWEoKS0+bGF5ZXJI
b3N0RGlkRmx1c2hMYXllcnMoKTsKQEAgLTE4NSw4ICsyMDIsMTggQEAgdm9pZCBMYXllclRyZWVI
b3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIC8vIFdlIG5lZWQgdG8gc2NoZWR1bGUgYW5vdGhlciBm
bHVzaCwgb3RoZXJ3aXNlIHRoZSBmb3JjZWQgcGFpbnQgbWlnaHQgY2FuY2VsIGEgbGF0ZXIgZXhw
ZWN0ZWQgZmx1c2guCiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAKLSAgICBpZiAoIW1faXNX
YWl0aW5nRm9yUmVuZGVyZXIpCi0gICAgICAgIG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5
ZXJDaGFuZ2VzKCk7CisgICAgaWYgKCFtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKSB7CisgICAgICAg
IE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFnczsKKyNpZiBQTEFU
Rk9STShHVEspCisgICAgICAgIGlmICghbV90cmFuc2llbnRab29tKQorICAgICAgICAgICAgZmxh
Z3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxh
eWVyUG9zaXRpb25zKTsKKyNlbHNlCisgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisjZW5kaWYK
KworICAgICAgICBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhmbGFncyk7
CisgICAgfQorCiAgICAgbV9jb21wb3NpdG9yLT5mb3JjZVJlcGFpbnQoKTsKIH0KIApAQCAtNDI2
LDYgKzQ1Myw4MSBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZShib29sIGZv
cmNlUmVwYWludCkKICAgICB9CiB9CiAKKyNpZiBQTEFURk9STShHVEspCitGbG9hdFBvaW50IExh
eWVyVHJlZUhvc3Q6OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4oZG91YmxlIHNjYWxlLCBG
bG9hdFBvaW50IG9yaWdpbikgY29uc3QKK3sKKyAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICpt
X3dlYlBhZ2UubWFpbkZyYW1lVmlldygpOworICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwor
CisgICAgRmxvYXRQb2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IHZpc2libGVDb250ZW50UmVjdC5s
b2NhdGlvbigpOworICAgIGNvbnN0cmFpbmVkT3JpZ2luLm1vdmVCeSgtb3JpZ2luKTsKKworICAg
IEludFNpemUgc2NhbGVkVG90YWxDb250ZW50c1NpemUgPSBmcmFtZVZpZXcudG90YWxDb250ZW50
c1NpemUoKTsKKyAgICBzY2FsZWRUb3RhbENvbnRlbnRzU2l6ZS5zY2FsZShzY2FsZSAqIG1fd2Vi
UGFnZS52aWV3U2NhbGVGYWN0b3IoKSAvIG1fd2ViUGFnZS50b3RhbFNjYWxlRmFjdG9yKCkpOwor
CisgICAgLy8gU2NhbGluZyBtYXkgaGF2ZSBleHBvc2VkIHRoZSBvdmVyaGFuZyBhcmVhLCBzbyB3
ZSBuZWVkIHRvIGNvbnN0cmFpbiB0aGUgZmluYWwKKyAgICAvLyBsYXllciBwb3NpdGlvbiBleGFj
dGx5IGxpa2Ugc2Nyb2xsaW5nIHdpbGwgb25jZSBpdCdzIGNvbW1pdHRlZCwgdG8gZW5zdXJlIHRo
YXQKKyAgICAvLyBzY3JvbGxpbmcgZG9lc24ndCBtYWtlIHRoZSB2aWV3IGp1bXAuCisgICAgY29u
c3RyYWluZWRPcmlnaW4gPSBTY3JvbGxhYmxlQXJlYTo6Y29uc3RyYWluU2Nyb2xsUG9zaXRpb25G
b3JPdmVyaGFuZyhyb3VuZGVkSW50UmVjdCh2aXNpYmxlQ29udGVudFJlY3QpLAorICAgICAgICBz
Y2FsZWRUb3RhbENvbnRlbnRzU2l6ZSwgcm91bmRlZEludFBvaW50KGNvbnN0cmFpbmVkT3JpZ2lu
KSwgZnJhbWVWaWV3LnNjcm9sbE9yaWdpbigpLAorICAgICAgICBmcmFtZVZpZXcuaGVhZGVySGVp
Z2h0KCksIGZyYW1lVmlldy5mb290ZXJIZWlnaHQoKSk7CisgICAgY29uc3RyYWluZWRPcmlnaW4u
bW92ZUJ5KC12aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7CisgICAgY29uc3RyYWluZWRP
cmlnaW4gPSAtY29uc3RyYWluZWRPcmlnaW47CisKKyAgICByZXR1cm4gY29uc3RyYWluZWRPcmln
aW47Cit9CisKK0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogTGF5ZXJUcmVlSG9zdDo6bGF5ZXJG
b3JUcmFuc2llbnRab29tKCkgY29uc3QKK3sKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIHJlbmRl
clZpZXdCYWNraW5nID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmlldygpLT5s
YXllcigpLT5iYWNraW5nKCk7CisKKyAgICBpZiAoR3JhcGhpY3NMYXllciogY29udGVudHNDb250
YWlubWVudExheWVyID0gcmVuZGVyVmlld0JhY2tpbmctPmNvbnRlbnRzQ29udGFpbm1lbnRMYXll
cigpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4o
KmNvbnRlbnRzQ29udGFpbm1lbnRMYXllcik7CisKKyAgICByZXR1cm4gJmRvd25jYXN0PENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcj4oKnJlbmRlclZpZXdCYWNraW5nLT5ncmFwaGljc0xheWVyKCkp
OworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKGRv
dWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IFNjcm9sbGJh
cnMgc2hvdWxkIHN0YXkgaW4tcGxhY2UgYW5kIGNoYW5nZSBoZWlnaHQgd2hpbGUgem9vbWluZy4K
KyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVkT3JpZ2luID0gY29uc3RyYWluVHJhbnNpZW50Wm9v
bU9yaWdpbihzY2FsZSwgb3JpZ2luKTsKKyAgICBhdXRvKiB6b29tTGF5ZXIgPSBsYXllckZvclRy
YW5zaWVudFpvb20oKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnN0cmFpbmVkT3JpZ2luLngoKSwgY29uc3RyYWluZWRP
cmlnaW4ueSgpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpOworCisgICAgem9vbUxheWVy
LT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB6b29tTGF5ZXItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQzRCgpKTsKKyAgICB6b29tTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQo
KSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUg
c2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIG1fdHJhbnNpZW50Wm9vbSA9IHRydWU7
CisgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBtX3RyYW5zaWVudFpvb21P
cmlnaW4gPSBvcmlnaW47CisKKyAgICBhcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyhtX3RyYW5z
aWVudFpvb21TY2FsZSwgbV90cmFuc2llbnRab29tT3JpZ2luKTsKK30KKwordm9pZCBMYXllclRy
ZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgaWYgKG1fdHJhbnNpZW50Wm9vbVNjYWxlID09IHNjYWxlKSB7CisgICAgICAg
IC8vIElmIHRoZSBwYWdlIHNjYWxlIGlzIGFscmVhZHkgdGhlIHRhcmdldCBzY2FsZSwgc2V0UGFn
ZVNjYWxlRmFjdG9yKCkgd2lsbCBzaG9ydC1jaXJjdWl0CisgICAgICAgIC8vIGFuZCBub3QgYXBw
bHkgdGhlIHRyYW5zZm9ybSwgc28gd2UgY2FuJ3QgZGVwZW5kIG9uIGl0IHRvIGRvIHNvLgorICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmaW5hbFRyYW5zZm9ybTsKKyAgICAgICAgZmluYWxU
cmFuc2Zvcm0uc2NhbGUoc2NhbGUpOworCisgICAgICAgIGxheWVyRm9yVHJhbnNpZW50Wm9vbSgp
LT5zZXRUcmFuc2Zvcm0oZmluYWxUcmFuc2Zvcm0pOworICAgIH0KKworICAgIG1fdHJhbnNpZW50
Wm9vbSA9IGZhbHNlOworICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gMTsKKyAgICBtX3RyYW5z
aWVudFpvb21PcmlnaW4gPSBGbG9hdFBvaW50KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGRiNjVmODEzMjY3ZC4uNDk0MzM5
M2EyYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaApAQCAtMzgs
NiArMzgsOSBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlv
blNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg+CisjZW5kaWYKIAogI2lm
IFVTRShHUkFQSElDU19MQVlFUl9URVhUVVJFX01BUFBFUikKIApAQCAtOTgsNiArMTAxLDEwIEBA
IHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgdm9p
ZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7CisgICAg
dm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7Cisj
ZW5kaWYKIHByaXZhdGU6CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQg
bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKQEAgLTEyMCw2ICsxMjcsMTIgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKTsKICAgICB2b2lkIGhh
bmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29sKTsKIAorI2lmIFBMQVRGT1JNKEdU
SykKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4o
ZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KSBjb25zdDsKKyAgICBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVHJhbnNpZW50Wm9vbSgpIGNvbnN0OworICAgIHZv
aWQgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
KTsKKyNlbmRpZgorCiAgICAgY2xhc3MgQ29tcG9zaXRvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRlZENvbXBvc2l0b3I6OkNsaWVudCwgcHVibGljIFRocmVhZGVkRGlzcGxheVJlZnJlc2hN
b25pdG9yOjpDbGllbnQgIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29tcG9zaXRv
ckNsaWVudCk7CiAgICAgcHVibGljOgpAQCAtMjAwLDYgKzIxMywxMiBAQCBwcml2YXRlOgogICAg
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3IgbV9jb29yZGluYXRvcjsKICNlbmRpZiAvLyBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNw
bGF5SUQ7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgYm9vbCBtX3RyYW5zaWVudFpvb20geyBm
YWxzZSB9OworICAgIGRvdWJsZSBtX3RyYW5zaWVudFpvb21TY2FsZSB7IDEgfTsKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IG1fdHJhbnNpZW50Wm9vbU9yaWdpbjsKKyNlbmRpZgogfTsKIAogI2lm
ICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBiZGMzZGJlZTdlNTguLjc0NzcxZWM0MGNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBA
IC0xODIsMTAgKzE4MiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2Uoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAorICAgIHZp
cnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSB8
fCBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91
YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lE
KFdlYktpdDo6Q2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAK
ICAgICBib29sIG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNlaXZlciB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3Nh
Z2VzLmluCmluZGV4IGE4ZmY0ZjVhNzk0Ny4uOWQ1ZjZkY2E2ZTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgpAQCAtMzQsMTIgKzM0LDE0IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50
ZWQgewogICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogICAgIFNldFZpZXdFeHBvc2VkUmVjdChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogCi0gICAg
QWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luKQotICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikKLSAgICAKICAgICBBY2NlbGVyYXRlZEFuaW1hdGlvbkRpZFN0YXJ0KHVp
bnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXksIE1vbm90b25pY1RpbWUgc3RhcnRUaW1lKQogICAg
IEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXkp
CiAgICAgCiAgICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RL
KQorICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikKKyAgICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAKaW5kZXggY2RmNTNmNzQ0ZjBhLi44MDM4OTgwMjAxYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNCBAQCB2b2lkIFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbXB1dGVNaW5pbXVtQW5kTWF4aW11bVZpZXdwb3J0U2Nh
bGVzKGRvdWJsZQogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKIHsKICAgICBGbG9hdFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dW5vYnNjdXJlZENvbnRl
bnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogICAgIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlm
aWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1lKCkuaGFuZGxlc1BhZ2VTY2Fs
ZUdlc3R1cmUoKTsKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSh2aXNpYmxl
Q29udGVudFJlY3QsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKSk7CiB9Ci0jZW5k
aWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpzZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50NjRf
dCBzaXplKQogewogICAgIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQgPSBz
aXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGY3Zjk5OGFhYzAxNi4uOGMy
MTZiNjBmOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC01NiwxMCArNTYs
OSBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBjb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKCk7Ci0jZW5kaWYKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7CisK
ICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90
KTsKICAgICB2b2lkIHNlbmREaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZElmTmVlZGVkKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmlu
CmluZGV4IGMxMzM1ZmIyYTRhNS4uZGQyY2Y0NTJkMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KQEAgLTI1LDExICsyNSw5IEBAIG1lc3NhZ2Vz
IC0+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgTm90UmVmQ291bnRlZCB7CiAgICAgQ29s
bGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkK
LSNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2V0UmVuZGVyVHJlZVNp
emVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM5YjMwNTlhMWEzYS4u
ZDY3NmU3MDE1NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC04ODksOCArODg5LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29sbGFwc2VTZWxlY3Rp
b25JbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBzaG93RW1vamlQ
aWNrZXIoV2ViQ29yZTo6RnJhbWUmKTsKIAotICAgIHZvaWQgZ2V0Q2VudGVyRm9yWm9vbUdlc3R1
cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFBvaW50JiYpPiYmKTsKLQogICAgIHZvaWQg
dGhlbWVEaWRDaGFuZ2UoU3RyaW5nJiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDU2MThhMzQz
ZGU0YS4uNWJkZTNmOGRhOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQzMCw4ICs0MzAsNiBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIENvbGxhcHNlU2VsZWN0
aW9uSW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKLQotICAgIEdldENl
bnRlckZvclpvb21HZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IGNlbnRlckluVmlld0Nvb3JkaW5h
dGVzKSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgY2VudGVyKSBTeW5jaHJvbm91cwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCBlZGI5ZDQ0MWI1N2YuLmNjY2Q4Y2ExOTM0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcApAQCAtMTU4LDE0ICsxNTgsNiBAQCBPcHRpb25TZXQ8UG9pbnRlckNoYXJhY3Rl
cmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxhYmxlUAog
ICAgIHJldHVybiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOwogfQogCi12b2lkIFdlYlBh
Z2U6OmdldENlbnRlckZvclpvb21HZXN0dXJlKGNvbnN0IEludFBvaW50JiBjZW50ZXJJblZpZXdD
b29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBJbnRQb2ludCByZXN1bHQgPSBtYWluRnJhbWVW
aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhjZW50ZXJJblZpZXdDb29yZGluYXRlcyk7Ci0gICAg
ZG91YmxlIHNjYWxlID0gbV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICByZXN1bHQuc2Nh
bGUoMSAvIHNjYWxlLCAxIC8gc2NhbGUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6Y29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwotLSAKMi4zMS4xCgo=
</data>
<flag name="review"
          id="453197"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="453198"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431426</attachid>
            <date>2021-06-15 05:49:57 -0700</date>
            <delta_ts>2021-06-15 06:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>48788</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSAwNjEzYTIxZWM4NTk4YjNjNzNkZjBhNzk3MzQ0NzM1OWVhODAxMzdmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCAxNSBKdW4gMjAyMSAxNzo0ODoyNCArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDEwNyArKysrKysrKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCAgIHwgIDM0ICsrKy0tLQogLi4uL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcCAgIHwgIDEyICsrCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuaCAgICAgfCAgIDUgKwogLi4uL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwICAgICAgIHwgIDc0ICsrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDQwICsrKysrLS0KIC4uLi9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW4gICAgICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0IC0KIC4uLi9ndGsvVmlld0dlc3R1cmVD
b250cm9sbGVyR3RrLmNwcCAgICAgICAgICB8ICAyOSArKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA2MiArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKwogLi4uL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgICAgIHwgIDEwICsrCiAuLi4vQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCAgICAgfCAxMDggKysrKysrKysrKysrKysrKyst
CiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmggICAgICAgfCAgMTkgKysr
CiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oICAgfCAgIDYgKy0K
IC4uLi9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgOCArLQog
Li4uL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgIHwgICA0ICstCiAu
Li4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggICAgfCAgIDUgKy0KIC4u
Li9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluICB8ICAgNCArLQogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCAgICAgfCAgIDggLS0KIDI1IGZpbGVz
IGNoYW5nZWQsIDQ3MiBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAxNGUyZjc5MzgxZGQuLjgwNDNkYTMwOTI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTAgQEAK
KzIwMjEtMDYtMDggIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBTdXBwb3J0IHRyYW5zaWVudCB6b29tCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcwMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBwaW5jaCB6b29tIGZvciBBQyBt
b2RlLiBSZXVzZSB0aGUgc2FtZSBpbmZyYXN0cnVjdHVyZSBhcyB0aGUKKyAgICAgICAgbWFjT1Mg
aW1wbGVtZW50YXRpb24uIE1vdmUgdGhlIHNoYXJlZCBjb2RlIHRvIFZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKKyAgICAgICAgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgU2xpZ2h0bHkgYWRq
dXN0IHRoZSBzaGFyZWQgY29kZSB0byBzdXBwb3J0IGNoYW5naW5nIHRoZSBnZXN0dXJlIG9yaWdp
bgorICAgICAgICBkdXJpbmcgdGhlIGdlc3R1cmUgc2luY2Ugd2Ugc3VwcG9ydCBpdCBvbiBib3Ro
IHRvdWNoc2NyZWVuIGFuZCB0b3VjaHBhZC4KKworICAgICAgICBUaGVyZSdzIG5vdCBtdWNoIHdl
IGNhbiBkbyBmb3Igbm9uLUFDIG1vZGUgc28ganVzdCBrZWVwIHRoZSBjdXJyZW50CisgICAgICAg
IGJlaGF2aW9yIHRoZXJlLCB3cmFwcGluZyByZWFsLXRpbWUgem9vbSBpbnRvIHRyYW5zaWVudCB6
b29tIEFQSSBzbyB0aGF0CisgICAgICAgIGl0J3MgY29uZmluZWQgdG8gdGhlIHdlYiBwcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVpvb21FbmQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorCisgICAgICAgIFN1cHBvcnQgY2hhbmdpbmcg
b3JpZ2luIGR1cmluZyB0aGUgZ2VzdHVyZSwgY2FjaGUgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yCisg
ICAgICAgIHRvIGFjY29tbW9kYXRlIG5vbi1BQyBtb2RlIGRvaW5nIHJlYWwtdGltZSB6b29taW5n
IGluc3RlYWQgb2YgdHJhbnNpZW50CisgICAgICAgIHpvb21pbmcuCisKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJl
cGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjphcHBseU1hZ25pZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAg
ICBNb3ZlZCBmcm9tIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0TWFn
bmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5k
TWFnbmlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENlbnRlckZvclpvb21HZXN0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZXNp
c3RhbmNlRm9yRGVsdGEgY29uc3QpOgorCisgICAgICAgIE1ha2UgaXQgYSBwcml2YXRlIG1ldGhv
ZCBpbnN0ZWFkIG9mIGEgc3RhdGljIGZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIGtl
ZXAgdXNpbmcgbWluTWFnbmlmaWNhdGlvbiBhbmQgbWF4TWFnbmlmaWNhdGlvbiBpbiBpdC4KKwor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRp
b25HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorCisgICAg
ICAgIFNldCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9yZSBjYWxsaW5nIHNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0OjpyZXNpc3RhbmNlRm9y
RGVsdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9u
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlm
aWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAgTW92ZWQgdG8gVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorCisgICAgICAgIFdlIG9u
bHkgbmVlZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIGZsYWcg
d2hlbiBub3QKKyAgICAgICAgem9vbWluZywgc28gYWRkIGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21w
b3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2ll
bnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQpOgorICAg
ICAgICBEb24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIHdoZW4gdHJh
bnNpZW50IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpvb20gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisKKyAgICAgICAgQnVpbGQg
Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQuCisKIDIwMjEtMDYtMTUgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNu
YXBdIE5ldyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAgdG8gdGhlIGZpcnN0IHNjcm9sbCBw
b3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAppbmRleCAzYTNmM2UyNWRkYzAuLmU5Y2Y3MTM1MmJhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTMyOSw4ICszMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSB7CiAjZW5kaWYKIAogICAgIC8vIFRvdWNoIGdlc3R1cmVzIHN0YXRlCi0gICAgZG91YmxlIGlu
aXRpYWxab29tU2NhbGU7Ci0gICAgSW50UG9pbnQgaW5pdGlhbFpvb21Qb2ludDsKICAgICBGbG9h
dFBvaW50IGRyYWdPZmZzZXQ7CiAgICAgYm9vbCBpc0xvbmdQcmVzc2VkOwogICAgIGJvb2wgaXNC
ZWluZ0RyYWdnZWQ7CkBAIC0xODQ5LDE3ICsxODQ3LDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QmFzZUZvY3VzKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEaXJlY3Rpb25UeXBlIGRp
cmVjCiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFy
ZW50X2NsYXNzKS0+Zm9jdXMod2lkZ2V0LCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Us
IEdka0V2ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIGdkb3VibGUgc2NhbGUsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgcHJp
di0+aW5pdGlhbFpvb21TY2FsZSA9IHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAg
IGd0a19nZXN0dXJlX3NldF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1F
RCk7CisKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJW
aWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKICAgICBkb3VibGUgeCwgeTsKICAgICBndGtfZ2Vz
dHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkpOwotICAgIHByaXYt
PnBhZ2VQcm94eS0+Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoSW50UG9pbnQoeCwgeSksIHByaXYt
PmluaXRpYWxab29tUG9pbnQpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh4
LCB5KTsKKworICAgIGNvbnRyb2xsZXItPnNldE1hZ25pZmljYXRpb24oc2NhbGUsIG9yaWdpbik7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJl
KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tRW5kKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1cmUqIGdl
c3R1cmUpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jh
c2UtPnByaXY7CiAgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCkBAIC0xODY3LDE2ICsx
ODc0LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlCiAKICAgICBndGtfZ2VzdHVyZV9zZXRf
c3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgYXV0byBw
YWdlU2NhbGUgPSBjbGFtcFRvPGRvdWJsZT4ocHJpdi0+aW5pdGlhbFpvb21TY2FsZSAqIHNjYWxl
LCAxLCAzKTsKLQotICAgIEZsb2F0UG9pbnQgc2NhbGVkWm9vbUNlbnRlcihwcml2LT5pbml0aWFs
Wm9vbVBvaW50KTsKLSAgICBzY2FsZWRab29tQ2VudGVyLnNjYWxlKHBhZ2VTY2FsZSk7Ci0KLSAg
ICBkb3VibGUgeCwgeTsKLSAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihn
ZXN0dXJlLCAmeCwgJnkpOwotICAgIEZsb2F0UG9pbnQgdmlld1BvaW50ID0gRmxvYXRQb2ludCh4
LCB5KTsKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJW
aWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFn
ZShwYWdlU2NhbGUsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KHNjYWxlZFpv
b21DZW50ZXIgLSB2aWV3UG9pbnQpKSk7CisgICAgY29udHJvbGxlci0+ZW5kTWFnbmlmaWNhdGlv
bigpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoTG9uZ1ByZXNzKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHksIEd0a0dl
c3R1cmUqKQpAQCAtMjA1OSw4ICsyMDYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+dG91Y2hHZXN0dXJlR3Jv
dXAgPSBndGtfZ2VzdHVyZV96b29tX25ldyh2aWV3V2lkZ2V0KTsKICAgICBnX29iamVjdF9zZXRf
ZGF0YV9mdWxsKEdfT0JKRUNUKHZpZXdXaWRnZXQpLCAid2stdmlldy16b29tLWdlc3R1cmUiLCBw
cml2LT50b3VjaEdlc3R1cmVHcm91cCwgZ19vYmplY3RfdW5yZWYpOwogI2VuZGlmCi0gICAgZ19z
aWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJiZWdpbiIsIEdf
Q0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pLCB2aWV3V2lkZ2V0LCBHX0NPTk5F
Q1RfU1dBUFBFRCk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0
dXJlR3JvdXAsICJzY2FsZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpv
b21DaGFuZ2VkKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiZW5kIiwgR19DQUxMQkFD
Syh3ZWJraXRXZWJWaWV3QmFzZVpvb21FbmQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBF
RCk7CiAKICNpZiBVU0UoR1RLNCkKICAgICBnZXN0dXJlID0gZ3RrX2dlc3R1cmVfbG9uZ19wcmVz
c19uZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggNWE1MWI5ZWMxZDY4Li4wMzhkOWVlMmY0MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC0xNTIsNiArMTUyLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCBpc0Jh
CiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9h
dFBvaW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0
VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBG
bG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29t
bWl0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisjZW5kaWYKKwogdm9pZCBEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdT
dG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJU
X0FSRyhiYWNraW5nU3RvcmVTdGF0ZUlELCBiYWNraW5nU3RvcmVTdGF0ZUlEIDw9IG1fY3VycmVu
dEJhY2tpbmdTdG9yZVN0YXRlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IGQ3Njk1MDg4ZTdjZi4uYjIzYTQ1
ZmY3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwogCisjaWYgUExB
VEZPUk0oR1RLKQorICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJp
ZGU7CisjZW5kaWYKKwogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB1cGRh
dGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2lu
Z1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExheWVyVHJlZUNvbnRleHQm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCmluZGV4IGE3ZTZmMGQxOTAzMS4uMTY1NTkxZTQwMjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTQz
LDYgKzQzLDcgQEAKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjZW5k
aWYKQEAgLTY0Niw2ICs2NDcsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVl
c3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdl
U2VuZGVyID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkpIDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwg
ZG91YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdp
bihtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlm
aWNhdGlvbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0
aW9uT3JpZ2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmln
aW4gLSBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAg
d2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkpOworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsK
KyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21h
cnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmlj
YXRpb24pKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdN
YWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlm
aWNhdGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01h
Z25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpv
b20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmlj
YXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICNl
bmRpZgogCisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZp
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247
CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGU1MDNhZWZlOTliMi4uZGEwMDg4OTkwYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZp
Y2F0aW9uLAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1f
cGVuZGluZ1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9
CiAKICAgICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25z
dDsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxh
dGZvcm1TY3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgYXBwbHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRp
b25HZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2
ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxs
ZWQpOwogICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9v
bCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCk7CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAg
LTI2MywxNSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUg
c2NhbGUpOwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0U3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAg
ICB2b2lkIHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0
aW9uLCBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0yODMsNiArMjkxLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZVNuYXBzaG90Rm9yU2l6ZShWaWV3U25hcHNo
b3QmLCBXZWJDb3JlOjpGbG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJ
bnNldCk7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgZG91YmxlIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6cmVzaXN0YW5jZUZvckRlbHRhKGRvdWJsZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVu
dFNjYWxlKSBjb25zdDsKKwogICAgIENBTGF5ZXIqIGRldGVybWluZVNuYXBzaG90TGF5ZXJQYXJl
bnQoKSBjb25zdDsKICAgICBDQUxheWVyKiBkZXRlcm1pbmVMYXllckFkamFjZW50VG9TbmFwc2hv
dEZvclBhcmVudChTd2lwZURpcmVjdGlvbiwgQ0FMYXllciogc25hcHNob3RMYXllclBhcmVudCkg
Y29uc3Q7CiAgICAgdm9pZCBhcHBseURlYnVnZ2luZ1Byb3BlcnRpZXNUb1N3aXBlVmlld3MoKTsK
QEAgLTM1NSwyMCArMzY1LDI3IEBAIHByaXZhdGU6CiAgICAgUGVuZGluZ1N3aXBlVHJhY2tlciBt
X3BlbmRpbmdTd2lwZVRyYWNrZXI7CiAKICAgICBib29sIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50
UmVxdWVzdCB7IGZhbHNlIH07Ci0jZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBkb3Vi
bGUgbV9tYWduaWZpY2F0aW9uOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9tYWduaWZpY2F0
aW9uT3JpZ2luOwogCisgICAgZG91YmxlIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luOworI2VuZGlmCisK
KyNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFzdFNtYXJ0TWFn
bmlmaWNhdGlvblVuc2NhbGVkVGFyZ2V0UmVjdDsKICAgICBib29sIG1fbGFzdE1hZ25pZmljYXRp
b25HZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IG1fbGFzdFNtYXJ0TWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNlbmRpZgogCisjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdmlzaWJsZUNv
bnRlbnRSZWN0OwogICAgIGJvb2wgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUgeyBmYWxzZSB9
OworI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdLU3dpcGVDYW5j
ZWxsYXRpb25UcmFja2VyPiBtX3N3aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcjsKICAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV9zd2lwZUxheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3aXBl
U25hcHNob3RMYXllcjsKQEAgLTQ2Nyw2ICs0ODQsMTEgQEAgcHJpdmF0ZToKIAogICAgIFNuYXBz
aG90UmVtb3ZhbFRyYWNrZXIgbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyOwogICAgIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiBtX2xvYWRDYWxsYmFjazsKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1pbk1hZ25pZmljYXRpb24geyAxIH07Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWF4TWFnbmlmaWNhdGlvbiB7IDMgfTsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5kZXggNmJj
NGY5ZGFmOTE2Li5hOGNhYTRkYWY1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTIyLDExICsy
MiwxMiBAQAogCiBtZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgTm90UmVmQ291bnRl
ZCB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIERpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKICAgICBEaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
LCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmlt
dW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQogI2VuZGlmCiAKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9u
R2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZnJh
bWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCisKICAgICBEaWRIaXRSZW5kZXJUcmVlU2l6
ZVRocmVzaG9sZCgpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggNDg1Zjc0YjRlYmZhLi4zYWFhNjRkMWJlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04ODYsMTAgKzg4Niw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgZ2V0Q2VudGVyRm9yWm9vbUdl
c3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBX
ZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKTsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdm9pZCB3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpOwogICAgIHZvaWQgc2V0TWFpbkZy
YW1lSXNTY3JvbGxhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAppbmRleCBhN2Y2ZmM2MzllZjgu
LjgwNmJiZmZlZTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKQEAgLTY2MCw0ICs2NjAsMzMgQEAgYm9v
bCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbXBsZXRlU2ltdWxhdGVkU3dpcGVJbkRpcmVjdGlv
bkZvclRlc3RpbmcoU3dpcGVEaXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnNldE1hZ25pZmljYXRpb24oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50
IG9yaWdpbikKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVy
ZVR5cGU6Ok5vbmUgfHwgbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1h
Z25pZmljYXRpb24pOworCisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1
cmVUeXBlOjpOb25lKSB7CisgICAgICAgIHByZXBhcmVNYWduaWZpY2F0aW9uR2VzdHVyZShvcmln
aW4pOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBzdGlsbCB3YWl0
aW5nIGZvciB0aGUgRGlkQ29sbGVjdEdlb21ldHJ5IGNhbGxiYWNrLgorICAgIGlmICghbV92aXNp
YmxlQ29udGVudFJlY3RJc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICB3aWxsQmVnaW5H
ZXN0dXJlKFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7CisKKyAgICBkb3VibGUgYWJz
b2x1dGVTY2FsZSA9IHNjYWxlICogbV9pbml0aWFsTWFnbmlmaWNhdGlvbjsKKyAgICBtX21hZ25p
ZmljYXRpb24gPSBjbGFtcFRvPGRvdWJsZT4oYWJzb2x1dGVTY2FsZSwgbWluTWFnbmlmaWNhdGlv
biwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmln
aW47CisKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb24oKQoreworICAgIGVuZE1hZ25pZmljYXRpb25HZXN0
dXJlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA1YzBlZWYyNzc2ZTguLjFhN2Zh
NmI3NWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94
eUd0ay5jcHAKQEAgLTcyLDExICs3Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnB1dE1l
dGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKICAgICB3
ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUoV0VCS0lUX1dFQl9WSUVXX0JBU0Uo
dmlld1dpZGdldCgpKSwgV1RGTW92ZShzdGF0ZSkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlcklu
Vmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKQotewotICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjZW50ZXJJblZp
ZXdDb29yZGluYXRlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDZW50ZXJGb3Jab29tR2VzdHVy
ZTo6UmVwbHkoY2VudGVyKSk7Ci19Ci0KIGJvb2wgV2ViUGFnZVByb3h5OjptYWtlR0xDb250ZXh0
Q3VycmVudCgpCiB7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlTWFrZUdMQ29udGV4dEN1
cnJlbnQoV0VCS0lUX1dFQl9WSUVXX0JBU0Uodmlld1dpZGdldCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpp
bmRleCAwMGEzZDMwNGFhOGYuLjkzNjUwZDk1Y2QzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC01MCw5
ICs1MCw2IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvbWFjL05TRXZlbnRTUEkuaD4KIAotc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5N
YWduaWZpY2F0aW9uID0gMTsKLXN0YXRpYyBjb25zdCBkb3VibGUgbWF4TWFnbmlmaWNhdGlvbiA9
IDM7Ci0KIHN0YXRpYyBjb25zdCBkb3VibGUgbWluRWxhc3RpY01hZ25pZmljYXRpb24gPSAwLjc1
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhFbGFzdGljTWFnbmlmaWNhdGlvbiA9IDQ7CiAKQEAg
LTkxLDcgKzg4LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnBsYXRmb3JtVGVhcmRv
d24oKQogICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKLXN0YXRpYyBkb3VibGUg
cmVzaXN0YW5jZUZvckRlbHRhKGRvdWJsZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVudFNjYWxl
KQorZG91YmxlIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVzaXN0YW5jZUZvckRlbHRhKGRvdWJs
ZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVudFNjYWxlKSBjb25zdAogewogICAgIC8vIFpvb20g
b3V0IHdpdGggc2xpZ2h0IGFjY2VsZXJhdGlvbiwgdW50aWwgd2UgcmVhY2ggbWluaW11bSBzY2Fs
ZS4KICAgICBpZiAoZGVsdGFTY2FsZSA8IDAgJiYgY3VycmVudFNjYWxlID4gbWluTWFnbmlmaWNh
dGlvbikKQEAgLTExMCwyMyArMTA3LDYgQEAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVs
dGEoZG91YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCiAgICAgcmV0dXJuIHJl
c2lzdGFuY2U7CiB9CiAKLUZsb2F0UG9pbnQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzY2FsZWRN
YWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUpCi17Ci0g
ICAgRmxvYXRQb2ludCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG9yaWdpbik7Ci0gICAgc2Nh
bGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5tb3ZlQnkobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRp
b24oKSk7Ci0gICAgZmxvYXQgbWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlID0gMSAtIChzY2FsZSAv
IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0
aW9uT3JpZ2luLnNjYWxlKG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSk7Ci0gICAgcmV0dXJuIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW47Ci19Ci0KLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRSZWN0LCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQot
ewotICAgIHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsK
LSAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdDsKLSAgICBtX3Zp
c2libGVDb250ZW50UmVjdElzVmFsaWQgPSB0cnVlOwotICAgIG1fZnJhbWVIYW5kbGVzTWFnbmlm
aWNhdGlvbkdlc3R1cmUgPSBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZTsKLX0KLQog
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdl
YkNvcmUoTlNFdmVudCAqZXZlbnQsIEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIGlmIChldmVu
dC50eXBlID09IE5TRXZlbnRUeXBlTWFnbmlmeSkKQEAgLTE0NCw5ICsxMjQsNyBAQCB2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2
ZW50ICpldmVudCwgRmxvYQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJl
Y2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCi0gICAg
ICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwot
ICAgICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKLSAg
ICAgICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBm
YWxzZTsKKyAgICAgICAgcHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CiAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2NSwzNSArMTQzLDEyIEBAIHZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2
ZW50LCBGbG9hCiAKICAgICBtX21hZ25pZmljYXRpb25PcmlnaW4gPSBvcmlnaW47CiAKLSAgICBp
ZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICAgICAgbV93ZWJQYWdl
UHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG9yaWdpbikp
OwotICAgIGVsc2UKLSAgICAgICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0
VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4o
b3JpZ2luLCBtX21hZ25pZmljYXRpb24pKTsKKyAgICBhcHBseU1hZ25pZmljYXRpb24oKTsKIAog
ICAgIGlmIChldmVudC5waGFzZSA9PSBOU0V2ZW50UGhhc2VFbmRlZCB8fCBldmVudC5waGFzZSA9
PSBOU0V2ZW50UGhhc2VDYW5jZWxsZWQpCiAgICAgICAgIGVuZE1hZ25pZmljYXRpb25HZXN0dXJl
KCk7CiB9CiAKLXZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2Vz
dHVyZSgpCi17Ci0gICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBl
OjpNYWduaWZpY2F0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgbmV3TWFnbmlm
aWNhdGlvbiA9IHN0ZDo6bWluKHN0ZDo6bWF4KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNh
dGlvbiksIG1heE1hZ25pZmljYXRpb24pOwotCi0gICAgaWYgKG1fZnJhbWVIYW5kbGVzTWFnbmlm
aWNhdGlvbkdlc3R1cmUpCi0gICAgICAgIG1fd2ViUGFnZVByb3h5LnNjYWxlUGFnZShuZXdNYWdu
aWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQobV9tYWduaWZpY2F0aW9uT3JpZ2luKSk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkuZHJh
d2luZ0FyZWEoKSkKLSAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5jb21taXRUcmFuc2llbnRab29t
KG5ld01hZ25pZmljYXRpb24sIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0
aW9uT3JpZ2luLCBuZXdNYWduaWZpY2F0aW9uKSk7Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlUHJv
eHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKLQotICAgIGRpZEVuZEdlc3R1cmUoKTsK
LSAgICBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQgPSBmYWxzZTsKLX0KLQogdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQ
b2ludCBvcmlnaW4pCiB7CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1
cmVUeXBlOjpOb25lKQpAQCAtMjU1LDYgKzIxMCw5IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0
CiAgICAgRmxvYXRQb2ludCB0YXJnZXRPcmlnaW4odmlzaWJsZUNvbnRlbnRSZWN0LmNlbnRlcigp
KTsKICAgICB0YXJnZXRPcmlnaW4ubW92ZUJ5KC10YXJnZXRSZWN0LmNlbnRlcigpKTsKIAorICAg
IG1faW5pdGlhbE1hZ25pZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3Io
KTsKKyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludCgpOworCiAg
ICAgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX3dl
YlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihG
bG9hdFBvaW50KCksIG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpKSk7CiAgICAgbV93
ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+Y29tbWl0VHJhbnNpZW50Wm9vbSh0YXJnZXRNYWdu
aWZpY2F0aW9uLCB0YXJnZXRPcmlnaW4pOwogCkBAIC02NTUsMTQgKzYxMyw2IEBAIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpyZXNldCgpCiAgICAgcmVzZXRTdGF0ZSgpOwogfQogCi1kb3Vi
bGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24p
Ci0gICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247Ci0KLSAgICByZXR1cm4gbV93ZWJQYWdl
UHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci19Ci0KIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpiZWdpblNpbXVsYXRlZFN3aXBlSW5EaXJlY3Rpb25Gb3JUZXN0aW5nKFN3aXBlRGlyZWN0aW9u
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA2OGUzNjkxOWZjN2YuLjUxNTNh
NzlmMmU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBDb21wb3NpdGluZ0Nvb3Jk
aW5hdG9yOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAgICAgbm90aWZ5
Rmx1c2hSZXF1aXJlZChtX3Jvb3RMYXllci5nZXQoKSk7CiB9CiAKLWJvb2wgQ29tcG9zaXRpbmdD
b29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKK2Jvb2wgQ29tcG9zaXRpbmdD
b29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKE9wdGlvblNldDxGaW5hbGl6ZVJl
bmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFncykKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiBwcm90
ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0cnVlKTsKIApAQCAtMTMwLDcgKzEzMCw3
IEBAIGJvb2wgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
KCkKICAgICBpZiAobV9vdmVybGF5Q29tcG9zaXRpbmdMYXllcikKICAgICAgICAgbV9vdmVybGF5
Q29tcG9zaXRpbmdMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fcm9vdExheWVyLT5zaXplKCkpKTsKIAotICAgIG1fcGFnZS5maW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZSh7IEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5n
VHJlZUxheWVyUG9zaXRpb25zIH0pOworICAgIG1fcGFnZS5maW5hbGl6ZVJlbmRlcmluZ1VwZGF0
ZShmbGFncyk7CiAKICAgICBhdXRvJiBjb29yZGluYXRlZExheWVyID0gZG93bmNhc3Q8Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyPigqbV9yb290TGF5ZXIpOwogICAgIGNvb3JkaW5hdGVkTGF5ZXIu
dXBkYXRlQ29udGVudEJ1ZmZlcnNJbmNsdWRpbmdTdWJMYXllcnMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggYzNhYWU5ZGYz
YmM4Li5lZWQzMGZlYzg1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29t
cG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZm9yY2VGcmFtZVN5bmMoKSB7IG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsgfQogCi0gICAg
Ym9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBib29sIGZsdXNoUGVuZGluZ0xh
eWVyQ2hhbmdlcyhPcHRpb25TZXQ8V2ViQ29yZTo6RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFn
cz4pOwogICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUoKSB7IHJl
dHVybiBtX3N0YXRlOyB9CiAKICAgICB2b2lkIHN5bmNEaXNwbGF5U3RhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAppbmRleCBiYzZkOTM3YmQ2MmMuLjRhMDg3MjM1ZTdiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcApAQCAtNDgzLDYgKzQ4Myw0NCBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljczo6ZGlkVXBkYXRlKCkKICAgICBkaXNwbGF5VGltZXJGaXJlZCgpOwogfQogCisj
aWYgUExBVEZPUk0oR1RLKQordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmFk
anVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAg
ICBpZiAoIW1fdHJhbnNpZW50Wm9vbSkgeworICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9
ICptX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpOworICAgICAgICBGbG9hdFJlY3QgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Nj
cm9sbGJhcnMoKTsKKworICAgICAgICBtX3RyYW5zaWVudFpvb20gPSB0cnVlOworICAgICAgICBt
X3RyYW5zaWVudFpvb21Jbml0aWFsT3JpZ2luID0gdW5vYnNjdXJlZENvbnRlbnRSZWN0LmxvY2F0
aW9uKCk7CisgICAgfQorCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkgeworICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmFkanVzdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdpbik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBjYW4ndCBkbyB0cmFuc2llbnQgem9vbSBmb3Ig
bm9uLUFDIG1vZGUsIHNvIGp1c3Qgem9vbSBpbiBwbGFjZSBpbnN0ZWFkLgorCisgICAgRmxvYXRQ
b2ludCB1bnNjcm9sbGVkT3JpZ2luKG9yaWdpbik7CisgICAgdW5zY3JvbGxlZE9yaWdpbi5tb3Zl
QnkoLW1fdHJhbnNpZW50Wm9vbUluaXRpYWxPcmlnaW4pOworCisgICAgbV93ZWJQYWdlLnNjYWxl
UGFnZShzY2FsZSAvIG1fd2ViUGFnZS52aWV3U2NhbGVGYWN0b3IoKSwgcm91bmRlZEludFBvaW50
KC11bnNjcm9sbGVkT3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmln
aW4pCit7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5jb21taXRUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pOworCisgICAgRmxvYXRQb2ludCB1
bnNjcm9sbGVkT3JpZ2luKG9yaWdpbik7CisgICAgdW5zY3JvbGxlZE9yaWdpbi5tb3ZlQnkoLW1f
dHJhbnNpZW50Wm9vbUluaXRpYWxPcmlnaW4pOworCisgICAgbV93ZWJQYWdlLnNjYWxlUGFnZShz
Y2FsZSAvIG1fd2ViUGFnZS52aWV3U2NhbGVGYWN0b3IoKSwgcm91bmRlZEludFBvaW50KC11bnNj
cm9sbGVkT3JpZ2luKSk7CisKKyAgICBtX3RyYW5zaWVudFpvb20gPSBmYWxzZTsKK30KKyNlbmRp
ZgorCiB2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6c2VuZERpZFVwZGF0ZUJh
Y2tpbmdTdG9yZVN0YXRlKCkKIHsKICAgICBBU1NFUlQoIW1faXNXYWl0aW5nRm9yRGlkVXBkYXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29v
cmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IGIxOTU5ZDA0MGUyMS4uODU2NTY4M2I3ODZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmgKQEAgLTg0LDYgKzg0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBib29sIHJl
c3BvbmRJbW1lZGlhdGVseSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkVXBkYXRlKCkgb3ZlcnJpZGU7CiAKKyNpZiBQTEFURk9STShHVEspCisg
ICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyNlbmRpZgor
CiAgICAgdm9pZCBzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKTsKIAogICAgIHZvaWQg
ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlU29vbigpOwpAQCAtMTUwLDYgKzE1NSwxMSBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9mb3JjZVJlcGFpbnRBZnRlckJhY2tpbmdTdG9yZVN0YXRl
VXBkYXRlIHsgZmFsc2UgfTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPERyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcz4gbV9kaXNwbGF5VGltZXI7CisKKyNpZiBQTEFURk9STShHVEspCisgICAg
Ym9vbCBtX3RyYW5zaWVudFpvb20geyBmYWxzZSB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV90cmFuc2llbnRab29tSW5pdGlhbE9yaWdpbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAppbmRl
eCA0MDdmNGYzZmIxZmMuLjkxMjI2ZGQ3NmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zOSw2ICszOSw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oPgog
CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllckJhY2tpbmcuaD4KKwogI2lmIFVTRShHTElC
X0VWRU5UX0xPT1ApCiAjaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5Lmg+
CiAjZW5kaWYKQEAgLTE0NCw3ICsxNDYsMjIgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpsYXllckZs
dXNoVGltZXJGaXJlZCgpCiAgICAgaWYgKG1fZm9yY2VSZXBhaW50QXN5bmMuY2FsbGJhY2spCiAg
ICAgICAgIG1fY29vcmRpbmF0b3IuZm9yY2VGcmFtZVN5bmMoKTsKIAotICAgIGJvb2wgZGlkU3lu
YyA9IG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgT3B0aW9u
U2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdU
SykKKyAgICBpZiAoIW1fdHJhbnNpZW50Wm9vbSkKKyAgICAgICAgZmxhZ3MuYWRkKEZpbmFsaXpl
UmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKTsK
KyNlbHNlCisgICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5
U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbmRpZgorCisgICAgYm9vbCBkaWRTeW5j
ID0gbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoZmxhZ3MpOworCisjaWYg
UExBVEZPUk0oR1RLKQorICAgIC8vIElmIHdlIGhhdmUgYW4gYWN0aXZlIHRyYW5zaWVudCB6b29t
LCB3ZSB3YW50IHRoZSB6b29tIHRvIHdpbiBvdmVyIGFueSBjaGFuZ2VzCisgICAgLy8gdGhhdCBX
ZWJDb3JlIG1ha2VzIHRvIHRoZSByZWxldmFudCBsYXllcnMsIHNvIHJlLWFwcGx5IG91ciBjaGFu
Z2VzIGFmdGVyIGZsdXNoaW5nLgorICAgIGlmIChtX3RyYW5zaWVudFpvb20pCisgICAgICAgIGFw
cGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNjYWxlLCBtX3RyYW5zaWVu
dFpvb21PcmlnaW4pOworI2VuZGlmCiAKICAgICBpZiAobV9ub3RpZnlBZnRlclNjaGVkdWxlZExh
eWVyRmx1c2ggJiYgZGlkU3luYykgewogICAgICAgICBtX3dlYlBhZ2UuZHJhd2luZ0FyZWEoKS0+
bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKTsKQEAgLTE4NSw4ICsyMDIsMTggQEAgdm9pZCBMYXll
clRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQoKQogICAgIC8vIFdlIG5lZWQgdG8gc2NoZWR1bGUgYW5v
dGhlciBmbHVzaCwgb3RoZXJ3aXNlIHRoZSBmb3JjZWQgcGFpbnQgbWlnaHQgY2FuY2VsIGEgbGF0
ZXIgZXhwZWN0ZWQgZmx1c2guCiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAKLSAgICBpZiAo
IW1faXNXYWl0aW5nRm9yUmVuZGVyZXIpCi0gICAgICAgIG1fY29vcmRpbmF0b3IuZmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgaWYgKCFtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKSB7Cisg
ICAgICAgIE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFnczsKKyNp
ZiBQTEFURk9STShHVEspCisgICAgICAgIGlmICghbV90cmFuc2llbnRab29tKQorICAgICAgICAg
ICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5n
VHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbHNlCisgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJl
bmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7Cisj
ZW5kaWYKKworICAgICAgICBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhm
bGFncyk7CisgICAgfQorCiAgICAgbV9jb21wb3NpdG9yLT5mb3JjZVJlcGFpbnQoKTsKIH0KIApA
QCAtNDI2LDYgKzQ1Myw4MSBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZShi
b29sIGZvcmNlUmVwYWludCkKICAgICB9CiB9CiAKKyNpZiBQTEFURk9STShHVEspCitGbG9hdFBv
aW50IExheWVyVHJlZUhvc3Q6OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4oZG91YmxlIHNj
YWxlLCBGbG9hdFBvaW50IG9yaWdpbikgY29uc3QKK3sKKyAgICBGcmFtZVZpZXcmIGZyYW1lVmll
dyA9ICptX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpOworICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFy
cygpOworCisgICAgRmxvYXRQb2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IHZpc2libGVDb250ZW50
UmVjdC5sb2NhdGlvbigpOworICAgIGNvbnN0cmFpbmVkT3JpZ2luLm1vdmVCeSgtb3JpZ2luKTsK
KworICAgIEludFNpemUgc2NhbGVkVG90YWxDb250ZW50c1NpemUgPSBmcmFtZVZpZXcudG90YWxD
b250ZW50c1NpemUoKTsKKyAgICBzY2FsZWRUb3RhbENvbnRlbnRzU2l6ZS5zY2FsZShzY2FsZSAq
IG1fd2ViUGFnZS52aWV3U2NhbGVGYWN0b3IoKSAvIG1fd2ViUGFnZS50b3RhbFNjYWxlRmFjdG9y
KCkpOworCisgICAgLy8gU2NhbGluZyBtYXkgaGF2ZSBleHBvc2VkIHRoZSBvdmVyaGFuZyBhcmVh
LCBzbyB3ZSBuZWVkIHRvIGNvbnN0cmFpbiB0aGUgZmluYWwKKyAgICAvLyBsYXllciBwb3NpdGlv
biBleGFjdGx5IGxpa2Ugc2Nyb2xsaW5nIHdpbGwgb25jZSBpdCdzIGNvbW1pdHRlZCwgdG8gZW5z
dXJlIHRoYXQKKyAgICAvLyBzY3JvbGxpbmcgZG9lc24ndCBtYWtlIHRoZSB2aWV3IGp1bXAuCisg
ICAgY29uc3RyYWluZWRPcmlnaW4gPSBTY3JvbGxhYmxlQXJlYTo6Y29uc3RyYWluU2Nyb2xsUG9z
aXRpb25Gb3JPdmVyaGFuZyhyb3VuZGVkSW50UmVjdCh2aXNpYmxlQ29udGVudFJlY3QpLAorICAg
ICAgICBzY2FsZWRUb3RhbENvbnRlbnRzU2l6ZSwgcm91bmRlZEludFBvaW50KGNvbnN0cmFpbmVk
T3JpZ2luKSwgZnJhbWVWaWV3LnNjcm9sbE9yaWdpbigpLAorICAgICAgICBmcmFtZVZpZXcuaGVh
ZGVySGVpZ2h0KCksIGZyYW1lVmlldy5mb290ZXJIZWlnaHQoKSk7CisgICAgY29uc3RyYWluZWRP
cmlnaW4ubW92ZUJ5KC12aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7CisgICAgY29uc3Ry
YWluZWRPcmlnaW4gPSAtY29uc3RyYWluZWRPcmlnaW47CisKKyAgICByZXR1cm4gY29uc3RyYWlu
ZWRPcmlnaW47Cit9CisKK0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogTGF5ZXJUcmVlSG9zdDo6
bGF5ZXJGb3JUcmFuc2llbnRab29tKCkgY29uc3QKK3sKKyAgICBSZW5kZXJMYXllckJhY2tpbmcq
IHJlbmRlclZpZXdCYWNraW5nID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+cmVuZGVyVmll
dygpLT5sYXllcigpLT5iYWNraW5nKCk7CisKKyAgICBpZiAoR3JhcGhpY3NMYXllciogY29udGVu
dHNDb250YWlubWVudExheWVyID0gcmVuZGVyVmlld0JhY2tpbmctPmNvbnRlbnRzQ29udGFpbm1l
bnRMYXllcigpKQorICAgICAgICByZXR1cm4gJmRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcj4oKmNvbnRlbnRzQ29udGFpbm1lbnRMYXllcik7CisKKyAgICByZXR1cm4gJmRvd25jYXN0
PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKnJlbmRlclZpZXdCYWNraW5nLT5ncmFwaGljc0xh
eWVyKCkpOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5
ZXJzKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7CisgICAgLy8gRklYTUU6IFNj
cm9sbGJhcnMgc2hvdWxkIHN0YXkgaW4tcGxhY2UgYW5kIGNoYW5nZSBoZWlnaHQgd2hpbGUgem9v
bWluZy4KKyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVkT3JpZ2luID0gY29uc3RyYWluVHJhbnNp
ZW50Wm9vbU9yaWdpbihzY2FsZSwgb3JpZ2luKTsKKyAgICBhdXRvKiB6b29tTGF5ZXIgPSBsYXll
ckZvclRyYW5zaWVudFpvb20oKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnN0cmFpbmVkT3JpZ2luLngoKSwgY29uc3Ry
YWluZWRPcmlnaW4ueSgpKTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpOworCisgICAgem9v
bUxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICB6b29tTGF5ZXItPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQzRCgpKTsKKyAgICB6b29tTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoKSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6YWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIG1fdHJhbnNpZW50Wm9vbSA9
IHRydWU7CisgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBtX3RyYW5zaWVu
dFpvb21PcmlnaW4gPSBvcmlnaW47CisKKyAgICBhcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyht
X3RyYW5zaWVudFpvb21TY2FsZSwgbV90cmFuc2llbnRab29tT3JpZ2luKTsKK30KKwordm9pZCBM
YXllclRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2lu
dCBvcmlnaW4pCit7CisgICAgaWYgKG1fdHJhbnNpZW50Wm9vbVNjYWxlID09IHNjYWxlKSB7Cisg
ICAgICAgIC8vIElmIHRoZSBwYWdlIHNjYWxlIGlzIGFscmVhZHkgdGhlIHRhcmdldCBzY2FsZSwg
c2V0UGFnZVNjYWxlRmFjdG9yKCkgd2lsbCBzaG9ydC1jaXJjdWl0CisgICAgICAgIC8vIGFuZCBu
b3QgYXBwbHkgdGhlIHRyYW5zZm9ybSwgc28gd2UgY2FuJ3QgZGVwZW5kIG9uIGl0IHRvIGRvIHNv
LgorICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmaW5hbFRyYW5zZm9ybTsKKyAgICAgICAg
ZmluYWxUcmFuc2Zvcm0uc2NhbGUoc2NhbGUpOworCisgICAgICAgIGxheWVyRm9yVHJhbnNpZW50
Wm9vbSgpLT5zZXRUcmFuc2Zvcm0oZmluYWxUcmFuc2Zvcm0pOworICAgIH0KKworICAgIG1fdHJh
bnNpZW50Wm9vbSA9IGZhbHNlOworICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gMTsKKyAgICBt
X3RyYW5zaWVudFpvb21PcmlnaW4gPSBGbG9hdFBvaW50KCk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGRiNjVmODEzMjY3ZC4u
NDk0MzM5M2EyYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaApA
QCAtMzgsNiArMzgsOSBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaWYgUExBVEZPUk0oR1RL
KQorI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg+CisjZW5kaWYK
IAogI2lmIFVTRShHUkFQSElDU19MQVlFUl9URVhUVVJFX01BUFBFUikKIApAQCAtOTgsNiArMTAx
LDEwIEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKKyNpZiBQTEFURk9STShHVEspCisg
ICAgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7
CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCk7CisjZW5kaWYKIHByaXZhdGU6CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
IHZvaWQgbGF5ZXJGbHVzaFRpbWVyRmlyZWQoKTsKQEAgLTEyMCw2ICsxMjcsMTIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlcXVlc3REaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoKTsKICAgICB2
b2lkIGhhbmRsZURpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZShib29sKTsKIAorI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnN0cmFpblRyYW5zaWVudFpvb21P
cmlnaW4oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KSBjb25zdDsKKyAgICBXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yVHJhbnNpZW50Wm9vbSgpIGNvbnN0Owor
ICAgIHZvaWQgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91YmxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50KTsKKyNlbmRpZgorCiAgICAgY2xhc3MgQ29tcG9zaXRvckNsaWVudCBmaW5hbCA6IHB1
YmxpYyBUaHJlYWRlZENvbXBvc2l0b3I6OkNsaWVudCwgcHVibGljIFRocmVhZGVkRGlzcGxheVJl
ZnJlc2hNb25pdG9yOjpDbGllbnQgIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29t
cG9zaXRvckNsaWVudCk7CiAgICAgcHVibGljOgpAQCAtMjAwLDYgKzIxMywxMiBAQCBwcml2YXRl
OgogICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0b3IgbV9jb29yZGluYXRvcjsKICNlbmRpZiAvLyBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQg
bV9kaXNwbGF5SUQ7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgYm9vbCBtX3RyYW5zaWVudFpv
b20geyBmYWxzZSB9OworICAgIGRvdWJsZSBtX3RyYW5zaWVudFpvb21TY2FsZSB7IDEgfTsKKyAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fdHJhbnNpZW50Wm9vbU9yaWdpbjsKKyNlbmRpZgogfTsK
IAogI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBiZGMzZGJlZTdlNTguLjc0NzcxZWM0
MGNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCkBAIC0xODIsMTAgKzE4MiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3Bh
Y2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFj
a0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxs
YmFja0lEKFdlYktpdDo6Q2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2Vu
ZGlmCiAKICAgICBib29sIG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNlaXZlciB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluCmluZGV4IGE4ZmY0ZjVhNzk0Ny4uOWQ1ZjZkY2E2ZTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgpAQCAtMzQsMTIgKzM0LDE0IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJl
ZkNvdW50ZWQgewogICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogICAgIFNldFZpZXdFeHBvc2Vk
UmVjdChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQog
Ci0gICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKQotICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbikKLSAgICAKICAgICBBY2NlbGVyYXRlZEFuaW1hdGlvbkRpZFN0
YXJ0KHVpbnQ2NF90IGxheWVySUQsIFN0cmluZyBrZXksIE1vbm90b25pY1RpbWUgc3RhcnRUaW1l
KQogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkRW5kKHVpbnQ2NF90IGxheWVySUQsIFN0cmlu
ZyBrZXkpCiAgICAgCiAgICAgQWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZP
Uk0oR1RLKQorICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbikKKyAgICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHAKaW5kZXggY2RmNTNmNzQ0ZjBhLi44MDM4OTgwMjAxYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNCBAQCB2b2lkIFZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNvbXB1dGVNaW5pbXVtQW5kTWF4aW11bVZpZXdw
b3J0U2NhbGVzKGRvdWJsZQogI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OmNv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkKIHsKICAgICBGbG9hdFJlY3Qg
dmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+dW5vYnNjdXJl
ZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOwogICAgIGJvb2wgZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmUgPSBtX3dlYlBhZ2UubWFpbldlYkZyYW1lKCkuaGFuZGxlc1Bh
Z2VTY2FsZUdlc3R1cmUoKTsKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1
cmVDb250cm9sbGVyOjpEaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSh2
aXNpYmxlQ29udGVudFJlY3QsIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKSk7CiB9
Ci0jZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjpzZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1
aW50NjRfdCBzaXplKQogewogICAgIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hv
bGQgPSBzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IGY3Zjk5OGFhYzAx
Ni4uOGMyMTZiNjBmOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCkBAIC01Niwx
MCArNTYsOSBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBj
b2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIGNvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCk7Ci0jZW5kaWYKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJl
KCk7CisKICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVp
bnQ2NF90KTsKICAgICB2b2lkIHNlbmREaWRIaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZElmTmVl
ZGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3Nh
Z2VzLmluCmluZGV4IGMxMzM1ZmIyYTRhNS4uZGQyY2Y0NTJkMWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KQEAgLTI1LDExICsyNSw5IEBAIG1l
c3NhZ2VzIC0+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IgTm90UmVmQ291bnRlZCB7CiAg
ICAgQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbikKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkKLSNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgU2V0UmVuZGVy
VHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3Qgc2l6ZSkKICNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM5YjMwNTlh
MWEzYS4uZDY3NmU3MDE1NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC04ODksOCArODg5LDYgQEAgcHVibGljOgogICAgIHZvaWQgY29sbGFwc2VT
ZWxlY3Rpb25JbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBzaG93
RW1vamlQaWNrZXIoV2ViQ29yZTo6RnJhbWUmKTsKIAotICAgIHZvaWQgZ2V0Q2VudGVyRm9yWm9v
bUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFBvaW50JiYpPiYmKTsKLQogICAg
IHZvaWQgdGhlbWVEaWRDaGFuZ2UoU3RyaW5nJiYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDU2
MThhMzQzZGU0YS4uNWJkZTNmOGRhOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQzMCw4ICs0MzAsNiBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIENvbGxhcHNl
U2VsZWN0aW9uSW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKLQotICAg
IEdldENlbnRlckZvclpvb21HZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IGNlbnRlckluVmlld0Nv
b3JkaW5hdGVzKSAtPiAoV2ViQ29yZTo6SW50UG9pbnQgY2VudGVyKSBTeW5jaHJvbm91cwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCBlZGI5ZDQ0MWI1N2YuLmNjY2Q4
Y2ExOTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlBhZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQYWdlR3RrLmNwcApAQCAtMTU4LDE0ICsxNTgsNiBAQCBPcHRpb25TZXQ8UG9pbnRlckNo
YXJhY3RlcmlzdGljcz4gV2ViUGFnZTo6cG9pbnRlckNoYXJhY3RlcmlzdGljc09mQWxsQXZhaWxh
YmxlUAogICAgIHJldHVybiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzOjpGaW5lOwogfQogCi12b2lk
IFdlYlBhZ2U6OmdldENlbnRlckZvclpvb21HZXN0dXJlKGNvbnN0IEludFBvaW50JiBjZW50ZXJJ
blZpZXdDb29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2lu
dCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBJbnRQb2ludCByZXN1bHQgPSBtYWlu
RnJhbWVWaWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhjZW50ZXJJblZpZXdDb29yZGluYXRlcyk7
Ci0gICAgZG91YmxlIHNjYWxlID0gbV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICByZXN1
bHQuc2NhbGUoMSAvIHNjYWxlLCAxIC8gc2NhbGUpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVzdWx0KSk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6Y29sbGFwc2VTZWxlY3Rpb25JbkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwotLSAKMi4zMS4xCgo=
</data>
<flag name="commit-queue"
          id="453209"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431428</attachid>
            <date>2021-06-15 05:53:25 -0700</date>
            <delta_ts>2021-06-15 06:09:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>48795</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA0Nzk2ZGIyNTk1YjQzMjRlMTZmNWUwYjgzNzNlMmUxZDNjMjQwMjU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCAxNSBKdW4gMjAyMSAxNzo0ODoyNCArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDEwNyArKysrKysrKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCAgIHwgIDM0ICsrKy0tLQogLi4uL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcCAgIHwgIDEyICsrCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuaCAgICAgfCAgIDUgKwogLi4uL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwICAgICAgIHwgIDc0ICsrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDQwICsrKysrLS0KIC4uLi9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW4gICAgICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0IC0KIC4uLi9ndGsvVmlld0dlc3R1cmVD
b250cm9sbGVyR3RrLmNwcCAgICAgICAgICB8ICAyOSArKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA2MiArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKwogLi4uL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgICAgIHwgIDEwICsrCiAuLi4vQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCAgICAgfCAxMDggKysrKysrKysrKysrKysrKyst
CiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmggICAgICAgfCAgMTkgKysr
CiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oICAgfCAgIDYgKy0K
IC4uLi9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgOCArLQog
Li4uL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgIHwgICA0ICstCiAu
Li4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggICAgfCAgIDUgKy0KIC4u
Li9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluICB8ICAgNCArLQogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCAgICAgfCAgIDggLS0KIDI1IGZpbGVz
IGNoYW5nZWQsIDQ3MiBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAxNGUyZjc5MzgxZGQuLjUyMGJmYzRiNzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTAgQEAK
KzIwMjEtMDYtMDggIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBTdXBwb3J0IHRyYW5zaWVudCB6b29tCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcwMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBwaW5jaCB6b29tIGZvciBBQyBt
b2RlLiBSZXVzZSB0aGUgc2FtZSBpbmZyYXN0cnVjdHVyZSBhcyB0aGUKKyAgICAgICAgbWFjT1Mg
aW1wbGVtZW50YXRpb24uIE1vdmUgdGhlIHNoYXJlZCBjb2RlIHRvIFZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKKyAgICAgICAgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgU2xpZ2h0bHkgYWRq
dXN0IHRoZSBzaGFyZWQgY29kZSB0byBzdXBwb3J0IGNoYW5naW5nIHRoZSBnZXN0dXJlIG9yaWdp
bgorICAgICAgICBkdXJpbmcgdGhlIGdlc3R1cmUgc2luY2Ugd2Ugc3VwcG9ydCBpdCBvbiBib3Ro
IHRvdWNoc2NyZWVuIGFuZCB0b3VjaHBhZC4KKworICAgICAgICBUaGVyZSdzIG5vdCBtdWNoIHdl
IGNhbiBkbyBmb3Igbm9uLUFDIG1vZGUgc28ganVzdCBrZWVwIHRoZSBjdXJyZW50CisgICAgICAg
IGJlaGF2aW9yIHRoZXJlLCB3cmFwcGluZyByZWFsLXRpbWUgem9vbSBpbnRvIHRyYW5zaWVudCB6
b29tIEFQSSBzbyB0aGF0CisgICAgICAgIGl0J3MgY29uZmluZWQgdG8gdGhlIHdlYiBwcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVpvb21FbmQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorCisgICAgICAgIFN1cHBvcnQgY2hhbmdpbmcg
b3JpZ2luIGR1cmluZyB0aGUgZ2VzdHVyZSwgY2FjaGUgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yCisg
ICAgICAgIHRvIGFjY29tbW9kYXRlIG5vbi1BQyBtb2RlIGRvaW5nIHJlYWwtdGltZSB6b29taW5n
IGluc3RlYWQgb2YgdHJhbnNpZW50CisgICAgICAgIHpvb21pbmcuCisKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJl
cGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjphcHBseU1hZ25pZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAg
ICBNb3ZlZCBmcm9tIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0TWFn
bmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5k
TWFnbmlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENlbnRlckZvclpvb21HZXN0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZXNp
c3RhbmNlRm9yRGVsdGEgY29uc3QpOgorCisgICAgICAgIE1ha2UgaXQgYSBzdGF0aWMgcHJpdmF0
ZSBtZXRob2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIGtl
ZXAgdXNpbmcgbWluTWFnbmlmaWNhdGlvbiBhbmQgbWF4TWFnbmlmaWNhdGlvbiBpbiBpdC4KKwor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRp
b25HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorCisgICAg
ICAgIFNldCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9yZSBjYWxsaW5nIHNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0OjpyZXNpc3RhbmNlRm9y
RGVsdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9u
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlm
aWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAgTW92ZWQgdG8gVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorCisgICAgICAgIFdlIG9u
bHkgbmVlZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIGZsYWcg
d2hlbiBub3QKKyAgICAgICAgem9vbWluZywgc28gYWRkIGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21w
b3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2ll
bnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQpOgorICAg
ICAgICBEb24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIHdoZW4gdHJh
bnNpZW50IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpvb20gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisKKyAgICAgICAgQnVpbGQg
Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQuCisKIDIwMjEtMDYtMTUgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNu
YXBdIE5ldyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAgdG8gdGhlIGZpcnN0IHNjcm9sbCBw
b3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAppbmRleCAzYTNmM2UyNWRkYzAuLmU5Y2Y3MTM1MmJhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTMyOSw4ICszMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSB7CiAjZW5kaWYKIAogICAgIC8vIFRvdWNoIGdlc3R1cmVzIHN0YXRlCi0gICAgZG91YmxlIGlu
aXRpYWxab29tU2NhbGU7Ci0gICAgSW50UG9pbnQgaW5pdGlhbFpvb21Qb2ludDsKICAgICBGbG9h
dFBvaW50IGRyYWdPZmZzZXQ7CiAgICAgYm9vbCBpc0xvbmdQcmVzc2VkOwogICAgIGJvb2wgaXNC
ZWluZ0RyYWdnZWQ7CkBAIC0xODQ5LDE3ICsxODQ3LDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QmFzZUZvY3VzKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEaXJlY3Rpb25UeXBlIGRp
cmVjCiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFy
ZW50X2NsYXNzKS0+Zm9jdXMod2lkZ2V0LCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Us
IEdka0V2ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIGdkb3VibGUgc2NhbGUsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgcHJp
di0+aW5pdGlhbFpvb21TY2FsZSA9IHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAg
IGd0a19nZXN0dXJlX3NldF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1F
RCk7CisKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJW
aWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKICAgICBkb3VibGUgeCwgeTsKICAgICBndGtfZ2Vz
dHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkpOwotICAgIHByaXYt
PnBhZ2VQcm94eS0+Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoSW50UG9pbnQoeCwgeSksIHByaXYt
PmluaXRpYWxab29tUG9pbnQpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh4
LCB5KTsKKworICAgIGNvbnRyb2xsZXItPnNldE1hZ25pZmljYXRpb24oc2NhbGUsIG9yaWdpbik7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJl
KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tRW5kKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1cmUqIGdl
c3R1cmUpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jh
c2UtPnByaXY7CiAgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCkBAIC0xODY3LDE2ICsx
ODc0LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlCiAKICAgICBndGtfZ2VzdHVyZV9zZXRf
c3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgYXV0byBw
YWdlU2NhbGUgPSBjbGFtcFRvPGRvdWJsZT4ocHJpdi0+aW5pdGlhbFpvb21TY2FsZSAqIHNjYWxl
LCAxLCAzKTsKLQotICAgIEZsb2F0UG9pbnQgc2NhbGVkWm9vbUNlbnRlcihwcml2LT5pbml0aWFs
Wm9vbVBvaW50KTsKLSAgICBzY2FsZWRab29tQ2VudGVyLnNjYWxlKHBhZ2VTY2FsZSk7Ci0KLSAg
ICBkb3VibGUgeCwgeTsKLSAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihn
ZXN0dXJlLCAmeCwgJnkpOwotICAgIEZsb2F0UG9pbnQgdmlld1BvaW50ID0gRmxvYXRQb2ludCh4
LCB5KTsKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJW
aWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFn
ZShwYWdlU2NhbGUsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KHNjYWxlZFpv
b21DZW50ZXIgLSB2aWV3UG9pbnQpKSk7CisgICAgY29udHJvbGxlci0+ZW5kTWFnbmlmaWNhdGlv
bigpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoTG9uZ1ByZXNzKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHksIEd0a0dl
c3R1cmUqKQpAQCAtMjA1OSw4ICsyMDYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+dG91Y2hHZXN0dXJlR3Jv
dXAgPSBndGtfZ2VzdHVyZV96b29tX25ldyh2aWV3V2lkZ2V0KTsKICAgICBnX29iamVjdF9zZXRf
ZGF0YV9mdWxsKEdfT0JKRUNUKHZpZXdXaWRnZXQpLCAid2stdmlldy16b29tLWdlc3R1cmUiLCBw
cml2LT50b3VjaEdlc3R1cmVHcm91cCwgZ19vYmplY3RfdW5yZWYpOwogI2VuZGlmCi0gICAgZ19z
aWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJiZWdpbiIsIEdf
Q0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pLCB2aWV3V2lkZ2V0LCBHX0NPTk5F
Q1RfU1dBUFBFRCk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0
dXJlR3JvdXAsICJzY2FsZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpv
b21DaGFuZ2VkKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiZW5kIiwgR19DQUxMQkFD
Syh3ZWJraXRXZWJWaWV3QmFzZVpvb21FbmQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBF
RCk7CiAKICNpZiBVU0UoR1RLNCkKICAgICBnZXN0dXJlID0gZ3RrX2dlc3R1cmVfbG9uZ19wcmVz
c19uZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggNWE1MWI5ZWMxZDY4Li4wMzhkOWVlMmY0MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC0xNTIsNiArMTUyLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCBpc0Jh
CiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9h
dFBvaW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0
VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBG
bG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29t
bWl0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisjZW5kaWYKKwogdm9pZCBEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdT
dG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJU
X0FSRyhiYWNraW5nU3RvcmVTdGF0ZUlELCBiYWNraW5nU3RvcmVTdGF0ZUlEIDw9IG1fY3VycmVu
dEJhY2tpbmdTdG9yZVN0YXRlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IGQ3Njk1MDg4ZTdjZi4uYjIzYTQ1
ZmY3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwogCisjaWYgUExB
VEZPUk0oR1RLKQorICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJp
ZGU7CisjZW5kaWYKKwogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB1cGRh
dGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2lu
Z1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExheWVyVHJlZUNvbnRleHQm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCmluZGV4IGE3ZTZmMGQxOTAzMS4uMTY1NTkxZTQwMjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTQz
LDYgKzQzLDcgQEAKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjZW5k
aWYKQEAgLTY0Niw2ICs2NDcsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVl
c3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdl
U2VuZGVyID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkpIDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwg
ZG91YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdp
bihtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlm
aWNhdGlvbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0
aW9uT3JpZ2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmln
aW4gLSBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAg
d2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkpOworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsK
KyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21h
cnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmlj
YXRpb24pKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdN
YWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlm
aWNhdGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01h
Z25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpv
b20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmlj
YXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICNl
bmRpZgogCisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZp
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247
CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGU1MDNhZWZlOTliMi4uNDQzNDA2M2E2ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZp
Y2F0aW9uLAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1f
cGVuZGluZ1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9
CiAKICAgICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25z
dDsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxh
dGZvcm1TY3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgYXBwbHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRp
b25HZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2
ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxs
ZWQpOwogICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9v
bCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCk7CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAg
LTI2MywxNSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUg
c2NhbGUpOwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0U3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAg
ICB2b2lkIHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0
aW9uLCBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0yODMsNiArMjkxLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZVNuYXBzaG90Rm9yU2l6ZShWaWV3U25hcHNo
b3QmLCBXZWJDb3JlOjpGbG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJ
bnNldCk7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRvdWJsZSBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OnJlc2lzdGFuY2VGb3JEZWx0YShkb3VibGUgZGVsdGFTY2FsZSwgZG91Ymxl
IGN1cnJlbnRTY2FsZSkgY29uc3Q7CisKICAgICBDQUxheWVyKiBkZXRlcm1pbmVTbmFwc2hvdExh
eWVyUGFyZW50KCkgY29uc3Q7CiAgICAgQ0FMYXllciogZGV0ZXJtaW5lTGF5ZXJBZGphY2VudFRv
U25hcHNob3RGb3JQYXJlbnQoU3dpcGVEaXJlY3Rpb24sIENBTGF5ZXIqIHNuYXBzaG90TGF5ZXJQ
YXJlbnQpIGNvbnN0OwogICAgIHZvaWQgYXBwbHlEZWJ1Z2dpbmdQcm9wZXJ0aWVzVG9Td2lwZVZp
ZXdzKCk7CkBAIC0zNTUsMjAgKzM2NSwyNyBAQCBwcml2YXRlOgogICAgIFBlbmRpbmdTd2lwZVRy
YWNrZXIgbV9wZW5kaW5nU3dpcGVUcmFja2VyOwogCiAgICAgYm9vbCBtX2hhc091dHN0YW5kaW5n
UmVwYWludFJlcXVlc3QgeyBmYWxzZSB9OwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAg
ICAgZG91YmxlIG1fbWFnbmlmaWNhdGlvbjsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbWFn
bmlmaWNhdGlvbk9yaWdpbjsKIAorICAgIGRvdWJsZSBtX2luaXRpYWxNYWduaWZpY2F0aW9uOwor
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9pbml0aWFsTWFnbmlmaWNhdGlvbk9yaWdpbjsKKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RT
bWFydE1hZ25pZmljYXRpb25VbnNjYWxlZFRhcmdldFJlY3Q7CiAgICAgYm9vbCBtX2xhc3RNYWdu
aWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFnbmlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25PcmlnaW47CisjZW5kaWYK
IAorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Zp
c2libGVDb250ZW50UmVjdDsKICAgICBib29sIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlIHsg
ZmFsc2UgfTsKKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXS1N3
aXBlQ2FuY2VsbGF0aW9uVHJhY2tlcj4gbV9zd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI7CiAgICAg
UmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4g
bV9zd2lwZVNuYXBzaG90TGF5ZXI7CkBAIC00NjcsNiArNDg0LDExIEBAIHByaXZhdGU6CiAKICAg
ICBTbmFwc2hvdFJlbW92YWxUcmFja2VyIG1fc25hcHNob3RSZW1vdmFsVHJhY2tlcjsKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9sb2FkQ2FsbGJhY2s7CisKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBtaW5NYWduaWZpY2F0aW9uIHsg
MSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1heE1hZ25pZmljYXRpb24geyAzIH07
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCmlu
ZGV4IDZiYzRmOWRhZjkxNi4uYThjYWE0ZGFmNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0y
MiwxMSArMjIsMTIgQEAKIAogbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIE5vdFJl
ZkNvdW50ZWQgewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBEaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCiAgICAgRGlkQ29sbGVj
dEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50
IG9yaWdpbiwgV2ViQ29yZTo6RmxvYXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3Bv
cnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKICNlbmRpZgogCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgRGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlm
aWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBi
b29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlKQorCiAgICAgRGlkSGl0UmVuZGVy
VHJlZVNpemVUaHJlc2hvbGQoKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDQ4NWY3NGI0ZWJmYS4uM2FhYTY0ZDFiZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODg2LDEwICs4ODYsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKHN0ZDo6b3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0
ZT4mJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIGdldENlbnRlckZv
clpvb21HZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGlu
YXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlcik7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKTsKICAgICB2b2lkIHNl
dE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxlckd0ay5jcHAKaW5kZXggYTdmNmZj
NjM5ZWY4Li44MDZiYmZmZWUwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xsZXJHdGsuY3BwCkBAIC02NjAsNCArNjYwLDMz
IEBAIGJvb2wgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb21wbGV0ZVNpbXVsYXRlZFN3aXBlSW5E
aXJlY3Rpb25Gb3JUZXN0aW5nKFN3aXBlRGlyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSBzY2FsZSwgRmxv
YXRQb2ludCBvcmlnaW4pCit7CisgICAgQVNTRVJUKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmll
d0dlc3R1cmVUeXBlOjpOb25lIHx8IG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVU
eXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZp
ZXdHZXN0dXJlVHlwZTo6Tm9uZSkgeworICAgICAgICBwcmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1
cmUob3JpZ2luKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UncmUgc3Rp
bGwgd2FpdGluZyBmb3IgdGhlIERpZENvbGxlY3RHZW9tZXRyeSBjYWxsYmFjay4KKyAgICBpZiAo
IW1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ls
bEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworCisgICAgZG91
YmxlIGFic29sdXRlU2NhbGUgPSBzY2FsZSAqIG1faW5pdGlhbE1hZ25pZmljYXRpb247CisgICAg
bV9tYWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KGFic29sdXRlU2NhbGUsIG1pbk1hZ25p
ZmljYXRpb24sIG1heE1hZ25pZmljYXRpb24pOworCisgICAgbV9tYWduaWZpY2F0aW9uT3JpZ2lu
ID0gb3JpZ2luOworCisgICAgYXBwbHlNYWduaWZpY2F0aW9uKCk7Cit9CisKK3ZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uKCkKK3sKKyAgICBlbmRNYWduaWZpY2F0
aW9uR2VzdHVyZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggNWMwZWVmMjc3NmU4
Li4xYTdmYTZiNzVlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwCkBAIC03MiwxMSArNzIsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
SW5wdXRNZXRob2RTdGF0ZShzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUp
CiAgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdFQktJVF9XRUJfVklF
V19CQVNFKHZpZXdXaWRnZXQoKSksIFdURk1vdmUoc3RhdGUpKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmdldENlbnRlckZvclpvb21HZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
ZW50ZXJJblZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlcikKLXsKLSAg
ICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY2Vu
dGVySW5WaWV3Q29vcmRpbmF0ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q2VudGVyRm9yWm9v
bUdlc3R1cmU6OlJlcGx5KGNlbnRlcikpOwotfQotCiBib29sIFdlYlBhZ2VQcm94eTo6bWFrZUdM
Q29udGV4dEN1cnJlbnQoKQogewogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZU1ha2VHTENv
bnRleHRDdXJyZW50KFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJN
YWMubW0KaW5kZXggMDBhM2QzMDRhYThmLi45MzY1MGQ5NWNkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpA
QCAtNTAsOSArNTAsNiBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0V2ZW50U1BJLmg+CiAKLXN0YXRpYyBjb25zdCBkb3Vi
bGUgbWluTWFnbmlmaWNhdGlvbiA9IDE7Ci1zdGF0aWMgY29uc3QgZG91YmxlIG1heE1hZ25pZmlj
YXRpb24gPSAzOwotCiBzdGF0aWMgY29uc3QgZG91YmxlIG1pbkVsYXN0aWNNYWduaWZpY2F0aW9u
ID0gMC43NTsKIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RWxhc3RpY01hZ25pZmljYXRpb24gPSA0
OwogCkBAIC05MSw3ICs4OCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpwbGF0Zm9y
bVRlYXJkb3duKCkKICAgICAgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOwogfQogCi1zdGF0aWMg
ZG91YmxlIHJlc2lzdGFuY2VGb3JEZWx0YShkb3VibGUgZGVsdGFTY2FsZSwgZG91YmxlIGN1cnJl
bnRTY2FsZSkKK2RvdWJsZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlc2lzdGFuY2VGb3JEZWx0
YShkb3VibGUgZGVsdGFTY2FsZSwgZG91YmxlIGN1cnJlbnRTY2FsZSkgY29uc3QKIHsKICAgICAv
LyBab29tIG91dCB3aXRoIHNsaWdodCBhY2NlbGVyYXRpb24sIHVudGlsIHdlIHJlYWNoIG1pbmlt
dW0gc2NhbGUuCiAgICAgaWYgKGRlbHRhU2NhbGUgPCAwICYmIGN1cnJlbnRTY2FsZSA+IG1pbk1h
Z25pZmljYXRpb24pCkBAIC0xMTAsMjMgKzEwNyw2IEBAIHN0YXRpYyBkb3VibGUgcmVzaXN0YW5j
ZUZvckRlbHRhKGRvdWJsZSBkZWx0YVNjYWxlLCBkb3VibGUgY3VycmVudFNjYWxlKQogICAgIHJl
dHVybiByZXNpc3RhbmNlOwogfQogCi1GbG9hdFBvaW50IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwgZG91YmxlIHNjYWxl
KQotewotICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4pOwot
ICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZUJ5KG1fdmlzaWJsZUNvbnRlbnRSZWN0
LmxvY2F0aW9uKCkpOwotICAgIGZsb2F0IG1hZ25pZmljYXRpb25PcmlnaW5TY2FsZSA9IDEgLSAo
c2NhbGUgLyBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSk7Ci0gICAgc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUpOwotICAgIHJl
dHVybiBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luOwotfQotCi12b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRS
ZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2Vz
dHVyZSkKLXsKLSAgICB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNh
dGlvbik7Ci0gICAgbV92aXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7Ci0g
ICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gdHJ1ZTsKLSAgICBtX2ZyYW1lSGFuZGxl
c01hZ25pZmljYXRpb25HZXN0dXJlID0gZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmU7
Ci19Ci0KIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpnZXN0dXJlRXZlbnRXYXNOb3RIYW5k
bGVkQnlXZWJDb3JlKE5TRXZlbnQgKmV2ZW50LCBGbG9hdFBvaW50IG9yaWdpbikKIHsKICAgICBp
ZiAoZXZlbnQudHlwZSA9PSBOU0V2ZW50VHlwZU1hZ25pZnkpCkBAIC0xNDQsOSArMTI0LDcgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZl
bnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAv
LyBGSVhNRTogV2UgZHJvcCB0aGUgZmlyc3QgZnJhbWUgb2YgdGhlIGdlc3R1cmUgb24gdGhlIGZs
b29yLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIHZpc2libGUgY29udGVudCBib3VuZHMgeWV0
LgotICAgICAgICBtX21hZ25pZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0
b3IoKTsKLSAgICAgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUo
KSk7Ci0gICAgICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0
aW9uID0gZmFsc2U7CisgICAgICAgIHByZXBhcmVNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4p
OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNjUsMzUgKzE0MywxMiBAQCB2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2
ZW50ICpldmVudCwgRmxvYQogCiAgICAgbV9tYWduaWZpY2F0aW9uT3JpZ2luID0gb3JpZ2luOwog
Ci0gICAgaWYgKG1fZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi0gICAgICAgIG1f
d2ViUGFnZVByb3h5LnNjYWxlUGFnZShtX21hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChv
cmlnaW4pKTsKLSAgICBlbHNlCi0gICAgICAgIG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCkt
PmFkanVzdFRyYW5zaWVudFpvb20obV9tYWduaWZpY2F0aW9uLCBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luKG9yaWdpbiwgbV9tYWduaWZpY2F0aW9uKSk7CisgICAgYXBwbHlNYWduaWZpY2F0aW9u
KCk7CiAKICAgICBpZiAoZXZlbnQucGhhc2UgPT0gTlNFdmVudFBoYXNlRW5kZWQgfHwgZXZlbnQu
cGhhc2UgPT0gTlNFdmVudFBoYXNlQ2FuY2VsbGVkKQogICAgICAgICBlbmRNYWduaWZpY2F0aW9u
R2VzdHVyZSgpOwogfQogCi12b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNh
dGlvbkdlc3R1cmUoKQotewotICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0
dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIG5l
d01hZ25pZmljYXRpb24gPSBzdGQ6Om1pbihzdGQ6Om1heChtX21hZ25pZmljYXRpb24sIG1pbk1h
Z25pZmljYXRpb24pLCBtYXhNYWduaWZpY2F0aW9uKTsKLQotICAgIGlmIChtX2ZyYW1lSGFuZGxl
c01hZ25pZmljYXRpb25HZXN0dXJlKQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2Uo
bmV3TWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikp
OwotICAgIGVsc2UgewotICAgICAgICBpZiAoYXV0byBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVBy
b3h5LmRyYXdpbmdBcmVhKCkpCi0gICAgICAgICAgICBkcmF3aW5nQXJlYS0+Y29tbWl0VHJhbnNp
ZW50Wm9vbShuZXdNYWduaWZpY2F0aW9uLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKG1fbWFn
bmlmaWNhdGlvbk9yaWdpbiwgbmV3TWFnbmlmaWNhdGlvbikpOwotICAgIH0KLQotICAgIG1fd2Vi
UGFnZVByb3h5LmRpZEVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCk7Ci0KLSAgICBkaWRFbmRHZXN0
dXJlKCk7Ci0gICAgbV92aXNpYmxlQ29udGVudFJlY3RJc1ZhbGlkID0gZmFsc2U7Ci19Ci0KIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KEZsb2F0UG9pbnQgb3JpZ2luKQogewogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZp
ZXdHZXN0dXJlVHlwZTo6Tm9uZSkKQEAgLTI1NSw2ICsyMTAsOSBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6ZGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShGbG9hdAogICAgIEZsb2F0UG9pbnQgdGFyZ2V0T3JpZ2luKHZpc2libGVDb250ZW50UmVjdC5j
ZW50ZXIoKSk7CiAgICAgdGFyZ2V0T3JpZ2luLm1vdmVCeSgtdGFyZ2V0UmVjdC5jZW50ZXIoKSk7
CiAKKyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxl
RmFjdG9yKCk7CisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbk9yaWdpbiA9IEZsb2F0UG9pbnQo
KTsKKwogICAgIG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmFkanVzdFRyYW5zaWVudFpv
b20obV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCksIHNjYWxlZE1hZ25pZmljYXRpb25P
cmlnaW4oRmxvYXRQb2ludCgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKSkpOwog
ICAgIG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmNvbW1pdFRyYW5zaWVudFpvb20odGFy
Z2V0TWFnbmlmaWNhdGlvbiwgdGFyZ2V0T3JpZ2luKTsKIApAQCAtNjU1LDE0ICs2MTMsNiBAQCB2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVzZXQoKQogICAgIHJlc2V0U3RhdGUoKTsKIH0K
IAotZG91YmxlIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlvbigpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgPT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZp
Y2F0aW9uKQotICAgICAgICByZXR1cm4gbV9tYWduaWZpY2F0aW9uOwotCi0gICAgcmV0dXJuIG1f
d2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotfQotCiBib29sIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6YmVnaW5TaW11bGF0ZWRTd2lwZUluRGlyZWN0aW9uRm9yVGVzdGluZyhTd2lwZURp
cmVjdGlvbikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKaW5kZXggNjhlMzY5MTlmYzdm
Li41MTUzYTc5ZjJlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21w
b3NpdGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQ29tcG9zaXRp
bmdDb29yZGluYXRvcjo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAg
IG5vdGlmeUZsdXNoUmVxdWlyZWQobV9yb290TGF5ZXIuZ2V0KCkpOwogfQogCi1ib29sIENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCitib29sIENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhPcHRpb25TZXQ8Rmlu
YWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3MpCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gcHJvdGVjdG9yKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CiAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBib29sIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcygpCiAgICAgaWYgKG1fb3ZlcmxheUNvbXBvc2l0aW5nTGF5ZXIpCiAgICAgICAgIG1f
b3ZlcmxheUNvbXBvc2l0aW5nTGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBtX3Jvb3RMYXllci0+c2l6ZSgpKSk7CiAKLSAgICBtX3BhZ2UuZmluYWxp
emVSZW5kZXJpbmdVcGRhdGUoeyBGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNj
cm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyB9KTsKKyAgICBtX3BhZ2UuZmluYWxpemVSZW5kZXJp
bmdVcGRhdGUoZmxhZ3MpOwogCiAgICAgYXV0byYgY29vcmRpbmF0ZWRMYXllciA9IGRvd25jYXN0
PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKm1fcm9vdExheWVyKTsKICAgICBjb29yZGluYXRl
ZExheWVyLnVwZGF0ZUNvbnRlbnRCdWZmZXJzSW5jbHVkaW5nU3ViTGF5ZXJzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCmluZGV4IGMz
YWFlOWRmM2JjOC4uZWVkMzBmZWM4NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGZvcmNlRnJhbWVTeW5jKCkgeyBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7IH0K
IAotICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CisgICAgYm9vbCBmbHVzaFBl
bmRpbmdMYXllckNoYW5nZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlRmxhZ3M+KTsKICAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRl
KCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAgICAgdm9pZCBzeW5jRGlzcGxheVN0YXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggYmM2ZDkzN2JkNjJjLi40YTA4NzIzNWU3YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5jcHAKQEAgLTQ4Myw2ICs0ODMsNDQgQEAgdm9pZCBEcmF3aW5nQXJlYUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmRpZFVwZGF0ZSgpCiAgICAgZGlzcGxheVRpbWVyRmlyZWQoKTsK
IH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzOjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4p
Cit7CisgICAgaWYgKCFtX3RyYW5zaWVudFpvb20pIHsKKyAgICAgICAgRnJhbWVWaWV3JiBmcmFt
ZVZpZXcgPSAqbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICAgICAgRmxvYXRSZWN0IHVu
b2JzY3VyZWRDb250ZW50UmVjdCA9IGZyYW1lVmlldy51bm9ic2N1cmVkQ29udGVudFJlY3RJbmNs
dWRpbmdTY3JvbGxiYXJzKCk7CisKKyAgICAgICAgbV90cmFuc2llbnRab29tID0gdHJ1ZTsKKyAg
ICAgICAgbV90cmFuc2llbnRab29tSW5pdGlhbE9yaWdpbiA9IHVub2JzY3VyZWRDb250ZW50UmVj
dC5sb2NhdGlvbigpOworICAgIH0KKworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpIHsKKyAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5hZGp1c3RUcmFuc2llbnRab29tKHNjYWxlLCBvcmlnaW4pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgY2FuJ3QgZG8gdHJhbnNpZW50IHpv
b20gZm9yIG5vbi1BQyBtb2RlLCBzbyBqdXN0IHpvb20gaW4gcGxhY2UgaW5zdGVhZC4KKworICAg
IEZsb2F0UG9pbnQgdW5zY3JvbGxlZE9yaWdpbihvcmlnaW4pOworICAgIHVuc2Nyb2xsZWRPcmln
aW4ubW92ZUJ5KC1tX3RyYW5zaWVudFpvb21Jbml0aWFsT3JpZ2luKTsKKworICAgIG1fd2ViUGFn
ZS5zY2FsZVBhZ2Uoc2NhbGUgLyBtX3dlYlBhZ2Uudmlld1NjYWxlRmFjdG9yKCksIHJvdW5kZWRJ
bnRQb2ludCgtdW5zY3JvbGxlZE9yaWdpbikpOworfQorCit2b2lkIERyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljczo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKTsKKworICAgIEZsb2F0
UG9pbnQgdW5zY3JvbGxlZE9yaWdpbihvcmlnaW4pOworICAgIHVuc2Nyb2xsZWRPcmlnaW4ubW92
ZUJ5KC1tX3RyYW5zaWVudFpvb21Jbml0aWFsT3JpZ2luKTsKKworICAgIG1fd2ViUGFnZS5zY2Fs
ZVBhZ2Uoc2NhbGUgLyBtX3dlYlBhZ2Uudmlld1NjYWxlRmFjdG9yKCksIHJvdW5kZWRJbnRQb2lu
dCgtdW5zY3JvbGxlZE9yaWdpbikpOworCisgICAgbV90cmFuc2llbnRab29tID0gZmFsc2U7Cit9
CisjZW5kaWYKKwogdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OnNlbmREaWRV
cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpCiB7CiAgICAgQVNTRVJUKCFtX2lzV2FpdGluZ0ZvckRp
ZFVwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCBiMTk1OWQwNDBlMjEuLjg1NjU2ODNiNzg2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC04NCw2ICs4NCwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwg
Ym9vbCByZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0ZSgpIG92ZXJyaWRlOwogCisjaWYgUExBVEZPUk0o
R1RLKQorICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIHZvaWQgc2VuZERpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKCk7CiAKICAg
ICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVNvb24oKTsKQEAgLTE1MCw2ICsx
NTUsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZm9yY2VSZXBhaW50QWZ0ZXJCYWNraW5nU3Rv
cmVTdGF0ZVVwZGF0ZSB7IGZhbHNlIH07CiAKICAgICBSdW5Mb29wOjpUaW1lcjxEcmF3aW5nQXJl
YUNvb3JkaW5hdGVkR3JhcGhpY3M+IG1fZGlzcGxheVRpbWVyOworCisjaWYgUExBVEZPUk0oR1RL
KQorICAgIGJvb2wgbV90cmFuc2llbnRab29tIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IG1fdHJhbnNpZW50Wm9vbUluaXRpYWxPcmlnaW47CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggNDA3ZjRmM2ZiMWZjLi45MTIyNmRkNzZiM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVIb3N0LmNwcApAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuaD4KIAorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CisKICNpZiBV
U0UoR0xJQl9FVkVOVF9MT09QKQogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlv
cml0eS5oPgogI2VuZGlmCkBAIC0xNDQsNyArMTQ2LDIyIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6
bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jLmNhbGxi
YWNrKQogICAgICAgICBtX2Nvb3JkaW5hdG9yLmZvcmNlRnJhbWVTeW5jKCk7CiAKLSAgICBib29s
IGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAg
IE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFnczsKKyNpZiBQTEFU
Rk9STShHVEspCisgICAgaWYgKCFtX3RyYW5zaWVudFpvb20pCisgICAgICAgIGZsYWdzLmFkZChG
aW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0
aW9ucyk7CisjZWxzZQorICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdz
OjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisjZW5kaWYKKworICAgIGJvb2wg
ZGlkU3luYyA9IG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGZsYWdzKTsK
KworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGFjdGl2ZSB0cmFuc2ll
bnQgem9vbSwgd2Ugd2FudCB0aGUgem9vbSB0byB3aW4gb3ZlciBhbnkgY2hhbmdlcworICAgIC8v
IHRoYXQgV2ViQ29yZSBtYWtlcyB0byB0aGUgcmVsZXZhbnQgbGF5ZXJzLCBzbyByZS1hcHBseSBv
dXIgY2hhbmdlcyBhZnRlciBmbHVzaGluZy4KKyAgICBpZiAobV90cmFuc2llbnRab29tKQorICAg
ICAgICBhcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyhtX3RyYW5zaWVudFpvb21TY2FsZSwgbV90
cmFuc2llbnRab29tT3JpZ2luKTsKKyNlbmRpZgogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hl
ZHVsZWRMYXllckZsdXNoICYmIGRpZFN5bmMpIHsKICAgICAgICAgbV93ZWJQYWdlLmRyYXdpbmdB
cmVhKCktPmxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7CkBAIC0xODUsOCArMjAyLDE4IEBAIHZv
aWQgTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKICAgICAvLyBXZSBuZWVkIHRvIHNjaGVk
dWxlIGFub3RoZXIgZmx1c2gsIG90aGVyd2lzZSB0aGUgZm9yY2VkIHBhaW50IG1pZ2h0IGNhbmNl
bCBhIGxhdGVyIGV4cGVjdGVkIGZsdXNoLgogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogCi0g
ICAgaWYgKCFtX2lzV2FpdGluZ0ZvclJlbmRlcmVyKQotICAgICAgICBtX2Nvb3JkaW5hdG9yLmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAgIGlmICghbV9pc1dhaXRpbmdGb3JSZW5kZXJl
cikgeworICAgICAgICBPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxh
Z3M7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBpZiAoIW1fdHJhbnNpZW50Wm9vbSkKKyAg
ICAgICAgICAgIGZsYWdzLmFkZChGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBseVNj
cm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucyk7CisjZWxzZQorICAgICAgICBmbGFncy5hZGQoRmlu
YWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlv
bnMpOworI2VuZGlmCisKKyAgICAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoZmxhZ3MpOworICAgIH0KKwogICAgIG1fY29tcG9zaXRvci0+Zm9yY2VSZXBhaW50KCk7
CiB9CiAKQEAgLTQyNiw2ICs0NTMsODEgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpyZW5kZXJOZXh0
RnJhbWUoYm9vbCBmb3JjZVJlcGFpbnQpCiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oR1RLKQor
RmxvYXRQb2ludCBMYXllclRyZWVIb3N0Ojpjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKGRv
dWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pIGNvbnN0Cit7CisgICAgRnJhbWVWaWV3JiBm
cmFtZVZpZXcgPSAqbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKTsKKyAgICBGbG9hdFJlY3Qgdmlz
aWJsZUNvbnRlbnRSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdEluY2x1ZGluZ1Nj
cm9sbGJhcnMoKTsKKworICAgIEZsb2F0UG9pbnQgY29uc3RyYWluZWRPcmlnaW4gPSB2aXNpYmxl
Q29udGVudFJlY3QubG9jYXRpb24oKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLW9y
aWdpbik7CisKKyAgICBJbnRTaXplIHNjYWxlZFRvdGFsQ29udGVudHNTaXplID0gZnJhbWVWaWV3
LnRvdGFsQ29udGVudHNTaXplKCk7CisgICAgc2NhbGVkVG90YWxDb250ZW50c1NpemUuc2NhbGUo
c2NhbGUgKiBtX3dlYlBhZ2Uudmlld1NjYWxlRmFjdG9yKCkgLyBtX3dlYlBhZ2UudG90YWxTY2Fs
ZUZhY3RvcigpKTsKKworICAgIC8vIFNjYWxpbmcgbWF5IGhhdmUgZXhwb3NlZCB0aGUgb3Zlcmhh
bmcgYXJlYSwgc28gd2UgbmVlZCB0byBjb25zdHJhaW4gdGhlIGZpbmFsCisgICAgLy8gbGF5ZXIg
cG9zaXRpb24gZXhhY3RseSBsaWtlIHNjcm9sbGluZyB3aWxsIG9uY2UgaXQncyBjb21taXR0ZWQs
IHRvIGVuc3VyZSB0aGF0CisgICAgLy8gc2Nyb2xsaW5nIGRvZXNuJ3QgbWFrZSB0aGUgdmlldyBq
dW1wLgorICAgIGNvbnN0cmFpbmVkT3JpZ2luID0gU2Nyb2xsYWJsZUFyZWE6OmNvbnN0cmFpblNj
cm9sbFBvc2l0aW9uRm9yT3Zlcmhhbmcocm91bmRlZEludFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0
KSwKKyAgICAgICAgc2NhbGVkVG90YWxDb250ZW50c1NpemUsIHJvdW5kZWRJbnRQb2ludChjb25z
dHJhaW5lZE9yaWdpbiksIGZyYW1lVmlldy5zY3JvbGxPcmlnaW4oKSwKKyAgICAgICAgZnJhbWVW
aWV3LmhlYWRlckhlaWdodCgpLCBmcmFtZVZpZXcuZm9vdGVySGVpZ2h0KCkpOworICAgIGNvbnN0
cmFpbmVkT3JpZ2luLm1vdmVCeSgtdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCkpOworICAg
IGNvbnN0cmFpbmVkT3JpZ2luID0gLWNvbnN0cmFpbmVkT3JpZ2luOworCisgICAgcmV0dXJuIGNv
bnN0cmFpbmVkT3JpZ2luOworfQorCitDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIExheWVyVHJl
ZUhvc3Q6OmxheWVyRm9yVHJhbnNpZW50Wm9vbSgpIGNvbnN0Cit7CisgICAgUmVuZGVyTGF5ZXJC
YWNraW5nKiByZW5kZXJWaWV3QmFja2luZyA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnJl
bmRlclZpZXcoKS0+bGF5ZXIoKS0+YmFja2luZygpOworCisgICAgaWYgKEdyYXBoaWNzTGF5ZXIq
IGNvbnRlbnRzQ29udGFpbm1lbnRMYXllciA9IHJlbmRlclZpZXdCYWNraW5nLT5jb250ZW50c0Nv
bnRhaW5tZW50TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuICZkb3duY2FzdDxDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI+KCpjb250ZW50c0NvbnRhaW5tZW50TGF5ZXIpOworCisgICAgcmV0dXJuICZk
b3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpyZW5kZXJWaWV3QmFja2luZy0+Z3Jh
cGhpY3NMYXllcigpKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpv
b21Ub0xheWVycyhkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIC8vIEZJ
WE1FOiBTY3JvbGxiYXJzIHNob3VsZCBzdGF5IGluLXBsYWNlIGFuZCBjaGFuZ2UgaGVpZ2h0IHdo
aWxlIHpvb21pbmcuCisgICAgRmxvYXRQb2ludCBjb25zdHJhaW5lZE9yaWdpbiA9IGNvbnN0cmFp
blRyYW5zaWVudFpvb21PcmlnaW4oc2NhbGUsIG9yaWdpbik7CisgICAgYXV0byogem9vbUxheWVy
ID0gbGF5ZXJGb3JUcmFuc2llbnRab29tKCk7CisKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0
cmFuc2Zvcm07CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShjb25zdHJhaW5lZE9yaWdpbi54KCks
IGNvbnN0cmFpbmVkT3JpZ2luLnkoKSk7CisgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKwor
ICAgIHpvb21MYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgem9vbUxheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgem9vbUxheWVyLT5zZXRQb3NpdGlv
bihGbG9hdFBvaW50KCkpOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVu
dFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBtX3RyYW5zaWVu
dFpvb20gPSB0cnVlOworICAgIG1fdHJhbnNpZW50Wm9vbVNjYWxlID0gc2NhbGU7CisgICAgbV90
cmFuc2llbnRab29tT3JpZ2luID0gb3JpZ2luOworCisgICAgYXBwbHlUcmFuc2llbnRab29tVG9M
YXllcnMobV90cmFuc2llbnRab29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7Cit9CisK
K3ZvaWQgTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmIChtX3RyYW5zaWVudFpvb21TY2FsZSA9PSBzY2Fs
ZSkgeworICAgICAgICAvLyBJZiB0aGUgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IHRoZSB0YXJnZXQg
c2NhbGUsIHNldFBhZ2VTY2FsZUZhY3RvcigpIHdpbGwgc2hvcnQtY2lyY3VpdAorICAgICAgICAv
LyBhbmQgbm90IGFwcGx5IHRoZSB0cmFuc2Zvcm0sIHNvIHdlIGNhbid0IGRlcGVuZCBvbiBpdCB0
byBkbyBzby4KKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZmluYWxUcmFuc2Zvcm07Cisg
ICAgICAgIGZpbmFsVHJhbnNmb3JtLnNjYWxlKHNjYWxlKTsKKworICAgICAgICBsYXllckZvclRy
YW5zaWVudFpvb20oKS0+c2V0VHJhbnNmb3JtKGZpbmFsVHJhbnNmb3JtKTsKKyAgICB9CisKKyAg
ICBtX3RyYW5zaWVudFpvb20gPSBmYWxzZTsKKyAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9IDE7
CisgICAgbV90cmFuc2llbnRab29tT3JpZ2luID0gRmxvYXRQb2ludCgpOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAppbmRleCBkYjY1Zjgx
MzI2N2QuLjQ5NDMzOTNhMmMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVI
b3N0LmgKQEAgLTM4LDYgKzM4LDkgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lmIFBMQVRG
T1JNKEdUSykKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oPgor
I2VuZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfVEVYVFVSRV9NQVBQRVIpCiAKQEAgLTk4
LDYgKzEwMSwxMCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCisjaWYgUExBVEZPUk0o
R1RLKQorICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQpOworICAgIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQpOworI2VuZGlmCiBwcml2YXRlOgogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKCk7CkBAIC0xMjAsNiArMTI3LDEyIEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0RGlzcGxheVJlZnJlc2hNb25pdG9yVXBkYXRlKCk7
CiAgICAgdm9pZCBoYW5kbGVEaXNwbGF5UmVmcmVzaE1vbml0b3JVcGRhdGUoYm9vbCk7CiAKKyNp
ZiBQTEFURk9STShHVEspCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjb25zdHJhaW5UcmFuc2ll
bnRab29tT3JpZ2luKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCkgY29uc3Q7CisgICAgV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllckZvclRyYW5zaWVudFpvb20oKSBj
b25zdDsKKyAgICB2b2lkIGFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKGRvdWJsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCk7CisjZW5kaWYKKwogICAgIGNsYXNzIENvbXBvc2l0b3JDbGllbnQgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkZWRDb21wb3NpdG9yOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRlZERp
c3BsYXlSZWZyZXNoTW9uaXRvcjo6Q2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENvbXBvc2l0b3JDbGllbnQpOwogICAgIHB1YmxpYzoKQEAgLTIwMCw2ICsyMTMsMTIgQEAg
cHJpdmF0ZToKICAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yIG1fY29vcmRpbmF0b3I7CiAjZW5k
aWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEIG1fZGlzcGxheUlEOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIGJvb2wgbV90cmFu
c2llbnRab29tIHsgZmFsc2UgfTsKKyAgICBkb3VibGUgbV90cmFuc2llbnRab29tU2NhbGUgeyAx
IH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21PcmlnaW47CisjZW5k
aWYKIH07CiAKICNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggYmRjM2RiZWU3ZTU4Li43
NDc3MWVjNDBjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaApAQCAtMTgyLDEwICsxODIsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b2xvclNwYWNlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikg
eyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKFdlYktpdDo6
Q2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0
aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICNlbmRpZgogCiAgICAgYm9vbCBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBhOGZmNGY1YTc5NDcuLjlkNWY2ZGNhNmUzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEubWVzc2FnZXMuaW4KQEAgLTM0LDEyICszNCwxNCBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJl
YSBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3
RXhwb3NlZFJlY3Qoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2Vk
UmVjdCkKIAotICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbikKLSAgICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0gICAgCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRp
b25EaWRTdGFydCh1aW50NjRfdCBsYXllcklELCBTdHJpbmcga2V5LCBNb25vdG9uaWNUaW1lIHN0
YXJ0VGltZSkKICAgICBBY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBsYXllcklE
LCBTdHJpbmcga2V5KQogICAgIAogICAgIEFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8
IFBMQVRGT1JNKEdUSykKKyAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCisgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUg
c2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQorI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuY3BwCmluZGV4IGNkZjUzZjc0NGYwYS4uODAzODk4MDIwMWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTQgQEAg
dm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlTWluaW11bUFuZE1heGlt
dW1WaWV3cG9ydFNjYWxlcyhkb3VibGUKICNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpCiB7CiAgICAgRmxv
YXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IG1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCktPnVu
b2JzY3VyZWRDb250ZW50UmVjdEluY2x1ZGluZ1Njcm9sbGJhcnMoKTsKICAgICBib29sIGZyYW1l
SGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlID0gbV93ZWJQYWdlLm1haW5XZWJGcmFtZSgpLmhh
bmRsZXNQYWdlU2NhbGVHZXN0dXJlKCk7CiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdl
c3R1cmUodmlzaWJsZUNvbnRlbnRSZWN0LCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSkpOwogfQotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6c2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJl
c2hvbGQodWludDY0X3Qgc2l6ZSkKIHsKICAgICBtX3JlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkID0gc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCBmN2Y5
OThhYWMwMTYuLjhjMjE2YjYwZjkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApA
QCAtNTYsMTAgKzU2LDkgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbik7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdm9pZCBjb2xs
ZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwotI2VuZGlmCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9u
R2VzdHVyZSgpOworCiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVz
aG9sZCh1aW50NjRfdCk7CiAgICAgdm9pZCBzZW5kRGlkSGl0UmVuZGVyVHJlZVNpemVUaHJlc2hv
bGRJZk5lZWRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5tZXNzYWdlcy5pbgppbmRleCBjMTMzNWZiMmE0YTUuLmRkMmNmNDUyZDFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluCkBAIC0yNSwxMSArMjUs
OSBAQCBtZXNzYWdlcyAtPiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yIE5vdFJlZkNvdW50
ZWQgewogICAgIENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSgpCi0jZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFNl
dFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBj
OWIzMDU5YTFhM2EuLmQ2NzZlNzAxNTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtODg5LDggKzg4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bGxhcHNlU2VsZWN0aW9uSW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgc2hvd0Vtb2ppUGlja2VyKFdlYkNvcmU6OkZyYW1lJik7CiAKLSAgICB2b2lkIGdldENlbnRl
ckZvclpvb21HZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZpZXdDb29y
ZGluYXRlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpJbnRQb2ludCYmKT4mJik7
Ci0KICAgICB2b2lkIHRoZW1lRGlkQ2hhbmdlKFN0cmluZyYmKTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCA1NjE4YTM0M2RlNGEuLjViZGUzZjhkYTkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MzAsOCArNDMw
LDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBD
b2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
Ci0KLSAgICBHZXRDZW50ZXJGb3Jab29tR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBjZW50ZXJJ
blZpZXdDb29yZGluYXRlcykgLT4gKFdlYkNvcmU6OkludFBvaW50IGNlbnRlcikgU3luY2hyb25v
dXMKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggZWRiOWQ0NDFiNTdm
Li5jY2NkOGNhMTkzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTE1OCwxNCArMTU4LDYgQEAgT3B0aW9uU2V0PFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3M+IFdlYlBhZ2U6OnBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZkFs
bEF2YWlsYWJsZVAKICAgICByZXR1cm4gUG9pbnRlckNoYXJhY3RlcmlzdGljczo6RmluZTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBJbnRQb2ludCYg
Y2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
SW50UG9pbnQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgSW50UG9pbnQgcmVzdWx0
ID0gbWFpbkZyYW1lVmlldygpLT5yb290Vmlld1RvQ29udGVudHMoY2VudGVySW5WaWV3Q29vcmRp
bmF0ZXMpOwotICAgIGRvdWJsZSBzY2FsZSA9IG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Ci0g
ICAgcmVzdWx0LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNjYWxlKTsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwotfQotCiB2b2lkIFdlYlBhZ2U6OmNvbGxhcHNlU2VsZWN0
aW9uSW5GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKIHsKICAgICBXZWJGcmFtZSogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKLS0gCjIuMzEu
MQoK
</data>
<flag name="review"
          id="453203"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="453204"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431429</attachid>
            <date>2021-06-15 06:09:54 -0700</date>
            <delta_ts>2021-06-15 06:34:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>48772</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA0Nzk2ZGIyNTk1YjQzMjRlMTZmNWUwYjgzNzNlMmUxZDNjMjQwMjU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCAxNSBKdW4gMjAyMSAxNzo0ODoyNCArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDEwNyArKysrKysrKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCAgIHwgIDM0ICsrKy0tLQogLi4uL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcCAgIHwgIDEyICsrCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuaCAgICAgfCAgIDUgKwogLi4uL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwICAgICAgIHwgIDc0ICsrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDQwICsrKysrLS0KIC4uLi9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW4gICAgICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0IC0KIC4uLi9ndGsvVmlld0dlc3R1cmVD
b250cm9sbGVyR3RrLmNwcCAgICAgICAgICB8ICAyOSArKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA2MiArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKwogLi4uL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgICAgIHwgIDEwICsrCiAuLi4vQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCAgICAgfCAxMDggKysrKysrKysrKysrKysrKyst
CiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmggICAgICAgfCAgMTkgKysr
CiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oICAgfCAgIDYgKy0K
IC4uLi9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgOCArLQog
Li4uL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgIHwgICA0ICstCiAu
Li4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggICAgfCAgIDUgKy0KIC4u
Li9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluICB8ICAgNCArLQogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCAgICAgfCAgIDggLS0KIDI1IGZpbGVz
IGNoYW5nZWQsIDQ3MiBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAxNGUyZjc5MzgxZGQuLjUyMGJmYzRiNzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTAgQEAK
KzIwMjEtMDYtMDggIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBTdXBwb3J0IHRyYW5zaWVudCB6b29tCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcwMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBwaW5jaCB6b29tIGZvciBBQyBt
b2RlLiBSZXVzZSB0aGUgc2FtZSBpbmZyYXN0cnVjdHVyZSBhcyB0aGUKKyAgICAgICAgbWFjT1Mg
aW1wbGVtZW50YXRpb24uIE1vdmUgdGhlIHNoYXJlZCBjb2RlIHRvIFZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKKyAgICAgICAgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgU2xpZ2h0bHkgYWRq
dXN0IHRoZSBzaGFyZWQgY29kZSB0byBzdXBwb3J0IGNoYW5naW5nIHRoZSBnZXN0dXJlIG9yaWdp
bgorICAgICAgICBkdXJpbmcgdGhlIGdlc3R1cmUgc2luY2Ugd2Ugc3VwcG9ydCBpdCBvbiBib3Ro
IHRvdWNoc2NyZWVuIGFuZCB0b3VjaHBhZC4KKworICAgICAgICBUaGVyZSdzIG5vdCBtdWNoIHdl
IGNhbiBkbyBmb3Igbm9uLUFDIG1vZGUgc28ganVzdCBrZWVwIHRoZSBjdXJyZW50CisgICAgICAg
IGJlaGF2aW9yIHRoZXJlLCB3cmFwcGluZyByZWFsLXRpbWUgem9vbSBpbnRvIHRyYW5zaWVudCB6
b29tIEFQSSBzbyB0aGF0CisgICAgICAgIGl0J3MgY29uZmluZWQgdG8gdGhlIHdlYiBwcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVpvb21FbmQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorCisgICAgICAgIFN1cHBvcnQgY2hhbmdpbmcg
b3JpZ2luIGR1cmluZyB0aGUgZ2VzdHVyZSwgY2FjaGUgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yCisg
ICAgICAgIHRvIGFjY29tbW9kYXRlIG5vbi1BQyBtb2RlIGRvaW5nIHJlYWwtdGltZSB6b29taW5n
IGluc3RlYWQgb2YgdHJhbnNpZW50CisgICAgICAgIHpvb21pbmcuCisKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJl
cGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjphcHBseU1hZ25pZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAg
ICBNb3ZlZCBmcm9tIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0TWFn
bmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5k
TWFnbmlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENlbnRlckZvclpvb21HZXN0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZXNp
c3RhbmNlRm9yRGVsdGEgY29uc3QpOgorCisgICAgICAgIE1ha2UgaXQgYSBzdGF0aWMgcHJpdmF0
ZSBtZXRob2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIGtl
ZXAgdXNpbmcgbWluTWFnbmlmaWNhdGlvbiBhbmQgbWF4TWFnbmlmaWNhdGlvbiBpbiBpdC4KKwor
ICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRp
b25HZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorCisgICAg
ICAgIFNldCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9yZSBjYWxsaW5nIHNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0OjpyZXNpc3RhbmNlRm9y
RGVsdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9u
R2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlm
aWNhdGlvbiBjb25zdCk6CisKKyAgICAgICAgTW92ZWQgdG8gVmlld0dlc3R1cmVDb250cm9sbGVy
LmNwcC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorCisgICAgICAgIFdlIG9u
bHkgbmVlZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIGZsYWcg
d2hlbiBub3QKKyAgICAgICAgem9vbWluZywgc28gYWRkIGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQu
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21w
b3NpdGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2ll
bnRab29tKToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQpOgorICAg
ICAgICBEb24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIHdoZW4gdHJh
bnNpZW50IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6
OmNvbnN0cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpvb20gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisKKyAgICAgICAgQnVpbGQg
Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpn
ZXRDZW50ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQuCisKIDIwMjEtMDYtMTUgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNu
YXBdIE5ldyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAgdG8gdGhlIGZpcnN0IHNjcm9sbCBw
b3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAppbmRleCAzYTNmM2UyNWRkYzAuLmU5Y2Y3MTM1MmJhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKQEAgLTMyOSw4ICszMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZSB7CiAjZW5kaWYKIAogICAgIC8vIFRvdWNoIGdlc3R1cmVzIHN0YXRlCi0gICAgZG91YmxlIGlu
aXRpYWxab29tU2NhbGU7Ci0gICAgSW50UG9pbnQgaW5pdGlhbFpvb21Qb2ludDsKICAgICBGbG9h
dFBvaW50IGRyYWdPZmZzZXQ7CiAgICAgYm9vbCBpc0xvbmdQcmVzc2VkOwogICAgIGJvb2wgaXNC
ZWluZ0RyYWdnZWQ7CkBAIC0xODQ5LDE3ICsxODQ3LDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QmFzZUZvY3VzKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEaXJlY3Rpb25UeXBlIGRp
cmVjCiAgICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFy
ZW50X2NsYXNzKS0+Zm9jdXMod2lkZ2V0LCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Us
IEdka0V2ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIGdkb3VibGUgc2NhbGUsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgcHJp
di0+aW5pdGlhbFpvb21TY2FsZSA9IHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAg
IGd0a19nZXN0dXJlX3NldF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1F
RCk7CisKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJW
aWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKICAgICBkb3VibGUgeCwgeTsKICAgICBndGtfZ2Vz
dHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkpOwotICAgIHByaXYt
PnBhZ2VQcm94eS0+Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoSW50UG9pbnQoeCwgeSksIHByaXYt
PmluaXRpYWxab29tUG9pbnQpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh4
LCB5KTsKKworICAgIGNvbnRyb2xsZXItPnNldE1hZ25pZmljYXRpb24oc2NhbGUsIG9yaWdpbik7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJl
KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tRW5kKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1cmUqIGdl
c3R1cmUpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jh
c2UtPnByaXY7CiAgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCkBAIC0xODY3LDE2ICsx
ODc0LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlCiAKICAgICBndGtfZ2VzdHVyZV9zZXRf
c3RhdGUoZ2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgYXV0byBw
YWdlU2NhbGUgPSBjbGFtcFRvPGRvdWJsZT4ocHJpdi0+aW5pdGlhbFpvb21TY2FsZSAqIHNjYWxl
LCAxLCAzKTsKLQotICAgIEZsb2F0UG9pbnQgc2NhbGVkWm9vbUNlbnRlcihwcml2LT5pbml0aWFs
Wm9vbVBvaW50KTsKLSAgICBzY2FsZWRab29tQ2VudGVyLnNjYWxlKHBhZ2VTY2FsZSk7Ci0KLSAg
ICBkb3VibGUgeCwgeTsKLSAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihn
ZXN0dXJlLCAmeCwgJnkpOwotICAgIEZsb2F0UG9pbnQgdmlld1BvaW50ID0gRmxvYXRQb2ludCh4
LCB5KTsKKyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJW
aWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250
cm9sbGVyKQorICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFn
ZShwYWdlU2NhbGUsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KHNjYWxlZFpv
b21DZW50ZXIgLSB2aWV3UG9pbnQpKSk7CisgICAgY29udHJvbGxlci0+ZW5kTWFnbmlmaWNhdGlv
bigpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoTG9uZ1ByZXNzKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHksIEd0a0dl
c3R1cmUqKQpAQCAtMjA1OSw4ICsyMDYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+dG91Y2hHZXN0dXJlR3Jv
dXAgPSBndGtfZ2VzdHVyZV96b29tX25ldyh2aWV3V2lkZ2V0KTsKICAgICBnX29iamVjdF9zZXRf
ZGF0YV9mdWxsKEdfT0JKRUNUKHZpZXdXaWRnZXQpLCAid2stdmlldy16b29tLWdlc3R1cmUiLCBw
cml2LT50b3VjaEdlc3R1cmVHcm91cCwgZ19vYmplY3RfdW5yZWYpOwogI2VuZGlmCi0gICAgZ19z
aWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJiZWdpbiIsIEdf
Q0FMTEJBQ0sod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pLCB2aWV3V2lkZ2V0LCBHX0NPTk5F
Q1RfU1dBUFBFRCk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0
dXJlR3JvdXAsICJzY2FsZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpv
b21DaGFuZ2VkKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiZW5kIiwgR19DQUxMQkFD
Syh3ZWJraXRXZWJWaWV3QmFzZVpvb21FbmQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBF
RCk7CiAKICNpZiBVU0UoR1RLNCkKICAgICBnZXN0dXJlID0gZ3RrX2dlc3R1cmVfbG9uZ19wcmVz
c19uZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggNWE1MWI5ZWMxZDY4Li4wMzhkOWVlMmY0MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC0xNTIsNiArMTUyLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCBpc0Jh
CiAjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9h
dFBvaW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0
VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBG
bG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29t
bWl0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisjZW5kaWYKKwogdm9pZCBEcmF3
aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdT
dG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJU
X0FSRyhiYWNraW5nU3RvcmVTdGF0ZUlELCBiYWNraW5nU3RvcmVTdGF0ZUlEIDw9IG1fY3VycmVu
dEJhY2tpbmdTdG9yZVN0YXRlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5n
QXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IGQ3Njk1MDg4ZTdjZi4uYjIzYTQ1
ZmY3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwogCisjaWYgUExB
VEZPUk0oR1RLKQorICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJp
ZGU7CisjZW5kaWYKKwogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB1cGRh
dGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2lu
Z1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExheWVyVHJlZUNvbnRleHQm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuY3BwCmluZGV4IGE3ZTZmMGQxOTAzMS4uMTY1NTkxZTQwMjdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTQz
LDYgKzQzLDcgQEAKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjZW5k
aWYKQEAgLTY0Niw2ICs2NDcsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVl
c3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdl
U2VuZGVyID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19j
YXN0PElQQzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVBy
b3h5KCkpIDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZp
Y2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwg
ZG91YmxlIHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdp
bihtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlm
aWNhdGlvbik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0
aW9uT3JpZ2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmln
aW4gLSBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFn
bmlmaWNhdGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAg
d2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1f
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9u
R2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9p
bnQgb3JpZ2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0
dXJlKCkpOworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsK
KyAgICBtX2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOwor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21h
cnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAg
bV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50
KG1fbWFnbmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJv
eHkuZHJhd2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmlj
YXRpb24pKTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdN
YWduaWZpY2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlm
aWNhdGlvbiwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWdu
aWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01h
Z25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5k
cmF3aW5nQXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpv
b20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmlj
YXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShN
QUMpCisgICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICNl
bmRpZgogCisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNW
YWxpZCA9IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZp
Y2F0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247
CisKKyAgICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4
IGU1MDNhZWZlOTliMi4uNDQzNDA2M2E2ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6
CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZp
Y2F0aW9uLAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmlj
YXRpb24sCiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1f
cGVuZGluZ1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9
CiAKICAgICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25z
dDsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9u
KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxh
dGZvcm1TY3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQg
cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZv
aWQgYXBwbHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRp
b25HZXN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2Vz
dHVyZVR5cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIHZvaWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2
ZW50LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50
LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdl
dEl0ZW0sIF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxs
ZWQpOwogICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9v
bCk7CiAgICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9S
TShHVEspCisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCk7CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQg
c2V0QWx0ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAg
LTI2MywxNSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9v
bCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0
IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9y
dE1pbmltdW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JN
YWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3Vu
ZHMsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBl
bmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUg
c2NhbGUpOwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0
YXJ0U3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAg
ICB2b2lkIHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0
aW9uLCBSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0yODMsNiArMjkxLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZVNuYXBzaG90Rm9yU2l6ZShWaWV3U25hcHNo
b3QmLCBXZWJDb3JlOjpGbG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJ
bnNldCk7CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNl
Rm9yRGVsdGEoZG91YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpIGNvbnN0Owor
CiAgICAgQ0FMYXllciogZGV0ZXJtaW5lU25hcHNob3RMYXllclBhcmVudCgpIGNvbnN0OwogICAg
IENBTGF5ZXIqIGRldGVybWluZUxheWVyQWRqYWNlbnRUb1NuYXBzaG90Rm9yUGFyZW50KFN3aXBl
RGlyZWN0aW9uLCBDQUxheWVyKiBzbmFwc2hvdExheWVyUGFyZW50KSBjb25zdDsKICAgICB2b2lk
IGFwcGx5RGVidWdnaW5nUHJvcGVydGllc1RvU3dpcGVWaWV3cygpOwpAQCAtMzU1LDIwICszNjUs
MjcgQEAgcHJpdmF0ZToKICAgICBQZW5kaW5nU3dpcGVUcmFja2VyIG1fcGVuZGluZ1N3aXBlVHJh
Y2tlcjsKIAogICAgIGJvb2wgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1ZXN0IHsgZmFsc2Ug
fTsKLSNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtX21hZ25pZmljYXRp
b247CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX21hZ25pZmljYXRpb25PcmlnaW47CiAKKyAg
ICBkb3VibGUgbV9pbml0aWFsTWFnbmlmaWNhdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50
IG1faW5pdGlhbE1hZ25pZmljYXRpb25PcmlnaW47CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1B
QykKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2Fs
ZWRUYXJnZXRSZWN0OwogICAgIGJvb2wgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFy
dE1hZ25pZmljYXRpb24geyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0
U21hcnRNYWduaWZpY2F0aW9uT3JpZ2luOworI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CiAgICAg
Ym9vbCBtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9m
cmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSB7IGZhbHNlIH07CisjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tTd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI+
IG1fc3dpcGVDYW5jZWxsYXRpb25UcmFja2VyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3
aXBlTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOwpA
QCAtNDY3LDYgKzQ4NCwxMSBAQCBwcml2YXRlOgogCiAgICAgU25hcHNob3RSZW1vdmFsVHJhY2tl
ciBtX3NuYXBzaG90UmVtb3ZhbFRyYWNrZXI7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1f
bG9hZENhbGxiYWNrOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgc3RhdGljIGNv
bnN0ZXhwciBkb3VibGUgbWluTWFnbmlmaWNhdGlvbiB7IDEgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZSBtYXhNYWduaWZpY2F0aW9uIHsgMyB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCA2YmM0ZjlkYWY5MTYuLmE4Y2Fh
NGRhZjU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsMTEgKzIyLDEyIEBACiAKIG1lc3Nh
Z2VzIC0+IFZpZXdHZXN0dXJlQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgRGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2Vi
Q29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01h
Z25pZmljYXRpb25HZXN0dXJlKQogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0
UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMs
IGJvb2wgZml0RW50aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUg
dmlld3BvcnRNYXhpbXVtU2NhbGUpCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIERpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6
OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZp
Y2F0aW9uR2VzdHVyZSkKKwogICAgIERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0ODVmNzRi
NGViZmEuLjNhYWE2NGQxYmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTg4NiwxMCArODg2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShzdGQ6Om9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShHVEspCi0gICAgdm9pZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50
JiBjZW50ZXIpOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHdpbmRv
d0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld0ZyYW1l
SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjZXNzaWJp
bGl0eVZpZXdDb29yZGluYXRlcyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUo
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1
cmVDb250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGE3ZjZmYzYzOWVmOC4uODA2YmJmZmVlMGM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9s
bGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVD
b250cm9sbGVyR3RrLmNwcApAQCAtNjYwLDQgKzY2MCwzMyBAQCBib29sIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6Y29tcGxldGVTaW11bGF0ZWRTd2lwZUluRGlyZWN0aW9uRm9yVGVzdGluZyhTd2lw
ZURpcgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
c2V0TWFnbmlmaWNhdGlvbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAg
IEFTU0VSVChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSB8fCBt
X2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7CisK
KyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpIHsK
KyAgICAgICAgcHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CisKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRpbmcgZm9yIHRoZSBEaWRD
b2xsZWN0R2VvbWV0cnkgY2FsbGJhY2suCisgICAgaWYgKCFtX3Zpc2libGVDb250ZW50UmVjdElz
VmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1
cmVUeXBlOjpNYWduaWZpY2F0aW9uKTsKKworICAgIGRvdWJsZSBhYnNvbHV0ZVNjYWxlID0gc2Nh
bGUgKiBtX2luaXRpYWxNYWduaWZpY2F0aW9uOworICAgIG1fbWFnbmlmaWNhdGlvbiA9IGNsYW1w
VG88ZG91YmxlPihhYnNvbHV0ZVNjYWxlLCBtaW5NYWduaWZpY2F0aW9uLCBtYXhNYWduaWZpY2F0
aW9uKTsKKworICAgIG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdpbjsKKworICAgIGFwcGx5
TWFnbmlmaWNhdGlvbigpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFn
bmlmaWNhdGlvbigpCit7CisgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwCmluZGV4IDVjMGVlZjI3NzZlOC4uMWE3ZmE2Yjc1ZWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtNzIs
MTEgKzcyLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpv
cHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogICAgIHdlYmtpdFdlYlZpZXdCYXNl
U2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBX
VEZNb3ZlKHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRDZW50ZXJGb3Jab29t
R2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMs
IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpCi17Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlKGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwg
TWVzc2FnZXM6OldlYlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlOjpSZXBseShjZW50ZXIp
KTsKLX0KLQogYm9vbCBXZWJQYWdlUHJveHk6Om1ha2VHTENvbnRleHRDdXJyZW50KCkKIHsKICAg
ICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VNYWtlR0xDb250ZXh0Q3VycmVudChXRUJLSVRfV0VC
X1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDAwYTNkMzA0YWE4
Zi4uOTM2NTBkOTVjZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTUwLDkgKzUwLDYgQEAKICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
TlNFdmVudFNQSS5oPgogCi1zdGF0aWMgY29uc3QgZG91YmxlIG1pbk1hZ25pZmljYXRpb24gPSAx
Owotc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9uID0gMzsKLQogc3RhdGljIGNv
bnN0IGRvdWJsZSBtaW5FbGFzdGljTWFnbmlmaWNhdGlvbiA9IDAuNzU7CiBzdGF0aWMgY29uc3Qg
ZG91YmxlIG1heEVsYXN0aWNNYWduaWZpY2F0aW9uID0gNDsKIApAQCAtOTEsNyArODgsNyBAQCB2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cGxhdGZvcm1UZWFyZG93bigpCiAgICAgICAgIHJl
bW92ZVN3aXBlU25hcHNob3QoKTsKIH0KIAotc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVs
dGEoZG91YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCitkb3VibGUgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpyZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRlbHRhU2NhbGUsIGRv
dWJsZSBjdXJyZW50U2NhbGUpIGNvbnN0CiB7CiAgICAgLy8gWm9vbSBvdXQgd2l0aCBzbGlnaHQg
YWNjZWxlcmF0aW9uLCB1bnRpbCB3ZSByZWFjaCBtaW5pbXVtIHNjYWxlLgogICAgIGlmIChkZWx0
YVNjYWxlIDwgMCAmJiBjdXJyZW50U2NhbGUgPiBtaW5NYWduaWZpY2F0aW9uKQpAQCAtMTEwLDIz
ICsxMDcsNiBAQCBzdGF0aWMgZG91YmxlIHJlc2lzdGFuY2VGb3JEZWx0YShkb3VibGUgZGVsdGFT
Y2FsZSwgZG91YmxlIGN1cnJlbnRTY2FsZSkKICAgICByZXR1cm4gcmVzaXN0YW5jZTsKIH0KIAot
RmxvYXRQb2ludCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25Pcmln
aW4oRmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSkKLXsKLSAgICBGbG9hdFBvaW50IHNj
YWxlZE1hZ25pZmljYXRpb25PcmlnaW4ob3JpZ2luKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9u
T3JpZ2luLm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKLSAgICBmbG9h
dCBtYWduaWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV93ZWJQYWdlUHJveHku
cGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4uc2NhbGUo
bWFnbmlmaWNhdGlvbk9yaWdpblNjYWxlKTsKLSAgICByZXR1cm4gc2NhbGVkTWFnbmlmaWNhdGlv
bk9yaWdpbjsKLX0KLQotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3Qs
IGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCi17Ci0gICAgd2lsbEJlZ2lu
R2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOwotICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0
SXNWYWxpZCA9IHRydWU7Ci0gICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9
IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6Z2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShOU0V2ZW50ICpl
dmVudCwgRmxvYXRQb2ludCBvcmlnaW4pCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTlNFdmVu
dFR5cGVNYWduaWZ5KQpAQCAtMTQ0LDkgKzEyNCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9h
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZp
cnN0IGZyYW1lIG9mIHRoZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBo
YXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQgYm91bmRzIHlldC4KLSAgICAgICAgbV9tYWduaWZpY2F0
aW9uID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1fd2ViUGFn
ZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxl
Y3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkpOwotICAgICAgICBtX2xhc3RNYWdu
aWZpY2F0aW9uR2VzdHVyZVdhc1NtYXJ0TWFnbmlmaWNhdGlvbiA9IGZhbHNlOworICAgICAgICBw
cmVwYXJlTWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKTsKIAogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTY1LDM1ICsxNDMsMTIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Omhh
bmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAg
IG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdpbjsKIAotICAgIGlmIChtX2ZyYW1lSGFuZGxl
c01hZ25pZmljYXRpb25HZXN0dXJlKQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2Uo
bV9tYWduaWZpY2F0aW9uLCByb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7Ci0gICAgZWxzZQotICAg
ICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1f
bWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4sIG1fbWFnbmlm
aWNhdGlvbikpOworICAgIGFwcGx5TWFnbmlmaWNhdGlvbigpOwogCiAgICAgaWYgKGV2ZW50LnBo
YXNlID09IE5TRXZlbnRQaGFzZUVuZGVkIHx8IGV2ZW50LnBoYXNlID09IE5TRXZlbnRQaGFzZUNh
bmNlbGxlZCkKICAgICAgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKIH0KIAotdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKLXsKLSAgICBp
ZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGRvdWJsZSBuZXdNYWduaWZpY2F0aW9uID0gc3RkOjpt
aW4oc3RkOjptYXgobV9tYWduaWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlm
aWNhdGlvbik7Ci0KLSAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkK
LSAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5k
ZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
aWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpKQotICAg
ICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlv
biwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01h
Z25pZmljYXRpb24pKTsKLSAgICB9Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZp
Y2F0aW9uR2VzdHVyZSgpOwotCi0gICAgZGlkRW5kR2VzdHVyZSgpOwotICAgIG1fdmlzaWJsZUNv
bnRlbnRSZWN0SXNWYWxpZCA9IGZhbHNlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6aGFuZGxlU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKIHsK
ICAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCkBA
IC0yNTUsNiArMjEwLDkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXQKICAgICBGbG9hdFBvaW50
IHRhcmdldE9yaWdpbih2aXNpYmxlQ29udGVudFJlY3QuY2VudGVyKCkpOwogICAgIHRhcmdldE9y
aWdpbi5tb3ZlQnkoLXRhcmdldFJlY3QuY2VudGVyKCkpOwogCisgICAgbV9pbml0aWFsTWFnbmlm
aWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1faW5pdGlh
bE1hZ25pZmljYXRpb25PcmlnaW4gPSBGbG9hdFBvaW50KCk7CisKICAgICBtX3dlYlBhZ2VQcm94
eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpLCBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQoKSwgbV93
ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3
aW5nQXJlYSgpLT5jb21taXRUcmFuc2llbnRab29tKHRhcmdldE1hZ25pZmljYXRpb24sIHRhcmdl
dE9yaWdpbik7CiAKQEAgLTY1NSwxNCArNjEzLDYgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OnJlc2V0KCkKICAgICByZXNldFN0YXRlKCk7CiB9CiAKLWRvdWJsZSBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6Om1hZ25pZmljYXRpb24oKSBjb25zdAotewotICAgIGlmIChtX2FjdGl2ZUdlc3R1
cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJu
IG1fbWFnbmlmaWNhdGlvbjsKLQotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVG
YWN0b3IoKTsKLX0KLQogYm9vbCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU2ltdWxhdGVk
U3dpcGVJbkRpcmVjdGlvbkZvclRlc3RpbmcoU3dpcGVEaXJlY3Rpb24pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDY4ZTM2OTE5ZmM3Zi4uNTE1M2E3OWYyZTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnNpemVEaWRD
aGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKG1f
cm9vdExheWVyLmdldCgpKTsKIH0KIAotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQorYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxh
Z3M+IGZsYWdzKQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hp
bmdMYXllckNoYW5nZXMsIHRydWUpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIGlmIChtX292
ZXJsYXlDb21wb3NpdGluZ0xheWVyKQogICAgICAgICBtX292ZXJsYXlDb21wb3NpdGluZ0xheWVy
LT5mbHVzaENvbXBvc2l0aW5nU3RhdGUoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9yb290TGF5
ZXItPnNpemUoKSkpOwogCi0gICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHsgRmlu
YWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlv
bnMgfSk7CisgICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKGZsYWdzKTsKIAogICAg
IGF1dG8mIGNvb3JkaW5hdGVkTGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI+KCptX3Jvb3RMYXllcik7CiAgICAgY29vcmRpbmF0ZWRMYXllci51cGRhdGVDb250ZW50QnVm
ZmVyc0luY2x1ZGluZ1N1YkxheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBjM2FhZTlkZjNiYzguLmVlZDMwZmVjODU3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5h
dG9yLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JjZUZyYW1lU3lu
YygpIHsgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOyB9CiAKLSAgICBib29sIGZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpOworICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKE9wdGlv
blNldDxXZWJDb3JlOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAgICAgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0K
IAogICAgIHZvaWQgc3luY0Rpc3BsYXlTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4
IGJjNmQ5MzdiZDYyYy4uNGEwODcyMzVlN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC00
ODMsNiArNDgzLDQ0IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaWRV
cGRhdGUoKQogICAgIGRpc3BsYXlUaW1lckZpcmVkKCk7CiB9CiAKKyNpZiBQTEFURk9STShHVEsp
Cit2b2lkIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmICghbV90cmFuc2ll
bnRab29tKSB7CisgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5tYWlu
RnJhbWVWaWV3KCk7CisgICAgICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QgPSBm
cmFtZVZpZXcudW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOworCisg
ICAgICAgIG1fdHJhbnNpZW50Wm9vbSA9IHRydWU7CisgICAgICAgIG1fdHJhbnNpZW50Wm9vbUlu
aXRpYWxPcmlnaW4gPSB1bm9ic2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24oKTsKKyAgICB9CisK
KyAgICBpZiAobV9sYXllclRyZWVIb3N0KSB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YWRq
dXN0VHJhbnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIFdlIGNhbid0IGRvIHRyYW5zaWVudCB6b29tIGZvciBub24tQUMgbW9kZSwgc28g
anVzdCB6b29tIGluIHBsYWNlIGluc3RlYWQuCisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRP
cmlnaW4ob3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRa
b29tSW5pdGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93
ZWJQYWdlLnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmln
aW4pKTsKK30KKwordm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRy
YW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAo
bV9sYXllclRyZWVIb3N0KQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRyYW5zaWVu
dFpvb20oc2NhbGUsIG9yaWdpbik7CisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4o
b3JpZ2luKTsKKyAgICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRab29tSW5p
dGlhbE9yaWdpbik7CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93ZWJQYWdl
LnZpZXdTY2FsZUZhY3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmlnaW4pKTsK
KworICAgIG1fdHJhbnNpZW50Wm9vbSA9IGZhbHNlOworfQorI2VuZGlmCisKIHZvaWQgRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUo
KQogewogICAgIEFTU0VSVCghbV9pc1dhaXRpbmdGb3JEaWRVcGRhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3
aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
LmgKaW5kZXggYjE5NTlkMDQwZTIxLi44NTY1NjgzYjc4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFD
b29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaApA
QCAtODQsNiArODQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0
YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRV
cGRhdGUoKSBvdmVycmlkZTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRy
YW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHNlbmRE
aWRVcGRhdGVCYWNraW5nU3RvcmVTdGF0ZSgpOwogCiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGVTb29uKCk7CkBAIC0xNTAsNiArMTU1LDExIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2ZvcmNlUmVwYWludEFmdGVyQmFja2luZ1N0b3JlU3RhdGVVcGRhdGUgeyBmYWxzZSB9
OwogCiAgICAgUnVuTG9vcDo6VGltZXI8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPiBt
X2Rpc3BsYXlUaW1lcjsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJhbnNpZW50
Wm9vbSB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21J
bml0aWFsT3JpZ2luOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQwN2Y0ZjNmYjFmYy4u
OTEyMjZkZDc2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5j
cHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CiAKKyNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlckxheWVyQmFja2luZy5oPgorCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNp
bmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgpAQCAtMTQ0
LDcgKzE0NiwyMiBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkK
ICAgICBpZiAobV9mb3JjZVJlcGFpbnRBc3luYy5jYWxsYmFjaykKICAgICAgICAgbV9jb29yZGlu
YXRvci5mb3JjZUZyYW1lU3luYygpOwogCi0gICAgYm9vbCBkaWRTeW5jID0gbV9jb29yZGluYXRv
ci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBPcHRpb25TZXQ8RmluYWxpemVSZW5k
ZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3M7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGlmICghbV90
cmFuc2llbnRab29tKQorICAgICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVG
bGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworI2Vsc2UKKyAgICBmbGFn
cy5hZGQoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5
ZXJQb3NpdGlvbnMpOworI2VuZGlmCisKKyAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9y
LmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhmbGFncyk7CisKKyNpZiBQTEFURk9STShHVEspCisg
ICAgLy8gSWYgd2UgaGF2ZSBhbiBhY3RpdmUgdHJhbnNpZW50IHpvb20sIHdlIHdhbnQgdGhlIHpv
b20gdG8gd2luIG92ZXIgYW55IGNoYW5nZXMKKyAgICAvLyB0aGF0IFdlYkNvcmUgbWFrZXMgdG8g
dGhlIHJlbGV2YW50IGxheWVycywgc28gcmUtYXBwbHkgb3VyIGNoYW5nZXMgYWZ0ZXIgZmx1c2hp
bmcuCisgICAgaWYgKG1fdHJhbnNpZW50Wm9vbSkKKyAgICAgICAgYXBwbHlUcmFuc2llbnRab29t
VG9MYXllcnMobV90cmFuc2llbnRab29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7Cisj
ZW5kaWYKIAogICAgIGlmIChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCAmJiBkaWRT
eW5jKSB7CiAgICAgICAgIG1fd2ViUGFnZS5kcmF3aW5nQXJlYSgpLT5sYXllckhvc3REaWRGbHVz
aExheWVycygpOwpAQCAtMTg1LDggKzIwMiwxOCBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNl
UmVwYWludCgpCiAgICAgLy8gV2UgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhl
cndpc2UgdGhlIGZvcmNlZCBwYWludCBtaWdodCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVz
aC4KICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIAotICAgIGlmICghbV9pc1dhaXRpbmdGb3JS
ZW5kZXJlcikKLSAgICAgICAgbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMo
KTsKKyAgICBpZiAoIW1faXNXYWl0aW5nRm9yUmVuZGVyZXIpIHsKKyAgICAgICAgT3B0aW9uU2V0
PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykK
KyAgICAgICAgaWYgKCFtX3RyYW5zaWVudFpvb20pCisgICAgICAgICAgICBmbGFncy5hZGQoRmlu
YWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlv
bnMpOworI2Vsc2UKKyAgICAgICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxh
Z3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbmRpZgorCisgICAgICAg
IG1fY29vcmRpbmF0b3IuZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGZsYWdzKTsKKyAgICB9CisK
ICAgICBtX2NvbXBvc2l0b3ItPmZvcmNlUmVwYWludCgpOwogfQogCkBAIC00MjYsNiArNDUzLDgx
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wgZm9yY2VSZXBhaW50
KQogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK0Zsb2F0UG9pbnQgTGF5ZXJUcmVlSG9z
dDo6Y29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQg
b3JpZ2luKSBjb25zdAoreworICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5t
YWluRnJhbWVWaWV3KCk7CisgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGZyYW1l
Vmlldy52aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CisKKyAgICBGbG9h
dFBvaW50IGNvbnN0cmFpbmVkT3JpZ2luID0gdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCk7
CisgICAgY29uc3RyYWluZWRPcmlnaW4ubW92ZUJ5KC1vcmlnaW4pOworCisgICAgSW50U2l6ZSBz
Y2FsZWRUb3RhbENvbnRlbnRzU2l6ZSA9IGZyYW1lVmlldy50b3RhbENvbnRlbnRzU2l6ZSgpOwor
ICAgIHNjYWxlZFRvdGFsQ29udGVudHNTaXplLnNjYWxlKHNjYWxlICogbV93ZWJQYWdlLnZpZXdT
Y2FsZUZhY3RvcigpIC8gbV93ZWJQYWdlLnRvdGFsU2NhbGVGYWN0b3IoKSk7CisKKyAgICAvLyBT
Y2FsaW5nIG1heSBoYXZlIGV4cG9zZWQgdGhlIG92ZXJoYW5nIGFyZWEsIHNvIHdlIG5lZWQgdG8g
Y29uc3RyYWluIHRoZSBmaW5hbAorICAgIC8vIGxheWVyIHBvc2l0aW9uIGV4YWN0bHkgbGlrZSBz
Y3JvbGxpbmcgd2lsbCBvbmNlIGl0J3MgY29tbWl0dGVkLCB0byBlbnN1cmUgdGhhdAorICAgIC8v
IHNjcm9sbGluZyBkb2Vzbid0IG1ha2UgdGhlIHZpZXcganVtcC4KKyAgICBjb25zdHJhaW5lZE9y
aWdpbiA9IFNjcm9sbGFibGVBcmVhOjpjb25zdHJhaW5TY3JvbGxQb3NpdGlvbkZvck92ZXJoYW5n
KHJvdW5kZWRJbnRSZWN0KHZpc2libGVDb250ZW50UmVjdCksCisgICAgICAgIHNjYWxlZFRvdGFs
Q29udGVudHNTaXplLCByb3VuZGVkSW50UG9pbnQoY29uc3RyYWluZWRPcmlnaW4pLCBmcmFtZVZp
ZXcuc2Nyb2xsT3JpZ2luKCksCisgICAgICAgIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSwgZnJh
bWVWaWV3LmZvb3RlckhlaWdodCgpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLXZp
c2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbiA9IC1j
b25zdHJhaW5lZE9yaWdpbjsKKworICAgIHJldHVybiBjb25zdHJhaW5lZE9yaWdpbjsKK30KKwor
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVu
dFpvb20oKSBjb25zdAoreworICAgIFJlbmRlckxheWVyQmFja2luZyogcmVuZGVyVmlld0JhY2tp
bmcgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmJh
Y2tpbmcoKTsKKworICAgIGlmIChHcmFwaGljc0xheWVyKiBjb250ZW50c0NvbnRhaW5tZW50TGF5
ZXIgPSByZW5kZXJWaWV3QmFja2luZy0+Y29udGVudHNDb250YWlubWVudExheWVyKCkpCisgICAg
ICAgIHJldHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqY29udGVudHND
b250YWlubWVudExheWVyKTsKKworICAgIHJldHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyPigqcmVuZGVyVmlld0JhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7Cit9CisKK3Zv
aWQgTGF5ZXJUcmVlSG9zdDo6YXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91YmxlIHNjYWxl
LCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogU2Nyb2xsYmFycyBzaG91bGQg
c3RheSBpbi1wbGFjZSBhbmQgY2hhbmdlIGhlaWdodCB3aGlsZSB6b29taW5nLgorICAgIEZsb2F0
UG9pbnQgY29uc3RyYWluZWRPcmlnaW4gPSBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKHNj
YWxlLCBvcmlnaW4pOworICAgIGF1dG8qIHpvb21MYXllciA9IGxheWVyRm9yVHJhbnNpZW50Wm9v
bSgpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUoY29uc3RyYWluZWRPcmlnaW4ueCgpLCBjb25zdHJhaW5lZE9yaWdpbi55KCkp
OworICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CisKKyAgICB6b29tTGF5ZXItPnNldFRyYW5z
Zm9ybSh0cmFuc2Zvcm0pOworICAgIHpvb21MYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dDNEKCkpOworICAgIHpvb21MYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKK30KKwor
dm9pZCBMYXllclRyZWVIb3N0OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxv
YXRQb2ludCBvcmlnaW4pCit7CisgICAgbV90cmFuc2llbnRab29tID0gdHJ1ZTsKKyAgICBtX3Ry
YW5zaWVudFpvb21TY2FsZSA9IHNjYWxlOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdpbiA9IG9y
aWdpbjsKKworICAgIGFwcGx5VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNj
YWxlLCBtX3RyYW5zaWVudFpvb21PcmlnaW4pOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmNv
bW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAg
ICBpZiAobV90cmFuc2llbnRab29tU2NhbGUgPT0gc2NhbGUpIHsKKyAgICAgICAgLy8gSWYgdGhl
IHBhZ2Ugc2NhbGUgaXMgYWxyZWFkeSB0aGUgdGFyZ2V0IHNjYWxlLCBzZXRQYWdlU2NhbGVGYWN0
b3IoKSB3aWxsIHNob3J0LWNpcmN1aXQKKyAgICAgICAgLy8gYW5kIG5vdCBhcHBseSB0aGUgdHJh
bnNmb3JtLCBzbyB3ZSBjYW4ndCBkZXBlbmQgb24gaXQgdG8gZG8gc28uCisgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGZpbmFsVHJhbnNmb3JtOworICAgICAgICBmaW5hbFRyYW5zZm9ybS5z
Y2FsZShzY2FsZSk7CisKKyAgICAgICAgbGF5ZXJGb3JUcmFuc2llbnRab29tKCktPnNldFRyYW5z
Zm9ybShmaW5hbFRyYW5zZm9ybSk7CisgICAgfQorCisgICAgbV90cmFuc2llbnRab29tID0gZmFs
c2U7CisgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSAxOworICAgIG1fdHJhbnNpZW50Wm9vbU9y
aWdpbiA9IEZsb2F0UG9pbnQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0LmgKaW5kZXggZGI2NWY4MTMyNjdkLi40OTQzMzkzYTJjMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC0zOCw2ICszOCw5IEBA
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KKyNlbmRpZgogCiAjaWYgVVNFKEdSQVBI
SUNTX0xBWUVSX1RFWFRVUkVfTUFQUEVSKQogCkBAIC05OCw2ICsxMDEsMTAgQEAgcHVibGljOgog
CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwbGF5SUQ7IH0KIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRy
YW5zaWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyAgICB2b2lkIGNvbW1p
dFRyYW5zaWVudFpvb20oZG91YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyNlbmRpZgogcHJp
dmF0ZToKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBsYXllckZsdXNo
VGltZXJGaXJlZCgpOwpAQCAtMTIwLDYgKzEyNywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVx
dWVzdERpc3BsYXlSZWZyZXNoTW9uaXRvclVwZGF0ZSgpOwogICAgIHZvaWQgaGFuZGxlRGlzcGxh
eVJlZnJlc2hNb25pdG9yVXBkYXRlKGJvb2wpOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQpIGNvbnN0OworICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciogbGF5ZXJGb3JUcmFuc2llbnRab29tKCkgY29uc3Q7CisgICAgdm9pZCBhcHBseVRy
YW5zaWVudFpvb21Ub0xheWVycyhkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2VuZGlm
CisKICAgICBjbGFzcyBDb21wb3NpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGVkQ29t
cG9zaXRvcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNs
aWVudCAgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdG9yQ2xpZW50KTsK
ICAgICBwdWJsaWM6CkBAIC0yMDAsNiArMjEzLDEyIEBAIHByaXZhdGU6CiAgICAgQ29tcG9zaXRp
bmdDb29yZGluYXRvciBtX2Nvb3JkaW5hdG9yOwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJhbnNpZW50Wm9vbSB7IGZhbHNlIH07Cisg
ICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlIHsgMSB9OworICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOworI2VuZGlmCiB9OwogCiAjaWYgIVVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCmluZGV4IGJkYzNkYmVlN2U1OC4uNzQ3NzFlYzQwY2NiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE4MiwxMCAr
MTgyLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9y
KGZsb2F0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsgfQogCisgICAgdmlydHVhbCB2b2lk
IGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JN
KEdUSykKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpD
YWxsYmFja0lEKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogICAgIGJvb2wg
bV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5k
ZXggYThmZjRmNWE3OTQ3Li45ZDVmNmRjYTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0zNCwx
MiArMzQsMTQgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAg
U2V0Q29sb3JTcGFjZShzdHJ1Y3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKLSAgICBBZGp1c3RUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0gICAg
Q29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3Jp
Z2luKQotICAgIAogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5
ZXJJRCwgU3RyaW5nIGtleSwgTW9ub3RvbmljVGltZSBzdGFydFRpbWUpCiAgICAgQWNjZWxlcmF0
ZWRBbmltYXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSkKICAgICAKICAg
ICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisgICAgQWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KQorICAgIENvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApp
bmRleCBjZGY1M2Y3NDRmMGEuLjgwMzg5ODAyMDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHAKQEAgLTI0NCwxNiArMjQ0LDE0IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6Y29tcHV0ZU1pbmltdW1BbmRNYXhpbXVtVmlld3BvcnRTY2FsZXMoZG91Ymxl
CiAjZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9y
TWFnbmlmaWNhdGlvbkdlc3R1cmUoKQogewogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3QgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3RJbmNs
dWRpbmdTY3JvbGxiYXJzKCk7CiAgICAgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2Vz
dHVyZSA9IG1fd2ViUGFnZS5tYWluV2ViRnJhbWUoKS5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgp
OwogICAgIG1fd2ViUGFnZS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRp
ZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVj
dCwgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KLSNlbmRpZgogCi0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OnNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiB7
CiAgICAgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IHNpemU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKaW5kZXggZjdmOTk4YWFjMDE2Li44YzIxNmI2MGY5MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTU2LDEwICs1Niw5IEBAIHByaXZh
dGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZv
clNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwog
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNh
dGlvbkdlc3R1cmUoKTsKLSNlbmRpZgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZv
aWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKwogICAgIHZvaWQg
c2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3QpOwogICAgIHZv
aWQgc2VuZERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkSWZOZWVkZWQoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzEz
MzVmYjJhNGE1Li5kZDJjZjQ1MmQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5tZXNzYWdlcy5pbgpAQCAtMjUsMTEgKzI1LDkgQEAgbWVzc2FnZXMgLT4gVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3RvciBOb3RSZWZDb3VudGVkIHsKICAgICBDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotI2VuZGlmCiAK
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNh
dGlvblRocmVzaG9sZCh1aW50NjRfdCBzaXplKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzliMzA1OWExYTNhLi5kNjc2ZTcwMTU2
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg4
OSw4ICs4ODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIHNob3dFbW9qaVBpY2tlcihXZWJD
b3JlOjpGcmFtZSYpOwogCi0gICAgdm9pZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6SW50UG9pbnQmJik+JiYpOwotCiAgICAgdm9pZCB0aGVtZURpZENo
YW5nZShTdHJpbmcmJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTYxOGEzNDNkZTRhLi41YmRl
M2Y4ZGE5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDMwLDggKzQzMCw2IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAKICNpZiBQTEFURk9STShHVEspCiAgICAgQ29sbGFwc2VTZWxlY3Rpb25JbkZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQotCi0gICAgR2V0Q2VudGVyRm9yWm9v
bUdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpIC0+IChX
ZWJDb3JlOjpJbnRQb2ludCBjZW50ZXIpIFN5bmNocm9ub3VzCiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYlBhZ2VHdGsuY3BwCmluZGV4IGVkYjlkNDQxYjU3Zi4uY2NjZDhjYTE5MzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3Bw
CkBAIC0xNTgsMTQgKzE1OCw2IEBAIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBX
ZWJQYWdlOjpwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQCiAgICAgcmV0dXJu
IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M6OkZpbmU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q2Vu
dGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkludFBvaW50JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQotewotICAgIEludFBvaW50IHJlc3VsdCA9IG1haW5GcmFtZVZpZXcoKS0+cm9v
dFZpZXdUb0NvbnRlbnRzKGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKTsKLSAgICBkb3VibGUgc2Nh
bGUgPSBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwotICAgIHJlc3VsdC5zY2FsZSgxIC8gc2Nh
bGUsIDEgLyBzY2FsZSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsK
LX0KLQogdm9pZCBXZWJQYWdlOjpjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7Ci0tIAoyLjMxLjEKCg==
</data>
<flag name="commit-queue"
          id="453215"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431431</attachid>
            <date>2021-06-15 06:24:10 -0700</date>
            <delta_ts>2021-06-15 10:21:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Patch.patch</filename>
            <type>text/plain</type>
            <size>48754</size>
            <attacher name="Alice Mikhaylenko">alicem</attacher>
            
              <data encoding="base64">RnJvbSA0Nzk2ZGIyNTk1YjQzMjRlMTZmNWUwYjgzNzNlMmUxZDNjMjQwMjU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgTWlraGF5bGVua28gPGFsZXhtQGdub21lLm9y
Zz4KRGF0ZTogVHVlLCAxNSBKdW4gMjAyMSAxNzo0ODoyNCArMDUwMApTdWJqZWN0OiBbUEFUQ0hd
IFBhdGNoCgotLS0KIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICB8IDEwNyArKysrKysrKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCAgIHwgIDM0ICsrKy0tLQogLi4uL0RyYXdpbmdBcmVhUHJveHlDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcCAgIHwgIDEyICsrCiAuLi4vRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3MuaCAgICAgfCAgIDUgKwogLi4uL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwICAgICAgIHwgIDc0ICsrKysrKysrKysrKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggIHwgIDQwICsrKysrLS0KIC4uLi9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIubWVzc2FnZXMuaW4gICAgICAgICB8ICAgMyArLQogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggICAgICAgIHwgICA0IC0KIC4uLi9ndGsvVmlld0dlc3R1cmVD
b250cm9sbGVyR3RrLmNwcCAgICAgICAgICB8ICAyOSArKysrKwogLi4uL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgIHwgICA1IC0KIC4uLi9VSVByb2Nlc3MvbWFjL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSB8ICA2MiArLS0tLS0tLS0tCiAuLi4vQ29tcG9zaXRp
bmdDb29yZGluYXRvci5jcHAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmggICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgICAgIHwgIDM4ICsrKysrKwogLi4uL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgICAgIHwgIDEwICsrCiAuLi4vQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCAgICAgfCAxMDggKysrKysrKysrKysrKysrKyst
CiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmggICAgICAgfCAgMTkgKysr
CiAuLi4vV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oICAgfCAgIDYgKy0K
IC4uLi9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgOCArLQog
Li4uL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgIHwgICA0ICstCiAu
Li4vV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggICAgfCAgIDUgKy0KIC4u
Li9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLm1lc3NhZ2VzLmluICB8ICAgNCArLQogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oICAgIHwgICAyIC0KIC4uLi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiAgICB8ICAgMiAtCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCAgICAgfCAgIDggLS0KIDI1IGZpbGVz
IGNoYW5nZWQsIDQ3MiBpbnNlcnRpb25zKCspLCAxMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAxNGUyZjc5MzgxZGQuLjUyMGJmYzRiNzBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTAgQEAK
KzIwMjEtMDYtMDggIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KKwor
ICAgICAgICBbR1RLXSBTdXBwb3J0IHRyYW5zaWVudCB6b29tCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcwMDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVlZCB1cCBwaW5jaCB6b29tIGZvciBBQyBt
b2RlLiBSZXVzZSB0aGUgc2FtZSBpbmZyYXN0cnVjdHVyZSBhcyB0aGUKKyAgICAgICAgbWFjT1Mg
aW1wbGVtZW50YXRpb24uIE1vdmUgdGhlIHNoYXJlZCBjb2RlIHRvIFZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKKyAgICAgICAgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgU2xpZ2h0bHkgYWRq
dXN0IHRoZSBzaGFyZWQgY29kZSB0byBzdXBwb3J0IGNoYW5naW5nIHRoZSBnZXN0dXJlIG9yaWdp
bgorICAgICAgICBkdXJpbmcgdGhlIGdlc3R1cmUgc2luY2Ugd2Ugc3VwcG9ydCBpdCBvbiBib3Ro
IHRvdWNoc2NyZWVuIGFuZCB0b3VjaHBhZC4KKworICAgICAgICBUaGVyZSdzIG5vdCBtdWNoIHdl
IGNhbiBkbyBmb3Igbm9uLUFDIG1vZGUgc28ganVzdCBrZWVwIHRoZSBjdXJyZW50CisgICAgICAg
IGJlaGF2aW9yIHRoZXJlLCB3cmFwcGluZyByZWFsLXRpbWUgem9vbSBpbnRvIHRyYW5zaWVudCB6
b29tIEFQSSBzbyB0aGF0CisgICAgICAgIGl0J3MgY29uZmluZWQgdG8gdGhlIHdlYiBwcm9jZXNz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgor
ICAgICAgICAod2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZVpvb21FbmQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVpvb21CZWdpbik6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpjb21taXRUcmFuc2llbnRab29t
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4pOgorCisgICAgICAgIFN1cHBvcnQgY2hhbmdpbmcg
b3JpZ2luIGR1cmluZyB0aGUgZ2VzdHVyZSwgY2FjaGUgdGhlIHBhZ2Ugc2NhbGUgZmFjdG9yCisg
ICAgICAgIHRvIGFjY29tbW9kYXRlIG5vbi1BQyBtb2RlIGRvaW5nIHJlYWwtdGltZSB6b29taW5n
IGluc3RlYWQgb2YgdHJhbnNpZW50CisgICAgICAgIHpvb21pbmcuCisKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0
aW9uR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cHJl
cGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVD
b250cm9sbGVyOjphcHBseU1hZ25pZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9uIGNvbnN0KToKKworICAgICAg
ICBNb3ZlZCBmcm9tIFZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0TWFn
bmlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5k
TWFnbmlmaWNhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENlbnRlckZvclpvb21HZXN0
dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZXNp
c3RhbmNlRm9yRGVsdGEpOgorCisgICAgICAgIE1ha2UgaXQgYSBzdGF0aWMgcHJpdmF0ZSBtZXRo
b2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uIHNvIHRoYXQgd2UgY2FuCisgICAgICAgIGtlZXAgdXNp
bmcgbWluTWFnbmlmaWNhdGlvbiBhbmQgbWF4TWFnbmlmaWNhdGlvbiBpbiBpdC4KKworICAgICAg
ICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0
dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENv
bGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorCisgICAgICAgIFNl
dCB0aGUgaW5pdGlhbCBzY2FsZSBhbmQgb3JpZ2luIGJlZm9yZSBjYWxsaW5nIHNjYWxlZE1hZ25p
ZmljYXRpb25PcmlnaW4oKS4KKworICAgICAgICAoV2ViS2l0OjpyZXNpc3RhbmNlRm9yRGVsdGEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNjYWxl
ZE1hZ25pZmljYXRpb25PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKToKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRNYWduaWZpY2F0aW9uR2VzdHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWFnbmlmaWNhdGlv
biBjb25zdCk6CisKKyAgICAgICAgTW92ZWQgdG8gVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3Jk
aW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMpOgorCisgICAgICAgIFdlIG9ubHkgbmVl
ZCB0byBzZXQgdGhlIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIGZsYWcgd2hlbiBu
b3QKKyAgICAgICAgem9vbWluZywgc28gYWRkIGEgcGFyYW1ldGVyIHRvIGRvIHRoYXQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjphZGp1c3RUcmFuc2llbnRab29t
KToKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpjb21t
aXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICBE
b24ndCBwYXNzIEFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zIHdoZW4gdHJhbnNpZW50
IHpvb20gaXMgYWN0aXZlLgorCisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNvbnN0
cmFpblRyYW5zaWVudFpvb21PcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpvb20gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVIb3N0OjphcHBseVRyYW5zaWVudFpvb21Ub0xheWVycyk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3Q6OmFkanVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRy
YXdpbmdBcmVhOjphZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQpOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNh
dGlvbkdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW46CisKKyAgICAgICAgQnVpbGQgQ29sbGVj
dEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUgZm9yIEdUSyBhcyB3ZWxsLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRDZW50
ZXJGb3Jab29tR2VzdHVyZSk6IERlbGV0ZWQuCisKIDIwMjEtMDYtMTUgIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIE5l
dyBzbmFwIGNvbnRhaW5lcnMgYWx3YXlzIHNuYXAgdG8gdGhlIGZpcnN0IHNjcm9sbCBwb3NpdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAppbmRleCAzYTNmM2UyNWRkYzAuLmU5Y2Y3MTM1MmJhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
QEAgLTMyOSw4ICszMjksNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAj
ZW5kaWYKIAogICAgIC8vIFRvdWNoIGdlc3R1cmVzIHN0YXRlCi0gICAgZG91YmxlIGluaXRpYWxa
b29tU2NhbGU7Ci0gICAgSW50UG9pbnQgaW5pdGlhbFpvb21Qb2ludDsKICAgICBGbG9hdFBvaW50
IGRyYWdPZmZzZXQ7CiAgICAgYm9vbCBpc0xvbmdQcmVzc2VkOwogICAgIGJvb2wgaXNCZWluZ0Ry
YWdnZWQ7CkBAIC0xODQ5LDE3ICsxODQ3LDI2IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJW
aWV3QmFzZUZvY3VzKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtEaXJlY3Rpb25UeXBlIGRpcmVjCiAg
ICAgcmV0dXJuIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2Ns
YXNzKS0+Zm9jdXMod2lkZ2V0LCBkaXJlY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVpvb21CZWdpbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2
ZW50U2VxdWVuY2UqIHNlcXVlbmNlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3RhdGljIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2Vab29tQ2hhbmdlZChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UsIGdkb3VibGUgc2NhbGUsIEd0a0dlc3R1cmUqIGdlc3R1cmUpCiB7CiAgICAgV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgcHJpdi0+aW5p
dGlhbFpvb21TY2FsZSA9IHByaXYtPnBhZ2VQcm94eS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAg
aWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCisgICAgICAgIHJldHVybjsKKworICAgIGd0a19n
ZXN0dXJlX3NldF9zdGF0ZShnZXN0dXJlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1FRCk7CisK
KyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFz
ZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250cm9sbGVy
KQorICAgICAgICByZXR1cm47CiAKICAgICBkb3VibGUgeCwgeTsKICAgICBndGtfZ2VzdHVyZV9n
ZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJlLCAmeCwgJnkpOwotICAgIHByaXYtPnBhZ2VQ
cm94eS0+Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoSW50UG9pbnQoeCwgeSksIHByaXYtPmluaXRp
YWxab29tUG9pbnQpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh4LCB5KTsK
KworICAgIGNvbnRyb2xsZXItPnNldE1hZ25pZmljYXRpb24oc2NhbGUsIG9yaWdpbik7CiB9CiAK
LXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlIHNjYWxlLCBHdGtHZXN0dXJlKiBnZXN0dXJlKQorc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2Vab29tRW5kKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSwgR2RrRXZlbnRTZXF1ZW5jZSogc2VxdWVuY2UsIEd0a0dlc3R1cmUqIGdlc3R1cmUp
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CiAgICAgaWYgKHByaXYtPnBhZ2VHcmFiYmVkVG91Y2gpCkBAIC0xODY3LDE2ICsxODc0LDEx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlWm9vbUNoYW5nZWQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBnZG91YmxlCiAKICAgICBndGtfZ2VzdHVyZV9zZXRfc3RhdGUo
Z2VzdHVyZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgYXV0byBwYWdlU2Nh
bGUgPSBjbGFtcFRvPGRvdWJsZT4ocHJpdi0+aW5pdGlhbFpvb21TY2FsZSAqIHNjYWxlLCAxLCAz
KTsKLQotICAgIEZsb2F0UG9pbnQgc2NhbGVkWm9vbUNlbnRlcihwcml2LT5pbml0aWFsWm9vbVBv
aW50KTsKLSAgICBzY2FsZWRab29tQ2VudGVyLnNjYWxlKHBhZ2VTY2FsZSk7Ci0KLSAgICBkb3Vi
bGUgeCwgeTsKLSAgICBndGtfZ2VzdHVyZV9nZXRfYm91bmRpbmdfYm94X2NlbnRlcihnZXN0dXJl
LCAmeCwgJnkpOwotICAgIEZsb2F0UG9pbnQgdmlld1BvaW50ID0gRmxvYXRQb2ludCh4LCB5KTsK
KyAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFz
ZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJWaWV3QmFzZSk7CisgICAgaWYgKCFjb250cm9sbGVy
KQorICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wYWdlUHJveHktPnNjYWxlUGFnZShwYWdl
U2NhbGUsIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KHNjYWxlZFpvb21DZW50
ZXIgLSB2aWV3UG9pbnQpKSk7CisgICAgY29udHJvbGxlci0+ZW5kTWFnbmlmaWNhdGlvbigpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoTG9uZ1ByZXNzKFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHksIEd0a0dlc3R1cmUq
KQpAQCAtMjA1OSw4ICsyMDYxLDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgcHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAgPSBn
dGtfZ2VzdHVyZV96b29tX25ldyh2aWV3V2lkZ2V0KTsKICAgICBnX29iamVjdF9zZXRfZGF0YV9m
dWxsKEdfT0JKRUNUKHZpZXdXaWRnZXQpLCAid2stdmlldy16b29tLWdlc3R1cmUiLCBwcml2LT50
b3VjaEdlc3R1cmVHcm91cCwgZ19vYmplY3RfdW5yZWYpOwogI2VuZGlmCi0gICAgZ19zaWduYWxf
Y29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3JvdXAsICJiZWdpbiIsIEdfQ0FMTEJB
Q0sod2Via2l0V2ViVmlld0Jhc2Vab29tQmVnaW4pLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dB
UFBFRCk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+dG91Y2hHZXN0dXJlR3Jv
dXAsICJzY2FsZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRXZWJWaWV3QmFzZVpvb21DaGFu
Z2VkKSwgdmlld1dpZGdldCwgR19DT05ORUNUX1NXQVBQRUQpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfb2JqZWN0KHByaXYtPnRvdWNoR2VzdHVyZUdyb3VwLCAiZW5kIiwgR19DQUxMQkFDSyh3ZWJr
aXRXZWJWaWV3QmFzZVpvb21FbmQpLCB2aWV3V2lkZ2V0LCBHX0NPTk5FQ1RfU1dBUFBFRCk7CiAK
ICNpZiBVU0UoR1RLNCkKICAgICBnZXN0dXJlID0gZ3RrX2dlc3R1cmVfbG9uZ19wcmVzc19uZXco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKaW5kZXggNWE1MWI5ZWMxZDY4Li4wMzhkOWVlMmY0MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC0xNTIsNiArMTUyLDE4IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M6OnNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCBpc0JhCiAjZW5k
aWYKIH0KIAorI2lmIFBMQVRGT1JNKEdUSykKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5h
dGVkR3JhcGhpY3M6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50
IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6QWRqdXN0VHJhbnNp
ZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3Jk
aW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBv
aW50IG9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6Q29tbWl0VHJh
bnNpZW50Wm9vbShzY2FsZSwgb3JpZ2luKSk7Cit9CisjZW5kaWYKKwogdm9pZCBEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0
YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7CiAgICAgQVNTRVJUX0FSRyhi
YWNraW5nU3RvcmVTdGF0ZUlELCBiYWNraW5nU3RvcmVTdGF0ZUlEIDw9IG1fY3VycmVudEJhY2tp
bmdTdG9yZVN0YXRlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVBy
b3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IGQ3Njk1MDg4ZTdjZi4uYjIzYTQ1ZmY3ZDMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oCkBAIC01Nyw2ICs1NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZv
ckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRC
YWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwogCisjaWYgUExBVEZPUk0o
R1RLKQorICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCB1cGRhdGUodWlu
dDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3Jl
U3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwCmluZGV4IGE3ZTZmMGQxOTAzMS4uMTY1NTkxZTQwMjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5j
bHVkZSAiVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAg
LTY0Niw2ICs2NDcsNzkgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlcXVlc3RSZW5k
ZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRvKiBtZXNzYWdlU2VuZGVy
ID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IHN0YXRpY19jYXN0PElQ
Qzo6TWVzc2FnZVNlbmRlcio+KG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVByb3h5KCkp
IDogJm1fd2ViUGFnZVByb3h5OwogICAgIG1lc3NhZ2VTZW5kZXItPnNlbmQoTWVzc2FnZXM6OlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkKHRocmVzaG9sZCkpOwogfQorCitGbG9hdFBvaW50IFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6c2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihGbG9hdFBvaW50IG9yaWdpbiwgZG91Ymxl
IHNjYWxlKQoreworICAgIEZsb2F0UG9pbnQgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX2lu
aXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2lu
Lm1vdmVCeShtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKKyAgICBmbG9hdCBtYWdu
aWZpY2F0aW9uT3JpZ2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV9pbml0aWFsTWFnbmlmaWNhdGlv
bik7CisgICAgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbi5zY2FsZShtYWduaWZpY2F0aW9uT3Jp
Z2luU2NhbGUpOworICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4ubW92ZShvcmlnaW4gLSBt
X2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luKTsKKyAgICByZXR1cm4gc2NhbGVkTWFnbmlmaWNh
dGlvbk9yaWdpbjsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3QsIGJvb2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpCit7CisgICAgd2lsbEJl
Z2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pOworICAgIG1fdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0OworICAgIG1fdmlzaWJsZUNvbnRlbnRS
ZWN0SXNWYWxpZCA9IHRydWU7CisgICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSA9IGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0dXJlOworfQorCit2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6cHJlcGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3Jp
Z2luKQoreworICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZh
Y3RvcigpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCkp
OworCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fbWFnbmlmaWNhdGlvbjsKKyAgICBt
X2luaXRpYWxNYWduaWZpY2F0aW9uT3JpZ2luID0gRmxvYXRQb2ludChvcmlnaW4pOworCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWdu
aWZpY2F0aW9uID0gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmFwcGx5TWFnbmlmaWNhdGlvbigpCit7CisgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUg
IT0gVmlld0dlc3R1cmVUeXBlOjpNYWduaWZpY2F0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQ
YWdlUHJveHkuc2NhbGVQYWdlKG1fbWFnbmlmaWNhdGlvbiwgcm91bmRlZEludFBvaW50KG1fbWFn
bmlmaWNhdGlvbk9yaWdpbikpOworICAgIGVsc2UKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuZHJh
d2luZ0FyZWEoKS0+YWRqdXN0VHJhbnNpZW50Wm9vbShtX21hZ25pZmljYXRpb24sIHNjYWxlZE1h
Z25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBtX21hZ25pZmljYXRpb24p
KTsKK30KKwordm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0
dXJlKCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6
Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBuZXdNYWduaWZp
Y2F0aW9uID0gY2xhbXBUbzxkb3VibGU+KG1fbWFnbmlmaWNhdGlvbiwgbWluTWFnbmlmaWNhdGlv
biwgbWF4TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0
aW9uR2VzdHVyZSkKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmlj
YXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25pZmljYXRpb25PcmlnaW4pKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5n
QXJlYSgpKQorICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmNvbW1pdFRyYW5zaWVudFpvb20obmV3
TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25P
cmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKKyAgICB9CisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgbV93ZWJQYWdlUHJveHkuZGlkRW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKICNlbmRpZgog
CisgICAgZGlkRW5kR2VzdHVyZSgpOworICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9
IGZhbHNlOworfQorCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9sbGVyOjptYWduaWZpY2F0aW9u
KCkgY29uc3QKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5
cGU6Ok1hZ25pZmljYXRpb24pCisgICAgICAgIHJldHVybiBtX21hZ25pZmljYXRpb247CisKKyAg
ICByZXR1cm4gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IGU1MDNh
ZWZlOTliMi4uNDQzNDA2M2E2ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA4LDggKzEwOCwxMCBAQCBwdWJsaWM6CiAKICAg
ICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlwZSB7CiAgICAgICAgIE5vbmUsCi0jaWYgUExBVEZP
Uk0oTUFDKQorI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBNYWduaWZpY2F0aW9u
LAorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTbWFydE1hZ25pZmljYXRpb24s
CiAjZW5kaWYKICAgICAgICAgU3dpcGUKQEAgLTEzMCwxNSArMTMyLDE3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNob3VsZElnbm9yZVBpbm5lZFN0YXRlKGJvb2wgaWdub3JlKSB7IG1fcGVuZGlu
Z1N3aXBlVHJhY2tlci5zZXRTaG91bGRJZ25vcmVQaW5uZWRTdGF0ZShpZ25vcmUpOyB9CiAKICAg
ICBib29sIGlzUGh5c2ljYWxseVN3aXBpbmdMZWZ0KFN3aXBlRGlyZWN0aW9uKSBjb25zdDsKLSNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtYWduaWZpY2F0aW9uKCkgY29u
c3Q7CiAKLSAgICB2b2lkIGhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoUGxhdGZvcm1T
Y3JvbGxFdmVudCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworICAgIHZvaWQgcHJlcGFy
ZU1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQpOworICAgIHZvaWQgYXBw
bHlNYWduaWZpY2F0aW9uKCk7CiAKICAgICBib29sIGhhc0FjdGl2ZU1hZ25pZmljYXRpb25HZXN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5
cGU6Ok1hZ25pZmljYXRpb247IH0KKyNlbmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZv
aWQgaGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChQbGF0Zm9ybVNjcm9sbEV2ZW50LCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAgICAgdm9pZCBoYW5kbGVTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAogICAgIHZvaWQgZ2Vz
dHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShQbGF0Zm9ybVNjcm9sbEV2ZW50LCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CkBAIC0xNTUsNiArMTU5LDkgQEAgcHVibGljOgogICAg
IHZvaWQgZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0s
IF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxsZWQpOwog
ICAgIHZvaWQgd2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9vbCk7CiAg
ICAgdm9pZCBzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCk7CisjZWxpZiBQTEFURk9STShHVEsp
CisgICAgdm9pZCBzZXRNYWduaWZpY2F0aW9uKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCk7
CisgICAgdm9pZCBlbmRNYWduaWZpY2F0aW9uKCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0QWx0
ZXJuYXRlQmFja0ZvcndhcmRMaXN0U291cmNlUGFnZShXZWJQYWdlUHJveHkqKTsKQEAgLTI2Mywx
NSArMjcwLDE2IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycy4KLSAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25H
ZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFt
ZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSk7CiAgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
LCBXZWJDb3JlOjpGbG9hdFJlY3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2li
bGVDb250ZW50Qm91bmRzLCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmlt
dW1TY2FsZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKKyNlbmRpZgorCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZp
Y2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJv
b2wgZnJhbWVIYW5kbGVzTWFnbmlmaWNhdGlvbkdlc3R1cmUpOwogCiAgICAgdm9pZCBlbmRNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2FsZWRNYWdu
aWZpY2F0aW9uT3JpZ2luKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBkb3VibGUgc2NhbGUp
OwotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHN0YXJ0U3dp
cGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uKTsKICAgICB2b2lk
IHRyYWNrU3dpcGVHZXN0dXJlKFBsYXRmb3JtU2Nyb2xsRXZlbnQsIFN3aXBlRGlyZWN0aW9uLCBS
ZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4pOwogCkBAIC0yODMsNiArMjkxLDggQEAgcHJp
dmF0ZToKICAgICBib29sIHNob3VsZFVzZVNuYXBzaG90Rm9yU2l6ZShWaWV3U25hcHNob3QmLCBX
ZWJDb3JlOjpGbG9hdFNpemUgc3dpcGVMYXllclNpemUsIGZsb2F0IHRvcENvbnRlbnRJbnNldCk7
CiAKICNpZiBQTEFURk9STShNQUMpCisgICAgc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVs
dGEoZG91YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpOworCiAgICAgQ0FMYXll
ciogZGV0ZXJtaW5lU25hcHNob3RMYXllclBhcmVudCgpIGNvbnN0OwogICAgIENBTGF5ZXIqIGRl
dGVybWluZUxheWVyQWRqYWNlbnRUb1NuYXBzaG90Rm9yUGFyZW50KFN3aXBlRGlyZWN0aW9uLCBD
QUxheWVyKiBzbmFwc2hvdExheWVyUGFyZW50KSBjb25zdDsKICAgICB2b2lkIGFwcGx5RGVidWdn
aW5nUHJvcGVydGllc1RvU3dpcGVWaWV3cygpOwpAQCAtMzU1LDIwICszNjUsMjcgQEAgcHJpdmF0
ZToKICAgICBQZW5kaW5nU3dpcGVUcmFja2VyIG1fcGVuZGluZ1N3aXBlVHJhY2tlcjsKIAogICAg
IGJvb2wgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1ZXN0IHsgZmFsc2UgfTsKLSNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKQogICAgIGRvdWJsZSBtX21hZ25pZmljYXRpb247CiAgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBtX21hZ25pZmljYXRpb25PcmlnaW47CiAKKyAgICBkb3VibGUgbV9p
bml0aWFsTWFnbmlmaWNhdGlvbjsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1faW5pdGlhbE1h
Z25pZmljYXRpb25PcmlnaW47CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbV9sYXN0U21hcnRNYWduaWZpY2F0aW9uVW5zY2FsZWRUYXJnZXRSZWN0
OwogICAgIGJvb2wgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRp
b24geyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U21hcnRNYWduaWZp
Y2F0aW9uT3JpZ2luOworI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CiAgICAgYm9vbCBtX3Zpc2li
bGVDb250ZW50UmVjdElzVmFsaWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9mcmFtZUhhbmRsZXNN
YWduaWZpY2F0aW9uR2VzdHVyZSB7IGZhbHNlIH07CisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1B
QykKICAgICBSZXRhaW5QdHI8V0tTd2lwZUNhbmNlbGxhdGlvblRyYWNrZXI+IG1fc3dpcGVDYW5j
ZWxsYXRpb25UcmFja2VyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3N3aXBlTGF5ZXI7CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc3dpcGVTbmFwc2hvdExheWVyOwpAQCAtNDY3LDYgKzQ4
NCwxMSBAQCBwcml2YXRlOgogCiAgICAgU25hcHNob3RSZW1vdmFsVHJhY2tlciBtX3NuYXBzaG90
UmVtb3ZhbFRyYWNrZXI7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fbG9hZENhbGxiYWNr
OworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgbWluTWFnbmlmaWNhdGlvbiB7IDEgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBt
YXhNYWduaWZpY2F0aW9uIHsgMyB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5tZXNzYWdlcy5pbgppbmRleCA2YmM0ZjlkYWY5MTYuLmE4Y2FhNGRhZjU5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5tZXNzYWdlcy5pbgpAQCAtMjIsMTEgKzIyLDEyIEBACiAKIG1lc3NhZ2VzIC0+IFZpZXdH
ZXN0dXJlQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRS
ZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBib29sIGZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25H
ZXN0dXJlKQogICAgIERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1
cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCByZW5kZXJS
ZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMsIGJvb2wgZml0RW50
aXJlUmVjdCwgZG91YmxlIHZpZXdwb3J0TWluaW11bVNjYWxlLCBkb3VibGUgdmlld3BvcnRNYXhp
bXVtU2NhbGUpCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIERpZENv
bGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudEJvdW5kcywgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVy
ZSkKKwogICAgIERpZEhpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkKCkKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0ODVmNzRiNGViZmEuLjNhYWE2
NGQxYmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTg4Niwx
MCArODg2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShzdGQ6Om9w
dGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEsp
Ci0gICAgdm9pZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpOwot
I2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFt
ZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29y
ZGluYXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYWNjZXNzaWJpbGl0eVZpZXdDb29y
ZGluYXRlcyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVy
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJHdGsuY3BwCmluZGV4IGE3ZjZmYzYzOWVmOC4uODA2YmJmZmVlMGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVmlld0dlc3R1cmVDb250cm9sbGVyR3Rr
LmNwcApAQCAtNjYwLDQgKzY2MCwzMyBAQCBib29sIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29t
cGxldGVTaW11bGF0ZWRTd2lwZUluRGlyZWN0aW9uRm9yVGVzdGluZyhTd2lwZURpcgogICAgIHJl
dHVybiB0cnVlOwogfQogCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0TWFnbmlmaWNh
dGlvbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIEFTU0VSVChtX2Fj
dGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSB8fCBtX2FjdGl2ZUdlc3R1
cmVUeXBlID09IFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbik7CisKKyAgICBpZiAobV9h
Y3RpdmVHZXN0dXJlVHlwZSA9PSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpIHsKKyAgICAgICAgcHJl
cGFyZU1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbik7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRpbmcgZm9yIHRoZSBEaWRDb2xsZWN0R2VvbWV0
cnkgY2FsbGJhY2suCisgICAgaWYgKCFtX3Zpc2libGVDb250ZW50UmVjdElzVmFsaWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlOjpNYWdu
aWZpY2F0aW9uKTsKKworICAgIGRvdWJsZSBhYnNvbHV0ZVNjYWxlID0gc2NhbGUgKiBtX2luaXRp
YWxNYWduaWZpY2F0aW9uOworICAgIG1fbWFnbmlmaWNhdGlvbiA9IGNsYW1wVG88ZG91YmxlPihh
YnNvbHV0ZVNjYWxlLCBtaW5NYWduaWZpY2F0aW9uLCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAg
IG1fbWFnbmlmaWNhdGlvbk9yaWdpbiA9IG9yaWdpbjsKKworICAgIGFwcGx5TWFnbmlmaWNhdGlv
bigpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kTWFnbmlmaWNhdGlvbigp
Cit7CisgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwCmluZGV4IDVjMGVlZjI3NzZlOC4uMWE3ZmE2Yjc1ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtNzIsMTEgKzcyLDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoc3RkOjpvcHRpb25hbDxJbnB1
dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRo
b2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0YXRl
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6Oklu
dFBvaW50JiBjZW50ZXIpCi17Ci0gICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENl
bnRlckZvclpvb21HZXN0dXJlKGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldENlbnRlckZvclpvb21HZXN0dXJlOjpSZXBseShjZW50ZXIpKTsKLX0KLQogYm9v
bCBXZWJQYWdlUHJveHk6Om1ha2VHTENvbnRleHRDdXJyZW50KCkKIHsKICAgICByZXR1cm4gd2Vi
a2l0V2ViVmlld0Jhc2VNYWtlR0xDb250ZXh0Q3VycmVudChXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2
aWV3V2lkZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDAwYTNkMzA0YWE4Zi4uOTM2NTBkOTVj
ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTUwLDkgKzUwLDYgQEAKICNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNFdmVudFNQSS5o
PgogCi1zdGF0aWMgY29uc3QgZG91YmxlIG1pbk1hZ25pZmljYXRpb24gPSAxOwotc3RhdGljIGNv
bnN0IGRvdWJsZSBtYXhNYWduaWZpY2F0aW9uID0gMzsKLQogc3RhdGljIGNvbnN0IGRvdWJsZSBt
aW5FbGFzdGljTWFnbmlmaWNhdGlvbiA9IDAuNzU7CiBzdGF0aWMgY29uc3QgZG91YmxlIG1heEVs
YXN0aWNNYWduaWZpY2F0aW9uID0gNDsKIApAQCAtOTEsNyArODgsNyBAQCB2b2lkIFZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6cGxhdGZvcm1UZWFyZG93bigpCiAgICAgICAgIHJlbW92ZVN3aXBlU25h
cHNob3QoKTsKIH0KIAotc3RhdGljIGRvdWJsZSByZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRl
bHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50U2NhbGUpCitkb3VibGUgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpyZXNpc3RhbmNlRm9yRGVsdGEoZG91YmxlIGRlbHRhU2NhbGUsIGRvdWJsZSBjdXJyZW50
U2NhbGUpCiB7CiAgICAgLy8gWm9vbSBvdXQgd2l0aCBzbGlnaHQgYWNjZWxlcmF0aW9uLCB1bnRp
bCB3ZSByZWFjaCBtaW5pbXVtIHNjYWxlLgogICAgIGlmIChkZWx0YVNjYWxlIDwgMCAmJiBjdXJy
ZW50U2NhbGUgPiBtaW5NYWduaWZpY2F0aW9uKQpAQCAtMTEwLDIzICsxMDcsNiBAQCBzdGF0aWMg
ZG91YmxlIHJlc2lzdGFuY2VGb3JEZWx0YShkb3VibGUgZGVsdGFTY2FsZSwgZG91YmxlIGN1cnJl
bnRTY2FsZSkKICAgICByZXR1cm4gcmVzaXN0YW5jZTsKIH0KIAotRmxvYXRQb2ludCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OnNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4oRmxvYXRQb2ludCBvcmln
aW4sIGRvdWJsZSBzY2FsZSkKLXsKLSAgICBGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25P
cmlnaW4ob3JpZ2luKTsKLSAgICBzY2FsZWRNYWduaWZpY2F0aW9uT3JpZ2luLm1vdmVCeShtX3Zp
c2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpKTsKLSAgICBmbG9hdCBtYWduaWZpY2F0aW9uT3Jp
Z2luU2NhbGUgPSAxIC0gKHNjYWxlIC8gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCkp
OwotICAgIHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4uc2NhbGUobWFnbmlmaWNhdGlvbk9yaWdp
blNjYWxlKTsKLSAgICByZXR1cm4gc2NhbGVkTWFnbmlmaWNhdGlvbk9yaWdpbjsKLX0KLQotdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRp
b25HZXN0dXJlKEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QsIGJvb2wgZnJhbWVIYW5kbGVz
TWFnbmlmaWNhdGlvbkdlc3R1cmUpCi17Ci0gICAgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVy
ZVR5cGU6Ok1hZ25pZmljYXRpb24pOwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJs
ZUNvbnRlbnRSZWN0OwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9IHRydWU7Ci0g
ICAgbV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IGZyYW1lSGFuZGxlc01hZ25p
ZmljYXRpb25HZXN0dXJlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Z2VzdHVy
ZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShOU0V2ZW50ICpldmVudCwgRmxvYXRQb2ludCBv
cmlnaW4pCiB7CiAgICAgaWYgKGV2ZW50LnR5cGUgPT0gTlNFdmVudFR5cGVNYWduaWZ5KQpAQCAt
MTQ0LDkgKzEyNCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZp
Y2F0aW9uR2VzdHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgLy8gRklYTUU6IFdlIGRyb3AgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBn
ZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoZSB2aXNpYmxlIGNv
bnRlbnQgYm91bmRzIHlldC4KLSAgICAgICAgbV9tYWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJv
eHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25p
ZmljYXRpb25HZXN0dXJlKCkpOwotICAgICAgICBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVyZVdh
c1NtYXJ0TWFnbmlmaWNhdGlvbiA9IGZhbHNlOworICAgICAgICBwcmVwYXJlTWFnbmlmaWNhdGlv
bkdlc3R1cmUob3JpZ2luKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTY1LDM1ICsx
NDMsMTIgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25H
ZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAgIG1fbWFnbmlmaWNhdGlvbk9y
aWdpbiA9IG9yaWdpbjsKIAotICAgIGlmIChtX2ZyYW1lSGFuZGxlc01hZ25pZmljYXRpb25HZXN0
dXJlKQotICAgICAgICBtX3dlYlBhZ2VQcm94eS5zY2FsZVBhZ2UobV9tYWduaWZpY2F0aW9uLCBy
b3VuZGVkSW50UG9pbnQob3JpZ2luKSk7Ci0gICAgZWxzZQotICAgICAgICBtX3dlYlBhZ2VQcm94
eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFuc2llbnRab29tKG1fbWFnbmlmaWNhdGlvbiwgc2Nh
bGVkTWFnbmlmaWNhdGlvbk9yaWdpbihvcmlnaW4sIG1fbWFnbmlmaWNhdGlvbikpOworICAgIGFw
cGx5TWFnbmlmaWNhdGlvbigpOwogCiAgICAgaWYgKGV2ZW50LnBoYXNlID09IE5TRXZlbnRQaGFz
ZUVuZGVkIHx8IGV2ZW50LnBoYXNlID09IE5TRXZlbnRQaGFzZUNhbmNlbGxlZCkKICAgICAgICAg
ZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKIH0KIAotdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKLXsKLSAgICBpZiAobV9hY3RpdmVHZXN0dXJl
VHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok1hZ25pZmljYXRpb24pCi0gICAgICAgIHJldHVybjsK
LQotICAgIGRvdWJsZSBuZXdNYWduaWZpY2F0aW9uID0gc3RkOjptaW4oc3RkOjptYXgobV9tYWdu
aWZpY2F0aW9uLCBtaW5NYWduaWZpY2F0aW9uKSwgbWF4TWFnbmlmaWNhdGlvbik7Ci0KLSAgICBp
ZiAobV9mcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSkKLSAgICAgICAgbV93ZWJQYWdl
UHJveHkuc2NhbGVQYWdlKG5ld01hZ25pZmljYXRpb24sIHJvdW5kZWRJbnRQb2ludChtX21hZ25p
ZmljYXRpb25PcmlnaW4pKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGF1dG8gZHJhd2luZ0Fy
ZWEgPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpKQotICAgICAgICAgICAgZHJhd2luZ0Fy
ZWEtPmNvbW1pdFRyYW5zaWVudFpvb20obmV3TWFnbmlmaWNhdGlvbiwgc2NhbGVkTWFnbmlmaWNh
dGlvbk9yaWdpbihtX21hZ25pZmljYXRpb25PcmlnaW4sIG5ld01hZ25pZmljYXRpb24pKTsKLSAg
ICB9Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS5kaWRFbmRNYWduaWZpY2F0aW9uR2VzdHVyZSgpOwot
Ci0gICAgZGlkRW5kR2VzdHVyZSgpOwotICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0SXNWYWxpZCA9
IGZhbHNlOwotfQotCiB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKIHsKICAgICBpZiAobV9hY3RpdmVH
ZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCkBAIC0yNTUsNiArMjEwLDkgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUoRmxvYXQKICAgICBGbG9hdFBvaW50IHRhcmdldE9yaWdpbih2aXNp
YmxlQ29udGVudFJlY3QuY2VudGVyKCkpOwogICAgIHRhcmdldE9yaWdpbi5tb3ZlQnkoLXRhcmdl
dFJlY3QuY2VudGVyKCkpOwogCisgICAgbV9pbml0aWFsTWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFn
ZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOworICAgIG1faW5pdGlhbE1hZ25pZmljYXRpb25Pcmln
aW4gPSBGbG9hdFBvaW50KCk7CisKICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5h
ZGp1c3RUcmFuc2llbnRab29tKG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpLCBzY2Fs
ZWRNYWduaWZpY2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkucGFnZVNj
YWxlRmFjdG9yKCkpKTsKICAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5jb21taXRU
cmFuc2llbnRab29tKHRhcmdldE1hZ25pZmljYXRpb24sIHRhcmdldE9yaWdpbik7CiAKQEAgLTY1
NSwxNCArNjEzLDYgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnJlc2V0KCkKICAgICBy
ZXNldFN0YXRlKCk7CiB9CiAKLWRvdWJsZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1hZ25pZmlj
YXRpb24oKSBjb25zdAotewotICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlID09IFZpZXdHZXN0
dXJlVHlwZTo6TWFnbmlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIG1fbWFnbmlmaWNhdGlvbjsK
LQotICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKLX0KLQogYm9v
bCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU2ltdWxhdGVkU3dpcGVJbkRpcmVjdGlvbkZv
clRlc3RpbmcoU3dpcGVEaXJlY3Rpb24pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDY4ZTM2OTE5ZmM3Zi4uNTE1M2E3OWYyZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYgbmV3U2l6ZSkKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKG1fcm9vdExheWVyLmdldCgpKTsK
IH0KIAotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKQorYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzKQogewogICAg
IFNldEZvclNjb3BlPGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMsIHRy
dWUpOwogCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpm
bHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIGlmIChtX292ZXJsYXlDb21wb3NpdGluZ0xh
eWVyKQogICAgICAgICBtX292ZXJsYXlDb21wb3NpdGluZ0xheWVyLT5mbHVzaENvbXBvc2l0aW5n
U3RhdGUoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9yb290TGF5ZXItPnNpemUoKSkpOwogCi0g
ICAgbV9wYWdlLmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHsgRmluYWxpemVSZW5kZXJpbmdVcGRh
dGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMgfSk7CisgICAgbV9wYWdl
LmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKGZsYWdzKTsKIAogICAgIGF1dG8mIGNvb3JkaW5hdGVk
TGF5ZXIgPSBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCptX3Jvb3RMYXllcik7
CiAgICAgY29vcmRpbmF0ZWRMYXllci51cGRhdGVDb250ZW50QnVmZmVyc0luY2x1ZGluZ1N1Ykxh
eWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuaAppbmRleCBjM2FhZTlkZjNiYzguLmVlZDMwZmVjODU3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTgzLDcgKzgz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JjZUZyYW1lU3luYygpIHsgbV9zaG91bGRTeW5j
RnJhbWUgPSB0cnVlOyB9CiAKLSAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwor
ICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKE9wdGlvblNldDxXZWJDb3JlOjpGaW5h
bGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogICAgIHZvaWQgc3luY0Rp
c3BsYXlTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGJjNmQ5MzdiZDYyYy4uNGEw
ODcyMzVlN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC00ODMsNiArNDgzLDQ0IEBAIHZv
aWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpkaWRVcGRhdGUoKQogICAgIGRpc3Bs
YXlUaW1lckZpcmVkKCk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspCit2b2lkIERyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljczo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmICghbV90cmFuc2llbnRab29tKSB7CisgICAgICAg
IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7CisgICAg
ICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QgPSBmcmFtZVZpZXcudW5vYnNjdXJl
ZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpOworCisgICAgICAgIG1fdHJhbnNpZW50
Wm9vbSA9IHRydWU7CisgICAgICAgIG1fdHJhbnNpZW50Wm9vbUluaXRpYWxPcmlnaW4gPSB1bm9i
c2N1cmVkQ29udGVudFJlY3QubG9jYXRpb24oKTsKKyAgICB9CisKKyAgICBpZiAobV9sYXllclRy
ZWVIb3N0KSB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YWRqdXN0VHJhbnNpZW50Wm9vbShz
Y2FsZSwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIGNhbid0
IGRvIHRyYW5zaWVudCB6b29tIGZvciBub24tQUMgbW9kZSwgc28ganVzdCB6b29tIGluIHBsYWNl
IGluc3RlYWQuCisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4ob3JpZ2luKTsKKyAg
ICB1bnNjcm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRab29tSW5pdGlhbE9yaWdpbik7
CisKKyAgICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93ZWJQYWdlLnZpZXdTY2FsZUZh
Y3RvcigpLCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmlnaW4pKTsKK30KKwordm9pZCBE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmNvbW1pdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAobV9sYXllclRyZWVIb3N0KQor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdFRyYW5zaWVudFpvb20oc2NhbGUsIG9yaWdp
bik7CisKKyAgICBGbG9hdFBvaW50IHVuc2Nyb2xsZWRPcmlnaW4ob3JpZ2luKTsKKyAgICB1bnNj
cm9sbGVkT3JpZ2luLm1vdmVCeSgtbV90cmFuc2llbnRab29tSW5pdGlhbE9yaWdpbik7CisKKyAg
ICBtX3dlYlBhZ2Uuc2NhbGVQYWdlKHNjYWxlIC8gbV93ZWJQYWdlLnZpZXdTY2FsZUZhY3Rvcigp
LCByb3VuZGVkSW50UG9pbnQoLXVuc2Nyb2xsZWRPcmlnaW4pKTsKKworICAgIG1fdHJhbnNpZW50
Wm9vbSA9IGZhbHNlOworfQorI2VuZGlmCisKIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzOjpzZW5kRGlkVXBkYXRlQmFja2luZ1N0b3JlU3RhdGUoKQogewogICAgIEFTU0VSVCgh
bV9pc1dhaXRpbmdGb3JEaWRVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggYjE5NTlkMDQw
ZTIxLi44NTY1NjgzYjc4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaApAQCAtODQsNiArODQsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tp
bmdTdG9yZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRVcGRhdGUoKSBvdmVycmlkZTsK
IAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91Ymxl
IHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmln
aW4pIG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHNlbmREaWRVcGRhdGVCYWNraW5nU3Rv
cmVTdGF0ZSgpOwogCiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGVTb29u
KCk7CkBAIC0xNTAsNiArMTU1LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZvcmNlUmVwYWlu
dEFmdGVyQmFja2luZ1N0b3JlU3RhdGVVcGRhdGUgeyBmYWxzZSB9OwogCiAgICAgUnVuTG9vcDo6
VGltZXI8RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzPiBtX2Rpc3BsYXlUaW1lcjsKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBib29sIG1fdHJhbnNpZW50Wm9vbSB7IGZhbHNlIH07Cisg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21Jbml0aWFsT3JpZ2luOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDQwN2Y0ZjNmYjFmYy4uOTEyMjZkZDc2YjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM5LDYgKzM5LDgg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZU92ZXJsYXlDb250cm9sbGVyLmg+CiAKKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyQmFj
a2luZy5oPgorCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDx3dGYvZ2xpYi9S
dW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNlbmRpZgpAQCAtMTQ0LDcgKzE0NiwyMiBAQCB2b2lk
IExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKICAgICBpZiAobV9mb3JjZVJl
cGFpbnRBc3luYy5jYWxsYmFjaykKICAgICAgICAgbV9jb29yZGluYXRvci5mb3JjZUZyYW1lU3lu
YygpOwogCi0gICAgYm9vbCBkaWRTeW5jID0gbV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMoKTsKKyAgICBPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4g
ZmxhZ3M7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGlmICghbV90cmFuc2llbnRab29tKQorICAg
ICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxp
bmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworI2Vsc2UKKyAgICBmbGFncy5hZGQoRmluYWxpemVSZW5k
ZXJpbmdVcGRhdGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworI2Vu
ZGlmCisKKyAgICBib29sIGRpZFN5bmMgPSBtX2Nvb3JkaW5hdG9yLmZsdXNoUGVuZGluZ0xheWVy
Q2hhbmdlcyhmbGFncyk7CisKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gSWYgd2UgaGF2ZSBh
biBhY3RpdmUgdHJhbnNpZW50IHpvb20sIHdlIHdhbnQgdGhlIHpvb20gdG8gd2luIG92ZXIgYW55
IGNoYW5nZXMKKyAgICAvLyB0aGF0IFdlYkNvcmUgbWFrZXMgdG8gdGhlIHJlbGV2YW50IGxheWVy
cywgc28gcmUtYXBwbHkgb3VyIGNoYW5nZXMgYWZ0ZXIgZmx1c2hpbmcuCisgICAgaWYgKG1fdHJh
bnNpZW50Wm9vbSkKKyAgICAgICAgYXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMobV90cmFuc2ll
bnRab29tU2NhbGUsIG1fdHJhbnNpZW50Wm9vbU9yaWdpbik7CisjZW5kaWYKIAogICAgIGlmICht
X25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCAmJiBkaWRTeW5jKSB7CiAgICAgICAgIG1f
d2ViUGFnZS5kcmF3aW5nQXJlYSgpLT5sYXllckhvc3REaWRGbHVzaExheWVycygpOwpAQCAtMTg1
LDggKzIwMiwxOCBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludCgpCiAgICAgLy8g
V2UgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhlcndpc2UgdGhlIGZvcmNlZCBw
YWludCBtaWdodCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVzaC4KICAgICBzY2hlZHVsZUxh
eWVyRmx1c2goKTsKIAotICAgIGlmICghbV9pc1dhaXRpbmdGb3JSZW5kZXJlcikKLSAgICAgICAg
bV9jb29yZGluYXRvci5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBpZiAoIW1faXNX
YWl0aW5nRm9yUmVuZGVyZXIpIHsKKyAgICAgICAgT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5n
VXBkYXRlRmxhZ3M+IGZsYWdzOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICAgICAgaWYgKCFtX3Ry
YW5zaWVudFpvb20pCisgICAgICAgICAgICBmbGFncy5hZGQoRmluYWxpemVSZW5kZXJpbmdVcGRh
dGVGbGFnczo6QXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpOworI2Vsc2UKKyAgICAg
ICAgZmxhZ3MuYWRkKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5n
VHJlZUxheWVyUG9zaXRpb25zKTsKKyNlbmRpZgorCisgICAgICAgIG1fY29vcmRpbmF0b3IuZmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGZsYWdzKTsKKyAgICB9CisKICAgICBtX2NvbXBvc2l0b3It
PmZvcmNlUmVwYWludCgpOwogfQogCkBAIC00MjYsNiArNDUzLDgxIEBAIHZvaWQgTGF5ZXJUcmVl
SG9zdDo6cmVuZGVyTmV4dEZyYW1lKGJvb2wgZm9yY2VSZXBhaW50KQogICAgIH0KIH0KIAorI2lm
IFBMQVRGT1JNKEdUSykKK0Zsb2F0UG9pbnQgTGF5ZXJUcmVlSG9zdDo6Y29uc3RyYWluVHJhbnNp
ZW50Wm9vbU9yaWdpbihkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQgb3JpZ2luKSBjb25zdAorewor
ICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gKm1fd2ViUGFnZS5tYWluRnJhbWVWaWV3KCk7Cisg
ICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IGZyYW1lVmlldy52aXNpYmxlQ29udGVu
dFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7CisKKyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVk
T3JpZ2luID0gdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCk7CisgICAgY29uc3RyYWluZWRP
cmlnaW4ubW92ZUJ5KC1vcmlnaW4pOworCisgICAgSW50U2l6ZSBzY2FsZWRUb3RhbENvbnRlbnRz
U2l6ZSA9IGZyYW1lVmlldy50b3RhbENvbnRlbnRzU2l6ZSgpOworICAgIHNjYWxlZFRvdGFsQ29u
dGVudHNTaXplLnNjYWxlKHNjYWxlICogbV93ZWJQYWdlLnZpZXdTY2FsZUZhY3RvcigpIC8gbV93
ZWJQYWdlLnRvdGFsU2NhbGVGYWN0b3IoKSk7CisKKyAgICAvLyBTY2FsaW5nIG1heSBoYXZlIGV4
cG9zZWQgdGhlIG92ZXJoYW5nIGFyZWEsIHNvIHdlIG5lZWQgdG8gY29uc3RyYWluIHRoZSBmaW5h
bAorICAgIC8vIGxheWVyIHBvc2l0aW9uIGV4YWN0bHkgbGlrZSBzY3JvbGxpbmcgd2lsbCBvbmNl
IGl0J3MgY29tbWl0dGVkLCB0byBlbnN1cmUgdGhhdAorICAgIC8vIHNjcm9sbGluZyBkb2Vzbid0
IG1ha2UgdGhlIHZpZXcganVtcC4KKyAgICBjb25zdHJhaW5lZE9yaWdpbiA9IFNjcm9sbGFibGVB
cmVhOjpjb25zdHJhaW5TY3JvbGxQb3NpdGlvbkZvck92ZXJoYW5nKHJvdW5kZWRJbnRSZWN0KHZp
c2libGVDb250ZW50UmVjdCksCisgICAgICAgIHNjYWxlZFRvdGFsQ29udGVudHNTaXplLCByb3Vu
ZGVkSW50UG9pbnQoY29uc3RyYWluZWRPcmlnaW4pLCBmcmFtZVZpZXcuc2Nyb2xsT3JpZ2luKCks
CisgICAgICAgIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSwgZnJhbWVWaWV3LmZvb3RlckhlaWdo
dCgpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbi5tb3ZlQnkoLXZpc2libGVDb250ZW50UmVjdC5s
b2NhdGlvbigpKTsKKyAgICBjb25zdHJhaW5lZE9yaWdpbiA9IC1jb25zdHJhaW5lZE9yaWdpbjsK
KworICAgIHJldHVybiBjb25zdHJhaW5lZE9yaWdpbjsKK30KKworQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKiBMYXllclRyZWVIb3N0OjpsYXllckZvclRyYW5zaWVudFpvb20oKSBjb25zdAorewor
ICAgIFJlbmRlckxheWVyQmFja2luZyogcmVuZGVyVmlld0JhY2tpbmcgPSBtX3dlYlBhZ2UubWFp
bkZyYW1lVmlldygpLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmJhY2tpbmcoKTsKKworICAgIGlm
IChHcmFwaGljc0xheWVyKiBjb250ZW50c0NvbnRhaW5tZW50TGF5ZXIgPSByZW5kZXJWaWV3QmFj
a2luZy0+Y29udGVudHNDb250YWlubWVudExheWVyKCkpCisgICAgICAgIHJldHVybiAmZG93bmNh
c3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqY29udGVudHNDb250YWlubWVudExheWVyKTsK
KworICAgIHJldHVybiAmZG93bmNhc3Q8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPigqcmVuZGVy
Vmlld0JhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdDo6
YXBwbHlUcmFuc2llbnRab29tVG9MYXllcnMoZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdp
bikKK3sKKyAgICAvLyBGSVhNRTogU2Nyb2xsYmFycyBzaG91bGQgc3RheSBpbi1wbGFjZSBhbmQg
Y2hhbmdlIGhlaWdodCB3aGlsZSB6b29taW5nLgorICAgIEZsb2F0UG9pbnQgY29uc3RyYWluZWRP
cmlnaW4gPSBjb25zdHJhaW5UcmFuc2llbnRab29tT3JpZ2luKHNjYWxlLCBvcmlnaW4pOworICAg
IGF1dG8qIHpvb21MYXllciA9IGxheWVyRm9yVHJhbnNpZW50Wm9vbSgpOworCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoY29uc3Ry
YWluZWRPcmlnaW4ueCgpLCBjb25zdHJhaW5lZE9yaWdpbi55KCkpOworICAgIHRyYW5zZm9ybS5z
Y2FsZShzY2FsZSk7CisKKyAgICB6b29tTGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwor
ICAgIHpvb21MYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOworICAgIHpvb21M
YXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKK30KKwordm9pZCBMYXllclRyZWVIb3N0
OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludCBvcmlnaW4pCit7
CisgICAgbV90cmFuc2llbnRab29tID0gdHJ1ZTsKKyAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9
IHNjYWxlOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdpbiA9IG9yaWdpbjsKKworICAgIGFwcGx5
VHJhbnNpZW50Wm9vbVRvTGF5ZXJzKG1fdHJhbnNpZW50Wm9vbVNjYWxlLCBtX3RyYW5zaWVudFpv
b21PcmlnaW4pOworfQorCit2b2lkIExheWVyVHJlZUhvc3Q6OmNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50IG9yaWdpbikKK3sKKyAgICBpZiAobV90cmFuc2llbnRa
b29tU2NhbGUgPT0gc2NhbGUpIHsKKyAgICAgICAgLy8gSWYgdGhlIHBhZ2Ugc2NhbGUgaXMgYWxy
ZWFkeSB0aGUgdGFyZ2V0IHNjYWxlLCBzZXRQYWdlU2NhbGVGYWN0b3IoKSB3aWxsIHNob3J0LWNp
cmN1aXQKKyAgICAgICAgLy8gYW5kIG5vdCBhcHBseSB0aGUgdHJhbnNmb3JtLCBzbyB3ZSBjYW4n
dCBkZXBlbmQgb24gaXQgdG8gZG8gc28uCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZp
bmFsVHJhbnNmb3JtOworICAgICAgICBmaW5hbFRyYW5zZm9ybS5zY2FsZShzY2FsZSk7CisKKyAg
ICAgICAgbGF5ZXJGb3JUcmFuc2llbnRab29tKCktPnNldFRyYW5zZm9ybShmaW5hbFRyYW5zZm9y
bSk7CisgICAgfQorCisgICAgbV90cmFuc2llbnRab29tID0gZmFsc2U7CisgICAgbV90cmFuc2ll
bnRab29tU2NhbGUgPSAxOworICAgIG1fdHJhbnNpZW50Wm9vbU9yaWdpbiA9IEZsb2F0UG9pbnQo
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0
LmgKaW5kZXggZGI2NWY4MTMyNjdkLi40OTQzMzkzYTJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdC5oCkBAIC0zOCw2ICszOCw5IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KKyNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaD4KKyNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX0xBWUVSX1RFWFRVUkVf
TUFQUEVSKQogCkBAIC05OCw2ICsxMDEsMTAgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6UGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0K
IAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91Ymxl
LCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91
YmxlLCBXZWJDb3JlOjpGbG9hdFBvaW50KTsKKyNlbmRpZgogcHJpdmF0ZToKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZCgpOwpAQCAt
MTIwLDYgKzEyNywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdERpc3BsYXlSZWZyZXNo
TW9uaXRvclVwZGF0ZSgpOwogICAgIHZvaWQgaGFuZGxlRGlzcGxheVJlZnJlc2hNb25pdG9yVXBk
YXRlKGJvb2wpOwogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
Y29uc3RyYWluVHJhbnNpZW50Wm9vbU9yaWdpbihkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQp
IGNvbnN0OworICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXJGb3JU
cmFuc2llbnRab29tKCkgY29uc3Q7CisgICAgdm9pZCBhcHBseVRyYW5zaWVudFpvb21Ub0xheWVy
cyhkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpOworI2VuZGlmCisKICAgICBjbGFzcyBDb21w
b3NpdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGVkQ29tcG9zaXRvcjo6Q2xpZW50LCBw
dWJsaWMgVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1vbml0b3I6OkNsaWVudCAgewogICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDb21wb3NpdG9yQ2xpZW50KTsKICAgICBwdWJsaWM6CkBAIC0y
MDAsNiArMjEzLDEyIEBAIHByaXZhdGU6CiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRvciBtX2Nv
b3JkaW5hdG9yOwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBXZWJD
b3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsKKworI2lmIFBMQVRGT1JNKEdUSykK
KyAgICBib29sIG1fdHJhbnNpZW50Wm9vbSB7IGZhbHNlIH07CisgICAgZG91YmxlIG1fdHJhbnNp
ZW50Wm9vbVNjYWxlIHsgMSB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRa
b29tT3JpZ2luOworI2VuZGlmCiB9OwogCiAjaWYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4
IGJkYzNkYmVlN2U1OC4uNzQ3NzFlYzQwY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE4MiwxMCArMTgyLDEyIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZT4pIHsgfQogCisgICAgdmlydHVhbCB2b2lkIGFkZFRyYW5zYWN0aW9uQ2Fs
bGJhY2tJRChXZWJLaXQ6OkNhbGxiYWNrSUQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKICAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9p
bnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3Vi
bGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KLQotICAgIHZpcnR1YWwg
dm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV9oYXNSZW1vdmVkTWVzc2Fn
ZVJlY2VpdmVyIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggYThmZjRmNWE3OTQ3Li45
ZDVmNmRjYTZlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0zNCwxMiArMzQsMTQgQEAgbWVzc2Fn
ZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAgU2V0Q29sb3JTcGFjZShzdHJ1
Y3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCiAgICAgU2V0Vmlld0V4cG9zZWRSZWN0KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRS
ZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKLSAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0gICAgQ29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQotICAgIAogICAgIEFj
Y2VsZXJhdGVkQW5pbWF0aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSwg
TW9ub3RvbmljVGltZSBzdGFydFRpbWUpCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRFbmQo
dWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSkKICAgICAKICAgICBBZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShk
b3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQorICAgIENvbW1pdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKKyNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCBjZGY1M2Y3NDRmMGEu
LjgwMzg5ODAyMDFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKQEAgLTI0
NCwxNiArMjQ0LDE0IEBAIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29tcHV0
ZU1pbmltdW1BbmRNYXhpbXVtVmlld3BvcnRTY2FsZXMoZG91YmxlCiAjZW5kaWYKIH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1
cmUoKQogewogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBtX3dlYlBhZ2UubWFp
bkZyYW1lVmlldygpLT51bm9ic2N1cmVkQ29udGVudFJlY3RJbmNsdWRpbmdTY3JvbGxiYXJzKCk7
CiAgICAgYm9vbCBmcmFtZUhhbmRsZXNNYWduaWZpY2F0aW9uR2VzdHVyZSA9IG1fd2ViUGFnZS5t
YWluV2ViRnJhbWUoKS5oYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSgpOwogICAgIG1fd2ViUGFnZS5z
ZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OkRpZENvbGxlY3RHZW9tZXRyeUZv
ck1hZ25pZmljYXRpb25HZXN0dXJlKHZpc2libGVDb250ZW50UmVjdCwgZnJhbWVIYW5kbGVzTWFn
bmlmaWNhdGlvbkdlc3R1cmUpKTsKIH0KLSNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OnNldFJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uVGhyZXNob2xkKHVpbnQ2NF90IHNpemUpCiB7CiAgICAgbV9yZW5kZXJUcmVl
U2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCA9IHNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmgKaW5kZXggZjdmOTk4YWFjMDE2Li44YzIxNmI2MGY5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmgKQEAgLTU2LDEwICs1Niw5IEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycy4KICAgICB2b2lkIGNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKLSNl
bmRpZgogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5
Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKKwogICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemVO
b3RpZmljYXRpb25UaHJlc2hvbGQodWludDY0X3QpOwogICAgIHZvaWQgc2VuZERpZEhpdFJlbmRl
clRyZWVTaXplVGhyZXNob2xkSWZOZWVkZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KaW5kZXggYzEzMzVmYjJhNGE1Li5kZDJjZjQ1
MmQxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5p
bgpAQCAtMjUsMTEgKzI1LDkgQEAgbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3RvciBOb3RSZWZDb3VudGVkIHsKICAgICBDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShNQUMpCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ29sbGVjdEdlb21l
dHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKQotI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBTZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh1aW50
NjRfdCBzaXplKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYzliMzA1OWExYTNhLi5kNjc2ZTcwMTU2MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg4OSw4ICs4ODksNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHNob3dFbW9qaVBpY2tlcihXZWJDb3JlOjpGcmFtZSYpOwogCi0g
ICAgdm9pZCBnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2VudGVySW5WaWV3Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
SW50UG9pbnQmJik+JiYpOwotCiAgICAgdm9pZCB0aGVtZURpZENoYW5nZShTdHJpbmcmJik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggNTYxOGEzNDNkZTRhLi41YmRlM2Y4ZGE5MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtNDMwLDggKzQzMCw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51
bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgQ29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlEKQotCi0gICAgR2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoV2ViQ29yZTo6
SW50UG9pbnQgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpIC0+IChXZWJDb3JlOjpJbnRQb2ludCBj
ZW50ZXIpIFN5bmNocm9ub3VzCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmlu
ZGV4IGVkYjlkNDQxYjU3Zi4uY2NjZDhjYTE5MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC0xNTgsMTQgKzE1OCw2
IEBAIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBXZWJQYWdlOjpwb2ludGVyQ2hh
cmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQCiAgICAgcmV0dXJuIFBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3M6OkZpbmU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUo
Y29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OkludFBvaW50JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAg
IEludFBvaW50IHJlc3VsdCA9IG1haW5GcmFtZVZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKGNl
bnRlckluVmlld0Nvb3JkaW5hdGVzKTsKLSAgICBkb3VibGUgc2NhbGUgPSBtX3BhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpOwotICAgIHJlc3VsdC5zY2FsZSgxIC8gc2NhbGUsIDEgLyBzY2FsZSk7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKLX0KLQogdm9pZCBXZWJQYWdl
Ojpjb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiB7CiAg
ICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJh
bWVJRCk7Ci0tIAoyLjMxLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>