<?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>197944</bug_id>
          
          <creation_ts>2019-05-16 03:26:27 -0700</creation_ts>
          <short_desc>[GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor</short_desc>
          <delta_ts>2019-05-27 23:36:40 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1536760</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-16 03:26:27 -0700</bug_when>
    <thetext>The WPEBackend-fdo implementation is quite similar to our Wayland nested compositor, but more efficient (using linux dmabuf, resource caching, etc.). This allows us to share even more code with WPE port too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536764</commentid>
    <comment_count>1</comment_count>
      <attachid>370036</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-16 03:54:39 -0700</bug_when>
    <thetext>Created attachment 370036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536765</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-16 03:56:36 -0700</bug_when>
    <thetext>Attachment 370036 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536793</commentid>
    <comment_count>3</comment_count>
      <attachid>370036</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-16 07:18:27 -0700</bug_when>
    <thetext>Comment on attachment 370036
Patch

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

Cool.

No complaints about the code itself, but I think we need to discuss the preprocessor guards used here.

P.S. I&apos;ll keep an eye on the Fedora  packaging of libwpe. We&apos;ll need to discuss with Berto who will package libwpe for Debian.

&gt; Source/WebCore/PlatformGTK.cmake:43
&gt; +if (USE_WPE_RENDERER)
&gt; +    list(APPEND WebCore_INCLUDE_DIRECTORIES
&gt; +        &quot;${WEBCORE_DIR}/platform/graphics/libwpe&quot;
&gt; +    )
&gt; +endif ()

Hm, so this is like USE(LIBWPE), except more limited, we are only using the renderer component of libwpe?

I guess lots of things break if we turn on USE(LIBWPE)?

We need to think carefully about the guards we use here, because this has the potential to become a confusing mess. I don&apos;t think we should be using libwpe while having USE(LIBWPE) turned off. The whole point of USE(LIBWPE) was to allow using libwpe without being the WPE port. So we should use that. Except we can&apos;t, because that&apos;s too much libwpe for GTK. Am I correct?

We might need to introduce some WPE features concept, so PlayStation and GTK can both use separate bits of libwpe (USE_WPE_EVENTS, USE_WPE_RENDERER, USE_WPE_PASTEBOARD, USE_WPE_WHATEVER), while WPE port can use the whole thing. If we do that, then your USE_WPE_RENDERER option could live on, while USE_LIBWPE would either go away or could be set if any libwpe suboption is enabled.

&gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:45
&gt; -#if USE(LIBWPE)
&gt; +#if USE(WPE_RENDERER)

See, this needs further discussion with Don.

&gt; Source/WebKit/PlatformGTK.cmake:479
&gt; +if (USE_WPE_RENDERER)
&gt; +    list(APPEND WebKit_LIBRARIES
&gt; +        PRIVATE

Oops! (PRIVATE doesn&apos;t work here.)

&gt; Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:119
&gt; +        wpe_loader_init(&quot;libWPEBackend-fdo-1.0.so&quot;);

This looks frighteningly fragile. What happens when there&apos;s a soname bump? Does wpe_loader_init() crash (which would be OK), or is there a fallback (less good then a crash: users might not realize it&apos;s broken), or does everything just fail to work?

&gt; Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp:29
&gt; +#if PLATFORM(WAYLAND) &amp;&amp; USE(EGL) &amp;&amp; !USE(WPE_RENDERER)

How long will we keep WaylandCompositor around as a fallback path?

It&apos;s only needed for accelerated rendering, right? So we don&apos;t really need to keep it. We could fallback to software rendering if libwpe is unavailable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536822</commentid>
    <comment_count>4</comment_count>
      <attachid>370036</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2019-05-16 10:12:08 -0700</bug_when>
    <thetext>Comment on attachment 370036
Patch

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

If we want to split USE_LIBWPE that&apos;s fine. Just keep us in the loop and add whatever it is for the full USE(LIBWPE) into OptionsPlayStation.cmake.

&gt;&gt; Source/WebCore/PlatformGTK.cmake:43
&gt;&gt; +endif ()
&gt; 
&gt; Hm, so this is like USE(LIBWPE), except more limited, we are only using the renderer component of libwpe?
&gt; 
&gt; I guess lots of things break if we turn on USE(LIBWPE)?
&gt; 
&gt; We need to think carefully about the guards we use here, because this has the potential to become a confusing mess. I don&apos;t think we should be using libwpe while having USE(LIBWPE) turned off. The whole point of USE(LIBWPE) was to allow using libwpe without being the WPE port. So we should use that. Except we can&apos;t, because that&apos;s too much libwpe for GTK. Am I correct?
&gt; 
&gt; We might need to introduce some WPE features concept, so PlayStation and GTK can both use separate bits of libwpe (USE_WPE_EVENTS, USE_WPE_RENDERER, USE_WPE_PASTEBOARD, USE_WPE_WHATEVER), while WPE port can use the whole thing. If we do that, then your USE_WPE_RENDERER option could live on, while USE_LIBWPE would either go away or could be set if any libwpe suboption is enabled.

Original reason for the USE(LIBPWE) was PLATFORM(WPE) = USE(GLIB) + USE(LIBWPE) and PLATFORM(PLAYSTATION) = USE(LIBWPE). I&apos;m ok with coming up with a good way to split things but we&apos;d probably have to audit the code to see what is what. For the PlayStation port our plan is to use LIBWPE fully as an abstraction over our own APIs to get code sharing. A simple USE_WPE_RENDERER and USE_WPE_INPUT would probably be ok. I know there was a Windows WPE port at some point but the repo hasn&apos;t seen much in the way of commits. For that you might have to split things more. I&apos;d assume the Windows pasteboard code is what they&apos;d want to use for example.

&gt;&gt; Source/WebKit/PlatformGTK.cmake:479
&gt;&gt; +        PRIVATE
&gt; 
&gt; Oops! (PRIVATE doesn&apos;t work here.)

On the CMake side I&apos;ve been debating making all libraries PRIVATE to better support the Apple internal builds. That would let you build each directory separately. Could also do ${target}_PRIVATE_LIBRARIES.

&gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:191
&gt;      // FIXME: Enable this for WPE once it&apos;s possible to do these forced updates
&gt;      // in a way that doesn&apos;t starve out the underlying graphics buffers.
&gt; -#if PLATFORM(GTK)
&gt; +#if PLATFORM(GTK) &amp;&amp; !USE(WPE_RENDERER)

Can we address this FIXME? Fujii has a patch to turn on coordinated graphics on WinCairo and he modified this line as well.

If not wouldn&apos;t just !USE(WPE_RENDERER) be correct?

&gt; Source/WebKit/SourcesGTK.txt:422
&gt; +WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp @no-unify

We&apos;ve gotten non unified builds to work with WinCairo and Ross has been periodically doing that to make sure everything works. Perhaps that&apos;s something you all could spin up a bot for so we can figure out how to get rid of the @no-unify parts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537068</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-17 01:46:43 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; Comment on attachment 370036 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=370036&amp;action=review
&gt; 
&gt; Cool.
&gt; 
&gt; No complaints about the code itself, but I think we need to discuss the
&gt; preprocessor guards used here.
&gt; 
&gt; P.S. I&apos;ll keep an eye on the Fedora  packaging of libwpe. We&apos;ll need to
&gt; discuss with Berto who will package libwpe for Debian.
&gt; 
&gt; &gt; Source/WebCore/PlatformGTK.cmake:43
&gt; &gt; +if (USE_WPE_RENDERER)
&gt; &gt; +    list(APPEND WebCore_INCLUDE_DIRECTORIES
&gt; &gt; +        &quot;${WEBCORE_DIR}/platform/graphics/libwpe&quot;
&gt; &gt; +    )
&gt; &gt; +endif ()
&gt; 
&gt; Hm, so this is like USE(LIBWPE), except more limited, we are only using the
&gt; renderer component of libwpe?

Yes.

&gt; I guess lots of things break if we turn on USE(LIBWPE)?

Note that we use libwpe only for accelerated compositing implementation under wayland. We can&apos;t use libwpe in X11 or for non-ac mode. And in any case we really want to use GDK for everything else in all configurations.

&gt; We need to think carefully about the guards we use here, because this has
&gt; the potential to become a confusing mess. I don&apos;t think we should be using
&gt; libwpe while having USE(LIBWPE) turned off. The whole point of USE(LIBWPE)
&gt; was to allow using libwpe without being the WPE port. So we should use that.
&gt; Except we can&apos;t, because that&apos;s too much libwpe for GTK. Am I correct?

Right, we don&apos;t want to use the pasteboard or input apis from libwpe, we want GDK.

&gt; We might need to introduce some WPE features concept, so PlayStation and GTK
&gt; can both use separate bits of libwpe (USE_WPE_EVENTS, USE_WPE_RENDERER,
&gt; USE_WPE_PASTEBOARD, USE_WPE_WHATEVER), while WPE port can use the whole
&gt; thing. If we do that, then your USE_WPE_RENDERER option could live on, while
&gt; USE_LIBWPE would either go away or could be set if any libwpe suboption is
&gt; enabled.

I never liked USE(LIBWPE) to be honest (even less the classes named FooLibWPE), but I agree that PLATFORM(WPE) and USE(WPE) would be even more confusing. In any case, if we want to split USE(LIBWPE) I would do it in a previous patch to this, or in a follow up.

&gt; &gt; Source/WebCore/platform/graphics/PlatformDisplay.cpp:45
&gt; &gt; -#if USE(LIBWPE)
&gt; &gt; +#if USE(WPE_RENDERER)
&gt; 
&gt; See, this needs further discussion with Don.

What exactly?

&gt; &gt; Source/WebKit/PlatformGTK.cmake:479
&gt; &gt; +if (USE_WPE_RENDERER)
&gt; &gt; +    list(APPEND WebKit_LIBRARIES
&gt; &gt; +        PRIVATE
&gt; 
&gt; Oops! (PRIVATE doesn&apos;t work here.)

What doesn&apos;t work? What should I do then, just remove it?

&gt; &gt; Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp:119
&gt; &gt; +        wpe_loader_init(&quot;libWPEBackend-fdo-1.0.so&quot;);
&gt; 
&gt; This looks frighteningly fragile. What happens when there&apos;s a soname bump?
&gt; Does wpe_loader_init() crash (which would be OK), or is there a fallback
&gt; (less good then a crash: users might not realize it&apos;s broken), or does
&gt; everything just fail to work?

If there&apos;s a soname bump there will be two .so, so the old should exist. We depend on 1.0, so it should always exists. The same way we depend on gtk3.

&gt; &gt; Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp:29
&gt; &gt; +#if PLATFORM(WAYLAND) &amp;&amp; USE(EGL) &amp;&amp; !USE(WPE_RENDERER)
&gt; 
&gt; How long will we keep WaylandCompositor around as a fallback path?

At least until we have tested the new path enough and all distros are shipping libwpe. Hopefully we can remove it after branching for 2.26, but I guess we will keep it for one more cycle.

&gt; It&apos;s only needed for accelerated rendering, right? So we don&apos;t really need
&gt; to keep it. We could fallback to software rendering if libwpe is unavailable.

No, let&apos;s give people and distros time to switch to libwpe before removing a feature like accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537069</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-17 01:50:38 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #4)
&gt; Comment on attachment 370036 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=370036&amp;action=review
&gt; 
&gt; If we want to split USE_LIBWPE that&apos;s fine. Just keep us in the loop and add
&gt; whatever it is for the full USE(LIBWPE) into OptionsPlayStation.cmake.
&gt; 
&gt; &gt;&gt; Source/WebCore/PlatformGTK.cmake:43
&gt; &gt;&gt; +endif ()
&gt; &gt; 
&gt; &gt; Hm, so this is like USE(LIBWPE), except more limited, we are only using the renderer component of libwpe?
&gt; &gt; 
&gt; &gt; I guess lots of things break if we turn on USE(LIBWPE)?
&gt; &gt; 
&gt; &gt; We need to think carefully about the guards we use here, because this has the potential to become a confusing mess. I don&apos;t think we should be using libwpe while having USE(LIBWPE) turned off. The whole point of USE(LIBWPE) was to allow using libwpe without being the WPE port. So we should use that. Except we can&apos;t, because that&apos;s too much libwpe for GTK. Am I correct?
&gt; &gt; 
&gt; &gt; We might need to introduce some WPE features concept, so PlayStation and GTK can both use separate bits of libwpe (USE_WPE_EVENTS, USE_WPE_RENDERER, USE_WPE_PASTEBOARD, USE_WPE_WHATEVER), while WPE port can use the whole thing. If we do that, then your USE_WPE_RENDERER option could live on, while USE_LIBWPE would either go away or could be set if any libwpe suboption is enabled.
&gt; 
&gt; Original reason for the USE(LIBPWE) was PLATFORM(WPE) = USE(GLIB) +
&gt; USE(LIBWPE) and PLATFORM(PLAYSTATION) = USE(LIBWPE). I&apos;m ok with coming up
&gt; with a good way to split things but we&apos;d probably have to audit the code to
&gt; see what is what. For the PlayStation port our plan is to use LIBWPE fully
&gt; as an abstraction over our own APIs to get code sharing. A simple
&gt; USE_WPE_RENDERER and USE_WPE_INPUT would probably be ok. I know there was a
&gt; Windows WPE port at some point but the repo hasn&apos;t seen much in the way of
&gt; commits. For that you might have to split things more. I&apos;d assume the
&gt; Windows pasteboard code is what they&apos;d want to use for example.
&gt; 
&gt; &gt;&gt; Source/WebKit/PlatformGTK.cmake:479
&gt; &gt;&gt; +        PRIVATE
&gt; &gt; 
&gt; &gt; Oops! (PRIVATE doesn&apos;t work here.)
&gt; 
&gt; On the CMake side I&apos;ve been debating making all libraries PRIVATE to better
&gt; support the Apple internal builds. That would let you build each directory
&gt; separately. Could also do ${target}_PRIVATE_LIBRARIES.

I have no idea what that is for, so I&apos;ll do whatever yous guys tell me to do.

&gt; &gt; Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:191
&gt; &gt;      // FIXME: Enable this for WPE once it&apos;s possible to do these forced updates
&gt; &gt;      // in a way that doesn&apos;t starve out the underlying graphics buffers.
&gt; &gt; -#if PLATFORM(GTK)
&gt; &gt; +#if PLATFORM(GTK) &amp;&amp; !USE(WPE_RENDERER)
&gt; 
&gt; Can we address this FIXME? Fujii has a patch to turn on coordinated graphics
&gt; on WinCairo and he modified this line as well.

Yes, it&apos;s on top of my TODO when this patch lands, I have to see how many tests fail because of this. Unfortunately it&apos;s not easy to fix, because libwpe and fdo backend expect the frame cycle to be always the same and they contains asserts to ensure it.

&gt; If not wouldn&apos;t just !USE(WPE_RENDERER) be correct?

Yes.

&gt; &gt; Source/WebKit/SourcesGTK.txt:422
&gt; &gt; +WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp @no-unify
&gt; 
&gt; We&apos;ve gotten non unified builds to work with WinCairo and Ross has been
&gt; periodically doing that to make sure everything works. Perhaps that&apos;s
&gt; something you all could spin up a bot for so we can figure out how to get
&gt; rid of the @no-unify parts?

I don&apos;t remember why I added that, I&apos;ll check if it&apos;s still needed and why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537135</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-17 09:55:29 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; I never liked USE(LIBWPE) to be honest (even less the classes named
&gt; FooLibWPE), but I agree that PLATFORM(WPE) and USE(WPE) would be even more
&gt; confusing. In any case, if we want to split USE(LIBWPE) I would do it in a
&gt; previous patch to this, or in a follow up.

We need to discuss with Don what exactly to do with the include guards. Seems like that&apos;s the only controversy here.

&gt; &gt; &gt; Source/WebKit/PlatformGTK.cmake:479
&gt; &gt; &gt; +if (USE_WPE_RENDERER)
&gt; &gt; &gt; +    list(APPEND WebKit_LIBRARIES
&gt; &gt; &gt; +        PRIVATE
&gt; &gt; 
&gt; &gt; Oops! (PRIVATE doesn&apos;t work here.)
&gt; 
&gt; What doesn&apos;t work? What should I do then, just remove it?

Yeah, just remove it. PRIVATE is not a library and cannot be appended to WebKit_LIBRARIES.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537232</commentid>
    <comment_count>8</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-05-17 13:47:39 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)

&gt; How long will we keep WaylandCompositor around as a fallback path?
&gt; 
&gt; It&apos;s only needed for accelerated rendering, right? So we don&apos;t really need
&gt; to keep it. We could fallback to software rendering if libwpe is unavailable.

While Wayland is now available in FreeBSD (using a similar stack, with
libdrm + Mesa), AFAIU there is no support for DMA-BUF there because that
is Linux-specific. We may want to keep the nested compositor support for
systems where Wayland runs but are not Linux-based. I have no idea what
the situation is for the other BSDs, though.

As a reminder: Wayland is only communications protocol, just a peculiar
one with a very specific purpose (pushing pixels around, that is), and
there is not nothing to the its base protocols which is Linux-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537534</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-20 00:59:48 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #8)
&gt; (In reply to Michael Catanzaro from comment #3)
&gt; 
&gt; &gt; How long will we keep WaylandCompositor around as a fallback path?
&gt; &gt; 
&gt; &gt; It&apos;s only needed for accelerated rendering, right? So we don&apos;t really need
&gt; &gt; to keep it. We could fallback to software rendering if libwpe is unavailable.
&gt; 
&gt; While Wayland is now available in FreeBSD (using a similar stack, with
&gt; libdrm + Mesa), AFAIU there is no support for DMA-BUF there because that
&gt; is Linux-specific. We may want to keep the nested compositor support for
&gt; systems where Wayland runs but are not Linux-based. I have no idea what
&gt; the situation is for the other BSDs, though.

WPEBackend-fdo works without linux dmabuf too, using the wayland resources the same way we do in our nested compositor.

&gt; As a reminder: Wayland is only communications protocol, just a peculiar
&gt; one with a very specific purpose (pushing pixels around, that is), and
&gt; there is not nothing to the its base protocols which is Linux-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538131</commentid>
    <comment_count>10</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-05-22 01:01:27 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9)
&gt; (In reply to Adrian Perez from comment #8)
&gt; &gt; (In reply to Michael Catanzaro from comment #3)
&gt; &gt; 
&gt; &gt; &gt; How long will we keep WaylandCompositor around as a fallback path?
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s only needed for accelerated rendering, right? So we don&apos;t really need
&gt; &gt; &gt; to keep it. We could fallback to software rendering if libwpe is unavailable.
&gt; &gt; 
&gt; &gt; While Wayland is now available in FreeBSD (using a similar stack, with
&gt; &gt; libdrm + Mesa), AFAIU there is no support for DMA-BUF there because that
&gt; &gt; is Linux-specific. We may want to keep the nested compositor support for
&gt; &gt; systems where Wayland runs but are not Linux-based. I have no idea what
&gt; &gt; the situation is for the other BSDs, though.
&gt; 
&gt; WPEBackend-fdo works without linux dmabuf too, using the wayland resources
&gt; the same way we do in our nested compositor.

Great. No further objections, your honor!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539368</commentid>
    <comment_count>11</comment_count>
      <attachid>370687</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-27 03:49:00 -0700</bug_when>
    <thetext>Created attachment 370687
Patch

Rebased and updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539369</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-27 03:50:12 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #7)
&gt; (In reply to Carlos Garcia Campos from comment #5)
&gt; &gt; I never liked USE(LIBWPE) to be honest (even less the classes named
&gt; &gt; FooLibWPE), but I agree that PLATFORM(WPE) and USE(WPE) would be even more
&gt; &gt; confusing. In any case, if we want to split USE(LIBWPE) I would do it in a
&gt; &gt; previous patch to this, or in a follow up.
&gt; 
&gt; We need to discuss with Don what exactly to do with the include guards.
&gt; Seems like that&apos;s the only controversy here.

Ok, but I don&apos;t think the naming of the internal ifdefs should block this patch. We can discuss and change them on a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539370</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-27 03:51:13 -0700</bug_when>
    <thetext>Attachment 370687 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539380</commentid>
    <comment_count>14</comment_count>
      <attachid>370687</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-27 05:37:55 -0700</bug_when>
    <thetext>Comment on attachment 370687
Patch

Fine, but please start that discussion in another bug and follow up on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539488</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-05-27 23:36:40 -0700</bug_when>
    <thetext>Committed r245807: &lt;https://trac.webkit.org/changeset/245807&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370036</attachid>
            <date>2019-05-16 03:54:39 -0700</date>
            <delta_ts>2019-05-27 03:49:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-gtk-wpe.diff</filename>
            <type>text/plain</type>
            <size>57739</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAwZDVjZmU0YTQyYi4uZTQw
ZjhhMjY2MGUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0wNS0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIFdQRUJhY2tlbmQtZmRvIGZvciBhY2NlbGVyYXRp
bmcgY29tcG9zaXRpbmcgaW4gV2F5bGFuZCBpbnN0ZWFkIG9mIHRoZSBuZXN0ZWQgY29tcG9zaXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFVT
RV9XUEVfUkVOREVSRVIgb3B0aW9uIHRvIHVzZSBXUEVCYWNrZW5kLWZkby4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2U6CisKIDIwMTktMDUtMDkgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbQ01ha2VdIERldGVjdCBTU0UyIGF0IGNvbXBpbGUgdGltZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDE3NTdmNGZlMTdiLi5mNjAzM2QzYWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDE5LTA1LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1RLXSBVc2UgV1BFQmFja2VuZC1mZG8gZm9yIGFjY2VsZXJhdGluZyBjb21wb3Np
dGluZyBpbiBXYXlsYW5kIGluc3RlYWQgb2YgdGhlIG5lc3RlZCBjb21wb3NpdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNv
bnRleHRGb3JXaW5kb3cpOiBDaGVjayBjdXJyZW50IGRpc3BsYXkgaXMgWDExIGJlZm9yZSB0cnlp
bmcgdG8gY3JlYXRlIGEgR0xYIGNvbnRleHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1EaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
Y3JlYXRlUGxhdGZvcm1EaXNwbGF5KTogVXNlIFVTRShXUEVfUkVOREVSRVIpIGluc3RlYWQgb2Yg
VVNFKExJQldQRSkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2Ug
VVNFKFdQRV9SRU5ERVJFUikgaW5zdGVhZCBvZiBQTEFURk9STShXUEUpLgorICAgICAgICAoV2Vi
Q29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0wpOiBEaXR0by4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5z
dXJlR3N0R0xDb250ZXh0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbGli
d3BlL1BsYXRmb3JtRGlzcGxheUxpYldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlMaWJXUEU6OlBsYXRmb3JtRGlzcGxheUxpYldQRSk6IEluIEdUSyBwb3J0IHNldCB0
aGUgZGlzcGxheSBhcyB0aGUgc2hhcmVkIG9uZSBmb3IgY29tcG9zaXRpbmcuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlzcGxheUxpYldQRS5oOgorCiAyMDE5
LTA1LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbRnJlZVR5cGVdIFNvbWUgY2hhcmFjdGVyIHNlcXVlbmNlcyB3aXRoIGEgdmFyaWF0aW9u
IHNlbGVjdG9yIGFyZSBub3QgcmVuZGVyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
OWY4MmI0ZmNjMzQuLmQ5ZWRmMDE5ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MzYsNiArMzYsMTIgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC9ndGsiCiApCiAKK2lmIChV
U0VfV1BFX1JFTkRFUkVSKQorICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RP
UklFUworICAgICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlIgor
ICAgICkKK2VuZGlmICgpCisKIGxpc3QoQVBQRU5EIFdlYkNvcmVQbGF0Zm9ybUdUS19TT1VSQ0VT
CiAgICAgZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAogCkBAIC0xMjAsNiArMTI2LDEyIEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtaTElCX0xJQlJBUklFU30KICkKIAor
aWYgKFVTRV9XUEVfUkVOREVSRVIpCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9MSUJSQVJJRVMK
KyAgICAgICAgJHtXUEVfTElCUkFSSUVTfQorICAgICkKK2VuZGlmICgpCisKIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0FUS19JTkNMVURFX0RJ
UlN9CiAgICAgJHtFTkNIQU5UX0lOQ0xVREVfRElSU30KQEAgLTEzMiw2ICsxNDQsMTIgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7WkxJQl9J
TkNMVURFX0RJUlN9CiApCiAKK2lmIChVU0VfV1BFX1JFTkRFUkVSKQorICAgIGxpc3QoQVBQRU5E
IFdlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgJHtXUEVfSU5DTFVE
RV9ESVJTfQorICAgICkKK2VuZGlmICgpCisKIGlmIChVU0VfT1BFTkdMX0VTKQogICAgIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uczNET3BlbkdMRVMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDE3ZTdiNGMw
MjcyLi43NWZjMGE1ZDNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTY3LDYgKzY3LDcgQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQmFja2luZ1N0b3JlQmFja2VuZENhaXJvWDExLmNwcCBAbm8tdW5pZnkK
IAogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKK3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMV2F5bGFuZC5jcHAgQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMWDExLmNwcCBAbm8tdW5pZnkKIApAQCAtNzQsNiArNzUsOCBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VHU3RyZWFtZXJDYWlyby5jcHAKIAorcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1Bs
YXRmb3JtRGlzcGxheUxpYldQRS5jcHAKKwogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1w
b3JhcnlPcGVuR0xTZXR0aW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dMQ29udGV4dC5jcHAKaW5kZXggNWQwYjVlZDQyOGYuLmRjM2FiOTI3M2JiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTkwLDgg
KzkwLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29u
dGV4dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUKICNlbmRpZgogCiAjaWYgVVNFKEdMWCkK
LSAgICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KHdp
bmRvd0hhbmRsZSwgZGlzcGxheSkpCi0gICAgICAgIHJldHVybiBnbHhDb250ZXh0OworICAgIGlm
IChkaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgeworICAgICAg
ICBpZiAoYXV0byBnbHhDb250ZXh0ID0gR0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KHdpbmRv
d0hhbmRsZSwgZGlzcGxheSkpCisgICAgICAgICAgICByZXR1cm4gZ2x4Q29udGV4dDsKKyAgICB9
CiAjZW5kaWYKICNpZiBVU0UoRUdMKQogICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRl
eHRFR0w6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxlLCBkaXNwbGF5KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmluZGV4
IGQyM2M2MDc5MmVhLi42ZjlhMDM5ZjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5V2luLmgiCiAjZW5kaWYKIAotI2lmIFVTRShMSUJXUEUp
CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlMaWJXUEUu
aCIKICNlbmRpZgogCkBAIC05MSw3ICs5MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybURp
c3BsYXk+IFBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZvcm1EaXNwbGF5KCkKICNlbmRpZgog
I2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAotI2lmIFVTRShMSUJXUEUpCisjaWYgVVNFKFdQRV9S
RU5ERVJFUikKICAgICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5TGliV1BFOjpjcmVhdGUoKTsKICNl
bGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZvcm1EaXNwbGF5V2luOjpjcmVhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
RGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmgKaW5kZXggNGYyOTI5YTY0ODguLjVkNmFiNWFmZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBXaW5kb3dzLAogI2VuZGlm
Ci0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgICAgICBXUEUsCiAj
ZW5kaWYKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMLmNwcAppbmRleCBkNmZmMzc5MGEzNy4uMTRhN2I0Yzk3ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuY3BwCkBAIC0xODIsNyArMTgyLDkgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KEdMTmF0aXZlV2luZG93VHkKICAg
ICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6Oldh
eWxhbmQpCiAgICAgICAgIHN1cmZhY2UgPSBjcmVhdGVXaW5kb3dTdXJmYWNlV2F5bGFuZChkaXNw
bGF5LCBjb25maWcsIHdpbmRvdyk7CiAjZW5kaWYKLSNlbGlmIFBMQVRGT1JNKFdQRSkKKyNlbmRp
ZgorCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUo
KSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldQRSkKICAgICAgICAgc3VyZmFjZSA9IGNyZWF0
ZVdpbmRvd1N1cmZhY2VXUEUoZGlzcGxheSwgY29uZmlnLCB3aW5kb3cpOwogI2Vsc2UKQEAgLTI3
OSw3ICsyODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIHdpbgogICAgICAgICBpZiAocGxhdGZv
cm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCiAgICAg
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlV2F5bGFuZENvbnRleHQocGxhdGZvcm1EaXNwbGF5LCBl
Z2xTaGFyaW5nQ29udGV4dCk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQ
RV9SRU5ERVJFUikKICAgICAgICAgaWYgKHBsYXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZv
cm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAgICAgICAgICBjb250ZXh0ID0gY3JlYXRlV1BFQ29u
dGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJpbmdDb250ZXh0KTsKICNlbmRpZgpAQCAtMzE2
LDcgKzMxOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6
Y3JlYXRlU2hhcmluZ0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5CiAgICAgICAgIGlmIChwbGF0Zm9y
bURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKICAgICAg
ICAgICAgIGNvbnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOwog
I2VuZGlmCi0jaWYgUExBVEZPUk0oV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgICAg
IGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V1BF
KQogICAgICAgICAgICAgY29udGV4dCA9IGNyZWF0ZVdQRUNvbnRleHQocGxhdGZvcm1EaXNwbGF5
KTsKICNlbmRpZgpAQCAtMzU5LDcgKzM2MSw3IEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVH
TCgpCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBkZXN0cm95V2F5bGFuZFdpbmRvdygpOwog
I2VuZGlmCi0jaWYgUExBVEZPUk0oV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgZGVz
dHJveVdQRVRhcmdldCgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggY2JkNjM0MWZlNWQuLjBjN2E4
NDhlODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5oCkBAIC0zMiw3ICszMiw3IEBACiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdzsK
ICNlbmRpZgogCi0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogc3RydWN0
IHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF9vZmZzY3JlZW5fdGFyZ2V0OwogI2VuZGlmCiAKQEAg
LTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5
JiwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+
JiYsIHN0cnVjdCB3bF9lZ2xfd2luZG93Kik7CiAgICAgdm9pZCBkZXN0cm95V2F5bGFuZFdpbmRv
dygpOwogI2VuZGlmCi0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAg
IEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlLCBz
dHJ1Y3Qgd3BlX3JlbmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQqKTsKICAgICB2
b2lkIGRlc3Ryb3lXUEVUYXJnZXQoKTsKICNlbmRpZgpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXYXlsYW5k
Q29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVs
bHB0cik7CiAgICAgc3RhdGljIEVHTFN1cmZhY2UgY3JlYXRlV2luZG93U3VyZmFjZVdheWxhbmQo
RUdMRGlzcGxheSwgRUdMQ29uZmlnLCBHTE5hdGl2ZVdpbmRvd1R5cGUpOwogI2VuZGlmCi0jaWYg
VVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVXUEVDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKICAgICBzdGF0aWMgRUdMU3VyZmFj
ZSBjcmVhdGVXaW5kb3dTdXJmYWNlV1BFKEVHTERpc3BsYXksIEVHTENvbmZpZywgR0xOYXRpdmVX
aW5kb3dUeXBlKTsKICNlbmRpZgpAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgV2xV
bmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+IG1fd2xTdXJmYWNlOwogICAgIHN0cnVjdCB3bF9l
Z2xfd2luZG93KiBtX3dsV2luZG93IHsgbnVsbHB0ciB9OwogI2VuZGlmCi0jaWYgVVNFKExJQldQ
RSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIHN0cnVjdCB3cGVfcmVuZGVyZXJfYmFja2Vu
ZF9lZ2xfb2Zmc2NyZWVuX3RhcmdldCogbV93cGVUYXJnZXQgeyBudWxscHRyIH07CiAjZW5kaWYK
ICNpZiBVU0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xMaWJXUEUuY3BwCmluZGV4IDFlZGI1ZmFkZDc5Li40
MDhkZjNiMzk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKQEAgLTE5LDggKzE5LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKIAotI2lmIFVTRShF
R0wpICYmIFVTRShMSUJXUEUpCi0KKyNpZiBVU0UoRUdMKSAmJiBVU0UoV1BFX1JFTkRFUkVSKQog
I2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheUxpYldQRS5oIgogCiAjaWYgVVNFKExJQkVQT1hZKQpA
QCAtMjksNiArMjgsMTEgQEAKICNkZWZpbmUgX19HQk1fXyAxCiAjaW5jbHVkZSAiRXBveHlFR0wu
aCIKICNlbHNlCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKy8vIFRoZXNlIGluY2x1ZGVzIG5lZWQg
dG8gYmUgaW4gdGhpcyBvcmRlciBiZWNhdXNlIHdheWxhbmQtZWdsLmggZGVmaW5lcyBXTF9FR0xf
UExBVEZPUk0KKy8vIGFuZCBlZ2xwbGF0Zm9ybS5oLCBpbmNsdWRlZCBieSBlZ2wuaCwgY2hlY2tz
IHRoYXQgdG8gZGVjaWRlIHdoZXRoZXIgaXQncyBXYXlsYW5kIHBsYXRmb3JtLgorI2luY2x1ZGUg
PHdheWxhbmQtZWdsLmg+CisjZW5kaWYKICNpbmNsdWRlIDxFR0wvZWdsLmg+CiAjZW5kaWYKIApA
QCAtOTYsNCArMTAwLDQgQEAgdm9pZCBHTENvbnRleHRFR0w6OmRlc3Ryb3lXUEVUYXJnZXQoKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0UoRUdMKSAmJiBVU0UoTElC
V1BFKQorI2VuZGlmIC8vIFVTRShFR0wpICYmIFVTRShXUEVfUkVOREVSRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNWNi
NWY3NTM2YWMuLmYwYjdhNDNkZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC0xMDIsNyArMTAyLDkgQEAKIAogI2lmIFBM
QVRGT1JNKFdBWUxBTkQpCiAjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oIgotI2Vs
aWYgUExBVEZPUk0oV1BFKQorI2VuZGlmCisKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogI2luY2x1
ZGUgIlBsYXRmb3JtRGlzcGxheUxpYldQRS5oIgogI2VuZGlmCiAKQEAgLTQ0OCw3ICs0NTAsNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmVuc3VyZUdzdEdMQ29udGV4
dCgpCiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV1BFKQorI2lmIFVTRShXUEVf
UkVOREVSRVIpCiAgICAgICAgIEFTU0VSVChpczxQbGF0Zm9ybURpc3BsYXlMaWJXUEU+KHNoYXJl
ZERpc3BsYXkpKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiQ3JlYXRp
bmcgV1BFIHNoYXJlZCBFR0wgZGlzcGxheSIpOwogICAgICAgICBpZiAoc2hvdWxkQWRvcHRSZWYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUvUGxh
dGZvcm1EaXNwbGF5TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2xpYndwZS9QbGF0Zm9ybURpc3BsYXlMaWJXUEUuY3BwCmluZGV4IGQ2ZDhmNmM0ZmRjLi5hYjEw
YjMwZDEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbGli
d3BlL1BsYXRmb3JtRGlzcGxheUxpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlzcGxheUxpYldQRS5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlMaWJX
UEUuaCIKIAotI2lmIFVTRShMSUJXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKIAogI2luY2x1
ZGUgIkdMQ29udGV4dEVHTC5oIgogCkBAIC0zNiw2ICszNiwxMSBAQAogI2RlZmluZSBfX0dCTV9f
IDEKICNpbmNsdWRlICJFcG94eUVHTC5oIgogI2Vsc2UKKyNpZiBQTEFURk9STShXQVlMQU5EKQor
Ly8gVGhlc2UgaW5jbHVkZXMgbmVlZCB0byBiZSBpbiB0aGlzIG9yZGVyIGJlY2F1c2Ugd2F5bGFu
ZC1lZ2wuaCBkZWZpbmVzIFdMX0VHTF9QTEFURk9STQorLy8gYW5kIGVnbHBsYXRmb3JtLmgsIGlu
Y2x1ZGVkIGJ5IGVnbC5oLCBjaGVja3MgdGhhdCB0byBkZWNpZGUgd2hldGhlciBpdCdzIFdheWxh
bmQgcGxhdGZvcm0uCisjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNlbmRpZgogI2luY2x1ZGUg
PEVHTC9lZ2wuaD4KICNlbmRpZgogCkBAIC01MSw2ICs1Niw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybURpc3BsYXlMaWJXUEU+IFBsYXRmb3JtRGlzcGxheUxpYldQRTo6Y3JlYXRlKCkKIFBs
YXRmb3JtRGlzcGxheUxpYldQRTo6UGxhdGZvcm1EaXNwbGF5TGliV1BFKCkKICAgICA6IFBsYXRm
b3JtRGlzcGxheShOYXRpdmVEaXNwbGF5T3duZWQ6Ok5vKQogeworI2lmIFBMQVRGT1JNKEdUSykK
KyAgICBQbGF0Zm9ybURpc3BsYXk6OnNldFNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygqdGhp
cyk7CisjZW5kaWYKIH0KIAogUGxhdGZvcm1EaXNwbGF5TGliV1BFOjp+UGxhdGZvcm1EaXNwbGF5
TGliV1BFKCkKQEAgLTczLDQgKzgxLDQgQEAgdm9pZCBQbGF0Zm9ybURpc3BsYXlMaWJXUEU6Omlu
aXRpYWxpemUoaW50IGhvc3RGZCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYg
Ly8gVVNFKExJQldQRSkKKyNlbmRpZiAvLyBVU0UoV1BFX1JFTkRFUkVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlzcGxheUxp
YldQRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3Jt
RGlzcGxheUxpYldQRS5oCmluZGV4IDA1ODAzNmJkMTg5Li5iZGUyNmU2N2NlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlzcGxh
eUxpYldQRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2xpYndwZS9Q
bGF0Zm9ybURpc3BsYXlMaWJXUEUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2lmIFVTRShMSUJXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKIAogI2luY2x1ZGUgIlBs
YXRmb3JtRGlzcGxheS5oIgogCkBAIC01NSw0ICs1NSw0IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUExBVEZPUk1fRElTUExBWShQbGF0Zm9ybURpc3BsYXlMaWJXUEUsIFdQ
RSkKIAotI2VuZGlmIC8vIFVTRShMSUJXUEUpCisjZW5kaWYgLy8gVVNFKFdQRV9SRU5ERVJFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjlhYjQ3N2I2NGMuLjZhZTRjOGU4NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDc1IEBACisyMDE5LTA1LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXSBVc2UgV1BFQmFja2VuZC1mZG8gZm9yIGFjY2VsZXJhdGlu
ZyBjb21wb3NpdGluZyBpbiBXYXlsYW5kIGluc3RlYWQgb2YgdGhlIG5lc3RlZCBjb21wb3NpdG9y
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5NDQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV1BF
QmFja2VuZC1mZG8gaW1wbGVtZW50YXRpb24gaXMgcXVpdGUgc2ltaWxhciB0byBvdXIgV2F5bGFu
ZCBuZXN0ZWQgY29tcG9zaXRvciwgYnV0IG1vcmUgZWZmaWNpZW50ICh1c2luZworICAgICAgICBs
aW51eCBkbWFidWYsIHJlc291cmNlIGNhY2hpbmcsIGV0Yy4pLiBUaGlzIGFsbG93cyB1cyB0byBz
aGFyZSBldmVuIG1vcmUgY29kZSB3aXRoIFdQRSBwb3J0IHRvby4KKworICAgICAgICAqIFBsYXRm
b3JtR1RLLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
aHJlYWRlZENvbXBvc2l0b3I6OmZvcmNlUmVwYWludCk6IFdQRSBkb2Vzbid0IHN1cHBvcnQgZm9y
Y2UgcmVwYWludCB5ZXQuCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOiBVc2UgVVNFKFdQRV9SRU5ERVJFUikgaW5zdGVhZCBvZiBQTEFURk9STShXUEUp
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBE
aXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
Lmg6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
aG9zdEZpbGVEZXNjcmlwdG9yKTogSW1wbGVtZW50IGl0IHdoZW4gdXNpbmcgV1BFIGp1c3QgY2Fs
bGluZyB3ZWJraXRXZWJWaWV3QmFzZVJlbmRlckhvc3RGaWxlRGVzY3JpcHRvcigpLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmll
d0Jhc2VDcmVhdGVXZWJQYWdlKTogSW5pdGlhbGl6ZSB0aGUgd2ViIHBhZ2UgYWZ0ZXIgdGhlIGFj
Y2VsZXJhdGVkIGJhY2tpbmcgc3RvcmUgaXMgY3JlYXRlZCwgc2luY2UKKyAgICAgICAgaXQncyB1
c2VkIG5vdyBkdXJpbmcgaW50aWFsaXphdGlvbi4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
UmVuZGVySG9zdEZpbGVEZXNjcmlwdG9yKTogUmV0dXJuIEFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
OjpyZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IoKQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6IFVzZSBVU0UoV1BFX1JFTkRFUkVSKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKFdQRSku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKTogUmVtb3ZlIHdheWxh
bmQgZGlzcGxheSBuYW1lIGluaXRpYWxpemF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB3YXlsYW5kIGRpc3Bs
YXkgbmFtZSB3aGVuIG5vdCB1c2luZyBXUEUgaGVyZQorICAgICAgICBub3cuIEluIGNhc2Ugb2Yg
dXNpbmcgV1BFLCBpbml0aWFsaXplIGhvc3RDbGllbnRGaWxlRGVzY3JpcHRvciBhbmQgaW1wbGVt
ZW50YXRpb25MaWJyYXJ5TmFtZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9y
bUdldExhdW5jaE9wdGlvbnMpOiBSZW1vdmUgdW51c2VkIHdheWxhbmQgc29ja2V0IGNvbW1hbmQg
bGluZSBwcm9jZXNzIHBhcmFtZXRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJh
dGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlOjpyZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IpOiBSZXR1cm4gLTEgYnkgZGVmYXVsdC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y3JlYXRl
KTogV2hlbiB1c2luZyBXUEUgY2FsbCB3cGVfZmRvX2luaXRpYWxpemVfZm9yX2VnbF9kaXNwbGF5
KCkgYW5kCisgICAgICAgIGNoZWNrIHdlIGhhdmUgdGhlIHJlcXVpcmVkIGV4dGVuc2lvbnMuCisg
ICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kKTogV2hlbiB1c2luZyBXUEUgaW5pdGlhbGl6ZSB0aGUgdmll
dyBiYWNrZW5kLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6On5BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQpOiBXaGVuIHVzaW5nIFdQRSByZWxl
YXNlIHRoZSBFR0wgaW1hZ2VzCisgICAgICAgIHN0aWxsIGluIHVzZSBhbmQgdGhlIHZpZXcgdGV4
dHVyZS4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpy
ZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IpOiBDYWxsIHdwZV92aWV3X2JhY2tlbmRfZ2V0X3JlbmRl
cmVyX2hvc3RfZmQoKS4KKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kOjpkaXNwbGF5QnVmZmVyKTogQ3JlYXRlIHRoZSB2aWV3IHRleHR1cmUgaWYgbmVlZGVk
LCBzYXZlIHRoZSBwZW5kaW5nCisgICAgICAgIGltYWdlIGFuZCBzY2hlZHVsZSBhIHJlZHJhdy4K
KyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpwYWludCk6
IFdoZW4gdXNpbmcgV1BFIGNvbW1pdCB0aGUgcGVuZGluZyBpbWFnZSBhbmQgdXNlIGl0IGFzIHRh
cmdldCBvZgorICAgICAgICB0aGUgdmlldyB0ZXh0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2d0ay9IYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpI
YXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXI6OkhhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlcik6
IFdoZW4gdXNpbmcgV1BFIGRpc2FibGUgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCisgICAgICAgIGlm
IHdwZV9mZG9faW5pdGlhbGl6ZV9mb3JfZWdsX2Rpc3BsYXkoKSBmYWlscy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Fj
Y2VsZXJhdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFj
ZTo6Y3JlYXRlKTogQ3JlYXRlIGFuIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRSBmb3IgR1RLIHBv
cnQgd2hlbiB1c2luZyBXUEUgYW5kIHNoYXJlZAorICAgICAgICBkaXNwbGF5IGlzIFdheWxhbmQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3BwOgorICAgICAgICAoV2ViS2l0OjpB
Y2NlbGVyYXRlZFN1cmZhY2VMaWJXUEU6OmluaXRpYWxpemUpOiBVc2UgdGhlIHNoYXJlZCBkaXNw
bGF5IGZvciBjb21wb3NpdGluZyBpbnN0ZWFkIG9mIHNoYXJlZCBkaXNwbGF5LgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgdGhlIHdwZSBkaXNwbGF5IHdo
ZW4gdXNpbmcgV1BFLgorCiAyMDE5LTA1LTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1c2VyIGdlc3R1cmUgdG9nZ2xlIHNob3Vs
ZCBhbHNvIGZvcmNlIHVzZXIgaW50ZXJhY3Rpb24gZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggOGUwNmMwYWQ2YjMuLmQxY2QxMDRiOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTQyOCw2ICs0MjgsMTYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NZU1RFTV9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkKIAoraWYgKFVTRV9XUEVf
UkVOREVSRVIpCisgICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAg
ICAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZSIKKyAgICApCisg
ICAgbGlzdChBUFBFTkQgV2ViS2l0X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAg
ICR7V1BFX0lOQ0xVREVfRElSU30KKyAgICAgICAgJHtXUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJ
UlN9CisgICAgKQorZW5kaWYgKCkKKwogaWYgKFVTRV9MSUJOT1RJRlkpCiBsaXN0KEFQUEVORCBX
ZWJLaXRfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0xJQk5PVElGWV9JTkNMVURF
X0RJUlN9CkBAIC00NjQsNiArNDc0LDE0IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMK
ICMgV2ViQ29yZSBzaG91bGQgYmUgc3BlY2lmZWQgYmVmb3JlIGFuZCBhZnRlciBXZWJDb3JlUGxh
dGZvcm1HVEsKIGxpc3QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMgUFJJVkFURSBXZWJDb3JlKQog
CitpZiAoVVNFX1dQRV9SRU5ERVJFUikKKyAgICBsaXN0KEFQUEVORCBXZWJLaXRfTElCUkFSSUVT
CisgICAgICAgIFBSSVZBVEUKKyAgICAgICAgICAke1dQRV9MSUJSQVJJRVN9CisgICAgICAgICAg
JHtXUEVCQUNLRU5EX0ZET19MSUJSQVJJRVN9CisgICAgKQorZW5kaWYgKCkKKwogaWYgKExJQk5P
VElGWV9GT1VORCkKIGxpc3QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMKICAgICBQUklWQVRFICR7
TElCTk9USUZZX0xJQlJBUklFU30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCmluZGV4IGUwY2RlZWRmYzIxLi41MzBkYTg2
NDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OmZvcmNlUmVwYWludCgpCiB7CiAgICAgLy8gRklYTUU6IEVuYWJsZSB0aGlzIGZvciBX
UEUgb25jZSBpdCdzIHBvc3NpYmxlIHRvIGRvIHRoZXNlIGZvcmNlZCB1cGRhdGVzCiAgICAgLy8g
aW4gYSB3YXkgdGhhdCBkb2Vzbid0IHN0YXJ2ZSBvdXQgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mg
YnVmZmVycy4KLSNpZiBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKFdQ
RV9SRU5ERVJFUikKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+cGVyZm9ybVRhc2tTeW5jKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gY2hhbmdlKG1faW5Gb3JjZVJlcGFpbnQsIHRydWUpOwogICAgICAgICByZW5kZXJM
YXllclRyZWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggODlmNTM1ZDRlMjkuLjZjOWM1MDhlYTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
OwogI2VuZGlmCi0jaWYgUExBVEZPUk0oV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAg
ZW5jb2RlciA8PCBob3N0RmlsZURlc2NyaXB0b3I7CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IGFw
cGxlTWFpbFBhZ2luYXRpb25RdWlya0VuYWJsZWQ7CkBAIC0zMDEsNyArMzAxLDcgQEAgT3B0aW9u
YWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmhvc3RGaWxlRGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA0M2FmNDYxYTczMC4uM2Y4ZmEyMTMzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
QEAgLTE2Miw3ICsxNjIsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CiAgICAgVmVjdG9yPFN0cmluZz4gYWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7CiAjZW5kaWYKLSNpZiBQTEFURk9STShXUEUpCisj
aWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBJUEM6OkF0dGFjaG1lbnQgaG9zdEZpbGVEZXNjcmlw
dG9yOwogI2VuZGlmCiAgICAgYm9vbCBhcHBsZU1haWxQYWdpbmF0aW9uUXVpcmtFbmFibGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCA5NTgyZTZiNmJiOC4uNDE3MGQ2YzM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlT3ZlcmxheVNj
cm9sbGJhcnM7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRF
UkVSKQogICAgIGVuY29kZXIgPDwgaXNTZXJ2aWNlV29ya2VyUHJvY2VzczsKICAgICBlbmNvZGVy
IDw8IGhvc3RDbGllbnRGaWxlRGVzY3JpcHRvcjsKICAgICBlbmNvZGVyIDw8IGltcGxlbWVudGF0
aW9uTGlicmFyeU5hbWU7CkBAIC0zNzEsNyArMzcxLDcgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jZXNzQ3Jl
YXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXUEUpCisj
aWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCA4NDUwZGNlYzZmYS4uNDkxYjkxZGI5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTE4OSw3ICsxODks
NyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VP
dmVybGF5U2Nyb2xsYmFycyB7IHRydWUgfTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV1BFKQor
I2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzIHsg
ZmFsc2UgfTsKICAgICBJUEM6OkF0dGFjaG1lbnQgaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yOwog
ICAgIENTdHJpbmcgaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0Cmlu
ZGV4IDdjM2Q4NmZmYjVkLi5mMWNkMjUzZTQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0yNDEs
NyArMjQxLDcgQEAgVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQu
Y3BwIEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVgxMS5j
cHAgQG5vLXVuaWZ5CiBVSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKIFVJUHJv
Y2Vzcy9ndGsvR2VzdHVyZUNvbnRyb2xsZXIuY3BwCi1VSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNj
ZWxlcmF0aW9uTWFuYWdlci5jcHAKK1VJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVyYXRpb25N
YW5hZ2VyLmNwcCBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
IEBuby11bmlmeQogVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKIFVJUHJv
Y2Vzcy9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIEBuby11bmlmeQpAQCAtNDE5
LDYgKzQxOSw4IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViSW5zcGVjdG9yVUlHdGsuY3Bw
CiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCiBXZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAogCitXZWJQcm9jZXNzL1dlYlBhZ2UvbGli
d3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAgQG5vLXVuaWZ5CisKIFdlYlByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKIAogV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3JEaXNwbGF5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1Bh
Z2VDbGllbnRJbXBsLmNwcAppbmRleCAyYzk4ZjIwYzJmOC4uNDk3OWRmMzE1YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBA
IC01NTIsNCArNTUyLDExIEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmVmZmVjdGl2ZUFwcGVhcmFu
Y2VJc0RhcmsoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIFVTRShXUEVfUkVO
REVSRVIpCitJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhvc3RGaWxlRGVzY3JpcHRv
cigpCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlUmVuZGVySG9zdEZpbGVEZXNjcmlw
dG9yKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGE2OTBjODI1NmQxLi42YWJiMmQ1ZjAzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAt
MTY0LDYgKzE2NCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBlZmZlY3RpdmVBcHBlYXJhbmNl
SXNEYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAgIElQ
Qzo6QXR0YWNobWVudCBob3N0RmlsZURlc2NyaXB0b3IoKSBvdmVycmlkZTsKKyNlbmRpZgorCiAg
ICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0a1dpZGdldCogbV92
aWV3V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCAxOGI2MDk3OTY2MS4uYTYwMzRmZGUyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0x
NDIyLDkgKzE0MjIsOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZShXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFJlZjxBUAogICAgIFdlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogICAgIFdlYlBy
b2Nlc3NQb29sKiBwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24tPnByb2Nlc3NQb29sKCk7CiAg
ICAgcHJpdi0+cGFnZVByb3h5ID0gcHJvY2Vzc1Bvb2wtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBh
Z2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwotICAgIHByaXYtPnBhZ2VQcm94eS0+
aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKLQogICAgIHByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
ID0gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgqcHJpdi0+cGFnZVByb3h5KTsKKyAg
ICBwcml2LT5wYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKICAgICBwcml2LT5pbnB1
dE1ldGhvZEZpbHRlci5zZXRQYWdlKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7CiAKQEAgLTE3NTQs
MyArMTc1MywxMiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVzdG9yZVNjcm9sbFBvc2l0
aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QgogICAgIGlmIChjb250cm9sbGVy
ICYmIGNvbnRyb2xsZXItPmlzU3dpcGVHZXN0dXJlRW5hYmxlZCgpKQogICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZS0+cHJpdi0+dmlld0dlc3R1cmVDb250cm9sbGVyLT5kaWRSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKTsKIH0KKworI2lmIFVTRShXUEVfUkVOREVSRVIpCitpbnQgd2Via2l0V2ViVmll
d0Jhc2VSZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdl
YlZpZXdCYXNlKQoreworICAgIGlmICh3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+YWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmUpCisgICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+
YWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUtPnJlbmRlckhvc3RGaWxlRGVzY3JpcHRvcigpOworICAg
IHJldHVybiAtMTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggNTRmZTAxZTVj
MzAuLjQxZGM2YjIzYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTkzLDMgKzkzLDcgQEAg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUoV2ViS2l0V2Vi
Vmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRGYWlsTG9hZEZvck1haW5GcmFt
ZShXZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJLaXQ6OlNh
bWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oV2ViS2l0V2ViVmlld0Jhc2UqKTsKKworI2lmIFVTRShXUEVfUkVO
REVSRVIpCitpbnQgd2Via2l0V2ViVmlld0Jhc2VSZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IoV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBhZmVhMzgxODhlYy4u
MDY2ZTExMGE3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0zNSwxNyArMzUsMTMgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlIDxndGsvZ3RrLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0jaW5jbHVk
ZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxh
eS5oPgotI2VuZGlmCi0KICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogI2luY2x1ZGUgPHd0Zi9n
bGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKaW5kZXggYWZjOTRjZTkwMmQuLjk5YzQ2YTgwOWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC01MDQsNyArNTA0LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV1RGOjpPcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2Vz
dHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikK
ICAgICB2aXJ0dWFsIElQQzo6QXR0YWNobWVudCBob3N0RmlsZURlc2NyaXB0b3IoKSA9IDA7CiAj
ZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5
Zjk2ZjlhMTUyZi4uYmI2MjM5ZTI2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtNzE2MCw3ICs3MTYwLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MK
ICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9vdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBwYXJhbWV0ZXJzLmNwdUxpbWl0ID0gbV9jcHVM
aW1pdDsKIAotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIHBh
cmFtZXRlcnMuaG9zdEZpbGVEZXNjcmlwdG9yID0gcGFnZUNsaWVudCgpLmhvc3RGaWxlRGVzY3Jp
cHRvcigpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCAxM2VjYzQ4NWRiNi4uMzdhMDg0NzBhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNywxMSArMTE3LDYgQEAKICNpbmNsdWRl
ICJNZW1vcnlQcmVzc3VyZU1vbml0b3IuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0FZTEFO
RCkKLSNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1EaXNwbGF5Lmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IlZlcnNpb25DaGVja3MuaCIKICNlbmRpZgpAQCAtOTczLDExICs5NjgsNiBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjppbml0aWFsaXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MsIFdlYnNpdGVEYQogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVS
ZWxpZWZMb2dnaW5nID0gdHJ1ZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0FZTEFORCkgJiYg
VVNFKEVHTCkKLSAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgp
ID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKLSAgICAgICAgcGFyYW1ldGVycy53
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lID0gV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRv
bigpLmRpc3BsYXlOYW1lKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAg
ICAgcGFyYW1ldGVycy5zaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyA9IG1fY29uZmlndXJh
dGlvbi0+c2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MoKTsKICAgICBwYXJhbWV0ZXJzLnNo
b3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRDYXB0
dXJlVmlkZW9JblVJUHJvY2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCmluZGV4IGIxZTA5NjUwYjAzLi4yOWI0ZDNhN2Ji
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9v
bEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bv
b2xHTGliLmNwcApAQCAtMzIsMTAgKzMyLDE5IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rv
clNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR1N0cmVhbWVyQ29tbW9uLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KICNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAotI2lmIFBMQVRGT1JNKFdQRSkK
KyNpZiBQTEFURk9STShXQVlMQU5EKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVkZSA8
d3BlL2Zkby1lZ2wuaD4KKyNlbHNlCisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNl
bmRpZgorI2VuZGlmCisKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogI2luY2x1ZGUgPHdwZS93cGUu
aD4KICNlbmRpZgogCkBAIC0xMDQsNiArMTEzLDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYK
ICAgICB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0
Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAg
ICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIpOworICAgICAg
ICBpZiAod3BlX2Zkb19pbml0aWFsaXplX2Zvcl9lZ2xfZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCkpKSB7CisgICAgICAgICAgICBw
YXJhbWV0ZXJzLmhvc3RDbGllbnRGaWxlRGVzY3JpcHRvciA9IHdwZV9yZW5kZXJlcl9ob3N0X2Ny
ZWF0ZV9jbGllbnQoKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJy
YXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVy
X2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkpOworICAgICAgICB9Cisj
ZWxzZQorICAgICAgICBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBX
YXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuZGlzcGxheU5hbWUoKTsKKyNlbmRpZgorICAg
IH0KKyNlbmRpZgorCiAgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVkID0gbV9tZW1v
cnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsOjpEb2N1bWVudFZp
ZXdlcjsKICAgICBwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MgPSBtX25ldHdvcmtQcm94eVNldHRp
bmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcAppbmRleCA2NDM2NTA1NWU5NC4uM2M0MmJhZWJlNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApA
QCAtMjYsOSArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogCi0jaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKLSNpbmNsdWRl
ICJXYXlsYW5kQ29tcG9zaXRvci5oIgotI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wu
aCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXkuaD4KQEAgLTQ3LDE1ICs0NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
CiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoImFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkiLCB3ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYVdlYlByb2Nlc3NT
YW5kYm94UGF0aHMgPSBtX3Byb2Nlc3NQb29sLT5zYW5kYm94UGF0aHMoKTsKLQotI2lmIFBMQVRG
T1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCi0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAg
ICAgICAgU3RyaW5nIGRpc3BsYXlOYW1lID0gV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigp
LmRpc3BsYXlOYW1lKCk7Ci0gICAgICAgIFN0cmluZyBydW50aW1lRGlyKGdfZ2V0X3VzZXJfcnVu
dGltZV9kaXIoKSk7Ci0gICAgICAgIFN0cmluZyB3YXlsYW5kU29ja2V0ID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJ1bnRpbWVEaXIsIGRpc3BsYXlOYW1lKTsKLSAgICAg
ICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoIndheWxhbmRTb2Nr
ZXQiLCB3YXlsYW5kU29ja2V0KTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKaW5k
ZXggNDhkYjUzMzQ0ZmIuLjNhMDNiNjExZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtNDcsNiArNDcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0
JikgeyB9CiAgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHJlbmRlckhvc3RGaWxlRGVzY3JpcHRvcigp
IHsgcmV0dXJuIC0xOyB9CiAKIHByb3RlY3RlZDoKICAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9y
ZShXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggNjBmNWNh
NzE1NjkuLmU2NDNkYWViZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHly
aWdodCAoQykgMjAxNiwgMjAxOSBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOCwzNiArMjgsMTEzIEBACiAKICNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBV
U0UoRUdMKQogCi0jaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKy8vIFRoZXNlIGluY2x1ZGVzIG5lZWQgdG8gYmUgaW4gdGhpcyBvcmRlciBi
ZWNhdXNlIHdheWxhbmQtZWdsLmggZGVmaW5lcyBXTF9FR0xfUExBVEZPUk0KKy8vIGFuZCBlZ2xw
bGF0Zm9ybS5oLCBpbmNsdWRlZCBieSBlZ2wuaCwgY2hlY2tzIHRoYXQgdG8gZGVjaWRlIHdoZXRo
ZXIgaXQncyBXYXlsYW5kIHBsYXRmb3JtLgorI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+Cisj
aW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4K
IAogI2lmIFVTRShPUEVOR0xfRVMpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8
R0xFUzIvZ2wyZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zM0RPcGVuR0xFUy5o
PgogI2Vsc2UKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnMzRE9wZW5HTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvT3BlbkdMU2hpbXMuaD4KICNlbmRpZgogCisjaWYgVVNFKFdQRV9SRU5ERVJF
UikKKyNpbmNsdWRlIDx3cGUvZmRvLWVnbC5oPgorI2Vsc2UKKyNpbmNsdWRlICJXYXlsYW5kQ29t
cG9zaXRvci5oIgorI2VuZGlmCisKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorI2lmICFkZWZpbmVk
KFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKQordHlwZWRlZiB2b2lkICgqUEZO
R0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVnbElt
YWdlT0VTKTsKKyNlbmRpZgorCitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9F
U1BST0MgZ2xJbWFnZVRhcmdldFRleHR1cmUyRDsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXYXlsYW5kPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNy
ZWF0ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCiB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAg
ICBpZiAoIWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQpIHsKKyAgICAgICAgaWYgKCF3cGVfZmRvX2lu
aXRpYWxpemVfZm9yX2VnbF9kaXNwbGF5KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgp
LmVnbERpc3BsYXkoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0
OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCk7CisgICAgICAgIGlmICghZWdsQ29udGV4dCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICghZWdsQ29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworI2lmIFVT
RShPUEVOR0xfRVMpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xF
Uz4gZ2xFeHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4o
bnVsbHB0ciwgIGZhbHNlKTsKKyNlbHNlCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNp
b25zM0RPcGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMPihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7
CisjZW5kaWYKKyAgICAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xf
aW1hZ2UiKSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVy
bmFsIikpCisgICAgICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJl
c3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CisgICAgfQorCisgICAgaWYgKCFn
bEltYWdlVGFyZ2V0VGV4dHVyZTJEKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQWNjZWxlcmF0
ZWRCYWNraW5nU3RvcmVXUEUgcmVxdWlyZXMgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRC4iKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2Vsc2UKICAgICBpZiAoIVdheWxhbmRD
b21wb3NpdG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisjZW5kaWYKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlV2F5bGFuZD4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCh3ZWJQYWdl
KSk7CiB9CiAKIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKICAgICA6IEFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlKHdlYlBhZ2UpCiB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBzdGF0
aWMgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZWdsX2NsaWVudCBleHBv
cnRhYmxlQ2xpZW50ID0geworICAgICAgICAvLyBleHBvcnRfZWdsX2ltYWdlCisgICAgICAgIG51
bGxwdHIsCisgICAgICAgIC8vIGV4cG9ydF9mZG9fZWdsX2ltYWdlCisgICAgICAgIFtdKHZvaWQq
IGRhdGEsIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZSogaW1hZ2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFu
ZCo+KGRhdGEpLT5kaXNwbGF5QnVmZmVyKGltYWdlKTsKKyAgICAgICAgfSwKKyAgICAgICAgLy8g
cGFkZGluZworICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyCisgICAgfTsKKworICAg
IGF1dG8gdmlld1NpemUgPSB3ZWJQYWdlLnZpZXdTaXplKCk7CisgICAgbV9leHBvcnRhYmxlID0g
d3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19lZ2xfY3JlYXRlKCZleHBvcnRhYmxlQ2xp
ZW50LCB0aGlzLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7CisgICAgd3Bl
X3ZpZXdfYmFja2VuZF9pbml0aWFsaXplKHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9f
Z2V0X3ZpZXdfYmFja2VuZChtX2V4cG9ydGFibGUpKTsKKyNlbHNlCiAgICAgV2F5bGFuZENvbXBv
c2l0b3I6OnNpbmdsZXRvbigpLnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworI2VuZGlmCiB9
CiAKIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6fkFjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZCgpCiB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBpZiAobV9wZW5kaW5n
SW1hZ2UpCisgICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZWdsX2Rpc3Bh
dGNoX3JlbGVhc2VfZXhwb3J0ZWRfaW1hZ2UobV9leHBvcnRhYmxlLCBtX3BlbmRpbmdJbWFnZSk7
CisgICAgaWYgKG1fY29tbWl0dGVkSW1hZ2UpCisgICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhw
b3J0YWJsZV9mZG9fZWdsX2Rpc3BhdGNoX3JlbGVhc2VfZXhwb3J0ZWRfaW1hZ2UobV9leHBvcnRh
YmxlLCBtX2NvbW1pdHRlZEltYWdlKTsKKyAgICBpZiAobV92aWV3VGV4dHVyZSkgeworICAgICAg
ICBpZiAobWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZtX3ZpZXdUZXh0dXJlKTsKKyAgICB9CisjZWxzZQogICAgIFdheWxhbmRDb21wb3NpdG9y
OjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworI2VuZGlmCiAKICNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxNiwgMCkKICAgICBpZiAobV9nZGtHTENvbnRleHQgJiYg
bV9nZGtHTENvbnRleHQuZ2V0KCkgPT0gZ2RrX2dsX2NvbnRleHRfZ2V0X2N1cnJlbnQoKSkKQEAg
LTEwMiwxMiArMTc5LDY0IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpt
YWtlQ29udGV4dEN1cnJlbnQoKQogICAgIHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0
LT5tYWtlQ29udGV4dEN1cnJlbnQoKSA6IGZhbHNlOwogfQogCisjaWYgVVNFKFdQRV9SRU5ERVJF
UikKK2ludCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnJlbmRlckhvc3RGaWxlRGVz
Y3JpcHRvcigpCit7CisgICAgcmV0dXJuIHdwZV92aWV3X2JhY2tlbmRfZ2V0X3JlbmRlcmVyX2hv
c3RfZmQod3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19nZXRfdmlld19iYWNrZW5kKG1f
ZXhwb3J0YWJsZSkpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6
ZGlzcGxheUJ1ZmZlcihzdHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2UqIGltYWdlKQor
eworICAgIGlmICghbV92aWV3VGV4dHVyZSkgeworICAgICAgICBpZiAoIW1ha2VDb250ZXh0Q3Vy
cmVudCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm1fdmlld1RleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1f
dmlld1RleHR1cmUpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgfQorCisgICAgaWYgKG1f
cGVuZGluZ0ltYWdlKQorICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Vn
bF9kaXNwYXRjaF9yZWxlYXNlX2ltYWdlKG1fZXhwb3J0YWJsZSwgbV9wZW5kaW5nSW1hZ2UpOwor
ICAgIG1fcGVuZGluZ0ltYWdlID0gaW1hZ2U7CisKKyAgICBtX3dlYlBhZ2Uuc2V0Vmlld05lZWRz
RGlzcGxheShJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fd2ViUGFnZS52aWV3U2l6ZSgpKSk7
Cit9CisjZW5kaWYKKwogYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50
KGNhaXJvX3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBHTHVpbnQgdGV4
dHVyZTsKICAgICBJbnRTaXplIHRleHR1cmVTaXplOworCisjaWYgVVNFKFdQRV9SRU5ERVJFUikK
KyAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobV9wZW5kaW5nSW1hZ2UpIHsKKyAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBv
cnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0ZShtX2V4cG9ydGFibGUpOworCisgICAg
ICAgIGlmIChtX2NvbW1pdHRlZEltYWdlKQorICAgICAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9l
eHBvcnRhYmxlX2Zkb19lZ2xfZGlzcGF0Y2hfcmVsZWFzZV9leHBvcnRlZF9pbWFnZShtX2V4cG9y
dGFibGUsIG1fY29tbWl0dGVkSW1hZ2UpOworICAgICAgICBtX2NvbW1pdHRlZEltYWdlID0gbV9w
ZW5kaW5nSW1hZ2U7CisgICAgICAgIG1fcGVuZGluZ0ltYWdlID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBpZiAoIW1fY29tbWl0dGVkSW1hZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3ZpZXdUZXh0dXJlKTsKKyAgICBnbEltYWdl
VGFyZ2V0VGV4dHVyZTJEKEdMX1RFWFRVUkVfMkQsIHdwZV9mZG9fZWdsX2V4cG9ydGVkX2ltYWdl
X2dldF9lZ2xfaW1hZ2UobV9jb21taXR0ZWRJbWFnZSkpOworCisgICAgdGV4dHVyZSA9IG1fdmll
d1RleHR1cmU7CisgICAgdGV4dHVyZVNpemUgPSB7IHN0YXRpY19jYXN0PGludD4od3BlX2Zkb19l
Z2xfZXhwb3J0ZWRfaW1hZ2VfZ2V0X3dpZHRoKG1fY29tbWl0dGVkSW1hZ2UpKSwgc3RhdGljX2Nh
c3Q8aW50Pih3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZV9nZXRfaGVpZ2h0KG1fY29tbWl0dGVk
SW1hZ2UpKSB9OworI2Vsc2UKICAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24o
KS5nZXRUZXh0dXJlKG1fd2ViUGFnZSwgdGV4dHVyZSwgdGV4dHVyZVNpemUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kLmgKaW5kZXggOTIwMjA0NWJjY2EuLmI0NDM0OWYzNDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5k
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0
b3JlV2F5bGFuZC5oCkBAIC0zMyw3ICszMywxMyBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorI2lu
Y2x1ZGUgPHdwZS9mZG8uaD4KKyNlbmRpZgorCit0eXBlZGVmIHZvaWQqIEVHTEltYWdlS0hSOwog
dHlwZWRlZiBzdHJ1Y3QgX0dka0dMQ29udGV4dCBHZGtHTENvbnRleHQ7CitzdHJ1Y3Qgd3BlX2Zk
b19lZ2xfZXhwb3J0ZWRfaW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdMQ29u
dGV4dDsKQEAgLTUzLDkgKzU5LDE1IEBAIHByaXZhdGU6CiAgICAgQWNjZWxlcmF0ZWRCYWNraW5n
U3RvcmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgdm9pZCB0cnlFbnN1cmVHTENvbnRl
eHQoKTsKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAgIHZvaWQgZGlzcGxheUJ1ZmZlcihzdHJ1
Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2UqKTsKKyNlbmRpZgogCiAgICAgYm9vbCBwYWlu
dChjYWlyb190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIGJvb2wg
bWFrZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAg
ICBpbnQgcmVuZGVySG9zdEZpbGVEZXNjcmlwdG9yKCkgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAgICBib29sIG1fZ2xDb250ZXh0
SW5pdGlhbGl6ZWQgeyBmYWxzZSB9OwpAQCAtNjMsNiArNzUsMTMgQEAgcHJpdmF0ZToKICAgICBH
UmVmUHRyPEdka0dMQ29udGV4dD4gbV9nZGtHTENvbnRleHQ7CiAjZW5kaWYKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKKworI2lmIFVTRShXUEVf
UkVOREVSRVIpCisgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG8qIG1f
ZXhwb3J0YWJsZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX3ZpZXdUZXh0dXJlIHsgMCB9
OworICAgIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZSogbV9jb21taXR0ZWRJbWFn
ZSB7IG51bGxwdHIgfTsKKyAgICBzdHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2UqIG1f
cGVuZGluZ0ltYWdlIHsgbnVsbHB0ciB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9IYXJkd2FyZUFj
Y2VsZXJhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0hhcmR3
YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5jcHAKaW5kZXggNDU3NjBlZWVlZDkuLmM5OTk4Mjc1NjQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVy
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvSGFyZHdh
cmVBY2NlbGVyYXRpb25NYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkhhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5oIgogCi0jaW5j
bHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KIApAQCAtMzQsNiAr
MzMsMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShXQVlMQU5EKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVk
ZSA8d3BlL2Zkby1lZ2wuaD4KKyNlbHNlCisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIK
KyNlbmRpZgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTcxLDEwICs3OCwxNyBAQCBIYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXI6
OkhhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlcigpCiAKICNpZiBQTEFURk9STShXQVlMQU5EKSAm
JiBVU0UoRUdMKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBl
KCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKSB7CisjaWYgVVNFKFdQRV9SRU5E
RVJFUikKKyAgICAgICAgaWYgKCF3cGVfZmRvX2luaXRpYWxpemVfZm9yX2VnbF9kaXNwbGF5KFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSkpIHsKKyAgICAgICAg
ICAgIG1fY2FuVXNlSGFyZHdhcmVBY2NlbGVyYXRpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6
c2luZ2xldG9uKCkuaXNSdW5uaW5nKCkpIHsKICAgICAgICAgICAgIG1fY2FuVXNlSGFyZHdhcmVB
Y2NlbGVyYXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorI2Vu
ZGlmCiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuY3BwCmluZGV4IGRjOGQ1M2NhZmJiLi5kZDI4NTFjNzA3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3Bw
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2F5bGFu
ZENvbXBvc2l0b3IuaCIKIAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCisjaWYg
UExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkgJiYgIVVTRShXUEVfUkVOREVSRVIpCiAKICNp
bmNsdWRlICJXZWJLaXRXYXlsYW5kU2VydmVyUHJvdG9jb2wuaCIKICNpbmNsdWRlIDxFR0wvZWds
Lmg+CkBAIC01NzYsNCArNTc2LDQgQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6dW5yZWdpc3Rl
cldlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAotI2VuZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCisjZW5kaWYgLy8gUExB
VEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkgJiYgIVVTRShXUEVfUkVOREVSRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oCmluZGV4IDE0ODE5
ZjhmYWM0Li41ZjBmNTQzNTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dheWxhbmRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBVU0UoRUdMKQorI2lmIFBMQVRGT1JNKFdBWUxBTkQp
ICYmIFVTRShFR0wpICYmICFVU0UoV1BFX1JFTkRFUkVSKQogCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgpAQCAtMTI5LDQgKzEyOSw0
IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZP
Uk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKSAmJiBV
U0UoRUdMKSAmJiAhVVNFKFdQRV9SRU5ERVJFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCmluZGV4IGVmMGQxZmM1
YjZmLi4yYmJkZGQ3YzIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5j
bHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgiCiAjZW5kaWYKIAotI2lmIFVTRShMSUJXUEUp
CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VMaWJX
UEUuaCIKICNlbmRpZgogCkBAIC00OCw4ICs0OCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxl
cmF0ZWRTdXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdl
LAogewogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hh
cmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisj
aWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZUxp
YldQRTo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CisjZWxzZQogICAgICAgICByZXR1cm4gQWNj
ZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZDo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYK
KyNlbmRpZgogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIGlmIChQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpYMTEpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNyZWF0
ZSh3ZWJQYWdlLCBjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA5MzMwMWNjNTBjYS4uYTMwMWE3Zjc5ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBh
cmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKICAgICAsIG1fb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kgeyBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5IH0KICAgICAsIG1fY3B1TGltaXQocGFyYW1ldGVycy5jcHVMaW1pdCkKLSNpZiBQTEFU
Rk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICAsIG1faG9zdEZpbGVEZXNjcmlw
dG9yKFdURk1vdmUocGFyYW1ldGVycy5ob3N0RmlsZURlc2NyaXB0b3IpKQogI2VuZGlmCiAjaWYg
RU5BQkxFKFZJRVdQT1JUX1JFU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDczMjg5MGM3YzU3Li5hNzM2ZTlkMTM4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE0Niw3ICsxMTQ2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWlu
dDY0X3QsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIGlu
dCByZWxlYXNlSG9zdEZpbGVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9ob3N0RmlsZURlc2NyaXB0
b3IucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7IH0KICNlbmRpZgogCkBAIC0xODk4LDcgKzE4OTgs
NyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5OwogICAgIGNvbnN0IE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAotI2lmIFBM
QVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIElQQzo6QXR0YWNobWVudCBt
X2hvc3RGaWxlRGVzY3JpcHRvcjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZh
Y2VMaWJXUEUuY3BwCmluZGV4IDk4M2I5MzE5YjI4Li5kMDQ4ZTA3NTM1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFj
ZUxpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3Bl
L0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuaCIKIAorI2lm
IFVTRShXUEVfUkVOREVSRVIpCisKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybURpc3BsYXlMaWJXUEUuaD4KICNpbmNsdWRlIDx3cGUvd3BlLWVnbC5oPgpA
QCAtNjUsNyArNjcsNyBAQCB2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRTo6aW5pdGlhbGl6
ZSgpCiAgICAgICAgIG51bGxwdHIKICAgICB9OwogICAgIHdwZV9yZW5kZXJlcl9iYWNrZW5kX2Vn
bF90YXJnZXRfc2V0X2NsaWVudChtX2JhY2tlbmQsICZzX2NsaWVudCwgdGhpcyk7Ci0gICAgd3Bl
X3JlbmRlcmVyX2JhY2tlbmRfZWdsX3RhcmdldF9pbml0aWFsaXplKG1fYmFja2VuZCwgZG93bmNh
c3Q8UGxhdGZvcm1EaXNwbGF5TGliV1BFPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXko
KSkuYmFja2VuZCgpLAorICAgIHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF90YXJnZXRfaW5pdGlh
bGl6ZShtX2JhY2tlbmQsIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheUxpYldQRT4oUGxhdGZvcm1E
aXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSkuYmFja2VuZCgpLAogICAgICAg
ICBzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQo
KSkpOwogfQogCkBAIC0xMTEsMyArMTEzLDQgQEAgdm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VMaWJX
UEU6OmRpZFJlbmRlckZyYW1lKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyNlbmRpZiAv
LyBVU0UoV1BFX1JFTkRFUkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5oCmlu
ZGV4IGE1ODZmMTYzODIyLi5lMTdkMWUwMGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZh
Y2VMaWJXUEUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRG
T1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRT
dXJmYWNlLmgiCiAKQEAgLTQ0LDcgKzQ0LDE0IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCB3aW5k
b3coKSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIGNsaWVudFJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBzaG91bGRQYWludE1pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZFBhaW50TWlycm9yZWQoKSBjb25zdCBvdmVy
cmlkZQorICAgIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIHJldHVybiB0cnVlOworI2Vs
c2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgfQogCiAgICAgdm9pZCBpbml0
aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZSgpIG92ZXJyaWRlOwpAQCAtNTks
NCArNjYsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8v
IFBMQVRGT1JNKFdQRSkKKyNlbmRpZiAvLyBVU0UoV1BFX1JFTkRFUkVSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOTZkM2NlOTUzZDMuLjA5MDE3OTQ4Y2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTYyLDYgKzYyLDEwIEBACiAjaW5j
bHVkZSAiUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JN
KFdBWUxBTkQpICYmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bURpc3BsYXlMaWJXUEUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVj
dDsKIH0KQEAgLTU0NCw2ICs1NDgsMTEgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXQVlMQU5E
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IG1fd2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5OwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBV
U0UoV1BFX1JFTkRFUkVSKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXlMaWJXUEU+IG1fd3BlRGlzcGxheTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2hhc1N1c3Bl
bmRlZFBhZ2VQcm94eSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3VzcGVuZGluZyB7IGZhbHNl
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGli
LmNwcAppbmRleCBlYTBmMTAyODA4Mi4uYzFmMTY4MDAzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
ICNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuaCIKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybURpc3BsYXlMaWJXUEUuaD4KICNpbmNsdWRlIDx3cGUvd3BlLmg+CiAjZW5kaWYKQEAgLTYx
LDkgKzYxLDI0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAgICAgICAgIGRvd25jYXN0PFBs
YXRmb3JtRGlzcGxheUxpYldQRT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLmlu
aXRpYWxpemUocGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3IucmVsZWFzZUZpbGVE
ZXNjcmlwdG9yKCkpOwogICAgIH0KICNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKLSAg
ICBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheSA9IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6
Y3JlYXRlKHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSk7CisgICAgaWYg
KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OldheWxhbmQpIHsKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAgICAgICBpZiAo
IXBhcmFtZXRlcnMuaXNTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICAgICAgYXV0byBo
b3N0Q2xpZW50RmlsZURlc2NyaXB0b3IgPSBwYXJhbWV0ZXJzLmhvc3RDbGllbnRGaWxlRGVzY3Jp
cHRvci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKTsKKyAgICAgICAgICAgIGlmIChob3N0Q2xpZW50
RmlsZURlc2NyaXB0b3IgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICB3cGVfbG9hZGVyX2luaXQo
cGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lLmRhdGEoKSk7CisgICAgICAgICAg
ICAgICAgbV93cGVEaXNwbGF5ID0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5TGliV1BFOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgICAgICBtX3dwZURpc3BsYXktPmluaXRpYWxpemUoaG9zdENsaWVu
dEZpbGVEZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgPSBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6
OmNyZWF0ZShwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUpOwogI2VuZGlm
CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIFdlYkNvcmU6OmluaXRp
YWxpemVHU3RyZWFtZXIoV1RGTW92ZShwYXJhbWV0ZXJzLmdzdHJlYW1lck9wdGlvbnMpKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCBkMjkwYmVmZmRkOS4uY2I4ZWZiMDkyMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlCkBAIC04NSw2ICs4NSw3IEBAIFdFQktJVF9PUFRJT05fREVGSU5F
KFVTRV9MSUJIWVBIRU4gIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGF1dG9tYXRpYyBo
eXBoCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfTElCU0VDUkVUICJXaGV0aGVyIHRvIGVuYWJs
ZSB0aGUgcGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgdXNpbmcgbGlic2VjcmV0LiIgUFVC
TElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX09QRU5KUEVHICJXaGV0aGVyIHRvIGVu
YWJsZSBzdXBwb3J0IGZvciBKUEVHMjAwMCBpbWFnZXMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRklORShVU0VfV09GRjIgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFdPRkYy
IFdlYiBGb250cy4iIFBVQkxJQyBPTikKK1dFQktJVF9PUFRJT05fREVGSU5FKFVTRV9XUEVfUkVO
REVSRVIgIldoZXRoZXIgdG8gZW5hYmxlIFdQRSByZW5kZXJpbmciIFBVQkxJQyBPTikKIAogIyBQ
cml2YXRlIG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhlIEdUSysgcG9ydC4gQ2hhbmdpbmcgdGhlc2Ug
b3B0aW9ucyBpcwogIyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLiBUaGV5IGFyZSBpbnRlbmRlZCBm
b3IgdXNlIG9ubHkgYnkgV2ViS2l0IGRldmVsb3BlcnMuCkBAIC0xMDIsNiArMTAzLDggQEAgV0VC
S0lUX09QVElPTl9ERVBFTkQoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIgRU5BQkxFX1gxMV9U
QVJHRVQpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfV0VCR0wgRU5BQkxFX09QRU5HTCkK
IFdFQktJVF9PUFRJT05fREVQRU5EKFVTRV9SRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XIEVO
QUJMRV9PUEVOR0wpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChVU0VfUkVESVJFQ1RFRF9YQ09NUE9T
SVRFX1dJTkRPVyBFTkFCTEVfWDExX1RBUkdFVCkKK1dFQktJVF9PUFRJT05fREVQRU5EKFVTRV9X
UEVfUkVOREVSRVIgRU5BQkxFX09QRU5HTCkKK1dFQktJVF9PUFRJT05fREVQRU5EKFVTRV9XUEVf
UkVOREVSRVIgRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQogCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChFTkFCTEVfREVWRUxPUEVSX01PREUgJHtERVZFTE9QRVJfTU9ERX0pCiBpZiAoREVWRUxPUEVS
X01PREUpCkBAIC0xOTgsNiArMjAxLDE4IEBAIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVf
T1NfREFSS19NT0RFX1NVUFBPUlQgMSkKIHNldChnbGliX2NvbXBvbmVudHMgZ2lvIGdpby11bml4
IGdvYmplY3QgZ3RocmVhZCBnbW9kdWxlKQogZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFVSVJF
RCBDT01QT05FTlRTICR7Z2xpYl9jb21wb25lbnRzfSkKIAoraWYgKFVTRV9XUEVfUkVOREVSRVIp
CisgICAgZmluZF9wYWNrYWdlKFdQRSAxLjMuMCkKKyAgICBpZiAoTk9UIFdQRV9GT1VORCkKKyAg
ICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGlid3BlIGlzIHJlcXVpcmVkIGZvciBVU0VfV1BF
X1JFTkRFUkVSIikKKyAgICBlbmRpZiAoKQorCisgICAgZmluZF9wYWNrYWdlKFdQRUJhY2tlbmQt
ZmRvIDEuMy4wKQorICAgIGlmIChOT1QgV1BFQkFDS0VORF9GRE9fRk9VTkQpCisgICAgICAgIG1l
c3NhZ2UoRkFUQUxfRVJST1IgIldQRUJhY2tlbmQtZmRvIGlzIHJlcXVpcmVkIGZvciBVU0VfV1BF
X1JFTkRFUkVSIikKKyAgICBlbmRpZiAoKQorZW5kaWYgKCkKKwogaWYgKEVOQUJMRV9YU0xUKQog
ICAgIGZpbmRfcGFja2FnZShMaWJYc2x0IDEuMS43IFJFUVVJUkVEKQogZW5kaWYgKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCmluZGV4IGE0ZTg3OTMzOWFjLi5mYjA3NmVlNTg3
MyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCkBAIC0xMTEsNiArMTExLDcg
QEAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCiBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfRlJFRVRZUEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSEFS
RkJVWlogT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV1BFIE9OKQorU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX1dQRV9SRU5ERVJFUiBPTikKIAogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0lOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSICR7RU5BQkxFX1JFTU9URV9JTlNQ
RUNUT1J9KQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VOSVhfRE9NQUlOX1NPQ0tFVFMg
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV1BFLmNtYWtlCmluZGV4IDVmN2YyZjYyZGNlLi41Y2VkZmU3YzQwOSAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L09wdGlvbnNXUEUuY21ha2UKQEAgLTE1OCw2ICsxNTgsNyBAQCBTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfR0NSWVBUIFRSVUUpCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCRVBP
WFkgVFJVRSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9MSUJXUEUgVFJVRSkKIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOR0xfRVMgVFJVRSkKK1NFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFVTRV9XUEVfUkVOREVSRVIgVFJVRSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9YREdNSU1FIFRSVUUpCiAKIGlmIChXVEZfQ1BVX0FSTSBPUiBXVEZfQ1BVX01JUFMpCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTEyMDkzZjBm
ZmUuLmI5ZGM0MDM4MTZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDUtMTYgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSBXUEVCYWNrZW5k
LWZkbyBmb3IgYWNjZWxlcmF0aW5nIGNvbXBvc2l0aW5nIGluIFdheWxhbmQgaW5zdGVhZCBvZiB0
aGUgbmVzdGVkIGNvbXBvc2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5Nzk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBXUEVCYWNrZW5kLWZkbyB0byBqaGJ1aWxkIG1vZHVsZXNldC4KKwor
ICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6CisKIDIwMTktMDUtMTUgIEFha2FzaCBKYWlu
ICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgZG91YmxlLXF1b3Rl
cyB3aXRoIHNpbmdsZSBxdW90ZXMgaW4gc3RlcHMucHkKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9q
aGJ1aWxkLm1vZHVsZXMgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCmluZGV4IDdiMDA2Zjdl
MzA3Li4zNzhhODVjYmQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwor
KysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0zMiw2ICszMiw3IEBACiAgICAgICA8
ZGVwIHBhY2thZ2U9ImxpYmdwZy1lcnJvciIvPgogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJnY3J5
cHQiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ib3BlbmpwZWciLz4KKyAgICAgIDxkZXAgcGFja2Fn
ZT0id3BlYmFja2VuZC1mZG8iLz4KICAgICAgIDxpZiBjb25kaXRpb24tc2V0PSJsaW51eCI+CiAg
ICAgICAgICAgPGRlcCBwYWNrYWdlPSJ4ZGctZGJ1cy1wcm94eSIvPgogICAgICAgICAgIDxkZXAg
cGFja2FnZT0ieHNlcnZlciIvPgpAQCAtODEsNiArODIsOCBAQAogICAgICAgaHJlZj0iaHR0cDov
L3dlYmtpdGd0ay5vcmcvamhidWlsZF9taXJyb3IvIi8+CiAgIDxyZXBvc2l0b3J5IHR5cGU9InRh
cmJhbGwiIG5hbWU9ImdudXBnLm9yZyIKICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LmdudXBnLm9y
Zy9mdHAvZ2NyeXB0LyIvPgorICA8cmVwb3NpdG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJ3cGV3
ZWJraXQiCisgICAgICBocmVmPSJodHRwczovL3dwZXdlYmtpdC5vcmcvcmVsZWFzZXMvIi8+CiAK
ICAgPGNtYWtlIGlkPSJicm90bGkiPgogICAgIDxicmFuY2ggcmVwbz0iZ2l0aHViLmNvbSIgbW9k
dWxlPSJnb29nbGUvYnJvdGxpLmdpdCIgY2hlY2tvdXRkaXI9ImJyb3RsaSIgdGFnPSJ2MS4wLjUi
Lz4KQEAgLTQ2NCw2ICs0NjcsMjAgQEAKICAgICAgICAgICAgIGhhc2g9InNoYTI1NjozZGM3ODdj
MWJiNjAyM2JhODQ2YzJhMGQ5YjFmNmUxNzlmMWNkMjU1MTcyYmRlOWViNzViMDFmMWU2YzdkNzFh
Ii8+CiAgIDwvY21ha2U+CiAKKyAgPGNtYWtlIGlkPSJsaWJ3cGUiPgorICAgIDxicmFuY2ggcmVw
bz0id3Bld2Via2l0IiBtb2R1bGU9ImxpYndwZS0xLjMuMC50YXIueHoiIHZlcnNpb249IjEuMy4w
IgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjY4OTg2NjQ3YWYyNDMzZTc0ZjgzMGEwNmE0OTdl
ZDUzNmRiYzg3MjFiMDQwMjZlZDgyNjExYTU4NGJlNzExNDgiLz4KKyAgPC9jbWFrZT4KKworICA8
Y21ha2UgaWQ9IndwZWJhY2tlbmQtZmRvIj4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgPGRl
cCBwYWNrYWdlPSJsaWJ3cGUiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgorICAgIDwv
ZGVwZW5kZW5jaWVzPgorICAgIDxicmFuY2ggcmVwbz0id3Bld2Via2l0IiBtb2R1bGU9IndwZWJh
Y2tlbmQtZmRvLTEuMy4wLnRhci54eiIgdmVyc2lvbj0iMS4zLjAiCisgICAgICAgICAgICBoYXNo
PSJzaGEyNTY6ZmVkOWFiMjlmNWQ1M2NmNDY1MTg4ZGE4MGQwMTRmM2FhMDY3Yzc3NzA0Zjg1MDhj
NmJkMTc5NzFmZGVkMzU5ZCIvPgorICA8L2NtYWtlPgorCiAgIDwhLS0gRGVwZW5kZW5jaWVzIGxp
c3RlZCBiZWxvdyB0aGlzIHBvaW50IGFyZSBub3QgdGhvdWdodCB0byBhZmZlY3QgdGVzdCByZXN1
bHRzLCBhbmQgYXJlIG9ubHkKICAgICAgICBpbmNsdWRlZCBiZWNhdXNlIHRoZXkgdGhlbXNlbHZl
cyBkZXBlbmQgb24gb3RoZXIgZGVwZW5kZW5jaWVzIGJ1aWx0IGJ5IGpoYnVpbGQuIC0tPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370687</attachid>
            <date>2019-05-27 03:49:00 -0700</date>
            <delta_ts>2019-05-27 05:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-wpe.diff</filename>
            <type>text/plain</type>
            <size>57239</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNDVmMGFiODJhYy4uYzE0
YTYyMzk4YjEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0wNS0xNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gVXNlIFdQRUJhY2tlbmQtZmRvIGZvciBhY2NlbGVyYXRp
bmcgY29tcG9zaXRpbmcgaW4gV2F5bGFuZCBpbnN0ZWFkIG9mIHRoZSBuZXN0ZWQgY29tcG9zaXRv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTQ0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFVT
RV9XUEVfUkVOREVSRVIgb3B0aW9uIHRvIHVzZSBXUEVCYWNrZW5kLWZkby4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNX
UEUuY21ha2U6CisKIDIwMTktMDUtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtl
IGFuZCBORVdTIGZvciAyLjI1LjEgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVmNDFmZGYyODgzLi5j
OTMxZDBjNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA1LTE2ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBV
c2UgV1BFQmFja2VuZC1mZG8gZm9yIGFjY2VsZXJhdGluZyBjb21wb3NpdGluZyBpbiBXYXlsYW5k
IGluc3RlYWQgb2YgdGhlIG5lc3RlZCBjb21wb3NpdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cp
OiBDaGVjayBjdXJyZW50IGRpc3BsYXkgaXMgWDExIGJlZm9yZSB0cnlpbmcgdG8gY3JlYXRlIGEg
R0xYIGNvbnRleHQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6Y3JlYXRlUGxhdGZvcm1E
aXNwbGF5KTogVXNlIFVTRShXUEVfUkVOREVSRVIpIGluc3RlYWQgb2YgVVNFKExJQldQRSkuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQpOiBVc2UgVVNFKFdQRV9SRU5ERVJF
UikgaW5zdGVhZCBvZiBQTEFURk9STShXUEUpLgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0
RUdMOjpjcmVhdGVDb250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRF
R0w6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHTENv
bnRleHRFR0w6On5HTENvbnRleHRFR0wpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTExpYldQRS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlz
cGxheUxpYldQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlMaWJXUEU6
OlBsYXRmb3JtRGlzcGxheUxpYldQRSk6IEluIEdUSyBwb3J0IHNldCB0aGUgZGlzcGxheSBhcyB0
aGUgc2hhcmVkIG9uZSBmb3IgY29tcG9zaXRpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbGlid3BlL1BsYXRmb3JtRGlzcGxheUxpYldQRS5oOgorCiAyMDE5LTA1LTI3ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBGaXggR1RLIGRpc3RjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5ZjgyYjRm
Y2MzNC4uZDllZGYwMTlkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zNiw2ICsz
NiwxMiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS90ZXh0L2d0ayIKICkKIAoraWYgKFVTRV9XUEVf
UkVOREVSRVIpCisgICAgbGlzdChBUFBFTkQgV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCisg
ICAgICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUiCisgICAgKQor
ZW5kaWYgKCkKKwogbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBl
ZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCiAKQEAgLTEyMCw2ICsxMjYsMTIgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke1pMSUJfTElCUkFSSUVTfQogKQogCitpZiAoVVNF
X1dQRV9SRU5ERVJFUikKKyAgICBsaXN0KEFQUEVORCBXZWJDb3JlX0xJQlJBUklFUworICAgICAg
ICAke1dQRV9MSUJSQVJJRVN9CisgICAgKQorZW5kaWYgKCkKKwogbGlzdChBUFBFTkQgV2ViQ29y
ZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7QVRLX0lOQ0xVREVfRElSU30KICAg
ICAke0VOQ0hBTlRfSU5DTFVERV9ESVJTfQpAQCAtMTMyLDYgKzE0NCwxMiBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtaTElCX0lOQ0xVREVf
RElSU30KICkKIAoraWYgKFVTRV9XUEVfUkVOREVSRVIpCisgICAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUworICAgICAgICAke1dQRV9JTkNMVURFX0RJUlN9
CisgICAgKQorZW5kaWYgKCkKKwogaWYgKFVTRV9PUEVOR0xfRVMpCiAgICAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zM0RPcGVuR0xFUy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggMTdlN2I0YzAyNzIuLjc1
ZmMwYTVkM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dApAQCAtNjcsNiArNjcsNyBAQCBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CYWNraW5nU3RvcmVCYWNrZW5kQ2Fpcm9YMTEuY3BwIEBuby11bmlmeQogCiBwbGF0
Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTExpYldQRS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xXYXlsYW5kLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xYMTEuY3BwIEBuby11bmlmeQogCkBAIC03NCw2ICs3NSw4IEBAIHBsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZUdTdHJlYW1lckNhaXJvLmNwcAogCitwbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUvUGxhdGZvcm1E
aXNwbGF5TGliV1BFLmNwcAorCiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFyeU9w
ZW5HTFNldHRpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcAppbmRleCA1ZDBiNWVkNDI4Zi4uZGMzYWI5MjczYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtOTAsOCArOTAsMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9y
V2luZG93KEdMTmF0aXZlV2luZG93VHlwZQogI2VuZGlmCiAKICNpZiBVU0UoR0xYKQotICAgIGlm
IChhdXRvIGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFu
ZGxlLCBkaXNwbGF5KSkKLSAgICAgICAgcmV0dXJuIGdseENvbnRleHQ7CisgICAgaWYgKGRpc3Bs
YXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7CisgICAgICAgIGlmIChh
dXRvIGdseENvbnRleHQgPSBHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQod2luZG93SGFuZGxl
LCBkaXNwbGF5KSkKKyAgICAgICAgICAgIHJldHVybiBnbHhDb250ZXh0OworICAgIH0KICNlbmRp
ZgogI2lmIFVTRShFR0wpCiAgICAgaWYgKGF1dG8gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6
Y3JlYXRlQ29udGV4dCh3aW5kb3dIYW5kbGUsIGRpc3BsYXkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKaW5kZXggZDIzYzYw
NzkyZWEuLjZmOWEwMzlmMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRl
ICJQbGF0Zm9ybURpc3BsYXlXaW4uaCIKICNlbmRpZgogCi0jaWYgVVNFKExJQldQRSkKKyNpZiBV
U0UoV1BFX1JFTkRFUkVSKQogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheUxpYldQRS5oIgogI2Vu
ZGlmCiAKQEAgLTkxLDcgKzkxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtRGlzcGxheT4g
UGxhdGZvcm1EaXNwbGF5OjpjcmVhdGVQbGF0Zm9ybURpc3BsYXkoKQogI2VuZGlmCiAjZW5kaWYg
Ly8gUExBVEZPUk0oR1RLKQogCi0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVS
KQogICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlMaWJXUEU6OmNyZWF0ZSgpOwogI2VsaWYgUExB
VEZPUk0oV0lOKQogICAgIHJldHVybiBQbGF0Zm9ybURpc3BsYXlXaW46OmNyZWF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaApp
bmRleCA0ZjI5MjlhNjQ4OC4uNWQ2YWI1YWZlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFdpbmRvd3MsCiAjZW5kaWYKLSNpZiBV
U0UoTElCV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgICAgIFdQRSwKICNlbmRpZgog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wv
R0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9H
TENvbnRleHRFR0wuY3BwCmluZGV4IGQ2ZmYzNzkwYTM3Li4xNGE3YjRjOTdmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5j
cHAKQEAgLTE4Miw3ICsxODIsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENv
bnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoR0xOYXRpdmVXaW5kb3dUeQogICAgIGlmIChw
bGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkK
ICAgICAgICAgc3VyZmFjZSA9IGNyZWF0ZVdpbmRvd1N1cmZhY2VXYXlsYW5kKGRpc3BsYXksIGNv
bmZpZywgd2luZG93KTsKICNlbmRpZgotI2VsaWYgUExBVEZPUk0oV1BFKQorI2VuZGlmCisKKyNp
ZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIGlmIChwbGF0Zm9ybURpc3BsYXkudHlwZSgpID09IFBs
YXRmb3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICBzdXJmYWNlID0gY3JlYXRlV2luZG93
U3VyZmFjZVdQRShkaXNwbGF5LCBjb25maWcsIHdpbmRvdyk7CiAjZWxzZQpAQCAtMjc5LDcgKzI4
MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRl
Q29udGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUgd2luCiAgICAgICAgIGlmIChwbGF0Zm9ybURpc3Bs
YXkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkKICAgICAgICAgICAg
IGNvbnRleHQgPSBjcmVhdGVXYXlsYW5kQ29udGV4dChwbGF0Zm9ybURpc3BsYXksIGVnbFNoYXJp
bmdDb250ZXh0KTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRF
UkVSKQogICAgICAgICBpZiAocGxhdGZvcm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3Bs
YXk6OlR5cGU6OldQRSkKICAgICAgICAgICAgIGNvbnRleHQgPSBjcmVhdGVXUEVDb250ZXh0KHBs
YXRmb3JtRGlzcGxheSwgZWdsU2hhcmluZ0NvbnRleHQpOwogI2VuZGlmCkBAIC0zMTYsNyArMzE4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVT
aGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkKICAgICAgICAgaWYgKHBsYXRmb3JtRGlzcGxh
eS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQogICAgICAgICAgICAg
Y29udGV4dCA9IGNyZWF0ZVdheWxhbmRDb250ZXh0KHBsYXRmb3JtRGlzcGxheSk7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICAgICAgaWYgKHBs
YXRmb3JtRGlzcGxheS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAg
ICAgICAgICBjb250ZXh0ID0gY3JlYXRlV1BFQ29udGV4dChwbGF0Zm9ybURpc3BsYXkpOwogI2Vu
ZGlmCkBAIC0zNTksNyArMzYxLDcgQEAgR0xDb250ZXh0RUdMOjp+R0xDb250ZXh0RUdMKCkKICNp
ZiBQTEFURk9STShXQVlMQU5EKQogICAgIGRlc3Ryb3lXYXlsYW5kV2luZG93KCk7CiAjZW5kaWYK
LSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBkZXN0cm95V1BF
VGFyZ2V0KCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCBjYmQ2MzQxZmU1ZC4uMGM3YTg0OGU4NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRl
eHRFR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMLmgKQEAgLTMyLDcgKzMyLDcgQEAKIHN0cnVjdCB3bF9lZ2xfd2luZG93OwogI2VuZGlm
CiAKLSNpZiBVU0UoTElCV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiBzdHJ1Y3Qgd3BlX3Jl
bmRlcmVyX2JhY2tlbmRfZWdsX29mZnNjcmVlbl90YXJnZXQ7CiAjZW5kaWYKIApAQCAtODIsNyAr
ODIsNyBAQCBwcml2YXRlOgogICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xD
b250ZXh0LCBFR0xTdXJmYWNlLCBXbFVuaXF1ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4mJiwgc3Ry
dWN0IHdsX2VnbF93aW5kb3cqKTsKICAgICB2b2lkIGRlc3Ryb3lXYXlsYW5kV2luZG93KCk7CiAj
ZW5kaWYKLSNpZiBVU0UoTElCV1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgR0xDb250
ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UsIHN0cnVjdCB3
cGVfcmVuZGVyZXJfYmFja2VuZF9lZ2xfb2Zmc2NyZWVuX3RhcmdldCopOwogICAgIHZvaWQgZGVz
dHJveVdQRVRhcmdldCgpOwogI2VuZGlmCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdheWxhbmRDb250ZXh0
KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsK
ICAgICBzdGF0aWMgRUdMU3VyZmFjZSBjcmVhdGVXaW5kb3dTdXJmYWNlV2F5bGFuZChFR0xEaXNw
bGF5LCBFR0xDb25maWcsIEdMTmF0aXZlV2luZG93VHlwZSk7CiAjZW5kaWYKLSNpZiBVU0UoTElC
V1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxH
TENvbnRleHRFR0w+IGNyZWF0ZVdQRUNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4
dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBFR0xTdXJmYWNlIGNyZWF0
ZVdpbmRvd1N1cmZhY2VXUEUoRUdMRGlzcGxheSwgRUdMQ29uZmlnLCBHTE5hdGl2ZVdpbmRvd1R5
cGUpOwogI2VuZGlmCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKICAgICBXbFVuaXF1ZVB0
cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4gbV93bFN1cmZhY2U7CiAgICAgc3RydWN0IHdsX2VnbF93aW5k
b3cqIG1fd2xXaW5kb3cgeyBudWxscHRyIH07CiAjZW5kaWYKLSNpZiBVU0UoTElCV1BFKQorI2lm
IFVTRShXUEVfUkVOREVSRVIpCiAgICAgc3RydWN0IHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF9v
ZmZzY3JlZW5fdGFyZ2V0KiBtX3dwZVRhcmdldCB7IG51bGxwdHIgfTsKICNlbmRpZgogI2lmIFVT
RShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vn
bC9HTENvbnRleHRFR0xMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTExpYldQRS5jcHAKaW5kZXggMWVkYjVmYWRkNzkuLjQwOGRmM2Iz
OThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcApAQCAtMTksOCArMTksNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkdMQ29udGV4dEVHTC5oIgogCi0jaWYgVVNFKEVHTCkgJiYg
VVNFKExJQldQRSkKLQorI2lmIFVTRShFR0wpICYmIFVTRShXUEVfUkVOREVSRVIpCiAjaW5jbHVk
ZSAiUGxhdGZvcm1EaXNwbGF5TGliV1BFLmgiCiAKICNpZiBVU0UoTElCRVBPWFkpCkBAIC0yOSw2
ICsyOCwxMSBAQAogI2RlZmluZSBfX0dCTV9fIDEKICNpbmNsdWRlICJFcG94eUVHTC5oIgogI2Vs
c2UKKyNpZiBQTEFURk9STShXQVlMQU5EKQorLy8gVGhlc2UgaW5jbHVkZXMgbmVlZCB0byBiZSBp
biB0aGlzIG9yZGVyIGJlY2F1c2Ugd2F5bGFuZC1lZ2wuaCBkZWZpbmVzIFdMX0VHTF9QTEFURk9S
TQorLy8gYW5kIGVnbHBsYXRmb3JtLmgsIGluY2x1ZGVkIGJ5IGVnbC5oLCBjaGVja3MgdGhhdCB0
byBkZWNpZGUgd2hldGhlciBpdCdzIFdheWxhbmQgcGxhdGZvcm0uCisjaW5jbHVkZSA8d2F5bGFu
ZC1lZ2wuaD4KKyNlbmRpZgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNlbmRpZgogCkBAIC05Niw0
ICsxMDAsNCBAQCB2b2lkIEdMQ29udGV4dEVHTDo6ZGVzdHJveVdQRVRhcmdldCgpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFVTRShFR0wpICYmIFVTRShMSUJXUEUpCisj
ZW5kaWYgLy8gVVNFKEVHTCkgJiYgVVNFKFdQRV9SRU5ERVJFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA1Y2I1Zjc1MzZh
Yy4uZjBiN2E0M2RkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTEwMiw3ICsxMDIsOSBAQAogCiAjaWYgUExBVEZPUk0o
V0FZTEFORCkKICNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmgiCi0jZWxpZiBQTEFU
Rk9STShXUEUpCisjZW5kaWYKKworI2lmIFVTRShXUEVfUkVOREVSRVIpCiAjaW5jbHVkZSAiUGxh
dGZvcm1EaXNwbGF5TGliV1BFLmgiCiAjZW5kaWYKIApAQCAtNDQ4LDcgKzQ1MCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KCkKICAg
ICAgICAgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJF
UikKICAgICAgICAgQVNTRVJUKGlzPFBsYXRmb3JtRGlzcGxheUxpYldQRT4oc2hhcmVkRGlzcGxh
eSkpOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJDcmVhdGluZyBXUEUg
c2hhcmVkIEVHTCBkaXNwbGF5Iik7CiAgICAgICAgIGlmIChzaG91bGRBZG9wdFJlZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2xpYndwZS9QbGF0Zm9ybURp
c3BsYXlMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3Bl
L1BsYXRmb3JtRGlzcGxheUxpYldQRS5jcHAKaW5kZXggZDZkOGY2YzRmZGMuLmFiMTBiMzBkMTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUvUGxh
dGZvcm1EaXNwbGF5TGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9saWJ3cGUvUGxhdGZvcm1EaXNwbGF5TGliV1BFLmNwcApAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheUxpYldQRS5oIgog
Ci0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogCiAjaW5jbHVkZSAiR0xD
b250ZXh0RUdMLmgiCiAKQEAgLTM2LDYgKzM2LDExIEBACiAjZGVmaW5lIF9fR0JNX18gMQogI2lu
Y2x1ZGUgIkVwb3h5RUdMLmgiCiAjZWxzZQorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisvLyBUaGVz
ZSBpbmNsdWRlcyBuZWVkIHRvIGJlIGluIHRoaXMgb3JkZXIgYmVjYXVzZSB3YXlsYW5kLWVnbC5o
IGRlZmluZXMgV0xfRUdMX1BMQVRGT1JNCisvLyBhbmQgZWdscGxhdGZvcm0uaCwgaW5jbHVkZWQg
YnkgZWdsLmgsIGNoZWNrcyB0aGF0IHRvIGRlY2lkZSB3aGV0aGVyIGl0J3MgV2F5bGFuZCBwbGF0
Zm9ybS4KKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8RUdML2Vn
bC5oPgogI2VuZGlmCiAKQEAgLTUxLDYgKzU2LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
RGlzcGxheUxpYldQRT4gUGxhdGZvcm1EaXNwbGF5TGliV1BFOjpjcmVhdGUoKQogUGxhdGZvcm1E
aXNwbGF5TGliV1BFOjpQbGF0Zm9ybURpc3BsYXlMaWJXUEUoKQogICAgIDogUGxhdGZvcm1EaXNw
bGF5KE5hdGl2ZURpc3BsYXlPd25lZDo6Tm8pCiB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIFBs
YXRmb3JtRGlzcGxheTo6c2V0U2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCp0aGlzKTsKKyNl
bmRpZgogfQogCiBQbGF0Zm9ybURpc3BsYXlMaWJXUEU6On5QbGF0Zm9ybURpc3BsYXlMaWJXUEUo
KQpAQCAtNzMsNCArODEsNCBAQCB2b2lkIFBsYXRmb3JtRGlzcGxheUxpYldQRTo6aW5pdGlhbGl6
ZShpbnQgaG9zdEZkKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBVU0Uo
TElCV1BFKQorI2VuZGlmIC8vIFVTRShXUEVfUkVOREVSRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUvUGxhdGZvcm1EaXNwbGF5TGliV1BFLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUvUGxhdGZvcm1EaXNwbGF5
TGliV1BFLmgKaW5kZXggMDU4MDM2YmQxODkuLmJkZTI2ZTY3Y2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9saWJ3cGUvUGxhdGZvcm1EaXNwbGF5TGliV1BF
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3Jt
RGlzcGxheUxpYldQRS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
VVNFKExJQldQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1E
aXNwbGF5LmgiCiAKQEAgLTU1LDQgKzU1LDQgQEAgcHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19QTEFURk9STV9ESVNQTEFZKFBsYXRmb3JtRGlzcGxheUxpYldQRSwgV1BFKQogCi0j
ZW5kaWYgLy8gVVNFKExJQldQRSkKKyNlbmRpZiAvLyBVU0UoV1BFX1JFTkRFUkVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA1ZmE2OWE4ZGFhMi4uN2VjZjZmN2ExNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAK
KzIwMTktMDUtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIFVzZSBXUEVCYWNrZW5kLWZkbyBmb3IgYWNjZWxlcmF0aW5nIGNvbXBv
c2l0aW5nIGluIFdheWxhbmQgaW5zdGVhZCBvZiB0aGUgbmVzdGVkIGNvbXBvc2l0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXUEVCYWNrZW5k
LWZkbyBpbXBsZW1lbnRhdGlvbiBpcyBxdWl0ZSBzaW1pbGFyIHRvIG91ciBXYXlsYW5kIG5lc3Rl
ZCBjb21wb3NpdG9yLCBidXQgbW9yZSBlZmZpY2llbnQgKHVzaW5nCisgICAgICAgIGxpbnV4IGRt
YWJ1ZiwgcmVzb3VyY2UgY2FjaGluZywgZXRjLikuIFRoaXMgYWxsb3dzIHVzIHRvIHNoYXJlIGV2
ZW4gbW9yZSBjb2RlIHdpdGggV1BFIHBvcnQgdG9vLgorCisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZGVk
Q29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KTogV1BFIGRvZXNuJ3Qgc3VwcG9ydCBmb3JjZSByZXBh
aW50IHlldC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6IFVzZSBVU0UoV1BFX1JFTkRFUkVSKSBpbnN0ZWFkIG9mIFBMQVRGT1JNKFdQRSkuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6IERpdHRvLgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKTogRGl0
dG8uCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpob3N0Rmls
ZURlc2NyaXB0b3IpOiBJbXBsZW1lbnQgaXQgd2hlbiB1c2luZyBXUEUganVzdCBjYWxsaW5nIHdl
YmtpdFdlYlZpZXdCYXNlUmVuZGVySG9zdEZpbGVEZXNjcmlwdG9yKCkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZVdlYlBhZ2UpOiBJbml0aWFsaXplIHRoZSB3ZWIgcGFnZSBhZnRlciB0aGUgYWNjZWxlcmF0
ZWQgYmFja2luZyBzdG9yZSBpcyBjcmVhdGVkLCBzaW5jZQorICAgICAgICBpdCdzIHVzZWQgbm93
IGR1cmluZyBpbnRpYWxpemF0aW9uLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSZW5kZXJI
b3N0RmlsZURlc2NyaXB0b3IpOiBSZXR1cm4gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnJlbmRl
ckhvc3RGaWxlRGVzY3JpcHRvcigpCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJz
KTogVXNlIFVTRShXUEVfUkVOREVSRVIpIGluc3RlYWQgb2YgUExBVEZPUk0oV1BFKS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOiBSZW1vdmUgd2F5bGFuZCBkaXNw
bGF5IG5hbWUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0aWFsaXplIHdheWxhbmQgZGlzcGxheSBuYW1l
IHdoZW4gbm90IHVzaW5nIFdQRSBoZXJlCisgICAgICAgIG5vdy4gSW4gY2FzZSBvZiB1c2luZyBX
UEUsIGluaXRpYWxpemUgaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yIGFuZCBpbXBsZW1lbnRhdGlv
bkxpYnJhcnlOYW1lLgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1
bmNoT3B0aW9ucyk6IFJlbW92ZSB1bnVzZWQgd2F5bGFuZCBzb2NrZXQgY29tbWFuZCBsaW5lIHBy
b2Nlc3MgcGFyYW1ldGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OnJl
bmRlckhvc3RGaWxlRGVzY3JpcHRvcik6IFJldHVybiAtMSBieSBkZWZhdWx0LgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpjcmVhdGUpOiBXaGVu
IHVzaW5nIFdQRSBjYWxsIHdwZV9mZG9faW5pdGlhbGl6ZV9mb3JfZWdsX2Rpc3BsYXkoKSBhbmQK
KyAgICAgICAgY2hlY2sgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgZXh0ZW5zaW9ucy4KKyAgICAgICAg
KFdlYktpdDo6QWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjpBY2NlbGVyYXRlZEJhY2tp
bmdTdG9yZVdheWxhbmQpOiBXaGVuIHVzaW5nIFdQRSBpbml0aWFsaXplIHRoZSB2aWV3IGJhY2tl
bmQuCisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6fkFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCk6IFdoZW4gdXNpbmcgV1BFIHJlbGVhc2UgdGhl
IEVHTCBpbWFnZXMKKyAgICAgICAgc3RpbGwgaW4gdXNlIGFuZCB0aGUgdmlldyB0ZXh0dXJlLgor
ICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnJlbmRlckhv
c3RGaWxlRGVzY3JpcHRvcik6IENhbGwgd3BlX3ZpZXdfYmFja2VuZF9nZXRfcmVuZGVyZXJfaG9z
dF9mZCgpLgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6
OmRpc3BsYXlCdWZmZXIpOiBDcmVhdGUgdGhlIHZpZXcgdGV4dHVyZSBpZiBuZWVkZWQsIHNhdmUg
dGhlIHBlbmRpbmcKKyAgICAgICAgaW1hZ2UgYW5kIHNjaGVkdWxlIGEgcmVkcmF3LgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KTogV2hlbiB1
c2luZyBXUEUgY29tbWl0IHRoZSBwZW5kaW5nIGltYWdlIGFuZCB1c2UgaXQgYXMgdGFyZ2V0IG9m
CisgICAgICAgIHRoZSB2aWV3IHRleHR1cmUuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0hh
cmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkhhcmR3YXJl
QWNjZWxlcmF0aW9uTWFuYWdlcjo6SGFyZHdhcmVBY2NlbGVyYXRpb25NYW5hZ2VyKTogV2hlbiB1
c2luZyBXUEUgZGlzYWJsZSBoYXJkd2FyZSBhY2NlbGVyYXRpb24KKyAgICAgICAgaWYgd3BlX2Zk
b19pbml0aWFsaXplX2Zvcl9lZ2xfZGlzcGxheSgpIGZhaWxzLgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0
ZWRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVh
dGUpOiBDcmVhdGUgYW4gQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFIGZvciBHVEsgcG9ydCB3aGVu
IHVzaW5nIFdQRSBhbmQgc2hhcmVkCisgICAgICAgIGRpc3BsYXkgaXMgV2F5bGFuZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3Bl
L0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFjY2VsZXJh
dGVkU3VyZmFjZUxpYldQRTo6aW5pdGlhbGl6ZSk6IFVzZSB0aGUgc2hhcmVkIGRpc3BsYXkgZm9y
IGNvbXBvc2l0aW5nIGluc3RlYWQgb2Ygc2hhcmVkIGRpc3BsYXkuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc0dMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSB0aGUgd3BlIGRpc3BsYXkgd2hlbiB1c2lu
ZyBXUEUuCisKIDIwMTktMDUtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBPcHRpb25zR1RLLmNtYWtlIGFu
ZCBORVdTIGZvciAyLjI1LjEgcmVsZWFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOGUw
NmMwYWQ2YjMuLmIxOGRiNDA0ODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQyOCw2
ICs0MjgsMTYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgJHtMSUJTT1VQX0lOQ0xVREVfRElSU30KICkKIAoraWYgKFVTRV9XUEVfUkVOREVSRVIp
CisgICAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAgICAgIiR7
V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZSIKKyAgICApCisgICAgbGlzdChB
UFBFTkQgV2ViS2l0X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgICAgICR7V1BFX0lO
Q0xVREVfRElSU30KKyAgICAgICAgJHtXUEVCQUNLRU5EX0ZET19JTkNMVURFX0RJUlN9CisgICAg
KQorZW5kaWYgKCkKKwogaWYgKFVTRV9MSUJOT1RJRlkpCiBsaXN0KEFQUEVORCBXZWJLaXRfU1lT
VEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0xJQk5PVElGWV9JTkNMVURFX0RJUlN9CkBA
IC00NjQsNiArNDc0LDEzIEBAIGxpc3QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMKICMgV2ViQ29y
ZSBzaG91bGQgYmUgc3BlY2lmZWQgYmVmb3JlIGFuZCBhZnRlciBXZWJDb3JlUGxhdGZvcm1HVEsK
IGxpc3QoQVBQRU5EIFdlYktpdF9MSUJSQVJJRVMgUFJJVkFURSBXZWJDb3JlKQogCitpZiAoVVNF
X1dQRV9SRU5ERVJFUikKKyAgICBsaXN0KEFQUEVORCBXZWJLaXRfTElCUkFSSUVTCisgICAgICAk
e1dQRV9MSUJSQVJJRVN9CisgICAgICAke1dQRUJBQ0tFTkRfRkRPX0xJQlJBUklFU30KKyAgICAp
CitlbmRpZiAoKQorCiBpZiAoTElCTk9USUZZX0ZPVU5EKQogbGlzdChBUFBFTkQgV2ViS2l0X0xJ
QlJBUklFUwogICAgIFBSSVZBVEUgJHtMSUJOT1RJRllfTElCUkFSSUVTfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5k
ZXggZTBjZGVlZGZjMjEuLjUzMGRhODY0ODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
dGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTE4OCw3ICsxODgs
NyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Zm9yY2VSZXBhaW50KCkKIHsKICAgICAvLyBG
SVhNRTogRW5hYmxlIHRoaXMgZm9yIFdQRSBvbmNlIGl0J3MgcG9zc2libGUgdG8gZG8gdGhlc2Ug
Zm9yY2VkIHVwZGF0ZXMKICAgICAvLyBpbiBhIHdheSB0aGF0IGRvZXNuJ3Qgc3RhcnZlIG91dCB0
aGUgdW5kZXJseWluZyBncmFwaGljcyBidWZmZXJzLgotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQ
TEFURk9STShHVEspICYmICFVU0UoV1BFX1JFTkRFUkVSKQogICAgIG1fY29tcG9zaXRpbmdSdW5M
b29wLT5wZXJmb3JtVGFza1N5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9pbkZvcmNlUmVwYWludCwg
dHJ1ZSk7CiAgICAgICAgIHJlbmRlckxheWVyVHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZS4u
ODliYWEyY2YxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgc21hcnRJbnNlcnREZWxldGVFbmFibGVkOwogICAgIGVuY29kZXIgPDwgYWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXM7CiAjZW5kaWYKLSNpZiBQTEFURk9STShXUEUpCisjaWYg
VVNFKFdQRV9SRU5ERVJFUikKICAgICBlbmNvZGVyIDw8IGhvc3RGaWxlRGVzY3JpcHRvcjsKICNl
bmRpZgogICAgIGVuY29kZXIgPDwgYXBwbGVNYWlsUGFnaW5hdGlvblF1aXJrRW5hYmxlZDsKQEAg
LTMwMiw3ICszMDIsNyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQRV9S
RU5ERVJFUikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaG9zdEZpbGVEZXNj
cmlwdG9yKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMyYmU4
NDE0NmIzLi5jZGNmZmY5ODZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0cnVjdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsK
ICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIElQQzo6QXR0
YWNobWVudCBob3N0RmlsZURlc2NyaXB0b3I7CiAjZW5kaWYKICAgICBib29sIGFwcGxlTWFpbFBh
Z2luYXRpb25RdWlya0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDk1ODJlNmI2YmI4Li40MTcwZDZj
Mzg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCB1c2VPdmVybGF5U2Nyb2xsYmFyczsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
V1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgZW5jb2RlciA8PCBpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzOwogICAgIGVuY29kZXIgPDwgaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yOwogICAg
IGVuY29kZXIgPDwgaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZTsKQEAgLTM3MSw3ICszNzEsNyBA
QCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIsIFdlYlByb2Nlc3NDcmVhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5ob3N0Q2xp
ZW50RmlsZURlc2NyaXB0b3IpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDg0NTBkY2VjNmZhLi40OTFiOTFkYjkxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHsKICAgICBib29sIHVzZU92ZXJsYXlTY3JvbGxiYXJzIHsgdHJ1ZSB9OwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBib29sIGlz
U2VydmljZVdvcmtlclByb2Nlc3MgeyBmYWxzZSB9OwogICAgIElQQzo6QXR0YWNobWVudCBob3N0
Q2xpZW50RmlsZURlc2NyaXB0b3I7CiAgICAgQ1N0cmluZyBpbXBsZW1lbnRhdGlvbkxpYnJhcnlO
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggMmVmNWIzYzcyNTEuLjhkNGUwNDQzMWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0dUSy50eHQKQEAgLTQyMCw2ICs0MjAsOCBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L1dlYkluc3BlY3RvclVJR3RrLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3Rr
LmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKIAor
V2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3BwCisK
IFdlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKIAogV2ViUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCAyYzk4ZjIwYzJmOC4uNDk3OWRmMzE1
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuY3BwCkBAIC01NTIsNCArNTUyLDExIEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmVmZmVj
dGl2ZUFwcGVhcmFuY2VJc0RhcmsoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lm
IFVTRShXUEVfUkVOREVSRVIpCitJUEM6OkF0dGFjaG1lbnQgUGFnZUNsaWVudEltcGw6Omhvc3RG
aWxlRGVzY3JpcHRvcigpCit7CisgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlUmVuZGVySG9z
dEZpbGVEZXNjcmlwdG9yKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCkpOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGE2OTBjODI1NmQxLi42YWJiMmQ1
ZjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaApAQCAtMTY0LDYgKzE2NCwxMCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBlZmZlY3Rp
dmVBcHBlYXJhbmNlSXNEYXJrKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyNpZiBVU0UoV1BFX1JFTkRF
UkVSKQorICAgIElQQzo6QXR0YWNobWVudCBob3N0RmlsZURlc2NyaXB0b3IoKSBvdmVycmlkZTsK
KyNlbmRpZgorCiAgICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFzcwogICAgIEd0
a1dpZGdldCogbV92aWV3V2lkZ2V0OwogICAgIERlZmF1bHRVbmRvQ29udHJvbGxlciBtX3VuZG9D
b250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA3NTA3YThkM2NjMy4uYzlhZGQwN2Y3NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCkBAIC0xNDU5LDkgKzE0NTksOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
V2ViUGFnZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIFJlZjxBUAogICAg
IFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2
OwogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24tPnByb2Nl
c3NQb29sKCk7CiAgICAgcHJpdi0+cGFnZVByb3h5ID0gcHJvY2Vzc1Bvb2wtPmNyZWF0ZVdlYlBh
Z2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwotICAgIHByaXYt
PnBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKLQogICAgIHByaXYtPmFjY2VsZXJhdGVk
QmFja2luZ1N0b3JlID0gQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgqcHJpdi0+cGFn
ZVByb3h5KTsKKyAgICBwcml2LT5wYWdlUHJveHktPmluaXRpYWxpemVXZWJQYWdlKCk7CiAKICAg
ICBwcml2LT5pbnB1dE1ldGhvZEZpbHRlci5zZXRQYWdlKHByaXYtPnBhZ2VQcm94eS5nZXQoKSk7
CiAKQEAgLTE4MjksMyArMTgyOCwxMiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2hvd0Vtb2pp
Q2hvb3NlcihXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIGNvbgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOwogI2VuZGlmCiB9CisKKyNpZiBVU0UoV1BF
X1JFTkRFUkVSKQoraW50IHdlYmtpdFdlYlZpZXdCYXNlUmVuZGVySG9zdEZpbGVEZXNjcmlwdG9y
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKK3sKKyAgICBpZiAod2Via2l0
V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlKQorICAgICAgICByZXR1
cm4gd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlLT5yZW5k
ZXJIb3N0RmlsZURlc2NyaXB0b3IoKTsKKyAgICByZXR1cm4gLTE7Cit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZS5oCmluZGV4IDY2MzkzZjc1NzdmLi5jMDBlMDdkZjQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCkBAIC05NSwzICs5NSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKFdlYktpdFdlYlZpZXdCYXNlKiwKIHZvaWQg
d2Via2l0V2ViVmlld0Jhc2VEaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oV2ViS2l0V2ViVmlld0Jh
c2UqKTsKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNob3dFbW9qaUNob29zZXIoV2ViS2l0V2Vi
Vmlld0Jhc2UqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcpPiYmKTsKKworI2lmIFVTRShXUEVfUkVOREVSRVIpCitpbnQgd2Via2l0V2ViVmll
d0Jhc2VSZW5kZXJIb3N0RmlsZURlc2NyaXB0b3IoV2ViS2l0V2ViVmlld0Jhc2UqKTsKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcAppbmRleCBhZmVhMzgxODhlYy4uMDY2ZTExMGE3YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQ
cm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwCkBAIC0zNSwxNyArMzUsMTMgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
b24uaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpCi0jaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheS5oPgotI2VuZGlmCi0KICNpZiBVU0Uo
R0xJQl9FVkVOVF9MT09QKQogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlvcml0
eS5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNjY5YzFk
YTZkYmIuLjRkMWE4ZTQwNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBA
IC01MDUsNyArNTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV1RGOjpPcHRpb25hbDx1bnNp
Z25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJl
UmVjb2duaXplciopIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICB2aXJ0dWFsIElQQzo6QXR0YWNo
bWVudCBob3N0RmlsZURlc2NyaXB0b3IoKSA9IDA7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMGQzNTY0MWI5OS4uZDRmMzZmNTMzMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzE4Miw3ICs3
MTgyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9u
UGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5ID0gbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsK
ICAgICBwYXJhbWV0ZXJzLmNwdUxpbWl0ID0gbV9jcHVMaW1pdDsKIAotI2lmIFBMQVRGT1JNKFdQ
RSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIHBhcmFtZXRlcnMuaG9zdEZpbGVEZXNjcmlw
dG9yID0gcGFnZUNsaWVudCgpLmhvc3RGaWxlRGVzY3JpcHRvcigpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5YmZiZmRlMzA3ZS4u
MjE2ZmExMjFmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTExNywxMSArMTE3LDYgQEAKICNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZU1vbml0b3Iu
aCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oV0FZTEFORCkKLSNpbmNsdWRlICJXYXlsYW5kQ29t
cG9zaXRvci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNwbGF5Lmg+Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIlZlcnNpb25DaGVja3MuaCIKICNlbmRp
ZgpAQCAtOTc5LDExICs5NzQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFsaXplTmV3
V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYQogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nID0gdHJ1ZTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKLSAgICBpZiAoUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6V2F5bGFuZCkKLSAgICAgICAgcGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlO
YW1lID0gV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmRpc3BsYXlOYW1lKCk7Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgcGFyYW1ldGVycy5zaG91bGRDYXB0
dXJlQXVkaW9JblVJUHJvY2VzcyA9IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkQ2FwdHVyZUF1ZGlv
SW5VSVByb2Nlc3MoKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9j
ZXNzID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2VzcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdM
aWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIu
Y3BwCmluZGV4IDgxYmFiODJkNzBlLi4xY2I0ZmMxODMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtMzEsMTUgKzMx
LDIzIEBACiAjaW5jbHVkZSAiV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1JlbW90ZUluc3BlY3RvclNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1EaXNw
bGF5Lmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
VW5pcXVlUHRyLmg+CiAKICNpZiBVU0UoR1NUUkVBTUVSKQogI2luY2x1ZGUgPFdlYkNvcmUvR1N0
cmVhbWVyQ29tbW9uLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0j
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisj
aWYgVVNFKFdQRV9SRU5ERVJFUikKKyNpbmNsdWRlIDx3cGUvZmRvLWVnbC5oPgorI2Vsc2UKKyNp
bmNsdWRlICJXYXlsYW5kQ29tcG9zaXRvci5oIgorI2VuZGlmCisjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogI2luY2x1ZGUgPHdwZS93cGUuaD4KICNl
bmRpZgogCkBAIC0xMDgsNiArMTE2LDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYKICAgICB9
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgaWYgKFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURp
c3BsYXk6OlR5cGU6OldheWxhbmQpIHsKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAgICAgICB3
cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIpOworICAgICAgICBpZiAo
d3BlX2Zkb19pbml0aWFsaXplX2Zvcl9lZ2xfZGlzcGxheShXZWJDb3JlOjpQbGF0Zm9ybURpc3Bs
YXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCkpKSB7CisgICAgICAgICAgICBwYXJhbWV0
ZXJzLmhvc3RDbGllbnRGaWxlRGVzY3JpcHRvciA9IHdwZV9yZW5kZXJlcl9ob3N0X2NyZWF0ZV9j
bGllbnQoKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVyX2dldF9s
b2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkpOworICAgICAgICB9CisjZWxzZQor
ICAgICAgICBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5k
Q29tcG9zaXRvcjo6c2luZ2xldG9uKCkuZGlzcGxheU5hbWUoKTsKKyNlbmRpZgorICAgIH0KKyNl
bmRpZgorCiAgICAgcGFyYW1ldGVycy5tZW1vcnlDYWNoZURpc2FibGVkID0gbV9tZW1vcnlDYWNo
ZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9PSBDYWNoZU1vZGVsOjpEb2N1bWVudFZpZXdlcjsK
ICAgICBwYXJhbWV0ZXJzLnByb3h5U2V0dGluZ3MgPSBtX25ldHdvcmtQcm94eVNldHRpbmdzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94
eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlH
TGliLmNwcAppbmRleCA2NDM2NTA1NWU5NC4uM2M0MmJhZWJlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAtMjYs
OSArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogCi0jaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKLSNpbmNsdWRlICJXYXls
YW5kQ29tcG9zaXRvci5oIgotI2VuZGlmCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXkuaD4KQEAgLTQ3LDE1ICs0NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9y
bUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsCiAgICAg
bGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoImFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkiLCB3ZWJzaXRlRGF0YVN0b3JlKCkucmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KCkpOwogCiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYVdlYlByb2Nlc3NTYW5kYm94
UGF0aHMgPSBtX3Byb2Nlc3NQb29sLT5zYW5kYm94UGF0aHMoKTsKLQotI2lmIFBMQVRGT1JNKFdB
WUxBTkQpICYmIFVTRShFR0wpCi0gICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpIHsKLSAgICAgICAg
U3RyaW5nIGRpc3BsYXlOYW1lID0gV2F5bGFuZENvbXBvc2l0b3I6OnNpbmdsZXRvbigpLmRpc3Bs
YXlOYW1lKCk7Ci0gICAgICAgIFN0cmluZyBydW50aW1lRGlyKGdfZ2V0X3VzZXJfcnVudGltZV9k
aXIoKSk7Ci0gICAgICAgIFN0cmluZyB3YXlsYW5kU29ja2V0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJ1bnRpbWVEaXIsIGRpc3BsYXlOYW1lKTsKLSAgICAgICAgbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoIndheWxhbmRTb2NrZXQiLCB3
YXlsYW5kU29ja2V0KTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2NlbGVyYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggNDhk
YjUzMzQ0ZmIuLjNhMDNiNjExZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBMYXllclRyZWVDb250ZXh0JikgeyB9
CiAgICAgdmlydHVhbCBib29sIHBhaW50KGNhaXJvX3QqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHJlbmRlckhvc3RGaWxlRGVzY3JpcHRvcigpIHsgcmV0
dXJuIC0xOyB9CiAKIHByb3RlY3RlZDoKICAgICBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZShXZWJQ
YWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9BY2Nl
bGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZC5jcHAKaW5kZXggNjBmNWNhNzE1Njku
LmU2NDNkYWViZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNj
ZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNiwgMjAxOSBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOCwzNiArMjgsMTEzIEBACiAKICNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBVU0UoRUdM
KQogCi0jaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKy8vIFRoZXNlIGluY2x1ZGVzIG5lZWQgdG8gYmUgaW4gdGhpcyBvcmRlciBiZWNhdXNl
IHdheWxhbmQtZWdsLmggZGVmaW5lcyBXTF9FR0xfUExBVEZPUk0KKy8vIGFuZCBlZ2xwbGF0Zm9y
bS5oLCBpbmNsdWRlZCBieSBlZ2wuaCwgY2hlY2tzIHRoYXQgdG8gZGVjaWRlIHdoZXRoZXIgaXQn
cyBXYXlsYW5kIHBsYXRmb3JtLgorI2luY2x1ZGUgPGdkay9nZGt3YXlsYW5kLmg+CisjaW5jbHVk
ZSA8RUdML2VnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NhaXJvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KIAogI2lm
IFVTRShPUEVOR0xfRVMpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8R0xFUzIv
Z2wyZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9FeHRlbnNpb25zM0RPcGVuR0xFUy5oPgogI2Vs
c2UKKyNpbmNsdWRlIDxXZWJDb3JlL0V4dGVuc2lvbnMzRE9wZW5HTC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvT3BlbkdMU2hpbXMuaD4KICNlbmRpZgogCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyNp
bmNsdWRlIDx3cGUvZmRvLWVnbC5oPgorI2Vsc2UKKyNpbmNsdWRlICJXYXlsYW5kQ29tcG9zaXRv
ci5oIgorI2VuZGlmCisKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorI2lmICFkZWZpbmVkKFBGTkdM
RUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKQordHlwZWRlZiB2b2lkICgqUEZOR0xFR0xJ
TUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VT
KTsKKyNlbmRpZgorCitzdGF0aWMgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0Mg
Z2xJbWFnZVRhcmdldFRleHR1cmUyRDsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXYXlsYW5kPiBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNyZWF0ZShX
ZWJQYWdlUHJveHkmIHdlYlBhZ2UpCiB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBpZiAo
IWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkQpIHsKKyAgICAgICAgaWYgKCF3cGVfZmRvX2luaXRpYWxp
emVfZm9yX2VnbF9kaXNwbGF5KFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERp
c3BsYXkoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBlZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVh
dGVPZmZzY3JlZW5Db250ZXh0KCk7CisgICAgICAgIGlmICghZWdsQ29udGV4dCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICghZWdsQ29udGV4dC0+bWFrZUNvbnRl
eHRDdXJyZW50KCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworI2lmIFVTRShPUEVO
R0xfRVMpCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0xFUz4gZ2xF
eHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4obnVsbHB0
ciwgIGZhbHNlKTsKKyNlbHNlCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RP
cGVuR0w+IGdsRXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdM
PihudWxscHRyLCBHTENvbnRleHQ6OmN1cnJlbnQoKS0+dmVyc2lvbigpID49IDMyMCk7CisjZW5k
aWYKKyAgICAgICAgaWYgKGdsRXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX09FU19FR0xfaW1hZ2Ui
KSB8fCBnbEV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikp
CisgICAgICAgICAgICBnbEltYWdlVGFyZ2V0VGV4dHVyZTJEID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImds
RUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMiKSk7CisgICAgfQorCisgICAgaWYgKCFnbEltYWdl
VGFyZ2V0VGV4dHVyZTJEKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQWNjZWxlcmF0ZWRCYWNr
aW5nU3RvcmVXUEUgcmVxdWlyZXMgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRC4iKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2Vsc2UKICAgICBpZiAoIVdheWxhbmRDb21wb3Np
dG9yOjpzaW5nbGV0b24oKS5pc1J1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkQmFja2luZ1N0b3Jl
V2F5bGFuZD4obmV3IEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCh3ZWJQYWdlKSk7CiB9
CiAKIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6QWNjZWxlcmF0ZWRCYWNraW5nU3Rv
cmVXYXlsYW5kKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSkKICAgICA6IEFjY2VsZXJhdGVkQmFja2lu
Z1N0b3JlKHdlYlBhZ2UpCiB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBzdGF0aWMgc3Ry
dWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZWdsX2NsaWVudCBleHBvcnRhYmxl
Q2xpZW50ID0geworICAgICAgICAvLyBleHBvcnRfZWdsX2ltYWdlCisgICAgICAgIG51bGxwdHIs
CisgICAgICAgIC8vIGV4cG9ydF9mZG9fZWdsX2ltYWdlCisgICAgICAgIFtdKHZvaWQqIGRhdGEs
IHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZSogaW1hZ2UpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZCo+KGRh
dGEpLT5kaXNwbGF5QnVmZmVyKGltYWdlKTsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gcGFkZGlu
ZworICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyCisgICAgfTsKKworICAgIGF1dG8g
dmlld1NpemUgPSB3ZWJQYWdlLnZpZXdTaXplKCk7CisgICAgbV9leHBvcnRhYmxlID0gd3BlX3Zp
ZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19lZ2xfY3JlYXRlKCZleHBvcnRhYmxlQ2xpZW50LCB0
aGlzLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7CisgICAgd3BlX3ZpZXdf
YmFja2VuZF9pbml0aWFsaXplKHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZ2V0X3Zp
ZXdfYmFja2VuZChtX2V4cG9ydGFibGUpKTsKKyNlbHNlCiAgICAgV2F5bGFuZENvbXBvc2l0b3I6
OnNpbmdsZXRvbigpLnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworI2VuZGlmCiB9CiAKIEFj
Y2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6fkFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZCgpCiB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBpZiAobV9wZW5kaW5nSW1hZ2Up
CisgICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZWdsX2Rpc3BhdGNoX3Jl
bGVhc2VfZXhwb3J0ZWRfaW1hZ2UobV9leHBvcnRhYmxlLCBtX3BlbmRpbmdJbWFnZSk7CisgICAg
aWYgKG1fY29tbWl0dGVkSW1hZ2UpCisgICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJs
ZV9mZG9fZWdsX2Rpc3BhdGNoX3JlbGVhc2VfZXhwb3J0ZWRfaW1hZ2UobV9leHBvcnRhYmxlLCBt
X2NvbW1pdHRlZEltYWdlKTsKKyAgICBpZiAobV92aWV3VGV4dHVyZSkgeworICAgICAgICBpZiAo
bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZt
X3ZpZXdUZXh0dXJlKTsKKyAgICB9CisjZWxzZQogICAgIFdheWxhbmRDb21wb3NpdG9yOjpzaW5n
bGV0b24oKS51bnJlZ2lzdGVyV2ViUGFnZShtX3dlYlBhZ2UpOworI2VuZGlmCiAKICNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigzLCAxNiwgMCkKICAgICBpZiAobV9nZGtHTENvbnRleHQgJiYgbV9nZGtH
TENvbnRleHQuZ2V0KCkgPT0gZ2RrX2dsX2NvbnRleHRfZ2V0X2N1cnJlbnQoKSkKQEAgLTEwMiwx
MiArMTc5LDY0IEBAIGJvb2wgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kOjptYWtlQ29u
dGV4dEN1cnJlbnQoKQogICAgIHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSA6IGZhbHNlOwogfQogCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKK2lu
dCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnJlbmRlckhvc3RGaWxlRGVzY3JpcHRv
cigpCit7CisgICAgcmV0dXJuIHdwZV92aWV3X2JhY2tlbmRfZ2V0X3JlbmRlcmVyX2hvc3RfZmQo
d3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19nZXRfdmlld19iYWNrZW5kKG1fZXhwb3J0
YWJsZSkpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6ZGlzcGxh
eUJ1ZmZlcihzdHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2UqIGltYWdlKQoreworICAg
IGlmICghbV92aWV3VGV4dHVyZSkgeworICAgICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdmll
d1RleHR1cmUpOworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdmlld1Rl
eHR1cmUpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgfQorCisgICAgaWYgKG1fcGVuZGlu
Z0ltYWdlKQorICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2VnbF9kaXNw
YXRjaF9yZWxlYXNlX2ltYWdlKG1fZXhwb3J0YWJsZSwgbV9wZW5kaW5nSW1hZ2UpOworICAgIG1f
cGVuZGluZ0ltYWdlID0gaW1hZ2U7CisKKyAgICBtX3dlYlBhZ2Uuc2V0Vmlld05lZWRzRGlzcGxh
eShJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fd2ViUGFnZS52aWV3U2l6ZSgpKSk7Cit9Cisj
ZW5kaWYKKwogYm9vbCBBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OnBhaW50KGNhaXJv
X3QqIGNyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBHTHVpbnQgdGV4dHVyZTsK
ICAgICBJbnRTaXplIHRleHR1cmVTaXplOworCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAobV9wZW5kaW5nSW1hZ2UpIHsKKyAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxl
X2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0ZShtX2V4cG9ydGFibGUpOworCisgICAgICAgIGlm
IChtX2NvbW1pdHRlZEltYWdlKQorICAgICAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRh
YmxlX2Zkb19lZ2xfZGlzcGF0Y2hfcmVsZWFzZV9leHBvcnRlZF9pbWFnZShtX2V4cG9ydGFibGUs
IG1fY29tbWl0dGVkSW1hZ2UpOworICAgICAgICBtX2NvbW1pdHRlZEltYWdlID0gbV9wZW5kaW5n
SW1hZ2U7CisgICAgICAgIG1fcGVuZGluZ0ltYWdlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBp
ZiAoIW1fY29tbWl0dGVkSW1hZ2UpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3ZpZXdUZXh0dXJlKTsKKyAgICBnbEltYWdlVGFyZ2V0
VGV4dHVyZTJEKEdMX1RFWFRVUkVfMkQsIHdwZV9mZG9fZWdsX2V4cG9ydGVkX2ltYWdlX2dldF9l
Z2xfaW1hZ2UobV9jb21taXR0ZWRJbWFnZSkpOworCisgICAgdGV4dHVyZSA9IG1fdmlld1RleHR1
cmU7CisgICAgdGV4dHVyZVNpemUgPSB7IHN0YXRpY19jYXN0PGludD4od3BlX2Zkb19lZ2xfZXhw
b3J0ZWRfaW1hZ2VfZ2V0X3dpZHRoKG1fY29tbWl0dGVkSW1hZ2UpKSwgc3RhdGljX2Nhc3Q8aW50
Pih3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZV9nZXRfaGVpZ2h0KG1fY29tbWl0dGVkSW1hZ2Up
KSB9OworI2Vsc2UKICAgICBpZiAoIVdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5nZXRU
ZXh0dXJlKG1fd2ViUGFnZSwgdGV4dHVyZSwgdGV4dHVyZVNpemUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIAogICAgIGNhaXJvX3NhdmUoY3IpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXls
YW5kLmgKaW5kZXggOTIwMjA0NWJjY2EuLmI0NDM0OWYzNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVXYXlsYW5kLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0FjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5
bGFuZC5oCkBAIC0zMyw3ICszMywxMyBAQAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorI2luY2x1ZGUg
PHdwZS9mZG8uaD4KKyNlbmRpZgorCit0eXBlZGVmIHZvaWQqIEVHTEltYWdlS0hSOwogdHlwZWRl
ZiBzdHJ1Y3QgX0dka0dMQ29udGV4dCBHZGtHTENvbnRleHQ7CitzdHJ1Y3Qgd3BlX2Zkb19lZ2xf
ZXhwb3J0ZWRfaW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdMQ29udGV4dDsK
QEAgLTUzLDkgKzU5LDE1IEBAIHByaXZhdGU6CiAgICAgQWNjZWxlcmF0ZWRCYWNraW5nU3RvcmVX
YXlsYW5kKFdlYlBhZ2VQcm94eSYpOwogCiAgICAgdm9pZCB0cnlFbnN1cmVHTENvbnRleHQoKTsK
KyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAgIHZvaWQgZGlzcGxheUJ1ZmZlcihzdHJ1Y3Qgd3Bl
X2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2UqKTsKKyNlbmRpZgogCiAgICAgYm9vbCBwYWludChjYWly
b190KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIGJvb2wgbWFrZUNv
bnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikKKyAgICBpbnQg
cmVuZGVySG9zdEZpbGVEZXNjcmlwdG9yKCkgb3ZlcnJpZGU7CisjZW5kaWYKIAogICAgIFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAgICBib29sIG1fZ2xDb250ZXh0SW5pdGlh
bGl6ZWQgeyBmYWxzZSB9OwpAQCAtNjMsNiArNzUsMTMgQEAgcHJpdmF0ZToKICAgICBHUmVmUHRy
PEdka0dMQ29udGV4dD4gbV9nZGtHTENvbnRleHQ7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKKworI2lmIFVTRShXUEVfUkVOREVS
RVIpCisgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG8qIG1fZXhwb3J0
YWJsZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX3ZpZXdUZXh0dXJlIHsgMCB9OworICAg
IHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZSogbV9jb21taXR0ZWRJbWFnZSB7IG51
bGxwdHIgfTsKKyAgICBzdHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2UqIG1fcGVuZGlu
Z0ltYWdlIHsgbnVsbHB0ciB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9IYXJkd2FyZUFjY2VsZXJh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0hhcmR3YXJlQWNj
ZWxlcmF0aW9uTWFuYWdlci5jcHAKaW5kZXggNDU3NjBlZWVlZDkuLmM5OTk4Mjc1NjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2NlbGVyYXRpb25N
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvSGFyZHdhcmVBY2Nl
bGVyYXRpb25NYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkhhcmR3YXJlQWNjZWxlcmF0aW9uTWFuYWdlci5oIgogCi0jaW5jbHVkZSAi
V2F5bGFuZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3BsYXkuaD4KIApAQCAtMzQsNiArMzMsMTQg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRGlzcGxheVgxMS5oPgogI2VuZGlmCiAKKyNp
ZiBQTEFURk9STShXQVlMQU5EKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVkZSA8d3Bl
L2Zkby1lZ2wuaD4KKyNlbHNlCisjaW5jbHVkZSAiV2F5bGFuZENvbXBvc2l0b3IuaCIKKyNlbmRp
ZgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTcxLDEwICs3OCwxNyBAQCBIYXJkd2FyZUFjY2VsZXJhdGlvbk1hbmFnZXI6OkhhcmR3
YXJlQWNjZWxlcmF0aW9uTWFuYWdlcigpCiAKICNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBVU0Uo
RUdMKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0g
UGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKSB7CisjaWYgVVNFKFdQRV9SRU5ERVJFUikK
KyAgICAgICAgaWYgKCF3cGVfZmRvX2luaXRpYWxpemVfZm9yX2VnbF9kaXNwbGF5KFBsYXRmb3Jt
RGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLmVnbERpc3BsYXkoKSkpIHsKKyAgICAgICAgICAgIG1f
Y2FuVXNlSGFyZHdhcmVBY2NlbGVyYXRpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgaWYgKCFXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuaXNSdW5uaW5nKCkpIHsKICAgICAgICAgICAgIG1fY2FuVXNlSGFyZHdhcmVBY2NlbGVy
YXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorI2VuZGlmCiAg
ICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
YXlsYW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuY3BwCmluZGV4IGRjOGQ1M2NhZmJiLi5kZDI4NTFjNzA3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBAIC0y
Niw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2F5bGFuZENvbXBv
c2l0b3IuaCIKIAotI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCisjaWYgUExBVEZP
Uk0oV0FZTEFORCkgJiYgVVNFKEVHTCkgJiYgIVVTRShXUEVfUkVOREVSRVIpCiAKICNpbmNsdWRl
ICJXZWJLaXRXYXlsYW5kU2VydmVyUHJvdG9jb2wuaCIKICNpbmNsdWRlIDxFR0wvZWdsLmg+CkBA
IC01NzYsNCArNTc2LDQgQEAgdm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6dW5yZWdpc3RlcldlYlBh
Z2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShFR0wpCisjZW5kaWYgLy8gUExBVEZPUk0o
V0FZTEFORCkgJiYgVVNFKEVHTCkgJiYgIVVTRShXUEVfUkVOREVSRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oCmluZGV4IDE0ODE5ZjhmYWM0
Li41ZjBmNTQzNTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxh
bmRDb21wb3NpdG9yLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQ
TEFURk9STShXQVlMQU5EKSAmJiBVU0UoRUdMKQorI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVT
RShFR0wpICYmICFVU0UoV1BFX1JFTkRFUkVSKQogCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgpAQCAtMTI5LDQgKzEyOSw0IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gUExBVEZPUk0oV0FZ
TEFORCkgJiYgVVNFKEVHTCkKKyNlbmRpZiAvLyBQTEFURk9STShXQVlMQU5EKSAmJiBVU0UoRUdM
KSAmJiAhVVNFKFdQRV9SRU5ERVJFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCmluZGV4IGVmMGQxZmM1YjZmLi4y
YmJkZGQ3YzIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
QWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
QWNjZWxlcmF0ZWRTdXJmYWNlWDExLmgiCiAjZW5kaWYKIAotI2lmIFVTRShMSUJXUEUpCisjaWYg
VVNFKFdQRV9SRU5ERVJFUikKICNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuaCIK
ICNlbmRpZgogCkBAIC00OCw4ICs0OCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRT
dXJmYWNlPiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogewog
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgaWYgKFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlz
cGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisjaWYgVVNF
KFdQRV9SRU5ERVJFUikKKyAgICAgICAgcmV0dXJuIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRTo6
Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CisjZWxzZQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0
ZWRTdXJmYWNlV2F5bGFuZDo6Y3JlYXRlKHdlYlBhZ2UsIGNsaWVudCk7CiAjZW5kaWYKKyNlbmRp
ZgogI2lmIFVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XKQogICAgIGlmIChQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBl
OjpYMTEpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNyZWF0ZSh3ZWJQ
YWdlLCBjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA3NmY3YzVjYmY5MC4uZTNjYTRiYThmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgV2ViUGFn
ZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogICAgICwgbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHBhcmFtZXRl
cnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikKICAgICAsIG1fb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kgeyBwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
IH0KICAgICAsIG1fY3B1TGltaXQocGFyYW1ldGVycy5jcHVMaW1pdCkKLSNpZiBQTEFURk9STShX
UEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICAsIG1faG9zdEZpbGVEZXNjcmlwdG9yKFdU
Rk1vdmUocGFyYW1ldGVycy5ob3N0RmlsZURlc2NyaXB0b3IpKQogI2VuZGlmCiAjaWYgRU5BQkxF
KFZJRVdQT1JUX1JFU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGFkN2NkOGQzMWRlLi5hZGI2MWM1M2I2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE1Myw3ICsxMTUzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3Qs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIGludCByZWxl
YXNlSG9zdEZpbGVEZXNjcmlwdG9yKCkgeyByZXR1cm4gbV9ob3N0RmlsZURlc2NyaXB0b3IucmVs
ZWFzZUZpbGVEZXNjcmlwdG9yKCk7IH0KICNlbmRpZgogCkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
OwogICAgIGNvbnN0IE9wdGlvbmFsPGRvdWJsZT4gbV9jcHVMaW1pdDsKIAotI2lmIFBMQVRGT1JN
KFdQRSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIElQQzo6QXR0YWNobWVudCBtX2hvc3RG
aWxlRGVzY3JpcHRvcjsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJX
UEUuY3BwCmluZGV4IDk4M2I5MzE5YjI4Li5kMDQ4ZTA3NTM1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2Vs
ZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuaCIKIAorI2lmIFVTRShX
UEVfUkVOREVSRVIpCisKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybURpc3BsYXlMaWJXUEUuaD4KICNpbmNsdWRlIDx3cGUvd3BlLWVnbC5oPgpAQCAtNjUs
NyArNjcsNyBAQCB2b2lkIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRTo6aW5pdGlhbGl6ZSgpCiAg
ICAgICAgIG51bGxwdHIKICAgICB9OwogICAgIHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF90YXJn
ZXRfc2V0X2NsaWVudChtX2JhY2tlbmQsICZzX2NsaWVudCwgdGhpcyk7Ci0gICAgd3BlX3JlbmRl
cmVyX2JhY2tlbmRfZWdsX3RhcmdldF9pbml0aWFsaXplKG1fYmFja2VuZCwgZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5TGliV1BFPihQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKSkuYmFj
a2VuZCgpLAorICAgIHdwZV9yZW5kZXJlcl9iYWNrZW5kX2VnbF90YXJnZXRfaW5pdGlhbGl6ZSht
X2JhY2tlbmQsIGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheUxpYldQRT4oUGxhdGZvcm1EaXNwbGF5
OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSkuYmFja2VuZCgpLAogICAgICAgICBzdGQ6
Om1heCgxLCBtX3NpemUud2lkdGgoKSksIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQoKSkpOwog
fQogCkBAIC0xMTEsMyArMTEzLDQgQEAgdm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEU6OmRp
ZFJlbmRlckZyYW1lKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyNlbmRpZiAvLyBVU0Uo
V1BFX1JFTkRFUkVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5oCmluZGV4IGE1
ODZmMTYzODIyLi5lMTdkMWUwMGYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJX
UEUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKFdQ
RSkKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNl
LmgiCiAKQEAgLTQ0LDcgKzQ0LDE0IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCB3aW5kb3coKSBj
b25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBzdXJmYWNlSUQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNsaWVudFJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBzaG91bGRQYWludE1pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIHNob3VsZFBhaW50TWlycm9yZWQoKSBjb25zdCBvdmVycmlkZQor
ICAgIHsKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgfQogCiAgICAgdm9pZCBpbml0aWFsaXpl
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZSgpIG92ZXJyaWRlOwpAQCAtNTksNCArNjYs
NCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFBMQVRG
T1JNKFdQRSkKKyNlbmRpZiAvLyBVU0UoV1BFX1JFTkRFUkVSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKaW5kZXggNTI1ZGYxODNmMjIuLjc4MTIyMTA2MzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTYyLDYgKzYyLDEwIEBACiAjaW5jbHVkZSAi
UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBWUxB
TkQpICYmIFVTRShXUEVfUkVOREVSRVIpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURpc3Bs
YXlMaWJXUEUuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsKIH0K
QEAgLTU1MSw2ICs1NTUsMTEgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXQVlMQU5EKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IG1fd2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5OwogI2VuZGlmCisKKyNpZiBQTEFURk9STShXQVlMQU5EKSAmJiBVU0UoV1BF
X1JFTkRFUkVSKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlM
aWJXUEU+IG1fd3BlRGlzcGxheTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2hhc1N1c3BlbmRlZFBh
Z2VQcm94eSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3VzcGVuZGluZyB7IGZhbHNlIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGli
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcApp
bmRleCA1ZWFmOGZjYTg4ZC4uY2VjNzcxNjNmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNs
dWRlICJXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuaCIKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
V1BFKQorI2lmIFVTRShXUEVfUkVOREVSRVIpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybURp
c3BsYXlMaWJXUEUuaD4KICNpbmNsdWRlIDx3cGUvd3BlLmg+CiAjZW5kaWYKQEAgLTY1LDkgKzY1
LDI0IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhCiAgICAgICAgIGRvd25jYXN0PFBsYXRmb3Jt
RGlzcGxheUxpYldQRT4oUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkpLmluaXRpYWxp
emUocGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3IucmVsZWFzZUZpbGVEZXNjcmlw
dG9yKCkpOwogICAgIH0KICNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0FZTEFORCkKLSAgICBtX3dh
eWxhbmRDb21wb3NpdG9yRGlzcGxheSA9IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRl
KHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5TmFtZSk7CisgICAgaWYgKFBsYXRm
b3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5
cGU6OldheWxhbmQpIHsKKyNpZiBVU0UoV1BFX1JFTkRFUkVSKQorICAgICAgICBpZiAoIXBhcmFt
ZXRlcnMuaXNTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICAgICAgYXV0byBob3N0Q2xp
ZW50RmlsZURlc2NyaXB0b3IgPSBwYXJhbWV0ZXJzLmhvc3RDbGllbnRGaWxlRGVzY3JpcHRvci5y
ZWxlYXNlRmlsZURlc2NyaXB0b3IoKTsKKyAgICAgICAgICAgIGlmIChob3N0Q2xpZW50RmlsZURl
c2NyaXB0b3IgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICB3cGVfbG9hZGVyX2luaXQocGFyYW1l
dGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lLmRhdGEoKSk7CisgICAgICAgICAgICAgICAg
bV93cGVEaXNwbGF5ID0gV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5TGliV1BFOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgICAgICBtX3dwZURpc3BsYXktPmluaXRpYWxpemUoaG9zdENsaWVudEZpbGVE
ZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgbV93
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkgPSBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk6OmNyZWF0
ZShwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUpOwogI2VuZGlmCisgICAg
fQorI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgIFdlYkNvcmU6OmluaXRpYWxpemVH
U3RyZWFtZXIoV1RGTW92ZShwYXJhbWV0ZXJzLmdzdHJlYW1lck9wdGlvbnMpKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQppbmRleCAyMTNiNDUzN2JkMS4uYmIzYmI0NzM2YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCkBAIC04Niw2ICs4Niw3IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9M
SUJIWVBIRU4gIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGF1dG9tYXRpYyBoeXBoCiBX
RUJLSVRfT1BUSU9OX0RFRklORShVU0VfTElCU0VDUkVUICJXaGV0aGVyIHRvIGVuYWJsZSB0aGUg
cGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgdXNpbmcgbGlic2VjcmV0LiIgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX09QRU5KUEVHICJXaGV0aGVyIHRvIGVuYWJsZSBz
dXBwb3J0IGZvciBKUEVHMjAwMCBpbWFnZXMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RF
RklORShVU0VfV09GRjIgIldoZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFdPRkYyIFdlYiBG
b250cy4iIFBVQkxJQyBPTikKK1dFQktJVF9PUFRJT05fREVGSU5FKFVTRV9XUEVfUkVOREVSRVIg
IldoZXRoZXIgdG8gZW5hYmxlIFdQRSByZW5kZXJpbmciIFBVQkxJQyBPTikKIAogIyBQcml2YXRl
IG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhlIEdUSysgcG9ydC4gQ2hhbmdpbmcgdGhlc2Ugb3B0aW9u
cyBpcwogIyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLiBUaGV5IGFyZSBpbnRlbmRlZCBmb3IgdXNl
IG9ubHkgYnkgV2ViS2l0IGRldmVsb3BlcnMuCkBAIC0xMDMsNiArMTA0LDggQEAgV0VCS0lUX09Q
VElPTl9ERVBFTkQoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIgRU5BQkxFX1gxMV9UQVJHRVQp
CiBXRUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfV0VCR0wgRU5BQkxFX09QRU5HTCkKIFdFQktJ
VF9PUFRJT05fREVQRU5EKFVTRV9SRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XIEVOQUJMRV9P
UEVOR0wpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChVU0VfUkVESVJFQ1RFRF9YQ09NUE9TSVRFX1dJ
TkRPVyBFTkFCTEVfWDExX1RBUkdFVCkKK1dFQktJVF9PUFRJT05fREVQRU5EKFVTRV9XUEVfUkVO
REVSRVIgRU5BQkxFX09QRU5HTCkKK1dFQktJVF9PUFRJT05fREVQRU5EKFVTRV9XUEVfUkVOREVS
RVIgRU5BQkxFX1dBWUxBTkRfVEFSR0VUKQogCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChFTkFC
TEVfREVWRUxPUEVSX01PREUgJHtERVZFTE9QRVJfTU9ERX0pCiBpZiAoREVWRUxPUEVSX01PREUp
CkBAIC0xOTksNiArMjAyLDE4IEBAIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfT1NfREFS
S19NT0RFX1NVUFBPUlQgMSkKIHNldChnbGliX2NvbXBvbmVudHMgZ2lvIGdpby11bml4IGdvYmpl
Y3QgZ3RocmVhZCBnbW9kdWxlKQogZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFVSVJFRCBDT01Q
T05FTlRTICR7Z2xpYl9jb21wb25lbnRzfSkKIAoraWYgKFVTRV9XUEVfUkVOREVSRVIpCisgICAg
ZmluZF9wYWNrYWdlKFdQRSAxLjMuMCkKKyAgICBpZiAoTk9UIFdQRV9GT1VORCkKKyAgICAgICAg
bWVzc2FnZShGQVRBTF9FUlJPUiAibGlid3BlIGlzIHJlcXVpcmVkIGZvciBVU0VfV1BFX1JFTkRF
UkVSIikKKyAgICBlbmRpZiAoKQorCisgICAgZmluZF9wYWNrYWdlKFdQRUJhY2tlbmQtZmRvIDEu
My4wKQorICAgIGlmIChOT1QgV1BFQkFDS0VORF9GRE9fRk9VTkQpCisgICAgICAgIG1lc3NhZ2Uo
RkFUQUxfRVJST1IgIldQRUJhY2tlbmQtZmRvIGlzIHJlcXVpcmVkIGZvciBVU0VfV1BFX1JFTkRF
UkVSIikKKyAgICBlbmRpZiAoKQorZW5kaWYgKCkKKwogaWYgKEVOQUJMRV9YU0xUKQogICAgIGZp
bmRfcGFja2FnZShMaWJYc2x0IDEuMS43IFJFUVVJUkVEKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc1BsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDMzNjlhZjBmYmIwLi40MDI4Yjc3MmI1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCkBAIC0xMTEsNiArMTExLDcgQEAgU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfRlJFRVRZUEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSEFSRkJVWlog
T04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV1BFIE9OKQorU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoVVNFX1dQRV9SRU5ERVJFUiBPTikKIAogU0VUX0FORF9FWFBPU0VfVE9fQlVJ
TEQoVVNFX0lOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSICR7RU5BQkxFX1JFTU9URV9JTlNQRUNUT1J9
KQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VOSVhfRE9NQUlOX1NPQ0tFVFMgT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV1BFLmNtYWtlCmluZGV4IDgxNTU2NmFmNjgxLi5lYmU5MTY4OTg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKQEAgLTE3Miw2ICsxNzIsNyBAQCBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfR0NSWVBUIFRSVUUpCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCRVBPWFkgVFJV
RSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9MSUJXUEUgVFJVRSkKIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9PUEVOR0xfRVMgVFJVRSkKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9XUEVfUkVOREVSRVIgVFJVRSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9YREdN
SU1FIFRSVUUpCiAKIGlmIChXVEZfQ1BVX0FSTSBPUiBXVEZfQ1BVX01JUFMpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzU5OGYwNTQ0NzIuLjli
ZjAzNTBiMGExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDUtMTYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFVzZSBXUEVCYWNrZW5kLWZkbyBm
b3IgYWNjZWxlcmF0aW5nIGNvbXBvc2l0aW5nIGluIFdheWxhbmQgaW5zdGVhZCBvZiB0aGUgbmVz
dGVkIGNvbXBvc2l0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5Nzk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBXUEVCYWNrZW5kLWZkbyB0byBqaGJ1aWxkIG1vZHVsZXNldC4KKworICAgICAg
ICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6CisKIDIwMTktMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJvcHBlZCB0ZXh0LCBhdHRh
Y2htZW50cywgYW5kIGltYWdlcyBzaG91bGQgYW5pbWF0ZSBpbnRvIHBsYWNlCmRpZmYgLS1naXQg
YS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpp
bmRleCA3YjAwNmY3ZTMwNy4uMzc4YTg1Y2JkMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2d0ay9qaGJ1
aWxkLm1vZHVsZXMKKysrIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwpAQCAtMzIsNiArMzIs
NyBAQAogICAgICAgPGRlcCBwYWNrYWdlPSJsaWJncGctZXJyb3IiLz4KICAgICAgIDxkZXAgcGFj
a2FnZT0ibGliZ2NyeXB0Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9Im9wZW5qcGVnIi8+CisgICAg
ICA8ZGVwIHBhY2thZ2U9IndwZWJhY2tlbmQtZmRvIi8+CiAgICAgICA8aWYgY29uZGl0aW9uLXNl
dD0ibGludXgiPgogICAgICAgICAgIDxkZXAgcGFja2FnZT0ieGRnLWRidXMtcHJveHkiLz4KICAg
ICAgICAgICA8ZGVwIHBhY2thZ2U9InhzZXJ2ZXIiLz4KQEAgLTgxLDYgKzgyLDggQEAKICAgICAg
IGhyZWY9Imh0dHA6Ly93ZWJraXRndGsub3JnL2poYnVpbGRfbWlycm9yLyIvPgogICA8cmVwb3Np
dG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJnbnVwZy5vcmciCiAgICAgICBocmVmPSJodHRwczov
L3d3dy5nbnVwZy5vcmcvZnRwL2djcnlwdC8iLz4KKyAgPHJlcG9zaXRvcnkgdHlwZT0idGFyYmFs
bCIgbmFtZT0id3Bld2Via2l0IgorICAgICAgaHJlZj0iaHR0cHM6Ly93cGV3ZWJraXQub3JnL3Jl
bGVhc2VzLyIvPgogCiAgIDxjbWFrZSBpZD0iYnJvdGxpIj4KICAgICA8YnJhbmNoIHJlcG89Imdp
dGh1Yi5jb20iIG1vZHVsZT0iZ29vZ2xlL2Jyb3RsaS5naXQiIGNoZWNrb3V0ZGlyPSJicm90bGki
IHRhZz0idjEuMC41Ii8+CkBAIC00NjQsNiArNDY3LDIwIEBACiAgICAgICAgICAgICBoYXNoPSJz
aGEyNTY6M2RjNzg3YzFiYjYwMjNiYTg0NmMyYTBkOWIxZjZlMTc5ZjFjZDI1NTE3MmJkZTllYjc1
YjAxZjFlNmM3ZDcxYSIvPgogICA8L2NtYWtlPgogCisgIDxjbWFrZSBpZD0ibGlid3BlIj4KKyAg
ICA8YnJhbmNoIHJlcG89IndwZXdlYmtpdCIgbW9kdWxlPSJsaWJ3cGUtMS4zLjAudGFyLnh6IiB2
ZXJzaW9uPSIxLjMuMCIKKyAgICAgICAgICAgIGhhc2g9InNoYTI1Njo2ODk4NjY0N2FmMjQzM2U3
NGY4MzBhMDZhNDk3ZWQ1MzZkYmM4NzIxYjA0MDI2ZWQ4MjYxMWE1ODRiZTcxMTQ4Ii8+CisgIDwv
Y21ha2U+CisKKyAgPGNtYWtlIGlkPSJ3cGViYWNrZW5kLWZkbyI+CisgICAgPGRlcGVuZGVuY2ll
cz4KKyAgICAgIDxkZXAgcGFja2FnZT0ibGlid3BlIi8+CisgICAgICA8ZGVwIHBhY2thZ2U9Imds
aWIiLz4KKyAgICA8L2RlcGVuZGVuY2llcz4KKyAgICA8YnJhbmNoIHJlcG89IndwZXdlYmtpdCIg
bW9kdWxlPSJ3cGViYWNrZW5kLWZkby0xLjMuMC50YXIueHoiIHZlcnNpb249IjEuMy4wIgorICAg
ICAgICAgICAgaGFzaD0ic2hhMjU2OmZlZDlhYjI5ZjVkNTNjZjQ2NTE4OGRhODBkMDE0ZjNhYTA2
N2M3NzcwNGY4NTA4YzZiZDE3OTcxZmRlZDM1OWQiLz4KKyAgPC9jbWFrZT4KKwogICA8IS0tIERl
cGVuZGVuY2llcyBsaXN0ZWQgYmVsb3cgdGhpcyBwb2ludCBhcmUgbm90IHRob3VnaHQgdG8gYWZm
ZWN0IHRlc3QgcmVzdWx0cywgYW5kIGFyZSBvbmx5CiAgICAgICAgaW5jbHVkZWQgYmVjYXVzZSB0
aGV5IHRoZW1zZWx2ZXMgZGVwZW5kIG9uIG90aGVyIGRlcGVuZGVuY2llcyBidWlsdCBieSBqaGJ1
aWxkLiAtLT4KIAo=
</data>
<flag name="review"
          id="386623"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>