<?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>100819</bug_id>
          
          <creation_ts>2012-10-30 23:38:40 -0700</creation_ts>
          <short_desc>Coordinated Graphics: Remove the dependency of ShareableSurface from Coordinated Graphics.</short_desc>
          <delta_ts>2012-12-10 02:38:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100797</dependson>
    
    <dependson>100907</dependson>
          <blocked>102994</blocked>
    
    <blocked>104347</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>d.nomiyama</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>levin+threading</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755000</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-30 23:38:40 -0700</bug_when>
    <thetext>It is a preparation patch for Threaded Coordinated Graphics.

Currently, LayerTreeCoordinator, CoordinatedGraphicsLayer, CoordinatedTile and
CoordinatedBackingStore directly use ShareableSurface. ShareableSurface was
implemented to share an image between processes. We do not want to put many
guards on those classes to implement Threaded Coordinated Graphics.

This patch introduces CoordinatedSurface. Those classes just use
CoordinatedSurface. CoordinatedShareableSurface plays a role in sharing an image
between processes as ShareableSurface did. The implementation of
CoordinatedShareableSurface is just using ShareableSurface.

We will introduce CoordinatedThreadSafeSurface, which plays a role in sharing an
image between threads. It will be implemented using mutex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755011</commentid>
    <comment_count>1</comment_count>
      <attachid>171588</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-30 23:53:47 -0700</bug_when>
    <thetext>Created attachment 171588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755913</commentid>
    <comment_count>2</comment_count>
      <attachid>171774</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-31 23:06:48 -0700</bug_when>
    <thetext>Created attachment 171774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755914</commentid>
    <comment_count>3</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-31 23:07:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=171774) [details]
&gt; Patch

Rebased to upstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756761</commentid>
    <comment_count>4</comment_count>
      <attachid>171960</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-01 17:54:17 -0700</bug_when>
    <thetext>Created attachment 171960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756762</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-01 17:54:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=171960) [details]
&gt; Patch

Rebased to upstream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756949</commentid>
    <comment_count>6</comment_count>
      <attachid>171998</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-02 00:38:08 -0700</bug_when>
    <thetext>Created attachment 171998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756952</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-02 00:39:30 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=171998) [details]
&gt; Patch

Patch for EWS analysis after dependencies are removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756985</commentid>
    <comment_count>8</comment_count>
      <attachid>171998</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-02 02:05:21 -0700</bug_when>
    <thetext>Comment on attachment 171998
Patch

Attachment 171998 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14687759</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757815</commentid>
    <comment_count>9</comment_count>
      <attachid>171998</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-02 18:04:12 -0700</bug_when>
    <thetext>Comment on attachment 171998
Patch

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

Recapping from IRC:
1. If the other implementation of CoordinatedSurface doesn&apos;t use IPC, why create CoordinatedSurface::encode/decode?
2. Seems like the choice of implementations should be in compile time and not runtime.

The more I look at this patch, the more I think that coordinated-graphics is not the right way to make threaded compositing; I&apos;d much prefer it if TextureMapperLayer was in a different thread, and modify flush/updateContents to use an actor model instead of a direct sync.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedShareableSurface.h:39
&gt; +    static PassRefPtr&lt;CoordinatedShareableSurface&gt; create(CoordinatedSurfaceClient*, const WebCore::IntSize&amp;, bool alpha);

Please use flags, not bool alpha.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:61
&gt; +    virtual CoordinatedSurfaceID id() const = 0;

This is only relevant to IPC

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:62
&gt; +    virtual SurfaceType type() const = 0;

Isn&apos;t this a compile-time thing? When would you want to compile threaded and IPC at the same time?

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:71
&gt; +    virtual bool alpha() const = 0;
&gt; +    virtual const WebCore::IntSize&amp; size() const = 0;
&gt; +
&gt; +    // Create a graphics context that can be used to paint into the backing store.
&gt; +    virtual PassOwnPtr&lt;WebCore::GraphicsContext&gt; createGraphicsContext(const WebCore::IntRect&amp;) = 0;
&gt; +
&gt; +#if USE(TEXTURE_MAPPER)
&gt; +    virtual void copyToTexture(PassRefPtr&lt;WebCore::BitmapTexture&gt;, const WebCore::IntRect&amp; target, const WebCore::IntPoint&amp; sourceOffset) = 0;
&gt; +#endif

So CoordinatedSurface is really either a ShareableSurface or something like a thread-safe holder for an ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757856</commentid>
    <comment_count>10</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-02 19:33:56 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 171998 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171998&amp;action=review
&gt; 

Thanks for your review!
We will review this bug again after we decide whether to parallelize TexMap or Coordinated Graphics.

&gt; Recapping from IRC:
&gt; 1. If the other implementation of CoordinatedSurface doesn&apos;t use IPC, why create CoordinatedSurface::encode/decode?

I will introduce new guards COORDINATED_GRAPHICS_UI_SIDE and COORDINATED_GRAPHICS_THREADED.
Both guards always are under COORDINATED_GRAPHICS.

You&apos;er right, when COORDINATED_GRAPHICS_UI_SIDE is turned on, CoordinatedShareableSurface can be compiled only.
Using inheritance here in spite of only one implementation is that I don&apos;t want to put #if guard on CoordinatedSurface.h to support exclusive requirements of UI_SIDE and THREADED.
I want GraphicsContext being pure abstract class because of the similar reason.
BTW, I will remove CoordinatedShareableSurface and reimplement CoordinatedSurface by impl idiom. After that, it is more obvious we choose in a compile time.

&gt; 2. Seems like the choice of implementations should be in compile time and not runtime.

As I mentioned above, we choose in a compile time.

&gt; The more I look at this patch, the more I think that coordinated-graphics is not the right way to make threaded compositing; I&apos;d much prefer it if TextureMapperLayer was in a different thread, and modify flush/updateContents to use an actor model instead of a direct sync.

I think making TextureMapperLayer run in a compositing thread is good, too. As you mentioned in IRC, we need to refactor that TextureMapperLayer uses TiledBackingStore, which has the ability to manage textures. I name it as TexMapTBS.
TexMapTBS will play a role like LayreTiler in Blackberry threaded compositor. TexMapTBS has the responsibility to copy a image on main thread to a texture on the compositing thread. Both main thread and compositing thread need to access TexMapTBS and this code will be complex. It is why LayerTiler code in blackberry compositor is complex.
I prefer Coordinated Graphics design to blackberry compositor design because it is obvious which code belongs to Web Process or UI Process in Coordinated Graphics. Blackberry compositor code mixes main thread part and compositing thread part together, especially in LayerTiler.
I&apos;ve not confidence to make as succinct code as Coordinated Graphics in that I parallelize TextureMapperLayer using TexMapTBS but I&apos;ll try. We can discuss next week.

I put the comparison among three compositors in WebKit.

                                                         TexMap                 ChromiumCompositor           BlackBerry
Layer in the main thread :             CoordinatedGraphicsLayer        LayerChromium            LayerWebKitThread
Layer off the main thread :               TextureMapperLayer                  CCLayer              LayerCompositingThread
Layer manager in the main thread :   LayerTreeCoordinator            CCLayerTreeHost     WebPagePrivate &amp;&amp; FrameLayers
Layer manager off the main thread :     LayerTreeRenderer         CCLayerTreeHostImpl          LayerRenderer
Tiles in the main thread :                          TBS                     TiledLayerChromium            LayerTiler
Tiles off the main thread :            CoordinatedBackingStore        CCTiledLayerImpl               LayerTiler

&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedShareableSurface.h:39
&gt; &gt; +    static PassRefPtr&lt;CoordinatedShareableSurface&gt; create(CoordinatedSurfaceClient*, const WebCore::IntSize&amp;, bool alpha);
&gt; 
&gt; Please use flags, not bool alpha.

The purpose of flags indicates alpha or opaque. I don&apos;t want Coordinated Graphics to know ShareableBitmap::Flag, which is too far abstraction. If you don&apos;t like boolean, how about introducing new enum in CoordinatedSurface?

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:61
&gt; &gt; +    virtual CoordinatedSurfaceID id() const = 0;
&gt; 
&gt; This is only relevant to IPC

TileID and LayerID as well as CoordinatedSurfaceID are needed to Threaded too. In detail, LayerTreeCoordinatedProxy in thread mode also caches CoordinatedSurfaces. When LayerTreeCoordinatedProxy receive TileUpdate message, LayerTreeCoordinatedProxy need to know CoordinatedSurfaceID to get CoordinatedSurface on which the updated tile draws.
 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:62
&gt; &gt; +    virtual SurfaceType type() const = 0;
&gt; 
&gt; Isn&apos;t this a compile-time thing? When would you want to compile threaded and IPC at the same time?

No, we decide in a compile time. The method is only for debugging. I&apos;ll remove the method as reimplemeting CoordinatedSurface by impl idiom.

&gt; 
&gt; So CoordinatedSurface is really either a ShareableSurface or something like a thread-safe holder for an ImageBuffer.

Yes, exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774168</commentid>
    <comment_count>11</comment_count>
      <attachid>175727</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 18:55:53 -0800</bug_when>
    <thetext>Created attachment 175727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774172</commentid>
    <comment_count>12</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-22 19:00:55 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=175727) [details]
&gt; Patch

This bug revives.

We need sort of surface abstraction that coordinated graphics will use in WebCore.
Currently coordinated graphics uses ShareableSurface, but after we move some classes in coordinated graphics (e.g. CoordinatedTile), we can not use ShareableSurface.

So this patch introduces CoordinatedSurface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774585</commentid>
    <comment_count>13</comment_count>
      <attachid>175727</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-23 08:40:26 -0800</bug_when>
    <thetext>Comment on attachment 175727
Patch

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

Why not just move ShareableSurface to the CoordinatedGraphics folder, and have it inherit from CoordinatedSurface? This patch can be a lot smaller...

&gt; Source/WebKit2/ChangeLog:17
&gt; +        this patch introduces new class: CoordinatedSurface. After this patch,
&gt; +        Coordinated Graphics draws something on CoordinatedSurface.

this patch introduces new class: CoordinatedSurface, to be used as a drawing surface for Coordinated Graphics.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedShareableSurface.h:39
&gt; +    static PassRefPtr&lt;CoordinatedShareableSurface&gt; create(const WebCore::IntSize&amp;, bool alpha);

bool alpha == boolean trap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774760</commentid>
    <comment_count>14</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-23 20:42:46 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 175727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175727&amp;action=review
&gt; 
&gt; Why not just move ShareableSurface to the CoordinatedGraphics folder, and have it inherit from CoordinatedSurface? This patch can be a lot smaller...

Because I could not imagine yet. That&apos;s good idea. I&apos;ll update :)

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedShareableSurface.h:39
&gt; &gt; +    static PassRefPtr&lt;CoordinatedShareableSurface&gt; create(const WebCore::IntSize&amp;, bool alpha);
&gt; 
&gt; bool alpha == boolean trap

You&apos;re right! I&apos;ll change boolean to enum as following this guide line: http://doc.qt.digia.com/qq/qq13-apis.html#thebooleanparametertrap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774785</commentid>
    <comment_count>15</comment_count>
      <attachid>175852</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-23 23:14:05 -0800</bug_when>
    <thetext>Created attachment 175852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774842</commentid>
    <comment_count>16</comment_count>
      <attachid>175852</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-24 09:02:50 -0800</bug_when>
    <thetext>Comment on attachment 175852
Patch

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

Much better, but requires some tweaking.

&gt; Source/WebKit2/ChangeLog:25
&gt; +        Currently, CoordinatedGraphicsLayer, CoordinatedTile and
&gt; +        CoordinatedBackingStore directly use ShareableSurface. ShareableSurface was
&gt; +        implemented to share an image between processes as well as placed in WK2.
&gt; +        We want them to not depend on ShareableSurface to move them into WebCore. So
&gt; +        this patch introduces new class: CoordinatedSurface, to be used as a
&gt; +        drawing surface for Coordinated Graphics.
&gt; +
&gt; +        When we move some classes of Coordinated Graphics into WebCore,
&gt; +        CoordinatedSurface.h will be moved too, but CoordinatedShareableSurface
&gt; +        will be left in WK2.
&gt; +
&gt; +        We will introduce CoordinatedThreadSafeSurface later, which plays a role in
&gt; +        sharing an surface between threads. Coordinated Graphics on WK1 will use
&gt; +        CoordinatedThreadSafeSurface.

Can you focus here less about the whole story and more about what you&apos;re doing in the actual patch?
Something like,
Create a CoordinatedSurface class that can be the base class both for the current IPC-based ShareableSurface, renamed here to WebCoordinatedSurface, and to a future thread-based surface implementation.

&gt; Source/WebKit2/ChangeLog:68
&gt; +          This struct exists to pass CoordinatedSurface to UI Process. We can
&gt; +          not pass the message including non-POD members between processes yet.

That&apos;s not accurate.

&gt; Source/WebKit2/CMakeLists.txt:220
&gt; +    Shared/CoordinatedGraphics/CoordinatedShareableSurface.cpp

Let&apos;s call this creature WebCoordinatedSurface.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:33
&gt; +#include &quot;CoordinatedSurfaceInfo.h&quot;

Instead of creating a new file for this, why don&apos;t we add at the end of WebCoordinatedSurface:
typedef RefPtr&lt;WebCoordinatedSurface&gt; WebCoordinatedSurfaceRef;

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:47
&gt; +    enum Alpha {
&gt; +        Opaque,
&gt; +        SupportsAlpha
&gt; +    };

Let&apos;s use flags like the other classes. Then we can add more flags later if we have to.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:55
&gt; +    static bool supportsAlpha(Alpha alpha) { return alpha == Opaque ? false : true; }
&gt; +    static Alpha toAlpha(bool supportsAlpha) { return supportsAlpha ? SupportsAlpha : Opaque; }
&gt; +
&gt; +    virtual Alpha alpha() const = 0;

Are these really needed?
What about 
CoordinatedSurface::supportsAlpha() { return flags() &amp; SupportsAlpha; }

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurfaceInfo.h:39
&gt; +struct CoordinatedSurfaceInfo {
&gt; +    RefPtr&lt;CoordinatedSurface&gt; coordinatedSurface;
&gt; +};

This file is not needed, see above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784626</commentid>
    <comment_count>17</comment_count>
      <attachid>175852</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-05 22:27:02 -0800</bug_when>
    <thetext>Comment on attachment 175852
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:25
&gt;&gt; +        CoordinatedThreadSafeSurface.
&gt; 
&gt; Can you focus here less about the whole story and more about what you&apos;re doing in the actual patch?
&gt; Something like,
&gt; Create a CoordinatedSurface class that can be the base class both for the current IPC-based ShareableSurface, renamed here to WebCoordinatedSurface, and to a future thread-based surface implementation.

Thank you for good advice!

&gt;&gt; Source/WebKit2/ChangeLog:68
&gt;&gt; +          not pass the message including non-POD members between processes yet.
&gt; 
&gt; That&apos;s not accurate.

I see.

&gt;&gt; Source/WebKit2/CMakeLists.txt:220
&gt;&gt; +    Shared/CoordinatedGraphics/CoordinatedShareableSurface.cpp
&gt; 
&gt; Let&apos;s call this creature WebCoordinatedSurface.

great suggestion!

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:33
&gt;&gt; +#include &quot;CoordinatedSurfaceInfo.h&quot;
&gt; 
&gt; Instead of creating a new file for this, why don&apos;t we add at the end of WebCoordinatedSurface:
&gt; typedef RefPtr&lt;WebCoordinatedSurface&gt; WebCoordinatedSurfaceRef;

Ok for not creating a new file, but typedef is impossible.

Currently we can use only struct or class for argument of message.
In the detail,
messages.py generates forward declarations in LayerTreeCoordinatorProxyMessages.h
#include &quot;Arguments.h&quot;
#include &quot;MessageEncoder.h&quot;
#include &quot;MessageID.h&quot;
#include &quot;StringReference.h&quot;
#include &lt;wtf/Vector.h&gt;

namespace WebCore {
    class CustomFilterProgramInfo;
    class FilterOperations;
    class GraphicsLayerAnimations;
    class IntSize;
    class GraphicsSurfaceToken;
    class Color;
    class IntRect;
    class IntPoint;
}

namespace WebKit {
    class WebLayerInfo;
    struct CoordinatedSurfaceRef;
    class SurfaceUpdateInfo;
}


struct SetCompositingLayerState : CoreIPC::Arguments2&lt;uint32_t, const WebKit::WebLayerInfo&amp;&gt; {
    static const Kind messageID = SetCompositingLayerStateID;
    static CoreIPC::StringReference receiverName() { return messageReceiverName(); }
    static CoreIPC::StringReference name() { return CoreIPC::StringReference(&quot;SetCompositingLayerState&quot;); }
    static const bool isSync = false;

    typedef CoreIPC::Arguments2&lt;uint32_t, const WebKit::WebLayerInfo&amp;&gt; DecodeType;
    SetCompositingLayerState(uint32_t id, const WebKit::WebLayerInfo&amp; layerInfo)
        : CoreIPC::Arguments2&lt;uint32_t, const WebKit::WebLayerInfo&amp;&gt;(id, layerInfo)
    {
    }
};


There are only two options in messages.py: class or struct.
def struct_or_class(namespace, type):
    structs = frozenset([
        ...
        &apos;WebCore::TransformOperation&apos;,
        &apos;WebCore::TransformOperations&apos;,
        &apos;WebKit::CoordinatedSurfaceRef&apos;,
        &apos;WebKit::DictionaryPopupInfo&apos;,
        ...
    ])

    qualified_name = &apos;%s::%s&apos; % (namespace, type)
    if qualified_name in structs:
        return &apos;struct %s&apos; % type

    return &apos;class %s&apos; % type

so, we need struct to use as an argument of message, unfortunately.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:47
&gt;&gt; +    };
&gt; 
&gt; Let&apos;s use flags like the other classes. Then we can add more flags later if we have to.

absolutely! I did not know that kind of convention :)

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:55
&gt;&gt; +    virtual Alpha alpha() const = 0;
&gt; 
&gt; Are these really needed?
&gt; What about 
&gt; CoordinatedSurface::supportsAlpha() { return flags() &amp; SupportsAlpha; }

I see. I misunderstood your past request.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurfaceInfo.h:39
&gt;&gt; +};
&gt; 
&gt; This file is not needed, see above.

Yes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784654</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-05 23:04:27 -0800</bug_when>
    <thetext>&gt; &gt; Instead of creating a new file for this, why don&apos;t we add at the end of WebCoordinatedSurface:
&gt; &gt; typedef RefPtr&lt;WebCoordinatedSurface&gt; WebCoordinatedSurfaceRef;
&gt; 
&gt; Ok for not creating a new file, but typedef is impossible.
Source/WebKit2/Scripts/webkit2/messages.py, look for special cases :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784785</commentid>
    <comment_count>19</comment_count>
      <attachid>177979</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 02:28:34 -0800</bug_when>
    <thetext>Created attachment 177979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784787</commentid>
    <comment_count>20</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 02:30:47 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; &gt; Instead of creating a new file for this, why don&apos;t we add at the end of WebCoordinatedSurface:
&gt; &gt; &gt; typedef RefPtr&lt;WebCoordinatedSurface&gt; WebCoordinatedSurfaceRef;
&gt; &gt; 
&gt; &gt; Ok for not creating a new file, but typedef is impossible.
&gt; Source/WebKit2/Scripts/webkit2/messages.py, look for special cases :)

We are the first to use type except for struct and class as an argument of messages. However, your instruction helps me to change messages.py to handle typedef!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784953</commentid>
    <comment_count>21</comment_count>
      <attachid>177979</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-06 08:03:13 -0800</bug_when>
    <thetext>Comment on attachment 177979
Patch

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

This changes the behavior implicitly in a way that the bitmap handle is alive for the lifetime of the surface. We should find a way to make this refactor without changing this behavior.

&gt; Source/WebKit2/ChangeLog:36
&gt; +        * Scripts/webkit2/messages.py:
&gt; +        (forward_declarations_and_headers):
&gt; +          This patch needs to use typedef as an argument of messages, so this patch changes
&gt; +          forward_declarations_and_headers function to include headers for types in special_cases set,
&gt; +          not to make forward declarations.
&gt; +        (headers_for_type):
&gt; +          CoordinatedSurfaceRef&apos;s header needs to be special cased to
&gt; +          CoordinatedSurface.h.

Please review this in a separate bug report, mentioning this one as a use case.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:58
&gt; +    virtual const WebCore::IntSize&amp; size() const = 0;

The const&amp; thing is not needed... An IntSize is as expensive to copy as a pointer. Keep it the same as WebCore::Image::size

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.h:118
&gt; +    enum Purpose {
&gt; +        Producer,
&gt; +        Consumer
&gt; +    };
&gt; +    // This member exists for only a debugging purpose. It is Producer in Web Process, while Consumer in UI Process.
&gt; +    Purpose m_purpose;

This should be in DEBUG ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785307</commentid>
    <comment_count>22</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 14:53:10 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 177979 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177979&amp;action=review

Thank you for review!

&gt; This changes the behavior implicitly in a way that the bitmap handle is alive for the lifetime of the surface. We should find a way to make this refactor without changing this behavior.

Could you explain why bitmap handle has the same lifetime of the surface? I can destroy handle as soon as sending creation message to UI Process, but it also changes behavior. IMO, this change is acceptable.

&gt; &gt; Source/WebKit2/ChangeLog:36
&gt; &gt; +        * Scripts/webkit2/messages.py:
&gt; &gt; +        (forward_declarations_and_headers):
&gt; &gt; +          This patch needs to use typedef as an argument of messages, so this patch changes
&gt; &gt; +          forward_declarations_and_headers function to include headers for types in special_cases set,
&gt; &gt; +          not to make forward declarations.
&gt; &gt; +        (headers_for_type):
&gt; &gt; +          CoordinatedSurfaceRef&apos;s header needs to be special cased to
&gt; &gt; +          CoordinatedSurface.h.
&gt; 
&gt; Please review this in a separate bug report, mentioning this one as a use case.

I see. I&apos;ll make new patch with applying WebLayerID (for example)

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:58
&gt; &gt; +    virtual const WebCore::IntSize&amp; size() const = 0;
&gt; 
&gt; The const&amp; thing is not needed... An IntSize is as expensive to copy as a pointer. Keep it the same as WebCore::Image::size

You&apos;r right! I had copied and pasted without consiousness..

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.h:118
&gt; &gt; +    enum Purpose {
&gt; &gt; +        Producer,
&gt; &gt; +        Consumer
&gt; &gt; +    };
&gt; &gt; +    // This member exists for only a debugging purpose. It is Producer in Web Process, while Consumer in UI Process.
&gt; &gt; +    Purpose m_purpose;
&gt; 
&gt; This should be in DEBUG ifdef.

I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785311</commentid>
    <comment_count>23</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 14:54:33 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 177979 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177979&amp;action=review
&gt; 
&gt; Thank you for review!
&gt; 
&gt; &gt; This changes the behavior implicitly in a way that the bitmap handle is alive for the lifetime of the surface. We should find a way to make this refactor without changing this behavior.
&gt; 
&gt; Could you explain why bitmap handle has the same lifetime of the surface? I can destroy handle as soon as sending creation message to UI Process, but it also changes behavior. IMO, this change is acceptable.
&gt; 

Question is weird. I mean: Could you explain why don&apos;t you want bitmap handle to have the same lifetime of the surface?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785318</commentid>
    <comment_count>24</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-06 14:57:36 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Question is weird. I mean: Could you explain why don&apos;t you want bitmap handle to have the same lifetime of the surface?

Maintaining that handle might not be free, depending on the platform.
But the main issue is that this implicit behavior change shouldn&apos;t come in a class-hierarchy refactor patch like this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785404</commentid>
    <comment_count>25</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 16:36:14 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Question is weird. I mean: Could you explain why don&apos;t you want bitmap handle to have the same lifetime of the surface?
&gt; 
&gt; Maintaining that handle might not be free, depending on the platform.
&gt; But the main issue is that this implicit behavior change shouldn&apos;t come in a class-hierarchy refactor patch like this one.

Ok, firstly I &apos;ll make just class-hierarchy refactor and in the second, make UpdateInfo not need to handle explicitly.

In the detail,
1. WebCoordinatedSurface&apos;s constructor makes the handle.
2. Send handle to UI Process
3. Destroy the handle as soon as sending handle to UI Process.

How about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785683</commentid>
    <comment_count>26</comment_count>
      <attachid>178168</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 23:55:15 -0800</bug_when>
    <thetext>Created attachment 178168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785684</commentid>
    <comment_count>27</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-06 23:57:27 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Created an attachment (id=178168) [details]
&gt; Patch

I posted the patch changing messages.py in Bug 104339.
This patch focuses on only refactoring about class-hierarchy.

I&apos;ll post follow-up patch to remove WebCoordinatedSurface::Handler in Coordinated Graphics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786401</commentid>
    <comment_count>28</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 20:44:29 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; Created an attachment (id=178168) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I posted the patch changing messages.py in Bug 104339.

andersca disagrees about typedef in Bug 104339.
I can work around via creating something like struct CoordinatedSurfaceInfo.
How do you think about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786403</commentid>
    <comment_count>29</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-07 20:47:40 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; Created an attachment (id=178168) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I posted the patch changing messages.py in Bug 104339.
&gt; 
&gt; andersca disagrees about typedef in Bug 104339.
&gt; I can work around via creating something like struct CoordinatedSurfaceInfo.
&gt; How do you think about it.

Just encode/decode the handle and extract it like we did before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786438</commentid>
    <comment_count>30</comment_count>
      <attachid>178341</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 23:07:33 -0800</bug_when>
    <thetext>Created attachment 178341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786439</commentid>
    <comment_count>31</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 23:08:18 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; &gt; Created an attachment (id=178168) [details] [details] [details] [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; I posted the patch changing messages.py in Bug 104339.
&gt; &gt; 
&gt; &gt; andersca disagrees about typedef in Bug 104339.
&gt; &gt; I can work around via creating something like struct CoordinatedSurfaceInfo.
&gt; &gt; How do you think about it.
&gt; 
&gt; Just encode/decode the handle and extract it like we did before.

Yes, I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786440</commentid>
    <comment_count>32</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-07 23:09:53 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=178341) [details]
&gt; Patch

This patch is about only class hierarchy refactoring.
patch about removing handle will be posted in Bug 104347.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786948</commentid>
    <comment_count>33</comment_count>
      <attachid>178341</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-09 20:15:55 -0800</bug_when>
    <thetext>Comment on attachment 178341
Patch

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

I&apos;m ok with the change, but the toFlags(...) thing is not an improvement IMO, and the signature of the size() function wasn&apos;t changed.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:58
&gt; +    virtual const WebCore::IntSize&amp; size() const = 0;

Didn&apos;t we agree to make this 
virtual WebCore::IntSize size() const = 0?

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:743
&gt; -    return m_coordinator-&gt;beginContentUpdate(size, contentsOpaque() ? 0 : ShareableBitmap::SupportsAlpha, atlas, offset);
&gt; +    return m_coordinator-&gt;beginContentUpdate(size, CoordinatedSurface::toFlags(!contentsOpaque()), atlas, offset);

This toFlags change doesn&apos;t improve readability.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:778
&gt; -        if (atlas-&gt;flags() == flags) {
&gt; +        if (atlas-&gt;supportsAlpha() == CoordinatedSurface::supportsAlpha(flags)) {

This doesn&apos;t improve readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786956</commentid>
    <comment_count>34</comment_count>
      <attachid>178465</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-09 21:01:09 -0800</bug_when>
    <thetext>Created attachment 178465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786957</commentid>
    <comment_count>35</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-09 21:03:03 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 178341 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178341&amp;action=review
&gt; 
&gt; I&apos;m ok with the change, but the toFlags(...) thing is not an improvement IMO, and the signature of the size() function wasn&apos;t changed.
&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:58
&gt; &gt; +    virtual const WebCore::IntSize&amp; size() const = 0;
&gt; 
&gt; Didn&apos;t we agree to make this 
&gt; virtual WebCore::IntSize size() const = 0?

It&apos;s mistake. I missed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:743
&gt; &gt; -    return m_coordinator-&gt;beginContentUpdate(size, contentsOpaque() ? 0 : ShareableBitmap::SupportsAlpha, atlas, offset);
&gt; &gt; +    return m_coordinator-&gt;beginContentUpdate(size, CoordinatedSurface::toFlags(!contentsOpaque()), atlas, offset);
&gt; 
&gt; This toFlags change doesn&apos;t improve readability.

Ok, I&apos;ll remove.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:778
&gt; &gt; -        if (atlas-&gt;flags() == flags) {
&gt; &gt; +        if (atlas-&gt;supportsAlpha() == CoordinatedSurface::supportsAlpha(flags)) {
&gt; 
&gt; This doesn&apos;t improve readability.

Ok, I&apos;ll remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786959</commentid>
    <comment_count>36</comment_count>
      <attachid>178466</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-09 21:08:28 -0800</bug_when>
    <thetext>Created attachment 178466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786972</commentid>
    <comment_count>37</comment_count>
      <attachid>178466</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-12-09 21:38:11 -0800</bug_when>
    <thetext>Comment on attachment 178466
Patch

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

&gt; Source/WebKit2/ChangeLog:17
&gt; +        Currently, CoordinatedGraphicsLayer, CoordinatedTile and
&gt; +        CoordinatedBackingStore directly use ShareableSurface. ShareableSurface was
&gt; +        implemented to share an image between processes as well as placed in WK2.
&gt; +        We want them to not depend on ShareableSurface to move them into WebCore. So
&gt; +        this patch introduces new class: CoordinatedSurface, to be used as a
&gt; +        drawing surface for Coordinated Graphics.

Please remove this part; It needs some English correction and is not actually necessary :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786984</commentid>
    <comment_count>38</comment_count>
      <attachid>178472</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-09 22:14:23 -0800</bug_when>
    <thetext>Created attachment 178472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786985</commentid>
    <comment_count>39</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-09 22:15:03 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 178466 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178466&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:17
&gt; &gt; +        Currently, CoordinatedGraphicsLayer, CoordinatedTile and
&gt; &gt; +        CoordinatedBackingStore directly use ShareableSurface. ShareableSurface was
&gt; &gt; +        implemented to share an image between processes as well as placed in WK2.
&gt; &gt; +        We want them to not depend on ShareableSurface to move them into WebCore. So
&gt; &gt; +        this patch introduces new class: CoordinatedSurface, to be used as a
&gt; &gt; +        drawing surface for Coordinated Graphics.
&gt; 
&gt; Please remove this part; It needs some English correction and is not actually necessary :)

Thanks for review! I removed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787058</commentid>
    <comment_count>40</comment_count>
      <attachid>178472</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 00:29:28 -0800</bug_when>
    <thetext>Comment on attachment 178472
Patch

Clearing flags on attachment: 178472

Committed r137117: &lt;http://trac.webkit.org/changeset/137117&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787059</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 00:29:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787071</commentid>
    <comment_count>42</comment_count>
      <attachid>178472</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-12-10 01:16:36 -0800</bug_when>
    <thetext>Comment on attachment 178472
Patch

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

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:49
&gt; +    bool supportsAlpha() { return flags() &amp; SupportsAlpha; }

Looks strange that this method is not const

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:44
&gt; +    encoder.encode(m_size);

encoder &lt;&lt; ?

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:208
&gt; +        texture-&gt;updateContents(image.get(), target, IntPoint::zero(), BitmapTexture::UpdateCanModifyOriginalImageData);

interesting why we don&apos;t return here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787082</commentid>
    <comment_count>43</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-10 01:35:56 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787083</commentid>
    <comment_count>44</comment_count>
      <attachid>178487</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-10 01:36:03 -0800</bug_when>
    <thetext>Created attachment 178487
Patch : It is a follow-up patch of r137117.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787087</commentid>
    <comment_count>45</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-10 01:38:46 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (From update of attachment 178472 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178472&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedSurface.h:49
&gt; &gt; +    bool supportsAlpha() { return flags() &amp; SupportsAlpha; }
&gt; 
&gt; Looks strange that this method is not const

Thank you for finding. I missed.

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:44
&gt; &gt; +    encoder.encode(m_size);
&gt; 
&gt; encoder &lt;&lt; ?

I&apos;ll change. I just copied this code from ShareableSurface.

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:208
&gt; &gt; +        texture-&gt;updateContents(image.get(), target, IntPoint::zero(), BitmapTexture::UpdateCanModifyOriginalImageData);
&gt; 
&gt; interesting why we don&apos;t return here

I just copied, too. I&apos;ll fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787095</commentid>
    <comment_count>46</comment_count>
      <attachid>178491</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-10 01:42:01 -0800</bug_when>
    <thetext>Created attachment 178491
Patch : WebCoordinatedSurface::copyToTexture should return early if the backend is GraphicsSurface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787100</commentid>
    <comment_count>47</comment_count>
      <attachid>178491</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-12-10 01:44:20 -0800</bug_when>
    <thetext>Comment on attachment 178491
Patch : WebCoordinatedSurface::copyToTexture should return early if the backend is GraphicsSurface.

I have to trust you on this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787108</commentid>
    <comment_count>48</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-12-10 01:53:15 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; (From update of attachment 178491 [details])
&gt; I have to trust you on this

I think you can trust me on this patch at least. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787128</commentid>
    <comment_count>49</comment_count>
      <attachid>178491</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 02:36:29 -0800</bug_when>
    <thetext>Comment on attachment 178491
Patch : WebCoordinatedSurface::copyToTexture should return early if the backend is GraphicsSurface.

Clearing flags on attachment: 178491

Committed r137125: &lt;http://trac.webkit.org/changeset/137125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787129</commentid>
    <comment_count>50</comment_count>
      <attachid>178487</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 02:38:39 -0800</bug_when>
    <thetext>Comment on attachment 178487
Patch : It is a follow-up patch of r137117.

Clearing flags on attachment: 178487

Committed r137126: &lt;http://trac.webkit.org/changeset/137126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787130</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 02:38:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171588</attachid>
            <date>2012-10-30 23:53:47 -0700</date>
            <delta_ts>2012-10-31 23:06:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121031155210.patch</filename>
            <type>text/plain</type>
            <size>56961</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyOTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzRlZWI3NWQyYTEwNDVi
N2QyMzAxMTY3ZmQ0Nzg3YmRmMjI2MWQzNy4uZDk3MGM5NGU2MWE2YjgwMDVhYTFkZTdmODNlOWU2
MTZhOTYzNGY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExNyBAQAogMjAxMi0xMC0zMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1cmZhY2Ug
ZnJvbSBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVybmFsIFJldmlldyBieSBHd2FuZyBZb29uIEh3YW5nIGFu
ZCBKYWUgSHl1biBQYXJrLgorCisgICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9y
IFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIEN1cnJlbnRseSwgTGF5
ZXJUcmVlQ29vcmRpbmF0b3IsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciwgQ29vcmRpbmF0ZWRU
aWxlIGFuZAorICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSBkaXJlY3RseSB1c2UgU2hh
cmVhYmxlU3VyZmFjZS4gU2hhcmVhYmxlU3VyZmFjZSB3YXMKKyAgICAgICAgaW1wbGVtZW50ZWQg
dG8gc2hhcmUgYW4gaW1hZ2UgYmV0d2VlbiBwcm9jZXNzZXMuIFdlIGRvIG5vdCB3YW50IHRvIHB1
dCBtYW55CisgICAgICAgIGd1YXJkcyBvbiB0aG9zZSBjbGFzc2VzIHRvIGltcGxlbWVudCBUaHJl
YWRlZCBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgQ29vcmRpbmF0ZWRTdXJmYWNlLiBUaG9zZSBjbGFzc2VzIGp1c3QgdXNlCisgICAgICAgIENv
b3JkaW5hdGVkU3VyZmFjZS4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIHBsYXlzIGEgcm9s
ZSBpbiBzaGFyaW5nIGFuIGltYWdlCisgICAgICAgIGJldHdlZW4gcHJvY2Vzc2VzIGFzIFNoYXJl
YWJsZVN1cmZhY2UgZGlkLiBUaGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlIGlzIGp1c3QgdXNpbmcgU2hhcmVhYmxlU3VyZmFjZS4KKworICAg
ICAgICBXZSB3aWxsIGludHJvZHVjZSBDb29yZGluYXRlZFRocmVhZFNhZmVTdXJmYWNlLCB3aGlj
aCBwbGF5cyBhIHJvbGUgaW4gc2hhcmluZyBhbgorICAgICAgICBpbWFnZSBiZXR3ZWVuIHRocmVh
ZHMuIEl0IHdpbGwgYmUgaW1wbGVtZW50ZWQgdXNpbmcgbXV0ZXguCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpDb29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2U6On5Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OlByb2R1Y2VyRGF0YTo6UHJvZHVjZXJEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1
cmZhY2U6OmhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAgIFRoaXMgY2xhc3Mg
aXMgb25lIGltcGxlbWVudGF0aW9uIG9mIENvb3JkaW5hdGVkU3VyZmFjZSB0byBzaGFyZSBhbgor
ICAgICAgICAgIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6CisgICAgICAgIChQcm9kdWNlckRh
dGEpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1
cmZhY2U6On5Db29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgICBUaGlzIGNs
YXNzIGlzIGludHJvZHVjZWQgdG8gcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1
cmZhY2UKKyAgICAgICAgICBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLiBBbGwgY2xhc3NlcyBp
biBDb29yZGluYXRlZCBHcmFwaGljcyB1c2UKKyAgICAgICAgICB0aGlzIGNsYXNzIGluc3RlYWQg
b2YgU2hhcmVhYmxlU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkU3VyZmFjZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oOiBBZGRlZC4KKyAgICAg
ICAgICBUaGlzIGNsYXNzIGlzIGltcGxlbWVudGVkIHRvIHBhc3MgQ29vcmRpbmF0ZWRTdXJmYWNl
IHRvIFVJIFByb2Nlc3MuCisgICAgICAgICAgSXQgaXMgYmVjYXVzZSB3ZSBjYW4gbm90IHBhc3Mg
dGhlIG1lc3NhZ2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycworICAgICAgICAgIGJldHdlZW4g
cHJvY2Vzc2VzIHlldC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZFN1cmZhY2VJbmZvOjpDb29yZGluYXRlZFN1cmZhY2VJbmZvKToKKyAgICAgICAgKiBTaGFy
ZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXJmYWNlVXBkYXRl
SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm86OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmg6CisgICAgICAgIChTdXJm
YWNlVXBkYXRlSW5mbyk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1
cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVn
aW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkVGlsZTo6dXBk
YXRlQmFja0J1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmg6CisgICAgICAgIChDb29yZGluYXRlZFRpbGVDbGll
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3Ip
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVw
ZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6
YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVXBkYXRlQXRsYXMuaDoKKyAgICAgICAgKFVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdl
YktpdDo6VXBkYXRlQXRsYXM6OmFscGhhKToKKworMjAxMi0xMC0zMCAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGlj
czogTWFuYWdlIHRoZSBsaWZlY3ljbGUgb2Ygc2hhcmVhYmxlIHN1cmZhY2VzIHByZWNpc2VseS4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc5Nwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDZlNDZmNDhhOTllMzEyYjM3MDYzMWNhYjIzMzI3Yjky
YjU1NWNiMWUuLmUwMzZkNDBkOGZlNDE2NjZmZTExMmU1MmJiMDgwNTBhNTM5M2UzZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CkBAIC0yMTgsNiArMjE4LDkgQEAgU0VUKFdlYktpdDJfU09VUkNFUwog
ICAgIFNoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKIAogICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1
cmZhY2UuY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFj
ZUluZm8uY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcAogICAg
IFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFy
ZWFibGVTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFhN2ZkY2Nm
ZGY2MjBlZDI4NTE4MzE0ZGFkMmU4OGQzZTVkOGIyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxl
U3VyZmFjZS5jcHAKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29tcGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oIgor
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
aGFyZWFibGVTdXJmYWNlPiBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShDb29y
ZGluYXRlZFN1cmZhY2VDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkU2hh
cmVhYmxlU3VyZmFjZShjbGllbnQsIHNpemUsIGFscGhhKSk7Cit9CisKK1Bhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNy
ZWF0ZShjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSwgQ29vcmRpbmF0ZWRT
dXJmYWNlSUQgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UoaGFuZGxlLCBpZCkpOworfQorCitDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2U6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShDb29yZGluYXRlZFN1cmZhY2VDbGllbnQq
IGNsaWVudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBhbHBoYSkKKyAgICA6
IG1fc3VyZmFjZShTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgYWxwaGEgPyBTaGFyZWFi
bGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJl
YWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKSkKKyAgICAsIG1fcHVycG9zZShQ
cm9kdWNlcikKKyAgICAsIG1faXNWYWlsZChmYWxzZSkKK3sKKyAgICBzdGF0aWMgaW50IGlkID0g
MDsKKyAgICBtX0lEID0gKytpZDsKKworICAgIGlmICghbV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUo
bV9wcm9kdWNlckRhdGEubV9oYW5kbGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzVmFp
bGQgPSB0cnVlOworICAgIEFTU0VSVChjbGllbnQpOworICAgIG1fcHJvZHVjZXJEYXRhLm1fY2xp
ZW50ID0gY2xpZW50OworICAgIG1fcHJvZHVjZXJEYXRhLm1fY2xpZW50LT5jcmVhdGVDb29yZGlu
YXRlZFN1cmZhY2UodGhpcyk7Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Q29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYg
aGFuZGxlLCBDb29yZGluYXRlZFN1cmZhY2VJRCBpZCkKKyAgICA6IG1fc3VyZmFjZShTaGFyZWFi
bGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkKKyAgICAsIG1fcHVycG9zZShDb25zdW1lcikKKyAg
ICAsIG1fSUQoaWQpCisgICAgLCBtX2lzVmFpbGQoZmFsc2UpCit7CisgICAgaWYgKCFtX3N1cmZh
Y2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNWYWlsZCA9IHRydWU7Cit9CisKK0Nvb3Jk
aW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6fkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSgpCit7
CisgICAgaWYgKG1fcHVycG9zZSA9PSBQcm9kdWNlciAmJiBtX2lzVmFpbGQpIHsKKyAgICAgICAg
QVNTRVJUKG1fcHJvZHVjZXJEYXRhLm1fY2xpZW50KTsKKyAgICAgICAgbV9wcm9kdWNlckRhdGEu
bV9jbGllbnQtPnJlbW92ZUNvb3JkaW5hdGVkU3VyZmFjZShtX0lEKTsKKyAgICB9Cit9CisKK0Nv
b3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6UHJvZHVjZXJEYXRhOjpQcm9kdWNlckRhdGEoKQor
ICAgIDogbV9jbGllbnQoMCkKK3sgfQorCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50
UmVjdCYgcmVjdCkKK3sKKyAgICBBU1NFUlQobV9wdXJwb3NlID09IFByb2R1Y2VyKTsKKworICAg
IGlmICghbV9pc1ZhaWxkKQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+KCk7CisKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQocmVjdCk7Cit9CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCit2b2lkIENvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZTo6Y29weVRvVGV4dHVyZShQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBz
b3VyY2VPZmZzZXQpCit7CisgICAgQVNTRVJUKG1fcHVycG9zZSA9PSBDb25zdW1lcik7CisgICAg
aWYgKG1faXNWYWlsZCkKKyAgICAgICAgbV9zdXJmYWNlLT5jb3B5VG9UZXh0dXJlKHBhc3NUZXh0
dXJlLCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7Cit9CisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQ
UEVSKQorCitjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZTo6aGFuZGxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9wdXJwb3NlID09IFBy
b2R1Y2VyKTsKKyAgICBBU1NFUlQobV9pc1ZhaWxkKTsKKyAgICByZXR1cm4gbV9wcm9kdWNlckRh
dGEubV9oYW5kbGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFNoYXJlYWJsZVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4YWIyNmM4
ZmM2NDY1MmUzODc2YmE3MjU4M2Y3NWE1NDM2NDNjNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJs
ZVN1cmZhY2UuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENv
bXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTaGFyZWFi
bGVTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUg
IkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSA6
IHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2UgeworcHVibGljOgorICAgIC8vIENyZWF0ZSBhIG5l
dyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UsIGFuZCBhbGxvY2F0ZSBhIFNoYXJlYWJsZVN1
cmZhY2UgYXMgYmFja2luZy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2U+IGNyZWF0ZShDb29yZGluYXRlZFN1cmZhY2VDbGllbnQqLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSk7CisKKyAgICAvLyBDcmVhdGUgYSBjb29yZGluYXRl
ZCBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFNoYXJlYWJsZVN1cmZh
Y2U6OkhhbmRsZSYsIENvb3JkaW5hdGVkU3VyZmFjZUlEKTsKKworICAgIHZpcnR1YWwgfkNvb3Jk
aW5hdGVkU2hhcmVhYmxlU3VyZmFjZSgpOworCisgICAgdmlydHVhbCBDb29yZGluYXRlZFN1cmZh
Y2VJRCBpZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fSUQ7IH0KKyAgICB2aXJ0dWFsIENv
b3JkaW5hdGVkU3VyZmFjZTo6U3VyZmFjZVR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIENvb3JkaW5hdGVkU3VyZmFjZTo6U2hhcmVhYmxlOyB9CisgICAgdmlydHVhbCBib29sIGFs
cGhhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zdXJmYWNlLT5mbGFncygpID09IFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsgfQorICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgp
OyB9CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQg
dG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAg
IHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4
dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHNvdXJjZU9mZnNldCkgT1ZFUlJJREU7CisjZW5kaWYKKworICAgIGNvbnN0IFNoYXJl
YWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZW51
bSBQdXJwb3NlIHsKKyAgICAgICAgUHJvZHVjZXIsCisgICAgICAgIENvbnN1bWVyCisgICAgfTsK
KyAgICBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UoQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50
KiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wgYWxwaGEpOworICAgIENvb3JkaW5hdGVk
U2hhcmVhYmxlU3VyZmFjZShjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmLCBDb29yZGlu
YXRlZFN1cmZhY2VJRCk7CisKKyAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNl
OworICAgIFB1cnBvc2UgbV9wdXJwb3NlOworICAgIENvb3JkaW5hdGVkU3VyZmFjZUlEIG1fSUQ7
CisgICAgYm9vbCBtX2lzVmFpbGQ7CisKKyAgICAvLyBPbmx5IENvb3JkaW5hdGVkU2hhcmVhYmxl
U3VyZmFjZSB3aXRoIFByb2R1Y2VyIGVudW0gaGFzIHRoaXMgc3RydWN0IGFzIGEgbWVtYmVyLgor
ICAgIHN0cnVjdCBQcm9kdWNlckRhdGEgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
cm9kdWNlckRhdGEpOworICAgIHB1YmxpYzoKKyAgICAgICAgUHJvZHVjZXJEYXRhKCk7CisgICAg
ICAgIENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCogbV9jbGllbnQ7CisgICAgICAgIFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICB9OworICAgIFByb2R1Y2VyRGF0YSBtX3By
b2R1Y2VyRGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRp
ZiAvLyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM1MWM2ZDlkZmE5YTk1NTJjNzBmYzE4ZTQ0MTg5NjgxYWUw
MzNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRT
dXJmYWNlLmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJD
b29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgYWxwaGEpCit7CisgICAgcmV0
dXJuIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNsaWVudCwgc2l6ZSwgYWxw
aGEpOworfQorCitDb29yZGluYXRlZFN1cmZhY2U6On5Db29yZGluYXRlZFN1cmZhY2UoKQoreyB9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVmZWZjMjE1ODk5ODUzNDE1N2Y2YTY5YWIzMzc0ODdjMTFlOTYwNGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRT
dXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJJbnRS
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwor
dHlwZWRlZiB1aW50MzJfdCBDb29yZGluYXRlZFN1cmZhY2VJRDsKKworY2xhc3MgQ29vcmRpbmF0
ZWRTdXJmYWNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQ29vcmRp
bmF0ZWRTdXJmYWNlKFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDb29yZGluYXRlZFN1cmZhY2UoQ29vcmRpbmF0ZWRTdXJmYWNlSUQp
ID0gMDsKK307CisKK2NsYXNzIENvb3JkaW5hdGVkU3VyZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShDb29yZGluYXRlZFN1cmZhY2VDbGll
bnQqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSk7CisKKyAgICB2aXJ0dWFs
IH5Db29yZGluYXRlZFN1cmZhY2UoKTsKKworICAgIGVudW0gU3VyZmFjZVR5cGUgeworICAgICAg
ICBTaGFyZWFibGUsCisgICAgICAgIFRocmVhZFNhZmUKKyAgICB9OworICAgIHZpcnR1YWwgQ29v
cmRpbmF0ZWRTdXJmYWNlSUQgaWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdXJmYWNlVHlw
ZSB0eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhbHBoYSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFp
bnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpID0gMDsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICB2aXJ0dWFsIHZv
aWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3Vy
Y2VPZmZzZXQpID0gMDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgorI2VuZGlmIC8vIENvb3JkaW5hdGVkU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZv
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkU3VyZmFjZUluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNmVkODA1NWQyODQzZGMyMDEwZjU0M2U3
MTc0MzRlNWZiZTgyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmNwcApAQCAtMCwwICsx
LDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDb29yZGluYXRlZFN1cmZhY2VJbmZvLmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVk
U2hhcmVhYmxlU3VyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBDb29yZGlu
YXRlZFN1cmZhY2VJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIEFTU0VSVChjb29yZGluYXRlZFN1cmZhY2UtPnR5cGUoKSA9PSBDb29y
ZGluYXRlZFN1cmZhY2U6OlNoYXJlYWJsZSk7CisgICAgZW5jb2Rlci5lbmNvZGUoY29vcmRpbmF0
ZWRTdXJmYWNlLT5pZCgpKTsKKyAgICBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UqIHNoYXJl
YWJsZVN1cmZhY2UgPSBzdGF0aWNfY2FzdDxDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UqPihj
b29yZGluYXRlZFN1cmZhY2UuZ2V0KCkpOworICAgIGVuY29kZXIuZW5jb2RlKHNoYXJlYWJsZVN1
cmZhY2UtPmhhbmRsZSgpKTsKK30KKworYm9vbCBDb29yZGluYXRlZFN1cmZhY2VJbmZvOjpkZWNv
ZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBDb29yZGluYXRlZFN1cmZhY2VJ
bmZvJiByZXN1bHQpCit7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgaWQ7CisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoaWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTaGFyZWFi
bGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRs
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdC5jb29yZGluYXRlZFN1cmZh
Y2UgPSBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShoYW5kbGUsIGlkKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkU3VyZmFjZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDVlMWM3YjMzODMyYWRk
OGU1YjA4MTVmMjE2ODc3ZTUwODY3YWYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb29yZGluYXRlZFN1
cmZhY2VJbmZvX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mb19oCisKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIK
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xh
c3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFzcyBpcyBpbXBsZW1lbnRlZCB0byBwYXNzIENvb3Jk
aW5hdGVkU3VyZmFjZSB0byBVSSBQcm9jZXNzLgorLy8gV2UgY2FuIG5vdCBwYXNzIHRoZSBtZXNz
YWdlIGluY2x1ZGluZyBub24tUE9EIG1lbWJlcnMgYmV0d2VlbiBwcm9jZXNzZXMgeWV0LgorY2xh
c3MgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29v
cmRpbmF0ZWRTdXJmYWNlSW5mbyk7CitwdWJsaWM6CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlSW5m
bygpIHsgfQorCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29u
c3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIENv
b3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKKworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
IGNvb3JkaW5hdGVkU3VyZmFjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKKyNlbmRpZiAvLyBVcGRhdGVJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFj
ZVVwZGF0ZUluZm8uY3BwCmluZGV4IDQxNDdjZWFhN2EyZjE4YzgwYWM2NTE2YjdiMDRjYjVjYzE5
Mjc1YWIuLjA3ZjhkYjRlNjI5NTJiODA2ZjcxN2I4MzIxN2Y5N2ZkNGNjZjdkNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmNwcApAQCAtMjgsNyArMjgsNyBA
QCB2b2lkIFN1cmZhY2VVcGRhdGVJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIuZW5jb2RlKHVwZGF0ZVJlY3QpOwogICAg
IGVuY29kZXIuZW5jb2RlKHNjYWxlRmFjdG9yKTsKLSAgICBlbmNvZGVyLmVuY29kZShhdGxhc0lE
KTsKKyAgICBlbmNvZGVyLmVuY29kZShjb29yZGluYXRlZFN1cmZhY2VJRCk7CiAgICAgZW5jb2Rl
ci5lbmNvZGUoc3VyZmFjZU9mZnNldCk7CiB9CiAKQEAgLTM4LDcgKzM4LDcgQEAgYm9vbCBTdXJm
YWNlVXBkYXRlSW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
U3VyZmFjZVVwZGF0ZUkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHJlc3VsdC5zY2FsZUZhY3RvcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuYXRsYXNJRCkpCisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzdWx0LmNvb3JkaW5hdGVkU3VyZmFjZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5zdXJmYWNlT2Zmc2V0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZh
Y2VVcGRhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8u
aAppbmRleCBlMDg5NjdkOTY3MWE2NGVjZDM1ODRjODZlMTM0ZjgwMzQwOTM3YjUxLi42ZGRjNWM1
OTc2NjU2NzgzOTY3ZGEwNWQxMmJmZDRkMGEyODE4NTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU3VyZmFjZVVwZGF0ZUluZm8uaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBTdXJmYWNl
VXBkYXRlSW5mb19oCiAjZGVmaW5lIFN1cmZhY2VVcGRhdGVJbmZvX2gKIAorI2luY2x1ZGUgIkNv
b3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC00NSw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICAv
LyBUaGUgcGFnZSBzY2FsZSBmYWN0b3IgdXNlZCB0byByZW5kZXIgdGhpcyB1cGRhdGUuCiAgICAg
ZmxvYXQgc2NhbGVGYWN0b3I7CiAKLSAgICAvLyBUaGUgaWQgb2YgdGhlIHVwZGF0ZSBhdGxhcyBp
bmNsdWRpbmcgdGhlIHNoYXJlYWJsZSBiaXRtYXAgY29udGFpbmluZyB0aGUgdXBkYXRlcy4KLSAg
ICBpbnQgYXRsYXNJRDsKKyAgICAvLyBUaGUgaWQgb2YgdGhlIENvb3JkaW5hdGVkU3VyZmFjZSBp
bmNsdWRpbmcgdGhlIHNoYXJlYWJsZSBzdXJmYWNlIGNvbnRhaW5pbmcgdGhlIHVwZGF0ZXMuCisg
ICAgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgY29vcmRpbmF0ZWRTdXJmYWNlSUQ7CiAKICAgICAvLyBU
aGUgb2Zmc2V0IGluIHRoZSBiaXRtYXAgd2hlcmUgdGhlIHJlbmRlcmVkIGNvbnRlbnRzIGFyZS4K
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBzdXJmYWNlT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggYWEy
Mzc0OGQyN2Y0OTc1ZTZmZjg4NzQ0YWVlZTE1MjRjZWEyOTIxZC4uODBiMTNlZTJjYzlkODlkZjU2
MzgyNzNkNjBiODcxN2UxYTdlZTgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xMzUsNiArMTM1LDkgQEAg
SEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmggXAogICAgIFNoYXJlZC9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmggXAorICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oIFwKKyAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBcCisgICAgU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oIFwKICAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggXAogICAgIFNo
YXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmggXAogICAgIFNoYXJl
ZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXApAQCAtNDk3LDYgKzUwMCw5IEBAIFNPVVJD
RVMgKz0gXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5jcHAgXAogICAgIFNoYXJlZC9XZWJX
aGVlbEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmNwcCBcCisgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBcCisgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5jcHAgXAogICAgIFNoYXJlZC9x
dC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVkL3F0L0xheWVyVHJlZUNvbnRleHRR
dC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IGE1NjliOWU3ODZlM2Jm
YWY1NzdhYmJmNWJhY2ZiZjI3NWRjOGVkOGIuLjA5Y2FkYTQ4Yzk0YThjYjRmMTdkNzdkNDA4YTg1
NmJjNDJjMzQ0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFy
ZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJHTC5oIgogCkBAIC01MCwxMyArNTAsMTMgQEAgdm9pZCBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXAKICAgICB9CiAKICAgICBpZiAoc2hvdWxkUmVzZXQpCi0gICAgICAgIHRleHR1cmUtPnJl
c2V0KG1fdGFyZ2V0UmVjdC5zaXplKCksIG1fc3VyZmFjZS0+ZmxhZ3MoKSAmIFNoYXJlYWJsZUJp
dG1hcDo6U3VwcG9ydHNBbHBoYSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsK
KyAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90YXJnZXRSZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5h
bHBoYSgpKTsKIAogICAgIG1fc3VyZmFjZS0+Y29weVRvVGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJj
ZVJlY3QsIG1fc3VyZmFjZU9mZnNldCk7CiAgICAgbV9zdXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQordm9pZCBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBtX3NvdXJj
ZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgIG1fdGFyZ2V0UmVjdCA9IHRhcmdldFJlY3Q7CkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZVRpbGUoaW50
IGlkKQogfQogCiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUoaW50
IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBvaW50
JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKGludCBp
ZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwg
UGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBvaW50
JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDxpbnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGls
ZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV90
aWxlcy5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApp
bmRleCA2MzdmZWJhNzBhYzhiZWVjYjJkMDM2NDk1ZmJkZmM0ZjM0ZmZiNDVkLi4yM2VhZGM2MzYw
YWQ2MzY2Y2Y2NjQxMWJlOGRkY2M2NzhhMTkzODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2U7CitjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7
CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSA6IHB1YmxpYyBXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6CkBAIC00MywxMCArNDMsMTAgQEAgcHVibGljOgog
ICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgKyttX3JlcGFpbnRDb3Vu
dDsgfQogICAgIGlubGluZSBpbnQgcmVwYWludENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXBh
aW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIq
KTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPENv
b3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwogICAgIFdlYkNvcmU6OkludFJlY3Qg
bV9zb3VyY2VSZWN0OwogICAgIFdlYkNvcmU6OkludFJlY3QgbV90YXJnZXRSZWN0OwogICAgIFdl
YkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3Mg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlKGludCwgZmxvYXQpOwog
ICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOwotICAgIHZvaWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxT
aGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHVw
ZGF0ZVRpbGUoaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsg
fQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciop
OwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAppbmRl
eCBmMWM0YmYzZjNjOTQzYzRjNzdhZDg2ODk2YWVjMGVlYzkyNTUyNThkLi41ZjRkZjA2MmE2YTcx
ODhmMGFiYTllZGVkNzVmMGNhYzUxZjhjMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5jbHVkZSAi
TGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxheWVyVHJlZVJlbmRl
cmVyLmgiCi0jaW5jbHVkZSAiVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKQEAgLTY0LDcgKzYzLDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnMKIAog
dm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxh
eWVySUQsIGludCB0aWxlSUQsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFdlYktp
dDo6U3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8pCiB7Ci0gICAgU3VyZmFjZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodXBkYXRlSW5mby5hdGxhc0lEKTsKKyAgICBDb29y
ZGluYXRlZFN1cmZhY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKHVwZGF0ZUlu
Zm8uY29vcmRpbmF0ZWRTdXJmYWNlSUQpOwogICAgIEFTU0VSVChpdCAhPSBtX3N1cmZhY2VzLmVu
ZCgpKTsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRl
VGlsZSwgbV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwgdGlsZUlELCBMYXllclRyZWVSZW5kZXJl
cjo6VGlsZVVwZGF0ZSh1cGRhdGVJbmZvLnVwZGF0ZVJlY3QsIHRhcmdldFJlY3QsIGl0LT52YWx1
ZSwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KSkpOwogfQpAQCAtNzQsMjIgKzczLDI0IEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVGlsZUZvckxheWVyKGludCBsYXll
cklELCBpbnQgdGlsZUlEKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRl
cmVyOjpyZW1vdmVUaWxlLCBtX3JlbmRlcmVyLmdldCgpLCBsYXllcklELCB0aWxlSUQpKTsKIH0K
IAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQg
YXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCit2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBX
ZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1cmZhY2VJbmZvKQogewogI2lmbmRlZiBO
REVCVUcKLSAgICBTdXJmYWNlTWFwOjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZChhdGxh
c0lEKTsKKyAgICBBU1NFUlQoc3VyZmFjZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlLT50eXBlKCkg
PT0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTaGFyZWFibGUpOworCisgICAgQ29vcmRpbmF0ZWRTdXJm
YWNlTWFwOjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZChzdXJmYWNlSW5mby5jb29yZGlu
YXRlZFN1cmZhY2UtPmlkKCkpOwogICAgIEFTU0VSVChpdCA9PSBtX3N1cmZhY2VzLmVuZCgpKTsK
ICNlbmRpZgotICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFNoYXJlYWJsZVN1cmZhY2U6OmNy
ZWF0ZShoYW5kbGUpKTsKKyAgICBtX3N1cmZhY2VzLmFkZChzdXJmYWNlSW5mby5jb29yZGluYXRl
ZFN1cmZhY2UtPmlkKCksIHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZSk7CiB9CiAKLXZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFz
SUQpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnJlbW92ZUNvb3JkaW5hdGVkU3Vy
ZmFjZShDb29yZGluYXRlZFN1cmZhY2VJRCBpZCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgU3Vy
ZmFjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQoYXRsYXNJRCk7CisgICAgQ29v
cmRpbmF0ZWRTdXJmYWNlTWFwOjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZChpZCk7CiAg
ICAgQVNTRVJUKGl0ICE9IG1fc3VyZmFjZXMuZW5kKCkpOwogI2VuZGlmCi0gICAgbV9zdXJmYWNl
cy5yZW1vdmUoYXRsYXNJRCk7CisgICAgbV9zdXJmYWNlcy5yZW1vdmUoaWQpOwogfQogCiB2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXIoV2ViTGF5
ZXJJRCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApp
bmRleCAwYjBmMmRhZjYyMTQ5NTBmMmNhNWE5MDUxODA1ZjI0MWJmOGY5MjA5Li4yODdlOTJkNGZm
M2YyYjZjYmUyNGNhMjVkNzc4NWUxOGRjNzE3MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yNCw5ICsyNCw5IEBACiAKICNpbmNsdWRlICJC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2VJbmZvLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgIlNoYXJlYWJs
ZVN1cmZhY2UuaCIKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldl
YkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpA
QCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoaW50
IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJm
YWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUZvckxheWVyKGludCBsYXllcklE
LCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mKTsKICAgICB2b2lkIHJlbW92ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRp
bGVJRCk7Ci0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hh
cmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7Ci0gICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQg
YXRsYXNJRCk7CisgICAgdm9pZCBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViS2l0
OjpDb29yZGluYXRlZFN1cmZhY2VJbmZvJik7CisgICAgdm9pZCByZW1vdmVDb29yZGluYXRlZFN1
cmZhY2UoV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJRCk7CiAgICAgdm9pZCBjcmVhdGVEaXJl
Y3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90LCBjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlJik7CiAgICAgdm9pZCBkZXN0cm95RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50
NjRfdCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVz
c2FnZURlY29kZXImKTsKQEAgLTkxLDggKzkxLDggQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6
OkludFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0OwogICAgIGZsb2F0IG1fbGFzdFNlbnRTY2Fs
ZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwot
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+ID4gU3VyZmFjZU1hcDsKLSAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPENvb3JkaW5hdGVkU3VyZmFjZUlELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiA+IENvb3JkaW5hdGVkU3VyZmFjZU1hcDsKKyAgICBDb29yZGluYXRlZFN1cmZhY2VNYXAg
bV9zdXJmYWNlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJhODhkZTUzZmYzM2U0NWYxZDA4
OGEzZDIwNTU3MGE0MGZkNGI1NjcuLjBjMjQ3Mjk4YmQ2MTkzZmQ0OGI0MjUzNWI3NjI0ZGIxNmJm
MWI3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjksOCArMjksOCBAQCBtZXNzYWdlcyAtPiBMYXllclRy
ZWVDb29yZGluYXRvclByb3h5IHsKICAgICBDcmVhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5
ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0YXJnZXRSZWN0LCBXZWJLaXQ6OlN1
cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCiAgICAgVXBkYXRlVGlsZUZvckxheWVyKHVpbnQz
Ml90IGxheWVySUQsIGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGFyZ2V0UmVjdCwgV2Vi
S2l0OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogICAgIFJlbW92ZVRpbGVGb3JMYXll
cih1aW50MzJfdCBsYXllcklELCBpbnQgdGlsZUlEKQotICAgIENyZWF0ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lELCBXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBoYW5kbGUpCi0gICAg
UmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpCisgICAgQ3JlYXRlQ29vcmRpbmF0ZWRTdXJm
YWNlKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbyBzdXJmYWNlSW5mbykKKyAgICBSZW1v
dmVDb29yZGluYXRlZFN1cmZhY2UodWludDMyX3QgY29vcmRpbmF0ZWRTdXJmYWNlSWQpCiAgICAg
Q3JlYXRlRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCBrZXksIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlKQogICAgIERlc3Ryb3lEaXJlY3RseUNvbXBvc2l0ZWRJ
bWFnZShpbnQ2NF90IGtleSkKICAgICBEaWRSZW5kZXJGcmFtZShXZWJDb3JlOjpJbnRTaXplIGNv
bnRlbnRzU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjb3ZlcmVkUmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oCmluZGV4IDcwYjE1OGY4MWQwN2QxM2UyYjI0MThkOTU1ODQ3NjgwZDkx
Y2I1ZWYuLmUwMDZiMzlkOTZkYzA2OTg0N2U2MGE5YmVlYmI1ZDI4OTY5NmQwOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgotI2luY2x1ZGUg
IlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKQEAgLTUwLDkgKzUwLDkgQEAg
cHVibGljOgogICAgIHN0cnVjdCBUaWxlVXBkYXRlIHsKICAgICAgICAgV2ViQ29yZTo6SW50UmVj
dCBzb3VyY2VSZWN0OwogICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3Q7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlOwogICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBvZmZz
ZXQ7Ci0gICAgICAgIFRpbGVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4gbmV3U3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG5ld09mZnNldCkKKyAgICAg
ICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHRhcmdldCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG5ld1N1
cmZhY2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdPZmZzZXQpCiAgICAgICAgICAgICA6
IHNvdXJjZVJlY3Qoc291cmNlKQogICAgICAgICAgICAgLCB0YXJnZXRSZWN0KHRhcmdldCkKICAg
ICAgICAgICAgICwgc3VyZmFjZShuZXdTdXJmYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggODFkM2RmYTc3
M2Q3MGY5MGJhMTFkOTQ3N2MzYmI5YmRlMzQ2NmU0Ni4uN2QwMzdjNjhjYWVlNGQyNGE5MmFkNWM0
N2RmZWJhMDVjNTM3Y2JlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC02NTEsOSArNjUxLDkgQEAgQ29sb3Ig
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xv
cigpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkgPyBDb2xvcjo6d2hpdGUgOiBD
b2xvcjo6dHJhbnNwYXJlbnQ7CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplLCBpbnQmIGF0bGFzLCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zm
c2V0KQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZUlEJiBpZCwgSW50UG9pbnQmIG9mZnNldCkKIHsKLSAgICByZXR1cm4gbV9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJDbGllbnQtPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBjb250ZW50c09w
YXF1ZSgpID8gMCA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSwgYXRsYXMsIG9mZnNl
dCk7CisgICAgcmV0dXJuIG1fQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50LT5iZWdpbkNv
bnRlbnRVcGRhdGUoc2l6ZSwgIWNvbnRlbnRzT3BhcXVlKCksIGlkLCBvZmZzZXQpOwogfQogCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmgKaW5kZXggYThjMmE5Y2VmMDc1M2M0Y2VjMTcxMTcwNDIyODUzNTEwYjQ1OTViNS4u
NDdiYmUxNzg0N2VhYTFiNTlmOWQyYmI0MmNhZTgwMjdmYmFiY2FmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTIx
LDYgKzIxLDcgQEAKICNpZm5kZWYgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyX2gKICNkZWZpbmUg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyX2gKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFj
ZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkVGlsZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQz
RC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKQEAgLTI5LDcgKzMwLDYgQEAKICNpbmNs
dWRlICJHcmFwaGljc1N1cmZhY2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJUaWxlZEJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5
ZXJzKCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxl
Qml0bWFwOjpGbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wgYWxwaGEsIENvb3JkaW5hdGVk
U3VyZmFjZUlEJiwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CiB9OwogfQogCkBAIC0xNTAsNyAr
MTUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKGludCB0aWxlSUQs
IGNvbnN0IFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgV2ViS2l0
OjpTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlVGlsZShpbnQgdGlsZUlEKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3Qg
SW50U2l6ZSYsIFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBJbnRQb2ludCYpIE9WRVJS
SURFOwogCiAgICAgdm9pZCBzZXRDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQoV2ViS2l0
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2b2lkIHN5bmNDaGlsZHJl
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKaW5k
ZXggNTQ4ZDQ5ZDMyN2YwMzU1MzI3NDZmZDJmYjU5NTViZDYxZGE4YmFjNy4uNmNjYmFhYjE5MGEy
ZGM0ZjFiNWRhOTE5YWE2YjZmNTZkNTMzM2ZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFRpbGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFZlY3RvcjxJbnRSZWN0
PiBDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIoKQogICAgICAgICByZXR1cm4gVmVj
dG9yPEludFJlY3Q+KCk7CiAKICAgICBTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvOwotICAg
IE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5iZWdp
bkNvbnRlbnRVcGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVw
ZGF0ZUluZm8uc3VyZmFjZU9mZnNldCk7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0ID0gbV9jbGllbnQtPmJlZ2luQ29udGVudFVwZGF0ZShtX2RpcnR5UmVjdC5z
aXplKCksIHVwZGF0ZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlSUQsIHVwZGF0ZUluZm8uc3VyZmFj
ZU9mZnNldCk7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybiBWZWN0
b3I8SW50UmVjdD4oKTsKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtbV9kaXJ0eVJl
Y3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRUaWxlLmgKaW5kZXggMzJmZjRlN2M3OTFmMmJlMzRiNTAzODAwODU2NTgzODZlZTFl
YzYzOC4uYTYxOTRlOTk4NDM3YjczZjJmYmRmN2UxYzRhYTM4NGIwM2Y1MTAxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRUaWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRT
dXJmYWNlLmgiCiAjaW5jbHVkZSAiVGlsZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3Jl
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZS9JbnRSZWN0LmgiCkBAIC03OCw3ICs3OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKGlu
dCB0aWxlSUQpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGludCYg
YXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2VJRCYsIFdlYkNvcmU6OkludFBvaW50Jikg
PSAwOwogfTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRUaWxlQmFja2VuZCA6IHB1YmxpYyBXZWJDb3Jl
OjpUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IDllYjM3OGU1ZGEzMzFmYzhjOTFj
NTJhNDQ5OWI2YTU5ZDRlZmYyYWMuLjYxMjcyOTA2MzExOWM5YzExOTFlNzBlYTcyMzQ2YTU3NmRk
YzE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3Jh
cGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZUluZm8uaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYUltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJM
YXllclRyZWVDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCIKQEAgLTYxNiwxNCArNjE3LDE3IEBA
IHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVRpbGUoV2ViTGF5ZXJJRCBsYXllcklE
LCBpbnQgdGlsZUlEKQogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6UmVtb3ZlVGlsZUZvckxheWVyKGxheWVySUQsIHRpbGVJRCkpOwogfQog
Ci12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJ
RCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCit2b2lkIExheWVyVHJl
ZUNvb3JkaW5hdG9yOjpjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKIHsKLSAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZVVwZGF0ZUF0bGFzKGF0
bGFzSUQsIGhhbmRsZSkpOworICAgIEFTU0VSVChjb29yZGluYXRlZFN1cmZhY2UtPnR5cGUoKSA9
PSBDb29yZGluYXRlZFN1cmZhY2U6OlNoYXJlYWJsZSk7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mbyBzdXJmYWNlSW5mbzsKKyAgICBzdXJmYWNlSW5mby5jb29yZGluYXRlZFN1cmZhY2UgPSBj
b29yZGluYXRlZFN1cmZhY2U7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRy
ZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVDb29yZGluYXRlZFN1cmZhY2Uoc3VyZmFjZUluZm8p
KTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVtb3ZlVXBkYXRlQXRsYXMoaW50
IGF0bGFzSUQpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVDb29yZGluYXRlZFN1
cmZhY2UoQ29vcmRpbmF0ZWRTdXJmYWNlSUQgaWQpCiB7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVVcGRhdGVBdGxhcyhhdGxh
c0lEKSk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpSZW1vdmVDb29yZGluYXRlZFN1cmZhY2UoaWQpKTsKIH0KIAogV2ViQ29yZTo6SW50
UmVjdCBMYXllclRyZWVDb29yZGluYXRvcjo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0CkBA
IC03MDksMjMgKzcxMywyMyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tp
bmdTdG9yZXMoKQogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29u
dGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6
OkZsYWdzIGZsYWdzLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQpCitQ
YXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29u
dGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGFscGhhLCBDb29yZGluYXRlZFN1
cmZhY2VJRCYgaWQsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgT3duUHRyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQ+IGdyYXBoaWNzQ29udGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRh
dGVBdGxhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1f
dXBkYXRlQXRsYXNlc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKGF0bGFzLT5mbGFncygpID09IGZs
YWdzKSB7CisgICAgICAgIGlmIChhdGxhcy0+YWxwaGEoKSA9PSBhbHBoYSkgewogICAgICAgICAg
ICAgLy8gVGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZm
ZXIgc3BhY2UuCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQgPSBhdGxhcy0+YmVnaW5QYWlu
dGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0bGFzSUQsIHNpemUsIG9mZnNldCk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQgPSBhdGxhcy0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVy
KHNpemUsIGlkLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBpbnQgU2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiA9
IDEwMjQ7IC8vIFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3by4KLSAgICBtX3VwZGF0ZUF0bGFzZXMu
YXBwZW5kKGFkb3B0UHRyKG5ldyBVcGRhdGVBdGxhcyh0aGlzLCBTY3JhdGNoQnVmZmVyRGltZW5z
aW9uLCBmbGFncykpKTsKKyAgICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKGFkb3B0UHRyKG5ldyBV
cGRhdGVBdGxhcyh0aGlzLCBTY3JhdGNoQnVmZmVyRGltZW5zaW9uLCBhbHBoYSkpKTsKICAgICBz
Y2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXMoKTsKLSAgICByZXR1cm4gbV91cGRhdGVBdGxh
c2VzLmxhc3QoKS0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0bGFzSUQsIHNpemUs
IG9mZnNldCk7CisgICAgcmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPmJlZ2luUGFpbnRp
bmdPbkF2YWlsYWJsZUJ1ZmZlcihzaXplLCBpZCwgb2Zmc2V0KTsKIH0KIAogY29uc3QgZG91Ymxl
IFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsID0gMC41OwpAQCAtNzQ1LDcgKzc0
OSw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNU
aW1lckZpcmVkKFRpbWVyPExheWVyVHJlZUNvb3JkCiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxh
cyA9IG1fdXBkYXRlQXRsYXNlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFhdGxhcy0+aXNJblVz
ZSgpKQogICAgICAgICAgICAgYXRsYXMtPmFkZFRpbWVJbmFjdGl2ZShSZWxlYXNlSW5hY3RpdmVB
dGxhc2VzVGltZXJJbnRlcnZhbCk7Ci0gICAgICAgIGJvb2wgdXNhYmxlRm9yTm9uQ29tcG9zaXRl
ZENvbnRlbnQgPSBhdGxhcy0+ZmxhZ3MoKSA9PSBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3M7Cisg
ICAgICAgIGJvb2wgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQgPSAhYXRsYXMtPmFscGhh
KCk7CiAgICAgICAgIGlmIChhdGxhcy0+aXNJbmFjdGl2ZSgpKSB7CiAgICAgICAgICAgICBpZiAo
IWZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21wb3NpdGVkQ29udGVudCAmJiAhYXRsYXNUb0tlZXBB
bnl3YXkgJiYgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQpCiAgICAgICAgICAgICAgICAg
YXRsYXNUb0tlZXBBbnl3YXkgPSBtX3VwZGF0ZUF0bGFzZXNbaV0ucmVsZWFzZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggNGZh
ZmEzYWZjZTBkMzE3YTY2ZTUwYWViZjdiM2NhNGE5OTliMWNhNi4uY2U0NzhjMmYyZTRmNDFmZjZj
OTIxZDJiOWQ1MmEzODRkYjllZjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIExheWVyVHJlZUNvb3JkaW5hdG9yIDogcHVibGljIExheWVyVHJlZUhvc3QsIFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICAsIHB1YmxpYyBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJDbGllbnQKLSAgICAsIHB1YmxpYyBVcGRhdGVBdGxhc0NsaWVudAorICAgICwgcHVi
bGljIENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMYXllclRy
ZWVDb29yZGluYXRvcj4gY3JlYXRlKFdlYlBhZ2UqKTsKQEAgLTk2LDExICs5NiwxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXllcnMoKTsKIAotICAg
IHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVu
dFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywg
aW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgUGFzc093blB0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBXZWJDb3Jl
OjpJbnRQb2ludCYpOwogCi0gICAgLy8gVXBkYXRlQXRsYXNDbGllbnQKLSAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6
OkhhbmRsZSYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJ
RCk7CisgICAgLy8gQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDb29yZGluYXRlZFN1cmZhY2UoQ29vcmRpbmF0ZWRTdXJm
YWNlSUQpOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHAKaW5kZXggMWY0YmU1YmUzYjBj
NmJkODJlNzQ1ZDBhMzM4NzY2NGEyZWIyM2Q3Yi4uODQ3ZDE0NTMxYzExMTZlZjU2NDI2M2Q2YjMw
Y2NkMmUzOWRjNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1VwZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVXBkYXRlQXRsYXMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICBDb3B5cmlnaHQgKEMpIDIw
MTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJp
Z2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCiAKICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDI4ICsz
MSwxNSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LVVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50LCBpbnQg
ZGltZW5zaW9uLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQotICAgIDogbV9jbGllbnQo
Y2xpZW50KQotICAgICwgbV9mbGFncyhmbGFncykKLSAgICAsIG1faW5hY3Rpdml0eUluU2Vjb25k
cygwKQotICAgICwgbV9pc1ZhaWxkKHRydWUpCitVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoQ29v
cmRpbmF0ZWRTdXJmYWNlQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIGJvb2wgYWxwaGEp
CisgICAgOiBtX2luYWN0aXZpdHlJblNlY29uZHMoMCkKIHsKLSAgICBzdGF0aWMgaW50IGlkID0g
MDsKLSAgICBtX0lEID0gKytpZDsKICAgICBJbnRTaXplIHNpemUgPSBuZXh0UG93ZXJPZlR3byhJ
bnRTaXplKGRpbWVuc2lvbiwgZGltZW5zaW9uKSk7Ci0gICAgbV9zdXJmYWNlID0gU2hhcmVhYmxl
U3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzLCBTaGFyZWFibGVTdXJmYWNlOjpTdXBwb3J0c0dy
YXBoaWNzU3VyZmFjZSk7Ci0KLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1faGFu
ZGxlKSkgewotICAgICAgICBtX2lzVmFpbGQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9oYW5kbGUpOworICAg
IG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNsaWVudCwgc2l6ZSwgYWxw
aGEpOwogfQogCiBVcGRhdGVBdGxhczo6flVwZGF0ZUF0bGFzKCkKIHsKLSAgICBpZiAobV9pc1Zh
aWxkKQotICAgICAgICBtX2NsaWVudC0+cmVtb3ZlVXBkYXRlQXRsYXMobV9JRCk7CiB9CiAKIHZv
aWQgVXBkYXRlQXRsYXM6OmJ1aWxkTGF5b3V0SWZOZWVkZWQoKQpAQCAtNjcsNyArNTUsNyBAQCB2
b2lkIFVwZGF0ZUF0bGFzOjpkaWRTd2FwQnVmZmVycygpCiAgICAgbV9hcmVhQWxsb2NhdG9yLmNs
ZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVn
aW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGludCYgYXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSwgSW50UG9pbnQmIG9mZnNldCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IElu
dFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZUlEJiBpZCwgSW50UG9pbnQmIG9mZnNldCkK
IHsKICAgICBtX2luYWN0aXZpdHlJblNlY29uZHMgPSAwOwogICAgIGJ1aWxkTGF5b3V0SWZOZWVk
ZWQoKTsKQEAgLTc3LDIxICs2NSwyMCBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBk
YXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihpbnQmIGF0bAogICAgIGlm
IChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0PigpOwogCi0gICAgaWYgKCFtX2lzVmFpbGQpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4oKTsKLQotICAgIGF0bGFzSUQgPSBtX0lEOwotCiAgICAgLy8gRklY
TUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywgdG8gYWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAg
b2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdy
YXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOwor
ICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxHcmFw
aGljc0NvbnRleHQ+KCk7CiAKLSAgICBpZiAoZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3Vw
cG9ydHNBbHBoYSkgeworICAgIGlmIChhbHBoYSgpKSB7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgc2l6ZSksIENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIH0K
IAorICAgIGlkID0gbV9zdXJmYWNlLT5pZCgpOworCiAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4
dC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1VwZGF0ZUF0bGFzLmgKaW5kZXggN2NlZmU5Yzk3OTQyMTU4NjI3M2Y0ZTBjZDMwOWEyMDIzNGM3
MWFkMS4uYjRhZTA1MGY5ZTEwNTcxYjFlNDkyMzJhYTAyM2I0MDNkMTlmYjEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIElu
Yy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsOCArMjIsOCBAQAogI2RlZmluZSBVcGRhdGVBdGxhc19o
CiAKICNpbmNsdWRlICJBcmVhQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJm
YWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2Uu
aCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTMyLDI0ICszMywxOCBAQCBjbGFzcyBJbnRQb2ludDsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6Okhh
bmRsZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFz
SUQpID0gMDsKLX07Ci0KIGNsYXNzIFVwZGF0ZUF0bGFzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShVcGRhdGVBdGxhcyk7CiBwdWJsaWM6Ci0gICAgVXBkYXRlQXRsYXMoVXBkYXRlQXRsYXND
bGllbnQqLCBpbnQgZGltZW5zaW9uLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzKTsKKyAgICBVcGRh
dGVBdGxhcyhDb29yZGluYXRlZFN1cmZhY2VDbGllbnQqLCBpbnQgZGltZW5zaW9uLCBib29sIGFs
cGhhKTsKICAgICB+VXBkYXRlQXRsYXMoKTsKIAogICAgIGlubGluZSBXZWJDb3JlOjpJbnRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnNpemUoKTsgfQogCiAgICAgLy8gUmV0
dXJucyBhIG51bGwgcG9pbnRlciBvZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyLgotICAg
IFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpblBhaW50aW5nT25BdmFp
bGFibGVCdWZmZXIoaW50JiBhdGxhc0lELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SW50UG9pbnQmIG9mZnNldCk7CisgICAgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZv
aWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKCkg
Y29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIGJvb2wgYWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3N1cmZhY2UtPmFscGhhKCk7IH0KIAogICAgIHZvaWQgYWRkVGltZUluYWN0aXZlKGRvdWJs
ZSBzZWNvbmRzKQogICAgIHsKQEAgLTY3LDE0ICs2Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBi
dWlsZExheW91dElmTmVlZGVkKCk7CiAKIHByaXZhdGU6Ci0gICAgVXBkYXRlQXRsYXNDbGllbnQq
IG1fY2xpZW50OwogICAgIE93blB0cjxHZW5lcmFsQXJlYUFsbG9jYXRvcj4gbV9hcmVhQWxsb2Nh
dG9yOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwotICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBt
X2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAg
ZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsKLSAgICBpbnQgbV9JRDsKLSAgICBib29sIG1f
aXNWYWlsZDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171774</attachid>
            <date>2012-10-31 23:06:48 -0700</date>
            <delta_ts>2012-11-01 17:54:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121101150505.patch</filename>
            <type>text/plain</type>
            <size>56870</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZkOTg5YjY3NjMzZTIx
ZDk5MjljNzlmMDUyZmEwYzU0ZjJkNDg5Ny4uYjMxNmZiNGQ5M2FkZTM1ODI2MzA3ZDgxODE4Nzlk
M2Q4ZDY1ZGI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0xMC0zMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1cmZhY2Ug
ZnJvbSBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVybmFsIFJldmlldyBieSBHd2FuZyBZb29uIEh3YW5nIGFu
ZCBKYWUgSHl1biBQYXJrLgorCisgICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9y
IFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIEN1cnJlbnRseSwgTGF5
ZXJUcmVlQ29vcmRpbmF0b3IsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciwgQ29vcmRpbmF0ZWRU
aWxlIGFuZAorICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSBkaXJlY3RseSB1c2UgU2hh
cmVhYmxlU3VyZmFjZS4gU2hhcmVhYmxlU3VyZmFjZSB3YXMKKyAgICAgICAgaW1wbGVtZW50ZWQg
dG8gc2hhcmUgYW4gaW1hZ2UgYmV0d2VlbiBwcm9jZXNzZXMuIFdlIGRvIG5vdCB3YW50IHRvIHB1
dCBtYW55CisgICAgICAgIGd1YXJkcyBvbiB0aG9zZSBjbGFzc2VzIHRvIGltcGxlbWVudCBUaHJl
YWRlZCBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgQ29vcmRpbmF0ZWRTdXJmYWNlLiBUaG9zZSBjbGFzc2VzIGp1c3QgdXNlCisgICAgICAgIENv
b3JkaW5hdGVkU3VyZmFjZS4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIHBsYXlzIGEgcm9s
ZSBpbiBzaGFyaW5nIGFuIGltYWdlCisgICAgICAgIGJldHdlZW4gcHJvY2Vzc2VzIGFzIFNoYXJl
YWJsZVN1cmZhY2UgZGlkLiBUaGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlIGlzIGp1c3QgdXNpbmcgU2hhcmVhYmxlU3VyZmFjZS4KKworICAg
ICAgICBXZSB3aWxsIGludHJvZHVjZSBDb29yZGluYXRlZFRocmVhZFNhZmVTdXJmYWNlLCB3aGlj
aCBwbGF5cyBhIHJvbGUgaW4gc2hhcmluZyBhbgorICAgICAgICBpbWFnZSBiZXR3ZWVuIHRocmVh
ZHMuIEl0IHdpbGwgYmUgaW1wbGVtZW50ZWQgdXNpbmcgbXV0ZXguCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpDb29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2U6On5Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OlByb2R1Y2VyRGF0YTo6UHJvZHVjZXJEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1
cmZhY2U6OmhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAgIFRoaXMgY2xhc3Mg
aXMgb25lIGltcGxlbWVudGF0aW9uIG9mIENvb3JkaW5hdGVkU3VyZmFjZSB0byBzaGFyZSBhbgor
ICAgICAgICAgIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6CisgICAgICAgIChQcm9kdWNlckRh
dGEpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1
cmZhY2U6On5Db29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgICBUaGlzIGNs
YXNzIGlzIGludHJvZHVjZWQgdG8gcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1
cmZhY2UKKyAgICAgICAgICBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLiBBbGwgY2xhc3NlcyBp
biBDb29yZGluYXRlZCBHcmFwaGljcyB1c2UKKyAgICAgICAgICB0aGlzIGNsYXNzIGluc3RlYWQg
b2YgU2hhcmVhYmxlU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkU3VyZmFjZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oOiBBZGRlZC4KKyAgICAg
ICAgICBUaGlzIGNsYXNzIGlzIGltcGxlbWVudGVkIHRvIHBhc3MgQ29vcmRpbmF0ZWRTdXJmYWNl
IHRvIFVJIFByb2Nlc3MuCisgICAgICAgICAgSXQgaXMgYmVjYXVzZSB3ZSBjYW4gbm90IHBhc3Mg
dGhlIG1lc3NhZ2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycworICAgICAgICAgIGJldHdlZW4g
cHJvY2Vzc2VzIHlldC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZFN1cmZhY2VJbmZvOjpDb29yZGluYXRlZFN1cmZhY2VJbmZvKToKKyAgICAgICAgKiBTaGFy
ZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXJmYWNlVXBkYXRl
SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm86OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmg6CisgICAgICAgIChTdXJm
YWNlVXBkYXRlSW5mbyk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1
cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVn
aW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkVGlsZTo6dXBk
YXRlQmFja0J1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmg6CisgICAgICAgIChDb29yZGluYXRlZFRpbGVDbGll
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3Ip
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVw
ZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6
YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVXBkYXRlQXRsYXMuaDoKKyAgICAgICAgKFVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdl
YktpdDo6VXBkYXRlQXRsYXM6OmFscGhhKToKKwogMjAxMi0xMC0zMSAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGlj
czogTWFuYWdlIHRoZSBsaWZlY3ljbGUgb2Ygc2hhcmVhYmxlIHN1cmZhY2VzIHByZWNpc2VseS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNmU0NmY0OGE5OWUzMTJiMzcwNjMxY2FiMjMzMjdiOTJi
NTU1Y2IxZS4uZTAzNmQ0MGQ4ZmU0MTY2NmZlMTEyZTUyYmIwODA1MGE1MzkzZTNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKQEAgLTIxOCw2ICsyMTgsOSBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAogCiAgICAgU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNw
cAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZS5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZh
Y2UuY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mby5jcHAKIAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCiAgICAg
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWE3ZmRjY2Zk
ZjYyMGVkMjg1MTgzMTRkYWQyZTg4ZDNlNWQ4YjJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVT
dXJmYWNlLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgiCisK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxDb29yZGluYXRlZFNo
YXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKENvb3Jk
aW5hdGVkU3VyZmFjZUNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBib29sIGFscGhhKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRTaGFy
ZWFibGVTdXJmYWNlKGNsaWVudCwgc2l6ZSwgYWxwaGEpKTsKK30KKworUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlLCBDb29yZGluYXRlZFN1
cmZhY2VJRCBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZShoYW5kbGUsIGlkKSk7Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZTo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCog
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGFscGhhKQorICAgIDog
bV9zdXJmYWNlKFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShzaXplLCBhbHBoYSA/IFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncywgU2hhcmVh
YmxlU3VyZmFjZTo6U3VwcG9ydHNHcmFwaGljc1N1cmZhY2UpKQorICAgICwgbV9wdXJwb3NlKFBy
b2R1Y2VyKQorICAgICwgbV9pc1ZhaWxkKGZhbHNlKQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAw
OworICAgIG1fSUQgPSArK2lkOworCisgICAgaWYgKCFtX3N1cmZhY2UtPmNyZWF0ZUhhbmRsZSht
X3Byb2R1Y2VyRGF0YS5tX2hhbmRsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNWYWls
ZCA9IHRydWU7CisgICAgQVNTRVJUKGNsaWVudCk7CisgICAgbV9wcm9kdWNlckRhdGEubV9jbGll
bnQgPSBjbGllbnQ7CisgICAgbV9wcm9kdWNlckRhdGEubV9jbGllbnQtPmNyZWF0ZUNvb3JkaW5h
dGVkU3VyZmFjZSh0aGlzKTsKK30KKworQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UoY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJiBo
YW5kbGUsIENvb3JkaW5hdGVkU3VyZmFjZUlEIGlkKQorICAgIDogbV9zdXJmYWNlKFNoYXJlYWJs
ZVN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpKQorICAgICwgbV9wdXJwb3NlKENvbnN1bWVyKQorICAg
ICwgbV9JRChpZCkKKyAgICAsIG1faXNWYWlsZChmYWxzZSkKK3sKKyAgICBpZiAoIW1fc3VyZmFj
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1ZhaWxkID0gdHJ1ZTsKK30KKworQ29vcmRp
bmF0ZWRTaGFyZWFibGVTdXJmYWNlOjp+Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKCkKK3sK
KyAgICBpZiAobV9wdXJwb3NlID09IFByb2R1Y2VyICYmIG1faXNWYWlsZCkgeworICAgICAgICBB
U1NFUlQobV9wcm9kdWNlckRhdGEubV9jbGllbnQpOworICAgICAgICBtX3Byb2R1Y2VyRGF0YS5t
X2NsaWVudC0+cmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKG1fSUQpOworICAgIH0KK30KKworQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpQcm9kdWNlckRhdGE6OlByb2R1Y2VyRGF0YSgpCisg
ICAgOiBtX2NsaWVudCgwKQoreyB9CisKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIEFTU0VSVChtX3B1cnBvc2UgPT0gUHJvZHVjZXIpOworCisgICAg
aWYgKCFtX2lzVmFpbGQpCisgICAgICAgIHJldHVybiBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4oKTsKKworICAgIHJldHVybiBtX3N1cmZhY2UtPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dChyZWN0KTsKK30KKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKK3ZvaWQgQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVy
ZT4gcGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNv
dXJjZU9mZnNldCkKK3sKKyAgICBBU1NFUlQobV9wdXJwb3NlID09IENvbnN1bWVyKTsKKyAgICBp
ZiAobV9pc1ZhaWxkKQorICAgICAgICBtX3N1cmZhY2UtPmNvcHlUb1RleHR1cmUocGFzc1RleHR1
cmUsIHRhcmdldCwgc291cmNlT2Zmc2V0KTsKK30KKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQ
RVIpCisKK2NvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgQ29vcmRpbmF0ZWRTaGFyZWFi
bGVTdXJmYWNlOjpoYW5kbGUoKSBjb25zdAoreworICAgIEFTU0VSVChtX3B1cnBvc2UgPT0gUHJv
ZHVjZXIpOworICAgIEFTU0VSVChtX2lzVmFpbGQpOworICAgIHJldHVybiBtX3Byb2R1Y2VyRGF0
YS5tX2hhbmRsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
U2hhcmVhYmxlU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhhYjI2Yzhm
YzY0NjUyZTM4NzZiYTcyNTgzZjc1YTU0MzY0M2M0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxl
U3VyZmFjZS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29t
cGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBD
b29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2VfaAorI2RlZmluZSBDb29yZGluYXRlZFNoYXJlYWJs
ZVN1cmZhY2VfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorCisjaW5jbHVkZSAi
Q29vcmRpbmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIDog
cHVibGljIENvb3JkaW5hdGVkU3VyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGEgbmV3
IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGEgU2hhcmVhYmxlU3Vy
ZmFjZSBhcyBiYWNraW5nLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZT4gY3JlYXRlKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCosIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBib29sIGFscGhhKTsKKworICAgIC8vIENyZWF0ZSBhIGNvb3JkaW5hdGVk
IHNoYXJlYWJsZSBzdXJmYWNlIGZyb20gYSBoYW5kbGUuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3QgU2hhcmVhYmxlU3VyZmFj
ZTo6SGFuZGxlJiwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQpOworCisgICAgdmlydHVhbCB+Q29vcmRp
bmF0ZWRTaGFyZWFibGVTdXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIENvb3JkaW5hdGVkU3VyZmFj
ZUlEIGlkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9JRDsgfQorICAgIHZpcnR1YWwgQ29v
cmRpbmF0ZWRTdXJmYWNlOjpTdXJmYWNlVHlwZSB0eXBlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTaGFyZWFibGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWxw
aGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3N1cmZhY2UtPmZsYWdzKCkgPT0gU2hhcmVh
YmxlQml0bWFwOjpTdXBwb3J0c0FscGhhOyB9CisgICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7
IH0KKworICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0
byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgorICAgIHZpcnR1YWwgUGFzc093blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAg
dmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0
dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgc291cmNlT2Zmc2V0KSBPVkVSUklERTsKKyNlbmRpZgorCisgICAgY29uc3QgU2hhcmVh
YmxlU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBlbnVt
IFB1cnBvc2UgeworICAgICAgICBQcm9kdWNlciwKKyAgICAgICAgQ29uc3VtZXIKKyAgICB9Owor
ICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShDb29yZGluYXRlZFN1cmZhY2VDbGllbnQq
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSk7CisgICAgQ29vcmRpbmF0ZWRT
aGFyZWFibGVTdXJmYWNlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYsIENvb3JkaW5h
dGVkU3VyZmFjZUlEKTsKKworICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7
CisgICAgUHVycG9zZSBtX3B1cnBvc2U7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgbV9JRDsK
KyAgICBib29sIG1faXNWYWlsZDsKKworICAgIC8vIE9ubHkgQ29vcmRpbmF0ZWRTaGFyZWFibGVT
dXJmYWNlIHdpdGggUHJvZHVjZXIgZW51bSBoYXMgdGhpcyBzdHJ1Y3QgYXMgYSBtZW1iZXIuCisg
ICAgc3RydWN0IFByb2R1Y2VyRGF0YSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBy
b2R1Y2VyRGF0YSk7CisgICAgcHVibGljOgorICAgICAgICBQcm9kdWNlckRhdGEoKTsKKyAgICAg
ICAgQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50KiBtX2NsaWVudDsKKyAgICAgICAgU2hhcmVhYmxl
U3VyZmFjZTo6SGFuZGxlIG1faGFuZGxlOworICAgIH07CisgICAgUHJvZHVjZXJEYXRhIG1fcHJv
ZHVjZXJEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorI2VuZGlm
IC8vIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41YzUxYzZkOWRmYTlhOTU1MmM3MGZjMThlNDQxODk2ODFhZTAz
M2M5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1
cmZhY2UuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkNv
b3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBD
b29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShDb29yZGluYXRlZFN1cmZhY2VDbGllbnQqIGNsaWVu
dCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBhbHBoYSkKK3sKKyAgICByZXR1
cm4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoY2xpZW50LCBzaXplLCBhbHBo
YSk7Cit9CisKK0Nvb3JkaW5hdGVkU3VyZmFjZTo6fkNvb3JkaW5hdGVkU3VyZmFjZSgpCit7IH0K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWZlZmMyMTU4OTk4NTM0MTU3ZjZhNjlhYjMzNzQ4N2MxMWU5NjA0YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDb29yZGluYXRlZFN1cmZhY2VfaAorI2RlZmluZSBDb29yZGluYXRlZFN1
cmZhY2VfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkludFJl
Y3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIEJpdG1hcFRleHR1cmU7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7Cit0
eXBlZGVmIHVpbnQzMl90IENvb3JkaW5hdGVkU3VyZmFjZUlEOworCitjbGFzcyBDb29yZGluYXRl
ZFN1cmZhY2VDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVDb29yZGlu
YXRlZFN1cmZhY2UoUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNvb3JkaW5hdGVkU3VyZmFjZShDb29yZGluYXRlZFN1cmZhY2VJRCkg
PSAwOworfTsKKworY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENvb3JkaW5hdGVkU3VyZmFjZT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVu
dCosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBib29sIGFscGhhKTsKKworICAgIHZpcnR1YWwg
fkNvb3JkaW5hdGVkU3VyZmFjZSgpOworCisgICAgZW51bSBTdXJmYWNlVHlwZSB7CisgICAgICAg
IFNoYXJlYWJsZSwKKyAgICAgICAgVGhyZWFkU2FmZQorICAgIH07CisgICAgdmlydHVhbCBDb29y
ZGluYXRlZFN1cmZhY2VJRCBpZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN1cmZhY2VUeXBl
IHR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGFscGhhKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWlu
dCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJj
ZU9mZnNldCkgPSAwOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCisjZW5kaWYgLy8gQ29vcmRpbmF0ZWRTdXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8u
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRTdXJmYWNlSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE2ZWQ4MDU1ZDI4NDNkYzIwMTBmNTQzZTcx
NzQzNGU1ZmJlODJiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uY3BwCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNvb3JkaW5hdGVkU3VyZmFjZUluZm8uaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRT
aGFyZWFibGVTdXJmYWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIENvb3JkaW5h
dGVkU3VyZmFjZUluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGNvb3JkaW5hdGVkU3VyZmFjZS0+dHlwZSgpID09IENvb3Jk
aW5hdGVkU3VyZmFjZTo6U2hhcmVhYmxlKTsKKyAgICBlbmNvZGVyLmVuY29kZShjb29yZGluYXRl
ZFN1cmZhY2UtPmlkKCkpOworICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSogc2hhcmVh
YmxlU3VyZmFjZSA9IHN0YXRpY19jYXN0PENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSo+KGNv
b3JkaW5hdGVkU3VyZmFjZS5nZXQoKSk7CisgICAgZW5jb2Rlci5lbmNvZGUoc2hhcmVhYmxlU3Vy
ZmFjZS0+aGFuZGxlKCkpOworfQorCitib29sIENvb3JkaW5hdGVkU3VyZmFjZUluZm86OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIENvb3JkaW5hdGVkU3VyZmFjZUlu
Zm8mIHJlc3VsdCkKK3sKKyAgICBDb29yZGluYXRlZFN1cmZhY2VJRCBpZDsKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShpZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0LmNvb3JkaW5hdGVkU3VyZmFj
ZSA9IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSwgaWQpOworICAg
IHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRTdXJmYWNlSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkNWUxYzdiMzM4MzJhZGQ4
ZTViMDgxNWYyMTY4NzdlNTA4NjdhZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkU3Vy
ZmFjZUluZm9faAorI2RlZmluZSBDb29yZGluYXRlZFN1cmZhY2VJbmZvX2gKKworI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CitjbGFz
cyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBUaGlzIGNsYXNzIGlzIGltcGxlbWVudGVkIHRvIHBhc3MgQ29vcmRp
bmF0ZWRTdXJmYWNlIHRvIFVJIFByb2Nlc3MuCisvLyBXZSBjYW4gbm90IHBhc3MgdGhlIG1lc3Nh
Z2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycyBiZXR3ZWVuIHByb2Nlc3NlcyB5ZXQuCitjbGFz
cyBDb29yZGluYXRlZFN1cmZhY2VJbmZvIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29y
ZGluYXRlZFN1cmZhY2VJbmZvKTsKK3B1YmxpYzoKKyAgICBDb29yZGluYXRlZFN1cmZhY2VJbmZv
KCkgeyB9CisKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25z
dDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgQ29v
cmRpbmF0ZWRTdXJmYWNlSW5mbyYpOworCisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
Y29vcmRpbmF0ZWRTdXJmYWNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgorI2VuZGlmIC8vIFVwZGF0ZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1N1cmZhY2VVcGRhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNl
VXBkYXRlSW5mby5jcHAKaW5kZXggNDE0N2NlYWE3YTJmMThjODBhYzY1MTZiN2IwNGNiNWNjMTky
NzVhYi4uMDdmOGRiNGU2Mjk1MmI4MDZmNzE3YjgzMjE3Zjk3ZmQ0Y2NmN2Q1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwCkBAIC0yOCw3ICsyOCw3IEBA
IHZvaWQgU3VyZmFjZVVwZGF0ZUluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci5lbmNvZGUodXBkYXRlUmVjdCk7CiAgICAg
ZW5jb2Rlci5lbmNvZGUoc2NhbGVGYWN0b3IpOwotICAgIGVuY29kZXIuZW5jb2RlKGF0bGFzSUQp
OworICAgIGVuY29kZXIuZW5jb2RlKGNvb3JkaW5hdGVkU3VyZmFjZUlEKTsKICAgICBlbmNvZGVy
LmVuY29kZShzdXJmYWNlT2Zmc2V0KTsKIH0KIApAQCAtMzgsNyArMzgsNyBAQCBib29sIFN1cmZh
Y2VVcGRhdGVJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBT
dXJmYWNlVXBkYXRlSQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzdWx0LnNjYWxlRmFjdG9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hdGxhc0lEKSkKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShyZXN1bHQuY29vcmRpbmF0ZWRTdXJmYWNlSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnN1cmZhY2VPZmZzZXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFj
ZVVwZGF0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5o
CmluZGV4IGUwODk2N2Q5NjcxYTY0ZWNkMzU4NGM4NmUxMzRmODAzNDA5MzdiNTEuLjZkZGM1YzU5
NzY2NTY3ODM5NjdkYTA1ZDEyYmZkNGQwYTI4MTg1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TdXJmYWNlVXBkYXRlSW5mby5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaWZuZGVmIFN1cmZhY2VV
cGRhdGVJbmZvX2gKICNkZWZpbmUgU3VyZmFjZVVwZGF0ZUluZm9faAogCisjaW5jbHVkZSAiQ29v
cmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTQ1LDggKzQ2LDggQEAgcHVibGljOgogICAgIC8v
IFRoZSBwYWdlIHNjYWxlIGZhY3RvciB1c2VkIHRvIHJlbmRlciB0aGlzIHVwZGF0ZS4KICAgICBm
bG9hdCBzY2FsZUZhY3RvcjsKIAotICAgIC8vIFRoZSBpZCBvZiB0aGUgdXBkYXRlIGF0bGFzIGlu
Y2x1ZGluZyB0aGUgc2hhcmVhYmxlIGJpdG1hcCBjb250YWluaW5nIHRoZSB1cGRhdGVzLgotICAg
IGludCBhdGxhc0lEOworICAgIC8vIFRoZSBpZCBvZiB0aGUgQ29vcmRpbmF0ZWRTdXJmYWNlIGlu
Y2x1ZGluZyB0aGUgc2hhcmVhYmxlIHN1cmZhY2UgY29udGFpbmluZyB0aGUgdXBkYXRlcy4KKyAg
ICBDb29yZGluYXRlZFN1cmZhY2VJRCBjb29yZGluYXRlZFN1cmZhY2VJRDsKIAogICAgIC8vIFRo
ZSBvZmZzZXQgaW4gdGhlIGJpdG1hcCB3aGVyZSB0aGUgcmVuZGVyZWQgY29udGVudHMgYXJlLgog
ICAgIFdlYkNvcmU6OkludFBvaW50IHN1cmZhY2VPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBhYTIz
NzQ4ZDI3ZjQ5NzVlNmZmODg3NDRhZWVlMTUyNGNlYTI5MjFkLi44MGIxM2VlMmNjOWQ4OWRmNTYz
ODI3M2Q2MGI4NzE3ZTFhN2VlODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTEzNSw2ICsxMzUsOSBAQCBI
RUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuaCBcCiAgICAgU2hhcmVkL1dl
YlVzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCBcCisgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmggXAorICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oIFwKKyAgICBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmggXAogICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAgICAgU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAgICAgU2hhcmVk
L1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCkBAIC00OTcsNiArNTAwLDkgQEAgU09VUkNF
UyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmNwcCBcCiAgICAgU2hhcmVkL1dlYldo
ZWVsRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwIFwKKyAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuY3BwIFwKKyAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmNwcCBcCiAgICAgU2hhcmVkL3F0
L0FyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBTaGFyZWQvcXQvTGF5ZXJUcmVlQ29udGV4dFF0
LmNwcCBcCiAgICAgU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYTU2OWI5ZTc4NmUzYmZh
ZjU3N2FiYmY1YmFjZmJmMjc1ZGM4ZWQ4Yi4uMDljYWRhNDhjOTRhOGNiNGYxN2Q3N2Q0MDhhODU2
YmM0MmMzNDRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ29vcmRpbmF0
ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIlNoYXJl
YWJsZVN1cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdMLmgiCiAKQEAgLTUwLDEzICs1MCwxMyBAQCB2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcAogICAgIH0KIAogICAgIGlmIChzaG91bGRSZXNldCkKLSAgICAgICAgdGV4dHVyZS0+cmVz
ZXQobV90YXJnZXRSZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5mbGFncygpICYgU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOwor
ICAgICAgICB0ZXh0dXJlLT5yZXNldChtX3RhcmdldFJlY3Quc2l6ZSgpLCBtX3N1cmZhY2UtPmFs
cGhhKCkpOwogCiAgICAgbV9zdXJmYWNlLT5jb3B5VG9UZXh0dXJlKHRleHR1cmUsIG1fc291cmNl
UmVjdCwgbV9zdXJmYWNlT2Zmc2V0KTsKICAgICBtX3N1cmZhY2UuY2xlYXIoKTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIG1fc291cmNl
UmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgbV90YXJnZXRSZWN0ID0gdGFyZ2V0UmVjdDsKQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlVGlsZShpbnQg
aWQpCiB9CiAKIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZShpbnQg
aWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3Qs
IFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYmFja0J1ZmZlciwgY29uc3QgSW50UG9pbnQm
IG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUoaW50IGlk
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBQ
YXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYmFja0J1ZmZlciwgY29uc3QgSW50UG9pbnQm
IG9mZnNldCkKIHsKICAgICBIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
Pjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3Rp
bGVzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDYzN2ZlYmE3MGFjOGJlZWNiMmQwMzY0OTVmYmRmYzRmMzRmZmI0NWQuLjIzZWFkYzYzNjBh
ZDYzNjZjZjY2NDExYmU4ZGRjYzY3OGExOTM4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKK2NsYXNzIENvb3JkaW5hdGVkU3VyZmFjZTsK
IAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJUaWxlIHsKIHB1YmxpYzoKQEAgLTQzLDEwICs0MywxMCBAQCBwdWJsaWM6CiAg
ICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVwYWludENvdW50
OyB9CiAgICAgaW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGFp
bnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciop
OwotICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBt
X3NvdXJjZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3RhcmdldFJlY3Q7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgbV9zdXJmYWNlT2Zmc2V0OwpAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUoaW50LCBmbG9hdCk7CiAg
ICAgdm9pZCByZW1vdmVUaWxlKGludCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKGludCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZVN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgdXBk
YXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9
CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7
CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4
IGYxYzRiZjNmM2M5NDNjNGM3N2FkODY4OTZhZWMwZWVjOTI1NTI1OGQuLjVmNGRmMDYyYTZhNzE4
OGYwYWJhOWVkZWQ3NWYwY2FjNTFmOGMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJM
YXllclRyZWVDb29yZGluYXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVy
ZXIuaCIKLSNpbmNsdWRlICJVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5mby5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eS5oIgpAQCAtNjQsNyArNjMsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHk6OmNyZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwgY29ucwogCiB2
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5
ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgV2ViS2l0
OjpTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKIHsKLSAgICBTdXJmYWNlTWFwOjppdGVy
YXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZCh1cGRhdGVJbmZvLmF0bGFzSUQpOworICAgIENvb3Jk
aW5hdGVkU3VyZmFjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodXBkYXRlSW5m
by5jb29yZGluYXRlZFN1cmZhY2VJRCk7CiAgICAgQVNTRVJUKGl0ICE9IG1fc3VyZmFjZXMuZW5k
KCkpOwogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVU
aWxlLCBtX3JlbmRlcmVyLmdldCgpLCBsYXllcklELCB0aWxlSUQsIExheWVyVHJlZVJlbmRlcmVy
OjpUaWxlVXBkYXRlKHVwZGF0ZUluZm8udXBkYXRlUmVjdCwgdGFyZ2V0UmVjdCwgaXQtPnZhbHVl
LCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpKSk7CiB9CkBAIC03NCwyMiArNzMsMjQgQEAgdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIoaW50IGxheWVy
SUQsIGludCB0aWxlSUQpCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVy
ZXI6OnJlbW92ZVRpbGUsIG1fcmVuZGVyZXIuZ2V0KCksIGxheWVySUQsIHRpbGVJRCkpOwogfQog
Ci12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKGludCBh
dGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdl
YktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbyYgc3VyZmFjZUluZm8pCiB7CiAjaWZuZGVmIE5E
RUJVRwotICAgIFN1cmZhY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKGF0bGFz
SUQpOworICAgIEFTU0VSVChzdXJmYWNlSW5mby5jb29yZGluYXRlZFN1cmZhY2UtPnR5cGUoKSA9
PSBDb29yZGluYXRlZFN1cmZhY2U6OlNoYXJlYWJsZSk7CisKKyAgICBDb29yZGluYXRlZFN1cmZh
Y2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKHN1cmZhY2VJbmZvLmNvb3JkaW5h
dGVkU3VyZmFjZS0+aWQoKSk7CiAgICAgQVNTRVJUKGl0ID09IG1fc3VyZmFjZXMuZW5kKCkpOwog
I2VuZGlmCi0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlKGhhbmRsZSkpOworICAgIG1fc3VyZmFjZXMuYWRkKHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVk
U3VyZmFjZS0+aWQoKSwgc3VyZmFjZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlKTsKIH0KIAotdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJ
RCkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ29vcmRpbmF0ZWRTdXJm
YWNlKENvb3JkaW5hdGVkU3VyZmFjZUlEIGlkKQogewogI2lmbmRlZiBOREVCVUcKLSAgICBTdXJm
YWNlTWFwOjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZChhdGxhc0lEKTsKKyAgICBDb29y
ZGluYXRlZFN1cmZhY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKGlkKTsKICAg
ICBBU1NFUlQoaXQgIT0gbV9zdXJmYWNlcy5lbmQoKSk7CiAjZW5kaWYKLSAgICBtX3N1cmZhY2Vz
LnJlbW92ZShhdGxhc0lEKTsKKyAgICBtX3N1cmZhY2VzLnJlbW92ZShpZCk7CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcihXZWJMYXll
cklEIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmlu
ZGV4IDY0NjgwMTE2OGYyNGE3ODliN2ViODA3MWNmNGI2ZjhhNGM0ZmI5N2EuLjRkM2MwOWUxNzZm
ZTM3MTA3MDI0N2E1MGQzZTc5YzFiZTBmZmY3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTI0LDkgKzI0LDkgQEAKIAogI2luY2x1ZGUgIkJh
Y2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZUluZm8uaCIKICNpbmNsdWRlICJEcmF3
aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxl
U3VyZmFjZS5oIgogI2luY2x1ZGUgIlN1cmZhY2VVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2Vi
TGF5ZXJUcmVlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBA
IC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihpbnQg
bGF5ZXJJRCwgaW50IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZh
Y2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQs
IGludCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRl
SW5mbyYpOwogICAgIHZvaWQgcmVtb3ZlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGls
ZUlEKTsKLSAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFy
ZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKLSAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBh
dGxhc0lEKTsKKyAgICB2b2lkIGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJLaXQ6
OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKKyAgICB2b2lkIHJlbW92ZUNvb3JkaW5hdGVkU3Vy
ZmFjZShXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUlEKTsKICAgICB2b2lkIGNyZWF0ZURpcmVj
dGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3QsIGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmKTsKICAgICB2b2lkIGRlc3Ryb3lEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2
NF90KTsKICAgICB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvclByb3h5TWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYpOwpAQCAtOTMsOCArOTMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6
SW50UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7CiAgICAgZmxvYXQgbV9sYXN0U2VudFNjYWxl
OwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBhdGxhc0lEICovLCBSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gPiBTdXJmYWNlTWFwOwotICAgIFN1cmZhY2VNYXAgbV9zdXJmYWNlczsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8Q29vcmRpbmF0ZWRTdXJmYWNlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZh
Y2U+ID4gQ29vcmRpbmF0ZWRTdXJmYWNlTWFwOworICAgIENvb3JkaW5hdGVkU3VyZmFjZU1hcCBt
X3N1cmZhY2VzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmE4OGRlNTNmZjMzZTQ1ZjFkMDg4
YTNkMjA1NTcwYTQwZmQ0YjU2Ny4uMGMyNDcyOThiZDYxOTNmZDQ4YjQyNTM1Yjc2MjRkYjE2YmYx
Yjc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOSw4ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IExheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkgewogICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXll
cklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3QsIFdlYktpdDo6U3Vy
ZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWludDMy
X3QgbGF5ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0YXJnZXRSZWN0LCBXZWJL
aXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCiAgICAgUmVtb3ZlVGlsZUZvckxheWVy
KHVpbnQzMl90IGxheWVySUQsIGludCB0aWxlSUQpCi0gICAgQ3JlYXRlVXBkYXRlQXRsYXMoaW50
IGF0bGFzSUQsIFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKLSAgICBS
ZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKKyAgICBDcmVhdGVDb29yZGluYXRlZFN1cmZh
Y2UoV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJbmZvIHN1cmZhY2VJbmZvKQorICAgIFJlbW92
ZUNvb3JkaW5hdGVkU3VyZmFjZSh1aW50MzJfdCBjb29yZGluYXRlZFN1cmZhY2VJZCkKICAgICBD
cmVhdGVEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQ2NF90IGtleSwgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBoYW5kbGUpCiAgICAgRGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZElt
YWdlKGludDY0X3Qga2V5KQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29u
dGVudHNTaXplLCBXZWJDb3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmgKaW5kZXggZGRlYTMxZDdiZWJhM2NhMTk4YjM4MjQyZDg2MDNhZTcwZTQ2
ZDZhMy4uOTA3MzIyM2I5NjkxMDA0MGE5ZTY1ODEyZWM5NDlkZDE3NGZjNDE0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCi0jaW5jbHVkZSAi
U2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5mby5oIgpAQCAtNTAsOSArNTAsOSBAQCBw
dWJsaWM6CiAgICAgc3RydWN0IFRpbGVVcGRhdGUgewogICAgICAgICBXZWJDb3JlOjpJbnRSZWN0
IHNvdXJjZVJlY3Q7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgdGFyZ2V0UmVjdDsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2U7CisgICAgICAgIFJlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG9mZnNl
dDsKLSAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNl
PiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbmV3T2Zmc2V0KQorICAgICAg
ICBUaWxlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgdGFyZ2V0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbmV3U3Vy
ZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG5ld09mZnNldCkKICAgICAgICAgICAgIDog
c291cmNlUmVjdChzb3VyY2UpCiAgICAgICAgICAgICAsIHRhcmdldFJlY3QodGFyZ2V0KQogICAg
ICAgICAgICAgLCBzdXJmYWNlKG5ld1N1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBhMGY0ZjY1ZjQx
YjA2Y2FkYTRlOGZkZmRjZDIzMjM1Y2NhYWVkZDIzLi43N2QwODdhMzgxYjU2ZTM5ZjIxN2FlOTRh
M2U2MGVkOTVmMDBmZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTYzNyw5ICs2MzcsOSBAQCBDb2xvciBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9y
KCkgY29uc3QKICAgICByZXR1cm4gY29udGVudHNPcGFxdWUoKSA/IENvbG9yOjp3aGl0ZSA6IENv
bG9yOjp0cmFuc3BhcmVudDsKIH0KIAotUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNpemUsIGludCYgYXRsYXMsIFdlYkNvcmU6OkludFBvaW50JiBvZmZz
ZXQpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJm
YWNlSUQmIGlkLCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIHJldHVybiBtX0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllckNsaWVudC0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3Bh
cXVlKCkgPyAwIDogU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0
KTsKKyAgICByZXR1cm4gbV9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQtPmJlZ2luQ29u
dGVudFVwZGF0ZShzaXplLCAhY29udGVudHNPcGFxdWUoKSwgaWQsIG9mZnNldCk7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0
IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaAppbmRleCA1NGFlMTU5YmRkNGNkYTcwYTc3MzRjNDNiZDU1MGE5N2MzNDRkODJhLi4x
MDMwYjM0ZTQyYmU2MzA1YjNlOGI5ODVmMjk0NGNlNmRhNDgzM2Q2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjEs
NiArMjEsNyBAQAogI2lmbmRlZiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJfaAogI2RlZmluZSBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJfaAogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNl
LmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRUaWxlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNE
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgpAQCAtMjksNyArMzAsNiBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlRpbGVkQmFj
a2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXll
cnMoKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVC
aXRtYXA6OkZsYWdzLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAg
IHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVu
dFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSwgQ29vcmRpbmF0ZWRT
dXJmYWNlSUQmLCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKIH07CiB9CiAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoaW50IHRpbGVJRCwg
Y29uc3QgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBXZWJLaXQ6
OlN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVUaWxlKGludCB0aWxlSUQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXpl
JiwgaW50JiBhdGxhc0lELCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwg
V2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJRCYsIEludFBvaW50JikgT1ZFUlJJREU7CiAKICAg
ICB2b2lkIHNldENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudChXZWJLaXQ6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRUaWxlLmNwcAppbmRleCA1NDhkNDlkMzI3ZjAzNTUzMjc0NmZkMmZiNTk1NWJk
NjFkYThiYWM3Li42Y2NiYWFiMTkwYTJkYzRmMWI1ZGE5MTlhYTZiNmY1NmQ1MzMzZmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAKQEAgLTczLDcg
KzczLDcgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZl
cigpCiAgICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKIAogICAgIFN1cmZhY2VVcGRh
dGVJbmZvIHVwZGF0ZUluZm87Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3ND
b250ZXh0ID0gbV9jbGllbnQtPmJlZ2luQ29udGVudFVwZGF0ZShtX2RpcnR5UmVjdC5zaXplKCks
IHVwZGF0ZUluZm8uYXRsYXNJRCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKKyAgICBPd25Q
dHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2NsaWVudC0+YmVnaW5Db250
ZW50VXBkYXRlKG1fZGlydHlSZWN0LnNpemUoKSwgdXBkYXRlSW5mby5jb29yZGluYXRlZFN1cmZh
Y2VJRCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwogICAgIGdyYXBoaWNzQ29udGV4
dC0+dHJhbnNsYXRlKC1tX2RpcnR5UmVjdC54KCksIC1tX2RpcnR5UmVjdC55KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRUaWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuaAppbmRleCAzMmZmNGU3Yzc5MWYy
YmUzNGI1MDM4MDA4NTY1ODM4NmVlMWVjNjM4Li5hNjE5NGU5OTg0MzdiNzNmMmZiZGY3ZTFjNGFh
Mzg0YjAzZjUxMDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRpbGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFRp
bGUuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAK
KyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJUaWxlLmgiCiAjaW5j
bHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJXZWJDb3JlL0ludFJlY3QuaCIK
QEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKGlu
dCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZShpbnQgdGlsZUlELCBjb25zdCBT
dXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbGUoaW50IHRpbGVJRCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc093
blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsK
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZUlE
JiwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZFRpbGVC
YWNrZW5kIDogcHVibGljIFdlYkNvcmU6OlRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5k
ZXggOWViMzc4ZTVkYTMzMWZjOGM5MWM1MmE0NDk5YjZhNTlkNGVmZjJhYy4uNjEyNzI5MDYzMTE5
YzljMTE5MWU3MGVhNzIzNDZhNTc2ZGRjMTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMzEsNiArMzEsNyBAQAogCiAj
aW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mby5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5o
IgpAQCAtNjE2LDE0ICs2MTcsMTcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVtb3Zl
VGlsZShXZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVUaWxlRm9yTGF5ZXIo
bGF5ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUm
IGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUNvb3JkaW5hdGVkU3Vy
ZmFjZShQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQog
ewotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6Q3JlYXRlVXBkYXRlQXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7CisgICAgQVNTRVJUKGNvb3Jk
aW5hdGVkU3VyZmFjZS0+dHlwZSgpID09IENvb3JkaW5hdGVkU3VyZmFjZTo6U2hhcmVhYmxlKTsK
KyAgICBDb29yZGluYXRlZFN1cmZhY2VJbmZvIHN1cmZhY2VJbmZvOworICAgIHN1cmZhY2VJbmZv
LmNvb3JkaW5hdGVkU3VyZmFjZSA9IGNvb3JkaW5hdGVkU3VyZmFjZTsKKyAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZUNvb3JkaW5h
dGVkU3VyZmFjZShzdXJmYWNlSW5mbykpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9y
OjpyZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OnJlbW92ZUNvb3JkaW5hdGVkU3VyZmFjZShDb29yZGluYXRlZFN1cmZhY2VJRCBpZCkKIHsK
LSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OlJlbW92ZVVwZGF0ZUF0bGFzKGF0bGFzSUQpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlJlbW92ZUNvb3JkaW5hdGVkU3VyZmFjZShp
ZCkpOwogfQogCiBXZWJDb3JlOjpJbnRSZWN0IExheWVyVHJlZUNvb3JkaW5hdG9yOjp2aXNpYmxl
Q29udGVudHNSZWN0KCkgY29uc3QKQEAgLTcwOSwyMyArNzEzLDIzIEBAIHZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3I6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgbV91cGRhdGVBdGxhc2VzLmNs
ZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBMYXllclRy
ZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29y
ZTo6SW50UG9pbnQmIG9mZnNldCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBMYXllclRy
ZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgYWxwaGEsIENvb3JkaW5hdGVkU3VyZmFjZUlEJiBpZCwgSW50UG9pbnQmIG9mZnNldCkKIHsK
LSAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7Cisg
ICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
VXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOwotICAgICAgICBp
ZiAoYXRsYXMtPmZsYWdzKCkgPT0gZmxhZ3MpIHsKKyAgICAgICAgaWYgKGF0bGFzLT5hbHBoYSgp
ID09IGFscGhhKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhl
cmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlciBzcGFjZS4KLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dCA9IGF0bGFzLT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6
ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dCA9IGF0bGFzLT5iZWdpblBh
aW50aW5nT25BdmFpbGFibGVCdWZmZXIoc2l6ZSwgaWQsIG9mZnNldCk7CiAgICAgICAgICAgICBp
ZiAoZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICAgICAgICAgIHJldHVybiBncmFwaGljc0NvbnRl
eHQucmVsZWFzZSgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGludCBT
Y3JhdGNoQnVmZmVyRGltZW5zaW9uID0gMTAyNDsgLy8gU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdv
LgotICAgIG1fdXBkYXRlQXRsYXNlcy5hcHBlbmQoYWRvcHRQdHIobmV3IFVwZGF0ZUF0bGFzKHRo
aXMsIFNjcmF0Y2hCdWZmZXJEaW1lbnNpb24sIGZsYWdzKSkpOworICAgIG1fdXBkYXRlQXRsYXNl
cy5hcHBlbmQoYWRvcHRQdHIobmV3IFVwZGF0ZUF0bGFzKHRoaXMsIFNjcmF0Y2hCdWZmZXJEaW1l
bnNpb24sIGFscGhhKSkpOwogICAgIHNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRsYXNlcygpOwot
ICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMubGFzdCgpLT5iZWdpblBhaW50aW5nT25BdmFpbGFi
bGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gbV91cGRhdGVBdGxh
c2VzLmxhc3QoKS0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHNpemUsIGlkLCBvZmZz
ZXQpOwogfQogCiBjb25zdCBkb3VibGUgUmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2
YWwgPSAwLjU7CkBAIC03NDUsNyArNzQ5LDcgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQoVGltZXI8TGF5ZXJUcmVlQ29vcmQKICAg
ICAgICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOwogICAg
ICAgICBpZiAoIWF0bGFzLT5pc0luVXNlKCkpCiAgICAgICAgICAgICBhdGxhcy0+YWRkVGltZUlu
YWN0aXZlKFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsKTsKLSAgICAgICAgYm9v
bCB1c2FibGVGb3JOb25Db21wb3NpdGVkQ29udGVudCA9IGF0bGFzLT5mbGFncygpID09IFNoYXJl
YWJsZUJpdG1hcDo6Tm9GbGFnczsKKyAgICAgICAgYm9vbCB1c2FibGVGb3JOb25Db21wb3NpdGVk
Q29udGVudCA9ICFhdGxhcy0+YWxwaGEoKTsKICAgICAgICAgaWYgKGF0bGFzLT5pc0luYWN0aXZl
KCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmRBY3RpdmVBdGxhc0Zvck5vbkNvbXBvc2l0ZWRD
b250ZW50ICYmICFhdGxhc1RvS2VlcEFueXdheSAmJiB1c2FibGVGb3JOb25Db21wb3NpdGVkQ29u
dGVudCkKICAgICAgICAgICAgICAgICBhdGxhc1RvS2VlcEFueXdheSA9IG1fdXBkYXRlQXRsYXNl
c1tpXS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaAppbmRleCBkNzI1YWY2OTdhODUzZGVjOTFmYzY4OTU5MmEyNWQzMDk2NDc3
MWY1Li5lNzNhOGQ2YTA4ZmY3YmM5NTc5MDZiYjQ0MGEyNTEzZjdlMzYzYTFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgTGF5ZXJUcmVlQ29vcmRpbmF0b3IgOiBw
dWJsaWMgTGF5ZXJUcmVlSG9zdCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudAogICAgICwg
cHVibGljIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudAotICAgICwgcHVibGljIFVwZGF0
ZUF0bGFzQ2xpZW50CisgICAgLCBwdWJsaWMgQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50CiAgICAg
LCBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExheWVyVHJlZUNvb3JkaW5hdG9yPiBjcmVhdGUoV2ViUGFnZSopOwpA
QCAtOTQsMTEgKzk0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNGaXhlZExheWVycygpOwogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBT
aGFyZWFibGVCaXRtYXA6OkZsYWdzLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50Jik7
CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5D
b250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBib29sIGFscGhhLCBDb29yZGlu
YXRlZFN1cmZhY2VJRCYsIFdlYkNvcmU6OkludFBvaW50Jik7CiAKLSAgICAvLyBVcGRhdGVBdGxh
c0NsaWVudAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwg
Y29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKTsKKyAgICAvLyBDb29yZGluYXRlZFN1cmZhY2VDbGll
bnQKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKFBhc3NSZWZQdHI8
Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNvb3JkaW5hdGVk
U3VyZmFjZShDb29yZGluYXRlZFN1cmZhY2VJRCk7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklN
QVRJT05fRlJBTUUpCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRl
QXRsYXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFz
LmNwcAppbmRleCAxZjRiZTViZTNiMGM2YmQ4MmU3NDVkMGEzMzg3NjY0YTJlYjIzZDdiLi44NDdk
MTQ1MzFjMTExNmVmNTY0MjYzZDZiMzBjY2QyZTM5ZGM1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4KIAog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMzAsMjggKzMxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotVXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0
bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Mg
ZmxhZ3MpCi0gICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2ZsYWdzKGZsYWdzKQotICAg
ICwgbV9pbmFjdGl2aXR5SW5TZWNvbmRzKDApCi0gICAgLCBtX2lzVmFpbGQodHJ1ZSkKK1VwZGF0
ZUF0bGFzOjpVcGRhdGVBdGxhcyhDb29yZGluYXRlZFN1cmZhY2VDbGllbnQqIGNsaWVudCwgaW50
IGRpbWVuc2lvbiwgYm9vbCBhbHBoYSkKKyAgICA6IG1faW5hY3Rpdml0eUluU2Vjb25kcygwKQog
ewotICAgIHN0YXRpYyBpbnQgaWQgPSAwOwotICAgIG1fSUQgPSArK2lkOwogICAgIEludFNpemUg
c2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNpemUoZGltZW5zaW9uLCBkaW1lbnNpb24pKTsKLSAg
ICBtX3N1cmZhY2UgPSBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJl
YWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKTsKLQotICAgIGlmICghbV9zdXJm
YWNlLT5jcmVhdGVIYW5kbGUobV9oYW5kbGUpKSB7Ci0gICAgICAgIG1faXNWYWlsZCA9IGZhbHNl
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY2xpZW50LT5jcmVhdGVVcGRhdGVBdGxh
cyhtX0lELCBtX2hhbmRsZSk7CisgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
cmVhdGUoY2xpZW50LCBzaXplLCBhbHBoYSk7CiB9CiAKIFVwZGF0ZUF0bGFzOjp+VXBkYXRlQXRs
YXMoKQogewotICAgIGlmIChtX2lzVmFpbGQpCi0gICAgICAgIG1fY2xpZW50LT5yZW1vdmVVcGRh
dGVBdGxhcyhtX0lEKTsKIH0KIAogdm9pZCBVcGRhdGVBdGxhczo6YnVpbGRMYXlvdXRJZk5lZWRl
ZCgpCkBAIC02Nyw3ICs1NSw3IEBAIHZvaWQgVXBkYXRlQXRsYXM6OmRpZFN3YXBCdWZmZXJzKCkK
ICAgICBtX2FyZWFBbGxvY2F0b3IuY2xlYXIoKTsKIH0KIAotUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50JiBh
dGxhc0lELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBJbnRQb2ludCYgb2Zmc2V0KQor
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25B
dmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQm
IGlkLCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIG1faW5hY3Rpdml0eUluU2Vjb25kcyA9IDA7
CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwpAQCAtNzcsMjEgKzY1LDIwIEBAIFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxl
QnVmZmVyKGludCYgYXRsCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CiAKLSAgICBpZiAoIW1faXNWYWlsZCkKLSAg
ICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PigpOwotCi0gICAgYXRsYXNJ
RCA9IG1fSUQ7Ci0KICAgICAvLyBGSVhNRTogVXNlIHRyaS1zdGF0ZSBidWZmZXJzLCB0byBhbGxv
dyBmYXN0ZXIgdXBkYXRlcy4KICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNlLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQocmVjdCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCisgICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKIAotICAgIGlmIChmbGFncygp
ICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSB7CisgICAgaWYgKGFscGhhKCkpIHsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
Q29weSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBzaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlU291cmNlT3Zlcik7CiAgICAgfQogCisgICAgaWQgPSBtX3N1cmZhY2UtPmlkKCk7CisKICAg
ICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuaAppbmRleCA3Y2VmZTljOTc5NDIx
NTg2MjczZjRlMGNkMzA5YTIwMjM0YzcxYWQxLi5iNGFlMDUwZjllMTA1NzFiMWU0OTIzMmFhMDIz
YjQwM2QxOWZiMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVXBkYXRlQXRsYXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
VXBkYXRlQXRsYXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEyIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdodCAo
QykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw4ICsyMiw4IEBA
CiAjZGVmaW5lIFVwZGF0ZUF0bGFzX2gKIAogI2luY2x1ZGUgIkFyZWFBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5j
bHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzIsMjQgKzMzLDE4IEBAIGNsYXNzIEludFBvaW50
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgVXBkYXRlQXRsYXNDbGllbnQgewotcHVi
bGljOgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29u
c3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkgPSAwOwotfTsKLQogY2xhc3MgVXBkYXRlQXRsYXMg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBV
cGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJp
dG1hcDo6RmxhZ3MpOworICAgIFVwZGF0ZUF0bGFzKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCos
IGludCBkaW1lbnNpb24sIGJvb2wgYWxwaGEpOwogICAgIH5VcGRhdGVBdGxhcygpOwogCiAgICAg
aW5saW5lIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+
c2l6ZSgpOyB9CiAKICAgICAvLyBSZXR1cm5zIGEgbnVsbCBwb2ludGVyIG9mIHRoZXJlIGlzIG5v
IGF2YWlsYWJsZSBidWZmZXIuCi0gICAgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihpbnQmIGF0bGFzSUQsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0KTsKKyAgICBQYXNzT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2VJRCYsIFdlYkNv
cmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVycygpOwotICAgIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisgICAgYm9v
bCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+YWxwaGEoKTsgfQogCiAgICAgdm9p
ZCBhZGRUaW1lSW5hY3RpdmUoZG91YmxlIHNlY29uZHMpCiAgICAgewpAQCAtNjcsMTQgKzYyLDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkTGF5b3V0SWZOZWVkZWQoKTsKIAogcHJpdmF0ZToK
LSAgICBVcGRhdGVBdGxhc0NsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEdlbmVyYWxBcmVh
QWxsb2NhdG9yPiBtX2FyZWFBbGxvY2F0b3I7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBt
X2ZsYWdzOwotICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7Ci0gICAgU2hh
cmVhYmxlU3VyZmFjZTo6SGFuZGxlIG1faGFuZGxlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1
cmZhY2U+IG1fc3VyZmFjZTsKICAgICBkb3VibGUgbV9pbmFjdGl2aXR5SW5TZWNvbmRzOwotICAg
IGludCBtX0lEOwotICAgIGJvb2wgbV9pc1ZhaWxkOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171960</attachid>
            <date>2012-11-01 17:54:17 -0700</date>
            <delta_ts>2012-11-02 00:38:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121102095231.patch</filename>
            <type>text/plain</type>
            <size>56703</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTkxMTBiOTRiMmVhMGUz
Y2I4YjJlNjNiZjY2ODJlOTY5NzcxMTJmYS4uNWZkYmM5ZjcxM2VmMWM1ZjE3NGIzYWNkNWFlNDky
YTBhNWQ5YWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0xMC0zMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1cmZhY2Ug
ZnJvbSBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVybmFsIFJldmlldyBieSBHd2FuZyBZb29uIEh3YW5nIGFu
ZCBKYWUgSHl1biBQYXJrLgorCisgICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9y
IFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIEN1cnJlbnRseSwgTGF5
ZXJUcmVlQ29vcmRpbmF0b3IsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciwgQ29vcmRpbmF0ZWRU
aWxlIGFuZAorICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSBkaXJlY3RseSB1c2UgU2hh
cmVhYmxlU3VyZmFjZS4gU2hhcmVhYmxlU3VyZmFjZSB3YXMKKyAgICAgICAgaW1wbGVtZW50ZWQg
dG8gc2hhcmUgYW4gaW1hZ2UgYmV0d2VlbiBwcm9jZXNzZXMuIFdlIGRvIG5vdCB3YW50IHRvIHB1
dCBtYW55CisgICAgICAgIGd1YXJkcyBvbiB0aG9zZSBjbGFzc2VzIHRvIGltcGxlbWVudCBUaHJl
YWRlZCBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgQ29vcmRpbmF0ZWRTdXJmYWNlLiBUaG9zZSBjbGFzc2VzIGp1c3QgdXNlCisgICAgICAgIENv
b3JkaW5hdGVkU3VyZmFjZS4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIHBsYXlzIGEgcm9s
ZSBpbiBzaGFyaW5nIGFuIGltYWdlCisgICAgICAgIGJldHdlZW4gcHJvY2Vzc2VzIGFzIFNoYXJl
YWJsZVN1cmZhY2UgZGlkLiBUaGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlIGlzIGp1c3QgdXNpbmcgU2hhcmVhYmxlU3VyZmFjZS4KKworICAg
ICAgICBXZSB3aWxsIGludHJvZHVjZSBDb29yZGluYXRlZFRocmVhZFNhZmVTdXJmYWNlLCB3aGlj
aCBwbGF5cyBhIHJvbGUgaW4gc2hhcmluZyBhbgorICAgICAgICBpbWFnZSBiZXR3ZWVuIHRocmVh
ZHMuIEl0IHdpbGwgYmUgaW1wbGVtZW50ZWQgdXNpbmcgbXV0ZXguCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpDb29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2U6On5Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OlByb2R1Y2VyRGF0YTo6UHJvZHVjZXJEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1
cmZhY2U6OmhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAgIFRoaXMgY2xhc3Mg
aXMgb25lIGltcGxlbWVudGF0aW9uIG9mIENvb3JkaW5hdGVkU3VyZmFjZSB0byBzaGFyZSBhbgor
ICAgICAgICAgIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6CisgICAgICAgIChQcm9kdWNlckRh
dGEpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1
cmZhY2U6On5Db29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgICBUaGlzIGNs
YXNzIGlzIGludHJvZHVjZWQgdG8gcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1
cmZhY2UKKyAgICAgICAgICBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLiBBbGwgY2xhc3NlcyBp
biBDb29yZGluYXRlZCBHcmFwaGljcyB1c2UKKyAgICAgICAgICB0aGlzIGNsYXNzIGluc3RlYWQg
b2YgU2hhcmVhYmxlU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkU3VyZmFjZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oOiBBZGRlZC4KKyAgICAg
ICAgICBUaGlzIGNsYXNzIGlzIGltcGxlbWVudGVkIHRvIHBhc3MgQ29vcmRpbmF0ZWRTdXJmYWNl
IHRvIFVJIFByb2Nlc3MuCisgICAgICAgICAgSXQgaXMgYmVjYXVzZSB3ZSBjYW4gbm90IHBhc3Mg
dGhlIG1lc3NhZ2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycworICAgICAgICAgIGJldHdlZW4g
cHJvY2Vzc2VzIHlldC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZFN1cmZhY2VJbmZvOjpDb29yZGluYXRlZFN1cmZhY2VJbmZvKToKKyAgICAgICAgKiBTaGFy
ZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXJmYWNlVXBkYXRl
SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm86OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmg6CisgICAgICAgIChTdXJm
YWNlVXBkYXRlSW5mbyk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1
cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVn
aW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkVGlsZTo6dXBk
YXRlQmFja0J1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmg6CisgICAgICAgIChDb29yZGluYXRlZFRpbGVDbGll
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3Ip
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVw
ZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6
YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVXBkYXRlQXRsYXMuaDoKKyAgICAgICAgKFVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdl
YktpdDo6VXBkYXRlQXRsYXM6OmFscGhhKToKKwogMjAxMi0xMC0zMSAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGlj
czogTWFuYWdlIHRoZSBsaWZlY3ljbGUgb2Ygc2hhcmVhYmxlIHN1cmZhY2VzIHByZWNpc2VseS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNmU0NmY0OGE5OWUzMTJiMzcwNjMxY2FiMjMzMjdiOTJi
NTU1Y2IxZS4uZTAzNmQ0MGQ4ZmU0MTY2NmZlMTEyZTUyYmIwODA1MGE1MzkzZTNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKQEAgLTIxOCw2ICsyMTgsOSBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAogCiAgICAgU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNw
cAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZS5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZh
Y2UuY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mby5jcHAKIAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCiAgICAg
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDY3OWRlOWVm
MWUzZmI3N2Q4YTE0MGJiNjg3MmI0NWUzZmNlMGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVT
dXJmYWNlLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgiCisK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxDb29yZGluYXRlZFNo
YXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKENvb3Jk
aW5hdGVkU3VyZmFjZUNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBib29sIGFscGhhKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRTaGFy
ZWFibGVTdXJmYWNlKGNsaWVudCwgc2l6ZSwgYWxwaGEpKTsKK30KKworUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlLCBDb29yZGluYXRlZFN1
cmZhY2VJRCBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZShoYW5kbGUsIGlkKSk7Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZTo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCog
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGFscGhhKQorICAgIDog
bV9zdXJmYWNlKFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShzaXplLCBhbHBoYSA/IFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncywgU2hhcmVh
YmxlU3VyZmFjZTo6U3VwcG9ydHNHcmFwaGljc1N1cmZhY2UpKQorICAgICwgbV9wdXJwb3NlKFBy
b2R1Y2VyKQorICAgICwgbV9pc1ZhaWxkKGZhbHNlKQoreworICAgIHN0YXRpYyBDb29yZGluYXRl
ZFN1cmZhY2VJRCBuZXh0SUQgPSAwOworICAgIG1fSUQgPSArK25leHRJRDsKKworICAgIGlmICgh
bV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUobV9wcm9kdWNlckRhdGEubV9oYW5kbGUpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2lzVmFpbGQgPSB0cnVlOworICAgIEFTU0VSVChjbGllbnQpOwor
ICAgIG1fcHJvZHVjZXJEYXRhLm1fY2xpZW50ID0gY2xpZW50OworICAgIG1fcHJvZHVjZXJEYXRh
Lm1fY2xpZW50LT5jcmVhdGVDb29yZGluYXRlZFN1cmZhY2UodGhpcyk7Cit9CisKK0Nvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZTo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFNo
YXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlLCBDb29yZGluYXRlZFN1cmZhY2VJRCBpZCkK
KyAgICA6IG1fc3VyZmFjZShTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkKKyAgICAs
IG1fcHVycG9zZShDb25zdW1lcikKKyAgICAsIG1fSUQoaWQpCisgICAgLCBtX2lzVmFpbGQoZmFs
c2UpCit7CisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNW
YWlsZCA9IHRydWU7Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6fkNvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZSgpCit7CisgICAgaWYgKG1fcHVycG9zZSA9PSBQcm9kdWNlciAm
JiBtX2lzVmFpbGQpIHsKKyAgICAgICAgQVNTRVJUKG1fcHJvZHVjZXJEYXRhLm1fY2xpZW50KTsK
KyAgICAgICAgbV9wcm9kdWNlckRhdGEubV9jbGllbnQtPnJlbW92ZUNvb3JkaW5hdGVkU3VyZmFj
ZShtX0lEKTsKKyAgICB9Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6UHJvZHVj
ZXJEYXRhOjpQcm9kdWNlckRhdGEoKQorICAgIDogbV9jbGllbnQoMCkKK3sgfQorCitQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBBU1NFUlQobV9wdXJw
b3NlID09IFByb2R1Y2VyKTsKKworICAgIGlmICghbV9pc1ZhaWxkKQorICAgICAgICByZXR1cm4g
UGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KCk7CisKKyAgICByZXR1cm4gbV9z
dXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7Cit9CisKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVIpCit2b2lkIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y29weVRvVGV4dHVy
ZShQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0
YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCit7CisgICAgQVNTRVJUKG1fcHVy
cG9zZSA9PSBDb25zdW1lcik7CisgICAgaWYgKG1faXNWYWlsZCkKKyAgICAgICAgbV9zdXJmYWNl
LT5jb3B5VG9UZXh0dXJlKHBhc3NUZXh0dXJlLCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7Cit9Cisj
ZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQorCitjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGUmIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6aGFuZGxlKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9wdXJwb3NlID09IFByb2R1Y2VyKTsKKyAgICBBU1NFUlQobV9pc1ZhaWxkKTsK
KyAgICByZXR1cm4gbV9wcm9kdWNlckRhdGEubV9oYW5kbGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4YWIyNmM4ZmM2NDY1MmUzODc2YmE3MjU4M2Y3NWE1NDM2NDNjNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlX2gKKyNk
ZWZpbmUgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKKworI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2luY2x1ZGUg
IlNoYXJlYWJsZVN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvb3Jk
aW5hdGVkU2hhcmVhYmxlU3VyZmFjZSA6IHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2UgeworcHVi
bGljOgorICAgIC8vIENyZWF0ZSBhIG5ldyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UsIGFu
ZCBhbGxvY2F0ZSBhIFNoYXJlYWJsZVN1cmZhY2UgYXMgYmFja2luZy4KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShDb29yZGluYXRlZFN1
cmZhY2VDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSk7CisKKyAg
ICAvLyBDcmVhdGUgYSBjb29yZGluYXRlZCBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxl
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZT4gY3Jl
YXRlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYsIENvb3JkaW5hdGVkU3VyZmFjZUlE
KTsKKworICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSgpOworCisgICAg
dmlydHVhbCBDb29yZGluYXRlZFN1cmZhY2VJRCBpZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fSUQ7IH0KKyAgICB2aXJ0dWFsIENvb3JkaW5hdGVkU3VyZmFjZTo6U3VyZmFjZVR5cGUgdHlw
ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvb3JkaW5hdGVkU3VyZmFjZTo6U2hhcmVhYmxl
OyB9CisgICAgdmlydHVhbCBib29sIGFscGhhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9z
dXJmYWNlLT5mbGFncygpID09IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsgfQorICAg
IHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBj
b250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4K
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVH
cmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRh
cmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgT1ZFUlJJREU7Cisj
ZW5kaWYKKworICAgIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSBQdXJwb3NlIHsKKyAgICAgICAgUHJvZHVjZXIsCisg
ICAgICAgIENvbnN1bWVyCisgICAgfTsKKyAgICBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Uo
Q29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wg
YWxwaGEpOworICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShjb25zdCBTaGFyZWFibGVT
dXJmYWNlOjpIYW5kbGUmLCBDb29yZGluYXRlZFN1cmZhY2VJRCk7CisKKyAgICBSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOworICAgIFB1cnBvc2UgbV9wdXJwb3NlOworICAgIENv
b3JkaW5hdGVkU3VyZmFjZUlEIG1fSUQ7CisgICAgYm9vbCBtX2lzVmFpbGQ7CisKKyAgICAvLyBP
bmx5IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSB3aXRoIFByb2R1Y2VyIGVudW0gaGFzIHRo
aXMgc3RydWN0IGFzIGEgbWVtYmVyLgorICAgIHN0cnVjdCBQcm9kdWNlckRhdGEgeworICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcm9kdWNlckRhdGEpOworICAgIHB1YmxpYzoKKyAgICAg
ICAgUHJvZHVjZXJEYXRhKCk7CisgICAgICAgIENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCogbV9j
bGllbnQ7CisgICAgICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICB9
OworICAgIFByb2R1Y2VyRGF0YSBtX3Byb2R1Y2VyRGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM1MWM2ZDlkZmE5
YTk1NTJjNzBmYzE4ZTQ0MTg5NjgxYWUwMzNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCisKKyNpbmNsdWRlICJDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoQ29vcmRp
bmF0ZWRTdXJmYWNlQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgYWxwaGEpCit7CisgICAgcmV0dXJuIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6
Y3JlYXRlKGNsaWVudCwgc2l6ZSwgYWxwaGEpOworfQorCitDb29yZGluYXRlZFN1cmZhY2U6On5D
b29yZGluYXRlZFN1cmZhY2UoKQoreyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZWZjMjE1ODk5ODUzNDE1
N2Y2YTY5YWIzMzc0ODdjMTFlOTYwNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNl
X2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJl
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwordHlwZWRlZiB1aW50MzJfdCBDb29yZGluYXRlZFN1cmZh
Y2VJRDsKKworY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKFBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDb29yZGluYXRlZFN1cmZh
Y2UoQ29vcmRpbmF0ZWRTdXJmYWNlSUQpID0gMDsKK307CisKK2NsYXNzIENvb3JkaW5hdGVkU3Vy
ZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0
ZShDb29yZGluYXRlZFN1cmZhY2VDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9v
bCBhbHBoYSk7CisKKyAgICB2aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKTsKKworICAgIGVu
dW0gU3VyZmFjZVR5cGUgeworICAgICAgICBTaGFyZWFibGUsCisgICAgICAgIFRocmVhZFNhZmUK
KyAgICB9OworICAgIHZpcnR1YWwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgaWQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdXJmYWNlVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBhbHBoYSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGlj
c0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUikKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNv
cmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKKyNlbmRpZgorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorI2VuZGlmIC8vIENvb3JkaW5hdGVkU3VyZmFj
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFh
NmVkODA1NWQyODQzZGMyMDEwZjU0M2U3MTc0MzRlNWZiZTgyYjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1
cmZhY2VJbmZvLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2VJbmZvLmgiCisKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBDb29yZGluYXRlZFN1cmZhY2VJbmZvOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFTU0VSVChjb29yZGluYXRl
ZFN1cmZhY2UtPnR5cGUoKSA9PSBDb29yZGluYXRlZFN1cmZhY2U6OlNoYXJlYWJsZSk7CisgICAg
ZW5jb2Rlci5lbmNvZGUoY29vcmRpbmF0ZWRTdXJmYWNlLT5pZCgpKTsKKyAgICBDb29yZGluYXRl
ZFNoYXJlYWJsZVN1cmZhY2UqIHNoYXJlYWJsZVN1cmZhY2UgPSBzdGF0aWNfY2FzdDxDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UqPihjb29yZGluYXRlZFN1cmZhY2UuZ2V0KCkpOworICAgIGVu
Y29kZXIuZW5jb2RlKHNoYXJlYWJsZVN1cmZhY2UtPmhhbmRsZSgpKTsKK30KKworYm9vbCBDb29y
ZGluYXRlZFN1cmZhY2VJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBDb29yZGluYXRlZFN1cmZhY2VJbmZvJiByZXN1bHQpCit7CisgICAgQ29vcmRpbmF0ZWRT
dXJmYWNlSUQgaWQ7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOworICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJlc3VsdC5jb29yZGluYXRlZFN1cmZhY2UgPSBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNyZWF0ZShoYW5kbGUsIGlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZDVlMWM3YjMzODMyYWRkOGU1YjA4MTVmMjE2ODc3ZTUwODY3YWYxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTdXJmYWNlSW5mby5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDb29yZGluYXRlZFN1cmZhY2VJbmZvX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRT
dXJmYWNlSW5mb19oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRl
ICJDb29yZGluYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1l
bnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFzcyBpcyBp
bXBsZW1lbnRlZCB0byBwYXNzIENvb3JkaW5hdGVkU3VyZmFjZSB0byBVSSBQcm9jZXNzLgorLy8g
V2UgY2FuIG5vdCBwYXNzIHRoZSBtZXNzYWdlIGluY2x1ZGluZyBub24tUE9EIG1lbWJlcnMgYmV0
d2VlbiBwcm9jZXNzZXMgeWV0LgorY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyk7CitwdWJsaWM6Cisg
ICAgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbygpIHsgfQorCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIENvb3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKKworICAgIFJl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBVcGRhdGVJbmZvX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwCmluZGV4IDQxNDdjZWFhN2Ey
ZjE4YzgwYWM2NTE2YjdiMDRjYjVjYzE5Mjc1YWIuLjA3ZjhkYjRlNjI5NTJiODA2ZjcxN2I4MzIx
N2Y5N2ZkNGNjZjdkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNl
VXBkYXRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZhY2VVcGRhdGVJ
bmZvLmNwcApAQCAtMjgsNyArMjgsNyBAQCB2b2lkIFN1cmZhY2VVcGRhdGVJbmZvOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIu
ZW5jb2RlKHVwZGF0ZVJlY3QpOwogICAgIGVuY29kZXIuZW5jb2RlKHNjYWxlRmFjdG9yKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShhdGxhc0lEKTsKKyAgICBlbmNvZGVyLmVuY29kZShjb29yZGluYXRl
ZFN1cmZhY2VJRCk7CiAgICAgZW5jb2Rlci5lbmNvZGUoc3VyZmFjZU9mZnNldCk7CiB9CiAKQEAg
LTM4LDcgKzM4LDcgQEAgYm9vbCBTdXJmYWNlVXBkYXRlSW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgU3VyZmFjZVVwZGF0ZUkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5zY2FsZUZhY3RvcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuYXRsYXNJ
RCkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LmNvb3JkaW5hdGVkU3VyZmFjZUlE
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3Vs
dC5zdXJmYWNlT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaAppbmRleCBlMDg5NjdkOTY3MWE2NGVjZDM1ODRjODZl
MTM0ZjgwMzQwOTM3YjUxLi42ZGRjNWM1OTc2NjU2NzgzOTY3ZGEwNWQxMmJmZDRkMGEyODE4NTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaApAQCAtMjAsNiAr
MjAsNyBAQAogI2lmbmRlZiBTdXJmYWNlVXBkYXRlSW5mb19oCiAjZGVmaW5lIFN1cmZhY2VVcGRh
dGVJbmZvX2gKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC00NSw4
ICs0Niw4IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSBzY2FsZSBmYWN0b3IgdXNlZCB0byBy
ZW5kZXIgdGhpcyB1cGRhdGUuCiAgICAgZmxvYXQgc2NhbGVGYWN0b3I7CiAKLSAgICAvLyBUaGUg
aWQgb2YgdGhlIHVwZGF0ZSBhdGxhcyBpbmNsdWRpbmcgdGhlIHNoYXJlYWJsZSBiaXRtYXAgY29u
dGFpbmluZyB0aGUgdXBkYXRlcy4KLSAgICBpbnQgYXRsYXNJRDsKKyAgICAvLyBUaGUgaWQgb2Yg
dGhlIENvb3JkaW5hdGVkU3VyZmFjZSBpbmNsdWRpbmcgdGhlIHNoYXJlYWJsZSBzdXJmYWNlIGNv
bnRhaW5pbmcgdGhlIHVwZGF0ZXMuCisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgY29vcmRpbmF0
ZWRTdXJmYWNlSUQ7CiAKICAgICAvLyBUaGUgb2Zmc2V0IGluIHRoZSBiaXRtYXAgd2hlcmUgdGhl
IHJlbmRlcmVkIGNvbnRlbnRzIGFyZS4KICAgICBXZWJDb3JlOjpJbnRQb2ludCBzdXJmYWNlT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggYWEyMzc0OGQyN2Y0OTc1ZTZmZjg4NzQ0YWVlZTE1MjRjZWEy
OTIxZC4uODBiMTNlZTJjYzlkODlkZjU2MzgyNzNkNjBiODcxN2UxYTdlZTgxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCkBAIC0xMzUsNiArMTM1LDkgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJl
c3BvbnNlLmggXAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAgICAg
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29k
ZXJzLmggXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZS5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFN1cmZhY2UuaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRT
dXJmYWNlSW5mby5oIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21G
aWx0ZXJQcm9ncmFtLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXApA
QCAtNDk3LDYgKzUwMCw5IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25z
ZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBcCisg
ICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNl
LmNwcCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mby5jcHAgXAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hh
cmVkL3F0L0xheWVyVHJlZUNvbnRleHRRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVC
aXRtYXBRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGE1NjliOWU3ODZlM2JmYWY1NzdhYmJmNWJhY2ZiZjI3NWRjOGVkOGIuLjA5Y2Fk
YTQ4Yzk0YThjYjRmMTdkNzdkNDA4YTg1NmJjNDJjMzQ0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRl
ICJDb29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogCkBAIC01MCwxMyArNTAs
MTMgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXAKICAgICB9CiAKICAgICBpZiAoc2hvdWxkUmVz
ZXQpCi0gICAgICAgIHRleHR1cmUtPnJlc2V0KG1fdGFyZ2V0UmVjdC5zaXplKCksIG1fc3VyZmFj
ZS0+ZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA/IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90YXJnZXRS
ZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5hbHBoYSgpKTsKIAogICAgIG1fc3VyZmFjZS0+Y29weVRv
VGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1fc3VyZmFjZU9mZnNldCk7CiAgICAgbV9z
dXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpz
ZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tC
dWZmZXIoY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQm
IG9mZnNldCkKIHsKICAgICBtX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgIG1fdGFyZ2V0
UmVjdCA9IHRhcmdldFJlY3Q7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnJlbW92ZVRpbGUoaW50IGlkKQogfQogCiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnVwZGF0ZVRpbGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDxpbnQsIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlk
KTsKICAgICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCA2MzdmZWJhNzBhYzhiZWVjYjJkMDM2NDk1ZmJk
ZmM0ZjM0ZmZiNDVkLi4yM2VhZGM2MzYwYWQ2MzY2Y2Y2NjQxMWJlOGRkY2M2NzhhMTkzODZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTI4LDcgKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2U7Citj
bGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6CkBAIC00
MywxMCArNDMsMTAgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJlcGFpbnRD
b3VudCgpIHsgKyttX3JlcGFpbnRDb3VudDsgfQogICAgIGlubGluZSBpbnQgcmVwYWludENvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBCdWZmZXJz
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2
b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBtX3N1cmZhY2U7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNl
OwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9zb3VyY2VSZWN0OwogICAgIFdlYkNvcmU6OkludFJl
Y3QgbV90YXJnZXRSZWN0OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsK
QEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBj
cmVhdGVUaWxlKGludCwgZmxvYXQpOwogICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOwotICAgIHZv
aWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUoaW50LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
b29yZGluYXRlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFw
VGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcAppbmRleCA0ZDQzZmViODE3MDBlOTU3OWNjNzY2ZWVhNzM3ZmE4
Yzc2NTAzZDU2Li45NDFkMzM0NGRkY2E2Njk4NjVkYTU4ZTg4OGU1M2IwMWNmNTViZjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjQs
NyArMjQsNiBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVXBkYXRlSW5mby5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJl
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTY0LDcgKzYzLDcgQEAgdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVy
SUQsIGludCB0aWxlSUQsIGNvbnMKIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1
cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IEludFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8p
CiB7Ci0gICAgU3VyZmFjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodXBkYXRl
SW5mby5hdGxhc0lEKTsKKyAgICBDb29yZGluYXRlZFN1cmZhY2VNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9zdXJmYWNlcy5maW5kKHVwZGF0ZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlSUQpOwogICAgIEFT
U0VSVChpdCAhPSBtX3N1cmZhY2VzLmVuZCgpKTsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZM
YXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZSwgbV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwg
dGlsZUlELCBMYXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZSh1cGRhdGVJbmZvLnVwZGF0ZVJl
Y3QsIHRhcmdldFJlY3QsIGl0LT52YWx1ZSwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KSkpOwog
fQpAQCAtNzQsMTYgKzczLDE3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVt
b3ZlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKQogICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlLCBtX3JlbmRlcmVyLmdldCgp
LCBsYXllcklELCB0aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5
OjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6
SGFuZGxlJiBoYW5kbGUpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUNv
b3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1
cmZhY2VJbmZvKQogewotICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7
Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGhh
bmRsZSkpOworICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhzdXJmYWNlSW5mby5jb29y
ZGluYXRlZFN1cmZhY2UtPmlkKCkpKTsKKyAgICBBU1NFUlQoc3VyZmFjZUluZm8uY29vcmRpbmF0
ZWRTdXJmYWNlLT50eXBlKCkgPT0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTaGFyZWFibGUpOworICAg
IG1fc3VyZmFjZXMuYWRkKHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZS0+aWQoKSwgc3Vy
ZmFjZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGlu
YXRvclByb3h5OjpyZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKK3ZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKENvb3JkaW5hdGVkU3Vy
ZmFjZUlEIGlkKQogewotICAgIEFTU0VSVChtX3N1cmZhY2VzLmNvbnRhaW5zKGF0bGFzSUQpKTsK
LSAgICBtX3N1cmZhY2VzLnJlbW92ZShhdGxhc0lEKTsKKyAgICBBU1NFUlQobV9zdXJmYWNlcy5j
b250YWlucyhpZCkpOworICAgIG1fc3VyZmFjZXMucmVtb3ZlKGlkKTsKIH0KIAogdm9pZCBMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpkZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQg
aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
NjQ2ODAxMTY4ZjI0YTc4OWI3ZWI4MDcxY2Y0YjZmOGE0YzRmYjk3YS4uNGQzYzA5ZTE3NmZlMzcx
MDcwMjQ3YTUwZDNlNzljMWJlMGZmZjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjQsOSArMjQsOSBAQAogCiAjaW5jbHVkZSAiQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJm
YWNlLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJMYXll
clRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTY1
LDggKzY1LDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlVGlsZUZvckxheWVyKGludCBsYXll
cklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVw
ZGF0ZUluZm8mKTsKICAgICB2b2lkIHVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50
IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
Jik7CiAgICAgdm9pZCByZW1vdmVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQp
OwotICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFz
SUQpOworICAgIHZvaWQgY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlSW5mbyYpOworICAgIHZvaWQgcmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNl
KFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlSUQpOwogICAgIHZvaWQgY3JlYXRlRGlyZWN0bHlD
b21wb3NpdGVkSW1hZ2UoaW50NjRfdCwgY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYpOwogICAgIHZvaWQgZGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CkBAIC05Myw4ICs5Myw4IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IG1fbGFzdFNlbnRWaXNpYmxlUmVjdDsKICAgICBmbG9hdCBtX2xhc3RTZW50U2NhbGU7CiAg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNl
PiA+IFN1cmZhY2VNYXA7Ci0gICAgU3VyZmFjZU1hcCBtX3N1cmZhY2VzOworICAgIHR5cGVkZWYg
SGFzaE1hcDxDb29yZGluYXRlZFN1cmZhY2VJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
PiBDb29yZGluYXRlZFN1cmZhY2VNYXA7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlTWFwIG1fc3Vy
ZmFjZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiYTg4ZGU1M2ZmMzNlNDVmMWQwODhhM2Qy
MDU1NzBhNDBmZDRiNTY3Li4wYzI0NzI5OGJkNjE5M2ZkNDhiNDI1MzViNzYyNGRiMTZiZjFiNzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI5LDggKzI5LDggQEAgbWVzc2FnZXMgLT4gTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eSB7CiAgICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQs
IGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGFyZ2V0UmVjdCwgV2ViS2l0OjpTdXJmYWNl
VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBs
YXllcklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3QsIFdlYktpdDo6
U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBSZW1vdmVUaWxlRm9yTGF5ZXIodWlu
dDMyX3QgbGF5ZXJJRCwgaW50IHRpbGVJRCkKLSAgICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRs
YXNJRCwgV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQotICAgIFJlbW92
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQorICAgIENyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShX
ZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8gc3VyZmFjZUluZm8pCisgICAgUmVtb3ZlQ29v
cmRpbmF0ZWRTdXJmYWNlKHVpbnQzMl90IGNvb3JkaW5hdGVkU3VyZmFjZUlkKQogICAgIENyZWF0
ZURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5LCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGhhbmRsZSkKICAgICBEZXN0cm95RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2Uo
aW50NjRfdCBrZXkpCiAgICAgRGlkUmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50
c1NpemUsIFdlYkNvcmU6OkludFJlY3QgY292ZXJlZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuaAppbmRleCBkZGVhMzFkN2JlYmEzY2ExOThiMzgyNDJkODYwM2FlNzBlNDZkNmEz
Li45MDczMjIzYjk2OTEwMDQwYTllNjU4MTJlYzk0OWRkMTc0ZmM0MTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJTaGFy
ZWFibGVTdXJmYWNlLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVJbmZvLmgiCkBAIC01MCw5ICs1MCw5IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc291
cmNlUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCB0YXJnZXRSZWN0OwotICAgICAgICBS
ZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4gc3VyZmFjZTsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0Owot
ICAgICAgICBUaWxlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJjZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG5l
d1N1cmZhY2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdPZmZzZXQpCisgICAgICAgIFRp
bGVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiB0YXJnZXQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBuZXdTdXJmYWNl
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbmV3T2Zmc2V0KQogICAgICAgICAgICAgOiBzb3Vy
Y2VSZWN0KHNvdXJjZSkKICAgICAgICAgICAgICwgdGFyZ2V0UmVjdCh0YXJnZXQpCiAgICAgICAg
ICAgICAsIHN1cmZhY2UobmV3U3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGEwZjRmNjVmNDFiMDZj
YWRhNGU4ZmRmZGNkMjMyMzVjY2FhZWRkMjMuLjc3ZDA4N2EzODFiNTZlMzlmMjE3YWU5NGEzZTYw
ZWQ5NWYwMGZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjM3LDkgKzYzNyw5IEBAIENvbG9yIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogICAgIHJldHVybiBjb250ZW50c09wYXF1ZSgpID8gQ29sb3I6OndoaXRlIDogQ29sb3I6
OnRyYW5zcGFyZW50OwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4g
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSwgaW50JiBhdGxhcywgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCkK
K1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJl
Z2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2VJ
RCYgaWQsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIG1fQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50LT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUo
KSA/IDAgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwor
ICAgIHJldHVybiBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudC0+YmVnaW5Db250ZW50
VXBkYXRlKHNpemUsICFjb250ZW50c09wYXF1ZSgpLCBpZCwgb2Zmc2V0KTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgU3Vy
ZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IGI4ZTg1OTU3MWM3N2Y5YjUyMGFhMzNjYTAyYWJmYjE0NjhjNmIzNGYuLjg4N2M2
NzM3Mjg3YzEwYTUyYmMxMDc0MmQ2NzhkNDRkNTlmYTVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMSw2ICsy
MSw3IEBACiAjaWZuZGVmIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcl9oCiAjZGVmaW5lIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcl9oCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIK
ICNpbmNsdWRlICJDb29yZGluYXRlZFRpbGUuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCkBAIC0yOSw3ICszMCw2IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5n
U3RvcmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygp
ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmly
dHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBk
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBib29sIGFscGhhLCBDb29yZGluYXRlZFN1cmZh
Y2VJRCYsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogfTsKIH0KIApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25z
dCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6U3Vy
ZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVRpbGUoaW50IHRpbGVJRCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCBp
bnQmIGF0bGFzSUQsIEludFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCBXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUlEJiwgSW50UG9pbnQmKSBPVkVSUklERTsKIAogICAgIHZv
aWQgc2V0Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyQ2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZFRpbGUuY3BwCmluZGV4IDU0OGQ0OWQzMjdmMDM1NTMyNzQ2ZmQyZmI1OTU1YmQ2MWRh
OGJhYzcuLjZjY2JhYWIxOTBhMmRjNGYxYjVkYTkxOWFhNmI2ZjU2ZDUzMzNmZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBWZWN0b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkK
ICAgICAgICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwogCiAgICAgU3VyZmFjZVVwZGF0ZUlu
Zm8gdXBkYXRlSW5mbzsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRl
eHQgPSBtX2NsaWVudC0+YmVnaW5Db250ZW50VXBkYXRlKG1fZGlydHlSZWN0LnNpemUoKSwgdXBk
YXRlSW5mby5hdGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpOworICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5iZWdpbkNvbnRlbnRV
cGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZUlE
LCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpOwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlSZWN0LnkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFRpbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5oCmluZGV4IDMyZmY0ZTdjNzkxZjJiZTM0
YjUwMzgwMDg1NjU4Mzg2ZWUxZWM2MzguLmE2MTk0ZTk5ODQzN2I3M2YyZmJkZjdlMWM0YWEzODRi
MDNmNTEwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIAorI2lu
Y2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRpbGUuaCIKICNpbmNsdWRl
ICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIldlYkNvcmUvSW50UmVjdC5oIgpAQCAt
NzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoaW50IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFN1cmZh
Y2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlVGlsZShpbnQgdGlsZUlEKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAg
IHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVu
dFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBX
ZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkVGlsZUJhY2tl
bmQgOiBwdWJsaWMgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCA5
ZWIzNzhlNWRhMzMxZmM4YzkxYzUyYTQ0OTliNmE1OWQ0ZWZmMmFjLi42MTI3MjkwNjMxMTljOWMx
MTkxZTcwZWE3MjM0NmE1NzZkZGMxOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNs
dWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2VJbmZv
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCkBA
IC02MTYsMTQgKzYxNywxNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVUaWxl
KFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXll
cklELCB0aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBk
YXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFu
ZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNl
KFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCiB7Ci0g
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpD
cmVhdGVVcGRhdGVBdGxhcyhhdGxhc0lELCBoYW5kbGUpKTsKKyAgICBBU1NFUlQoY29vcmRpbmF0
ZWRTdXJmYWNlLT50eXBlKCkgPT0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTaGFyZWFibGUpOworICAg
IENvb3JkaW5hdGVkU3VyZmFjZUluZm8gc3VyZmFjZUluZm87CisgICAgc3VyZmFjZUluZm8uY29v
cmRpbmF0ZWRTdXJmYWNlID0gY29vcmRpbmF0ZWRTdXJmYWNlOworICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Q3JlYXRlQ29vcmRpbmF0ZWRT
dXJmYWNlKHN1cmZhY2VJbmZvKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJl
bW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKENvb3JkaW5hdGVkU3VyZmFjZUlEIGlkKQogewotICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVt
b3ZlVXBkYXRlQXRsYXMoYXRsYXNJRCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKGlkKSk7
CiB9CiAKIFdlYkNvcmU6OkludFJlY3QgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdApAQCAtNzA5LDIzICs3MTMsMjMgQEAgdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIo
KTsKIH0KIAotUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNv
b3JkaW5hdG9yOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJ
bnRQb2ludCYgb2Zmc2V0KQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNv
b3JkaW5hdG9yOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBh
bHBoYSwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmIGlkLCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAg
IE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dDsKKyAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBVcGRh
dGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmIChh
dGxhcy0+ZmxhZ3MoKSA9PSBmbGFncykgeworICAgICAgICBpZiAoYXRsYXMtPmFscGhhKCkgPT0g
YWxwaGEpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGVyZSBp
cyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
ID0gYXRsYXMtPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBv
ZmZzZXQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRp
bmdPbkF2YWlsYWJsZUJ1ZmZlcihzaXplLCBpZCwgb2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChn
cmFwaGljc0NvbnRleHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5y
ZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgaW50IFNjcmF0
Y2hCdWZmZXJEaW1lbnNpb24gPSAxMDI0OyAvLyBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28uCi0g
ICAgbV91cGRhdGVBdGxhc2VzLmFwcGVuZChhZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywg
U2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiwgZmxhZ3MpKSk7CisgICAgbV91cGRhdGVBdGxhc2VzLmFw
cGVuZChhZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywgU2NyYXRjaEJ1ZmZlckRpbWVuc2lv
biwgYWxwaGEpKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCk7Ci0gICAg
cmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1
ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOworICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMu
bGFzdCgpLT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoc2l6ZSwgaWQsIG9mZnNldCk7
CiB9CiAKIGNvbnN0IGRvdWJsZSBSZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCA9
IDAuNTsKQEAgLTc0NSw3ICs3NDksNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxl
YXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZChUaW1lcjxMYXllclRyZWVDb29yZAogICAgICAg
ICBVcGRhdGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAg
IGlmICghYXRsYXMtPmlzSW5Vc2UoKSkKICAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5hY3Rp
dmUoUmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29sIHVz
YWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gYXRsYXMtPmZsYWdzKCkgPT0gU2hhcmVhYmxl
Qml0bWFwOjpOb0ZsYWdzOworICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250
ZW50ID0gIWF0bGFzLT5hbHBoYSgpOwogICAgICAgICBpZiAoYXRsYXMtPmlzSW5hY3RpdmUoKSkg
ewogICAgICAgICAgICAgaWYgKCFmb3VuZEFjdGl2ZUF0bGFzRm9yTm9uQ29tcG9zaXRlZENvbnRl
bnQgJiYgIWF0bGFzVG9LZWVwQW55d2F5ICYmIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50
KQogICAgICAgICAgICAgICAgIGF0bGFzVG9LZWVwQW55d2F5ID0gbV91cGRhdGVBdGxhc2VzW2ld
LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oCmluZGV4IGQ3MjVhZjY5N2E4NTNkZWM5MWZjNjg5NTkyYTI1ZDMwOTY0NzcxZjUu
LmU3M2E4ZDZhMDhmZjdiYzk1NzkwNmJiNDQwYTI1MTNmN2UzNjNhMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtMzksNyArMzks
NyBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBMYXllclRyZWVDb29yZGluYXRvciA6IHB1Ymxp
YyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgLCBwdWJs
aWMgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Ci0gICAgLCBwdWJsaWMgVXBkYXRlQXRs
YXNDbGllbnQKKyAgICAsIHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2VDbGllbnQKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TGF5ZXJUcmVlQ29vcmRpbmF0b3I+IGNyZWF0ZShXZWJQYWdlKik7CkBAIC05
NCwxMSArOTQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0Zp
eGVkTGF5ZXJzKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJl
YWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wgYWxwaGEsIENvb3JkaW5hdGVk
U3VyZmFjZUlEJiwgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAotICAgIC8vIFVwZGF0ZUF0bGFzQ2xp
ZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25z
dCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBk
YXRlQXRsYXMoaW50IGF0bGFzSUQpOworICAgIC8vIENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ29vcmRpbmF0ZWRTdXJm
YWNlKENvb3JkaW5hdGVkU3VyZmFjZUlEKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxh
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuY3Bw
CmluZGV4IDlhNTQxOGYxZWFhYTM0ODdiNGU0MjRiOWE5NTYyMDIwODMwOTc1NGUuLjg0N2QxNDUz
MWMxMTE2ZWY1NjQyNjNkNmIzMGNjZDJlMzlkYzU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zMCwyOCArMzEsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1VcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXND
bGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFn
cykKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBt
X2luYWN0aXZpdHlJblNlY29uZHMoMCkKLSAgICAsIG1faXNWYWlsZCh0cnVlKQorVXBkYXRlQXRs
YXM6OlVwZGF0ZUF0bGFzKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCogY2xpZW50LCBpbnQgZGlt
ZW5zaW9uLCBib29sIGFscGhhKQorICAgIDogbV9pbmFjdGl2aXR5SW5TZWNvbmRzKDApCiB7Ci0g
ICAgc3RhdGljIGludCBuZXh0SUQgPSAwOwotICAgIG1fSUQgPSArK25leHRJRDsKICAgICBJbnRT
aXplIHNpemUgPSBuZXh0UG93ZXJPZlR3byhJbnRTaXplKGRpbWVuc2lvbiwgZGltZW5zaW9uKSk7
Ci0gICAgbV9zdXJmYWNlID0gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzLCBT
aGFyZWFibGVTdXJmYWNlOjpTdXBwb3J0c0dyYXBoaWNzU3VyZmFjZSk7Ci0KLSAgICBpZiAoIW1f
c3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlKSkgewotICAgICAgICBtX2lzVmFpbGQgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRl
QXRsYXMobV9JRCwgbV9oYW5kbGUpOworICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKGNsaWVudCwgc2l6ZSwgYWxwaGEpOwogfQogCiBVcGRhdGVBdGxhczo6flVwZGF0
ZUF0bGFzKCkKIHsKLSAgICBpZiAobV9pc1ZhaWxkKQotICAgICAgICBtX2NsaWVudC0+cmVtb3Zl
VXBkYXRlQXRsYXMobV9JRCk7CiB9CiAKIHZvaWQgVXBkYXRlQXRsYXM6OmJ1aWxkTGF5b3V0SWZO
ZWVkZWQoKQpAQCAtNjcsNyArNTUsNyBAQCB2b2lkIFVwZGF0ZUF0bGFzOjpkaWRTd2FwQnVmZmVy
cygpCiAgICAgbV9hcmVhQWxsb2NhdG9yLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGlu
dCYgYXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgSW50UG9pbnQmIG9mZnNl
dCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGlu
Z09uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFj
ZUlEJiBpZCwgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBtX2luYWN0aXZpdHlJblNlY29uZHMg
PSAwOwogICAgIGJ1aWxkTGF5b3V0SWZOZWVkZWQoKTsKQEAgLTc3LDIxICs2NSwyMCBAQCBQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWls
YWJsZUJ1ZmZlcihpbnQmIGF0bAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PigpOwogCi0gICAgaWYgKCFtX2lzVmFpbGQp
Ci0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKLQotICAgIGF0
bGFzSUQgPSBtX0lEOwotCiAgICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywgdG8g
YWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwogICAg
IE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAg
ICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CiAKLSAgICBpZiAoZmxh
Z3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkgeworICAgIGlmIChhbHBoYSgp
KSB7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZUNvcHkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgc2l6ZSksIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIH0KIAorICAgIGlkID0gbV9zdXJmYWNlLT5pZCgpOwor
CiAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmgKaW5kZXggN2NlZmU5Yzk3
OTQyMTU4NjI3M2Y0ZTBjZDMwOWEyMDIzNGM3MWFkMS4uYjRhZTA1MGY5ZTEwNTcxYjFlNDkyMzJh
YTAyM2I0MDNkMTlmYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1VwZGF0ZUF0bGFzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsOCArMjIs
OCBAQAogI2RlZmluZSBVcGRhdGVBdGxhc19oCiAKICNpbmNsdWRlICJBcmVhQWxsb2NhdG9yLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMyLDI0ICszMywxOCBAQCBjbGFzcyBJbnRQ
b2ludDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50IHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQs
IGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpID0gMDsKLX07Ci0KIGNsYXNzIFVwZGF0ZUF0
bGFzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVcGRhdGVBdGxhcyk7CiBwdWJsaWM6Ci0g
ICAgVXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqLCBpbnQgZGltZW5zaW9uLCBTaGFyZWFi
bGVCaXRtYXA6OkZsYWdzKTsKKyAgICBVcGRhdGVBdGxhcyhDb29yZGluYXRlZFN1cmZhY2VDbGll
bnQqLCBpbnQgZGltZW5zaW9uLCBib29sIGFscGhhKTsKICAgICB+VXBkYXRlQXRsYXMoKTsKIAog
ICAgIGlubGluZSBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZh
Y2UtPnNpemUoKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIG51bGwgcG9pbnRlciBvZiB0aGVyZSBp
cyBubyBhdmFpbGFibGUgYnVmZmVyLgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50JiBhdGxhc0lELCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCk7CisgICAgUGFz
c093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJs
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFy
ZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAg
IGJvb2wgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPmFscGhhKCk7IH0KIAogICAg
IHZvaWQgYWRkVGltZUluYWN0aXZlKGRvdWJsZSBzZWNvbmRzKQogICAgIHsKQEAgLTY3LDE0ICs2
Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZExheW91dElmTmVlZGVkKCk7CiAKIHByaXZh
dGU6Ci0gICAgVXBkYXRlQXRsYXNDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxHZW5lcmFs
QXJlYUFsbG9jYXRvcj4gbV9hcmVhQWxsb2NhdG9yOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwotICAg
IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsK
LSAgICBpbnQgbV9JRDsKLSAgICBib29sIG1faXNWYWlsZDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171998</attachid>
            <date>2012-11-02 00:38:08 -0700</date>
            <delta_ts>2012-11-22 18:55:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121102163621.patch</filename>
            <type>text/plain</type>
            <size>56703</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDc0YmEwNzFhNjVhN2My
YjRjYzQ2YjliMzU4NjJhODdiZTVlYjFiYy4uYmVjMTM3ZDgxMWU1NjdkZWQyZTQwYjJiYTllYWEx
ZTI5NWVmZjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxMi0xMC0zMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1cmZhY2Ug
ZnJvbSBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEludGVybmFsIFJldmlldyBieSBHd2FuZyBZb29uIEh3YW5nIGFu
ZCBKYWUgSHl1biBQYXJrLgorCisgICAgICAgIEl0IGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9y
IFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIEN1cnJlbnRseSwgTGF5
ZXJUcmVlQ29vcmRpbmF0b3IsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciwgQ29vcmRpbmF0ZWRU
aWxlIGFuZAorICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSBkaXJlY3RseSB1c2UgU2hh
cmVhYmxlU3VyZmFjZS4gU2hhcmVhYmxlU3VyZmFjZSB3YXMKKyAgICAgICAgaW1wbGVtZW50ZWQg
dG8gc2hhcmUgYW4gaW1hZ2UgYmV0d2VlbiBwcm9jZXNzZXMuIFdlIGRvIG5vdCB3YW50IHRvIHB1
dCBtYW55CisgICAgICAgIGd1YXJkcyBvbiB0aG9zZSBjbGFzc2VzIHRvIGltcGxlbWVudCBUaHJl
YWRlZCBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgQ29vcmRpbmF0ZWRTdXJmYWNlLiBUaG9zZSBjbGFzc2VzIGp1c3QgdXNlCisgICAgICAgIENv
b3JkaW5hdGVkU3VyZmFjZS4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIHBsYXlzIGEgcm9s
ZSBpbiBzaGFyaW5nIGFuIGltYWdlCisgICAgICAgIGJldHdlZW4gcHJvY2Vzc2VzIGFzIFNoYXJl
YWJsZVN1cmZhY2UgZGlkLiBUaGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgICAgQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlIGlzIGp1c3QgdXNpbmcgU2hhcmVhYmxlU3VyZmFjZS4KKworICAg
ICAgICBXZSB3aWxsIGludHJvZHVjZSBDb29yZGluYXRlZFRocmVhZFNhZmVTdXJmYWNlLCB3aGlj
aCBwbGF5cyBhIHJvbGUgaW4gc2hhcmluZyBhbgorICAgICAgICBpbWFnZSBiZXR3ZWVuIHRocmVh
ZHMuIEl0IHdpbGwgYmUgaW1wbGVtZW50ZWQgdXNpbmcgbXV0ZXguCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpDb29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2U6On5Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OlByb2R1Y2VyRGF0YTo6UHJvZHVjZXJEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1
cmZhY2U6OmhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAgIFRoaXMgY2xhc3Mg
aXMgb25lIGltcGxlbWVudGF0aW9uIG9mIENvb3JkaW5hdGVkU3VyZmFjZSB0byBzaGFyZSBhbgor
ICAgICAgICAgIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6CisgICAgICAgIChQcm9kdWNlckRh
dGEpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1
cmZhY2U6On5Db29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgICBUaGlzIGNs
YXNzIGlzIGludHJvZHVjZWQgdG8gcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1
cmZhY2UKKyAgICAgICAgICBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLiBBbGwgY2xhc3NlcyBp
biBDb29yZGluYXRlZCBHcmFwaGljcyB1c2UKKyAgICAgICAgICB0aGlzIGNsYXNzIGluc3RlYWQg
b2YgU2hhcmVhYmxlU3VyZmFjZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkU3VyZmFjZUluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oOiBBZGRlZC4KKyAgICAg
ICAgICBUaGlzIGNsYXNzIGlzIGltcGxlbWVudGVkIHRvIHBhc3MgQ29vcmRpbmF0ZWRTdXJmYWNl
IHRvIFVJIFByb2Nlc3MuCisgICAgICAgICAgSXQgaXMgYmVjYXVzZSB3ZSBjYW4gbm90IHBhc3Mg
dGhlIG1lc3NhZ2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycworICAgICAgICAgIGJldHdlZW4g
cHJvY2Vzc2VzIHlldC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU3VyZmFjZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZFN1cmZhY2VJbmZvOjpDb29yZGluYXRlZFN1cmZhY2VJbmZvKToKKyAgICAgICAgKiBTaGFy
ZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXJmYWNlVXBkYXRl
SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm86OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmg6CisgICAgICAgIChTdXJm
YWNlVXBkYXRlSW5mbyk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1
cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVn
aW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkVGlsZTo6dXBk
YXRlQmFja0J1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmg6CisgICAgICAgIChDb29yZGluYXRlZFRpbGVDbGll
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3Ip
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVw
ZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6
YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVXBkYXRlQXRsYXMuaDoKKyAgICAgICAgKFVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdl
YktpdDo6VXBkYXRlQXRsYXM6OmFscGhhKToKKwogMjAxMi0xMS0wMiAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGlj
czogTWFuYWdlIHRoZSBsaWZlY3ljbGUgb2Ygc2hhcmVhYmxlIHN1cmZhY2VzIHByZWNpc2VseS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNmU0NmY0OGE5OWUzMTJiMzcwNjMxY2FiMjMzMjdiOTJi
NTU1Y2IxZS4uZTAzNmQ0MGQ4ZmU0MTY2NmZlMTEyZTUyYmIwODA1MGE1MzkzZTNmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKQEAgLTIxOCw2ICsyMTgsOSBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAogCiAgICAgU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNw
cAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZS5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZh
Y2UuY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mby5jcHAKIAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCiAgICAg
U2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDY3OWRlOWVm
MWUzZmI3N2Q4YTE0MGJiNjg3MmI0NWUzZmNlMGNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVT
dXJmYWNlLmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgiCisK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxDb29yZGluYXRlZFNo
YXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKENvb3Jk
aW5hdGVkU3VyZmFjZUNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBib29sIGFscGhhKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRTaGFy
ZWFibGVTdXJmYWNlKGNsaWVudCwgc2l6ZSwgYWxwaGEpKTsKK30KKworUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlLCBDb29yZGluYXRlZFN1
cmZhY2VJRCBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZShoYW5kbGUsIGlkKSk7Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZTo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCog
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGFscGhhKQorICAgIDog
bV9zdXJmYWNlKFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShzaXplLCBhbHBoYSA/IFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncywgU2hhcmVh
YmxlU3VyZmFjZTo6U3VwcG9ydHNHcmFwaGljc1N1cmZhY2UpKQorICAgICwgbV9wdXJwb3NlKFBy
b2R1Y2VyKQorICAgICwgbV9pc1ZhaWxkKGZhbHNlKQoreworICAgIHN0YXRpYyBDb29yZGluYXRl
ZFN1cmZhY2VJRCBuZXh0SUQgPSAwOworICAgIG1fSUQgPSArK25leHRJRDsKKworICAgIGlmICgh
bV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUobV9wcm9kdWNlckRhdGEubV9oYW5kbGUpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2lzVmFpbGQgPSB0cnVlOworICAgIEFTU0VSVChjbGllbnQpOwor
ICAgIG1fcHJvZHVjZXJEYXRhLm1fY2xpZW50ID0gY2xpZW50OworICAgIG1fcHJvZHVjZXJEYXRh
Lm1fY2xpZW50LT5jcmVhdGVDb29yZGluYXRlZFN1cmZhY2UodGhpcyk7Cit9CisKK0Nvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZTo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFNo
YXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlLCBDb29yZGluYXRlZFN1cmZhY2VJRCBpZCkK
KyAgICA6IG1fc3VyZmFjZShTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkKKyAgICAs
IG1fcHVycG9zZShDb25zdW1lcikKKyAgICAsIG1fSUQoaWQpCisgICAgLCBtX2lzVmFpbGQoZmFs
c2UpCit7CisgICAgaWYgKCFtX3N1cmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNW
YWlsZCA9IHRydWU7Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6fkNvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZSgpCit7CisgICAgaWYgKG1fcHVycG9zZSA9PSBQcm9kdWNlciAm
JiBtX2lzVmFpbGQpIHsKKyAgICAgICAgQVNTRVJUKG1fcHJvZHVjZXJEYXRhLm1fY2xpZW50KTsK
KyAgICAgICAgbV9wcm9kdWNlckRhdGEubV9jbGllbnQtPnJlbW92ZUNvb3JkaW5hdGVkU3VyZmFj
ZShtX0lEKTsKKyAgICB9Cit9CisKK0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6UHJvZHVj
ZXJEYXRhOjpQcm9kdWNlckRhdGEoKQorICAgIDogbV9jbGllbnQoMCkKK3sgfQorCitQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBBU1NFUlQobV9wdXJw
b3NlID09IFByb2R1Y2VyKTsKKworICAgIGlmICghbV9pc1ZhaWxkKQorICAgICAgICByZXR1cm4g
UGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KCk7CisKKyAgICByZXR1cm4gbV9z
dXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7Cit9CisKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVIpCit2b2lkIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y29weVRvVGV4dHVy
ZShQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0
YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCit7CisgICAgQVNTRVJUKG1fcHVy
cG9zZSA9PSBDb25zdW1lcik7CisgICAgaWYgKG1faXNWYWlsZCkKKyAgICAgICAgbV9zdXJmYWNl
LT5jb3B5VG9UZXh0dXJlKHBhc3NUZXh0dXJlLCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7Cit9Cisj
ZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQorCitjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGUmIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6aGFuZGxlKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9wdXJwb3NlID09IFByb2R1Y2VyKTsKKyAgICBBU1NFUlQobV9pc1ZhaWxkKTsK
KyAgICByZXR1cm4gbV9wcm9kdWNlckRhdGEubV9oYW5kbGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY4YWIyNmM4ZmM2NDY1MmUzODc2YmE3MjU4M2Y3NWE1NDM2NDNjNDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaApAQCAtMCwwICsxLDg3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlX2gKKyNk
ZWZpbmUgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKKworI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2luY2x1ZGUg
IlNoYXJlYWJsZVN1cmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvb3Jk
aW5hdGVkU2hhcmVhYmxlU3VyZmFjZSA6IHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2UgeworcHVi
bGljOgorICAgIC8vIENyZWF0ZSBhIG5ldyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UsIGFu
ZCBhbGxvY2F0ZSBhIFNoYXJlYWJsZVN1cmZhY2UgYXMgYmFja2luZy4KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShDb29yZGluYXRlZFN1
cmZhY2VDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSk7CisKKyAg
ICAvLyBDcmVhdGUgYSBjb29yZGluYXRlZCBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxl
LgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZT4gY3Jl
YXRlKGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYsIENvb3JkaW5hdGVkU3VyZmFjZUlE
KTsKKworICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSgpOworCisgICAg
dmlydHVhbCBDb29yZGluYXRlZFN1cmZhY2VJRCBpZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fSUQ7IH0KKyAgICB2aXJ0dWFsIENvb3JkaW5hdGVkU3VyZmFjZTo6U3VyZmFjZVR5cGUgdHlw
ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvb3JkaW5hdGVkU3VyZmFjZTo6U2hhcmVhYmxl
OyB9CisgICAgdmlydHVhbCBib29sIGFscGhhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9z
dXJmYWNlLT5mbGFncygpID09IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsgfQorICAg
IHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBj
b250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4K
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVH
cmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworCisjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRh
cmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgT1ZFUlJJREU7Cisj
ZW5kaWYKKworICAgIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSBQdXJwb3NlIHsKKyAgICAgICAgUHJvZHVjZXIsCisg
ICAgICAgIENvbnN1bWVyCisgICAgfTsKKyAgICBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Uo
Q29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wg
YWxwaGEpOworICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShjb25zdCBTaGFyZWFibGVT
dXJmYWNlOjpIYW5kbGUmLCBDb29yZGluYXRlZFN1cmZhY2VJRCk7CisKKyAgICBSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOworICAgIFB1cnBvc2UgbV9wdXJwb3NlOworICAgIENv
b3JkaW5hdGVkU3VyZmFjZUlEIG1fSUQ7CisgICAgYm9vbCBtX2lzVmFpbGQ7CisKKyAgICAvLyBP
bmx5IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSB3aXRoIFByb2R1Y2VyIGVudW0gaGFzIHRo
aXMgc3RydWN0IGFzIGEgbWVtYmVyLgorICAgIHN0cnVjdCBQcm9kdWNlckRhdGEgeworICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcm9kdWNlckRhdGEpOworICAgIHB1YmxpYzoKKyAgICAg
ICAgUHJvZHVjZXJEYXRhKCk7CisgICAgICAgIENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCogbV9j
bGllbnQ7CisgICAgICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICB9
OworICAgIFByb2R1Y2VyRGF0YSBtX3Byb2R1Y2VyRGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM1MWM2ZDlkZmE5
YTk1NTJjNzBmYzE4ZTQ0MTg5NjgxYWUwMzNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCisKKyNpbmNsdWRlICJDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoQ29vcmRp
bmF0ZWRTdXJmYWNlQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgYWxwaGEpCit7CisgICAgcmV0dXJuIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6
Y3JlYXRlKGNsaWVudCwgc2l6ZSwgYWxwaGEpOworfQorCitDb29yZGluYXRlZFN1cmZhY2U6On5D
b29yZGluYXRlZFN1cmZhY2UoKQoreyB9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmZWZjMjE1ODk5ODUzNDE1
N2Y2YTY5YWIzMzc0ODdjMTFlOTYwNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMCww
ICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNl
X2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJl
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwordHlwZWRlZiB1aW50MzJfdCBDb29yZGluYXRlZFN1cmZh
Y2VJRDsKKworY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKFBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDb29yZGluYXRlZFN1cmZh
Y2UoQ29vcmRpbmF0ZWRTdXJmYWNlSUQpID0gMDsKK307CisKK2NsYXNzIENvb3JkaW5hdGVkU3Vy
ZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0
ZShDb29yZGluYXRlZFN1cmZhY2VDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgYm9v
bCBhbHBoYSk7CisKKyAgICB2aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKTsKKworICAgIGVu
dW0gU3VyZmFjZVR5cGUgeworICAgICAgICBTaGFyZWFibGUsCisgICAgICAgIFRocmVhZFNhZmUK
KyAgICB9OworICAgIHZpcnR1YWwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgaWQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTdXJmYWNlVHlwZSB0eXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBhbHBoYSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0
IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGlj
c0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUikKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNv
cmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKKyNlbmRpZgorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorI2VuZGlmIC8vIENvb3JkaW5hdGVkU3VyZmFj
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFh
NmVkODA1NWQyODQzZGMyMDEwZjU0M2U3MTc0MzRlNWZiZTgyYjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1
cmZhY2VJbmZvLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2VJbmZvLmgiCisKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBDb29yZGluYXRlZFN1cmZhY2VJbmZvOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFTU0VSVChjb29yZGluYXRl
ZFN1cmZhY2UtPnR5cGUoKSA9PSBDb29yZGluYXRlZFN1cmZhY2U6OlNoYXJlYWJsZSk7CisgICAg
ZW5jb2Rlci5lbmNvZGUoY29vcmRpbmF0ZWRTdXJmYWNlLT5pZCgpKTsKKyAgICBDb29yZGluYXRl
ZFNoYXJlYWJsZVN1cmZhY2UqIHNoYXJlYWJsZVN1cmZhY2UgPSBzdGF0aWNfY2FzdDxDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UqPihjb29yZGluYXRlZFN1cmZhY2UuZ2V0KCkpOworICAgIGVu
Y29kZXIuZW5jb2RlKHNoYXJlYWJsZVN1cmZhY2UtPmhhbmRsZSgpKTsKK30KKworYm9vbCBDb29y
ZGluYXRlZFN1cmZhY2VJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBDb29yZGluYXRlZFN1cmZhY2VJbmZvJiByZXN1bHQpCit7CisgICAgQ29vcmRpbmF0ZWRT
dXJmYWNlSUQgaWQ7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOworICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJlc3VsdC5jb29yZGluYXRlZFN1cmZhY2UgPSBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNyZWF0ZShoYW5kbGUsIGlkKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZDVlMWM3YjMzODMyYWRkOGU1YjA4MTVmMjE2ODc3ZTUwODY3YWYxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTdXJmYWNlSW5mby5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDb29yZGluYXRlZFN1cmZhY2VJbmZvX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRT
dXJmYWNlSW5mb19oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNpbmNsdWRl
ICJDb29yZGluYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1l
bnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFzcyBpcyBp
bXBsZW1lbnRlZCB0byBwYXNzIENvb3JkaW5hdGVkU3VyZmFjZSB0byBVSSBQcm9jZXNzLgorLy8g
V2UgY2FuIG5vdCBwYXNzIHRoZSBtZXNzYWdlIGluY2x1ZGluZyBub24tUE9EIG1lbWJlcnMgYmV0
d2VlbiBwcm9jZXNzZXMgeWV0LgorY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyk7CitwdWJsaWM6Cisg
ICAgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbygpIHsgfQorCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIENvb3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKKworICAgIFJl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBVcGRhdGVJbmZvX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwCmluZGV4IDQxNDdjZWFhN2Ey
ZjE4YzgwYWM2NTE2YjdiMDRjYjVjYzE5Mjc1YWIuLjA3ZjhkYjRlNjI5NTJiODA2ZjcxN2I4MzIx
N2Y5N2ZkNGNjZjdkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdXJmYWNl
VXBkYXRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZhY2VVcGRhdGVJ
bmZvLmNwcApAQCAtMjgsNyArMjgsNyBAQCB2b2lkIFN1cmZhY2VVcGRhdGVJbmZvOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIu
ZW5jb2RlKHVwZGF0ZVJlY3QpOwogICAgIGVuY29kZXIuZW5jb2RlKHNjYWxlRmFjdG9yKTsKLSAg
ICBlbmNvZGVyLmVuY29kZShhdGxhc0lEKTsKKyAgICBlbmNvZGVyLmVuY29kZShjb29yZGluYXRl
ZFN1cmZhY2VJRCk7CiAgICAgZW5jb2Rlci5lbmNvZGUoc3VyZmFjZU9mZnNldCk7CiB9CiAKQEAg
LTM4LDcgKzM4LDcgQEAgYm9vbCBTdXJmYWNlVXBkYXRlSW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgU3VyZmFjZVVwZGF0ZUkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5zY2FsZUZhY3RvcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuYXRsYXNJ
RCkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LmNvb3JkaW5hdGVkU3VyZmFjZUlE
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3Vs
dC5zdXJmYWNlT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaAppbmRleCBlMDg5NjdkOTY3MWE2NGVjZDM1ODRjODZl
MTM0ZjgwMzQwOTM3YjUxLi42ZGRjNWM1OTc2NjU2NzgzOTY3ZGEwNWQxMmJmZDRkMGEyODE4NTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uaApAQCAtMjAsNiAr
MjAsNyBAQAogI2lmbmRlZiBTdXJmYWNlVXBkYXRlSW5mb19oCiAjZGVmaW5lIFN1cmZhY2VVcGRh
dGVJbmZvX2gKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkBAIC00NSw4
ICs0Niw4IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSBzY2FsZSBmYWN0b3IgdXNlZCB0byBy
ZW5kZXIgdGhpcyB1cGRhdGUuCiAgICAgZmxvYXQgc2NhbGVGYWN0b3I7CiAKLSAgICAvLyBUaGUg
aWQgb2YgdGhlIHVwZGF0ZSBhdGxhcyBpbmNsdWRpbmcgdGhlIHNoYXJlYWJsZSBiaXRtYXAgY29u
dGFpbmluZyB0aGUgdXBkYXRlcy4KLSAgICBpbnQgYXRsYXNJRDsKKyAgICAvLyBUaGUgaWQgb2Yg
dGhlIENvb3JkaW5hdGVkU3VyZmFjZSBpbmNsdWRpbmcgdGhlIHNoYXJlYWJsZSBzdXJmYWNlIGNv
bnRhaW5pbmcgdGhlIHVwZGF0ZXMuCisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlSUQgY29vcmRpbmF0
ZWRTdXJmYWNlSUQ7CiAKICAgICAvLyBUaGUgb2Zmc2V0IGluIHRoZSBiaXRtYXAgd2hlcmUgdGhl
IHJlbmRlcmVkIGNvbnRlbnRzIGFyZS4KICAgICBXZWJDb3JlOjpJbnRQb2ludCBzdXJmYWNlT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggYWEyMzc0OGQyN2Y0OTc1ZTZmZjg4NzQ0YWVlZTE1MjRjZWEy
OTIxZC4uODBiMTNlZTJjYzlkODlkZjU2MzgyNzNkNjBiODcxN2UxYTdlZTgxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCkBAIC0xMzUsNiArMTM1LDkgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJl
c3BvbnNlLmggXAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAgICAg
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29k
ZXJzLmggXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZS5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFN1cmZhY2UuaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRT
dXJmYWNlSW5mby5oIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21G
aWx0ZXJQcm9ncmFtLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXApA
QCAtNDk3LDYgKzUwMCw5IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25z
ZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBcCisg
ICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNl
LmNwcCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNl
SW5mby5jcHAgXAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hh
cmVkL3F0L0xheWVyVHJlZUNvbnRleHRRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVC
aXRtYXBRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGE1NjliOWU3ODZlM2JmYWY1NzdhYmJmNWJhY2ZiZjI3NWRjOGVkOGIuLjA5Y2Fk
YTQ4Yzk0YThjYjRmMTdkNzdkNDA4YTg1NmJjNDJjMzQ0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRl
ICJDb29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogCkBAIC01MCwxMyArNTAs
MTMgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXAKICAgICB9CiAKICAgICBpZiAoc2hvdWxkUmVz
ZXQpCi0gICAgICAgIHRleHR1cmUtPnJlc2V0KG1fdGFyZ2V0UmVjdC5zaXplKCksIG1fc3VyZmFj
ZS0+ZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA/IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90YXJnZXRS
ZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5hbHBoYSgpKTsKIAogICAgIG1fc3VyZmFjZS0+Y29weVRv
VGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1fc3VyZmFjZU9mZnNldCk7CiAgICAgbV9z
dXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpz
ZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tC
dWZmZXIoY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQm
IG9mZnNldCkKIHsKICAgICBtX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgIG1fdGFyZ2V0
UmVjdCA9IHRhcmdldFJlY3Q7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnJlbW92ZVRpbGUoaW50IGlkKQogfQogCiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnVwZGF0ZVRpbGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDxpbnQsIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlk
KTsKICAgICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCA2MzdmZWJhNzBhYzhiZWVjYjJkMDM2NDk1ZmJk
ZmM0ZjM0ZmZiNDVkLi4yM2VhZGM2MzYwYWQ2MzY2Y2Y2NjQxMWJlOGRkY2M2NzhhMTkzODZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTI4LDcgKzI4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2U7Citj
bGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6CkBAIC00
MywxMCArNDMsMTAgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJlcGFpbnRD
b3VudCgpIHsgKyttX3JlcGFpbnRDb3VudDsgfQogICAgIGlubGluZSBpbnQgcmVwYWludENvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBCdWZmZXJz
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2
b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBtX3N1cmZhY2U7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNl
OwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9zb3VyY2VSZWN0OwogICAgIFdlYkNvcmU6OkludFJl
Y3QgbV90YXJnZXRSZWN0OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsK
QEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgOiBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgdm9pZCBj
cmVhdGVUaWxlKGludCwgZmxvYXQpOwogICAgIHZvaWQgcmVtb3ZlVGlsZShpbnQpOwotICAgIHZv
aWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUoaW50LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
b29yZGluYXRlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFw
VGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcAppbmRleCA0ZDQzZmViODE3MDBlOTU3OWNjNzY2ZWVhNzM3ZmE4
Yzc2NTAzZDU2Li45NDFkMzM0NGRkY2E2Njk4NjVkYTU4ZTg4OGU1M2IwMWNmNTViZjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjQs
NyArMjQsNiBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVXBkYXRlSW5mby5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJl
ZUluZm8uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTY0LDcgKzYzLDcgQEAgdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVy
SUQsIGludCB0aWxlSUQsIGNvbnMKIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1
cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IEludFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8p
CiB7Ci0gICAgU3VyZmFjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodXBkYXRl
SW5mby5hdGxhc0lEKTsKKyAgICBDb29yZGluYXRlZFN1cmZhY2VNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9zdXJmYWNlcy5maW5kKHVwZGF0ZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlSUQpOwogICAgIEFT
U0VSVChpdCAhPSBtX3N1cmZhY2VzLmVuZCgpKTsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZM
YXllclRyZWVSZW5kZXJlcjo6dXBkYXRlVGlsZSwgbV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwg
dGlsZUlELCBMYXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZSh1cGRhdGVJbmZvLnVwZGF0ZVJl
Y3QsIHRhcmdldFJlY3QsIGl0LT52YWx1ZSwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KSkpOwog
fQpAQCAtNzQsMTYgKzczLDE3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVt
b3ZlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKQogICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlLCBtX3JlbmRlcmVyLmdldCgp
LCBsYXllcklELCB0aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5
OjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6
SGFuZGxlJiBoYW5kbGUpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUNv
b3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1
cmZhY2VJbmZvKQogewotICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7
Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGhh
bmRsZSkpOworICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhzdXJmYWNlSW5mby5jb29y
ZGluYXRlZFN1cmZhY2UtPmlkKCkpKTsKKyAgICBBU1NFUlQoc3VyZmFjZUluZm8uY29vcmRpbmF0
ZWRTdXJmYWNlLT50eXBlKCkgPT0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTaGFyZWFibGUpOworICAg
IG1fc3VyZmFjZXMuYWRkKHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZS0+aWQoKSwgc3Vy
ZmFjZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGlu
YXRvclByb3h5OjpyZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKK3ZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKENvb3JkaW5hdGVkU3Vy
ZmFjZUlEIGlkKQogewotICAgIEFTU0VSVChtX3N1cmZhY2VzLmNvbnRhaW5zKGF0bGFzSUQpKTsK
LSAgICBtX3N1cmZhY2VzLnJlbW92ZShhdGxhc0lEKTsKKyAgICBBU1NFUlQobV9zdXJmYWNlcy5j
b250YWlucyhpZCkpOworICAgIG1fc3VyZmFjZXMucmVtb3ZlKGlkKTsKIH0KIAogdm9pZCBMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpkZWxldGVDb21wb3NpdGluZ0xheWVyKFdlYkxheWVySUQg
aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXgg
NjQ2ODAxMTY4ZjI0YTc4OWI3ZWI4MDcxY2Y0YjZmOGE0YzRmYjk3YS4uNGQzYzA5ZTE3NmZlMzcx
MDcwMjQ3YTUwZDNlNzljMWJlMGZmZjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjQsOSArMjQsOSBAQAogCiAjaW5jbHVkZSAiQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oIgogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhUHJveHkuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJm
YWNlLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJMYXll
clRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTY1
LDggKzY1LDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlVGlsZUZvckxheWVyKGludCBsYXll
cklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVw
ZGF0ZUluZm8mKTsKICAgICB2b2lkIHVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50
IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
Jik7CiAgICAgdm9pZCByZW1vdmVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQp
OwotICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFz
SUQpOworICAgIHZvaWQgY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlSW5mbyYpOworICAgIHZvaWQgcmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNl
KFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlSUQpOwogICAgIHZvaWQgY3JlYXRlRGlyZWN0bHlD
b21wb3NpdGVkSW1hZ2UoaW50NjRfdCwgY29uc3QgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYpOwogICAgIHZvaWQgZGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CkBAIC05Myw4ICs5Myw4IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IG1fbGFzdFNlbnRWaXNpYmxlUmVjdDsKICAgICBmbG9hdCBtX2xhc3RTZW50U2NhbGU7CiAg
ICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNl
PiA+IFN1cmZhY2VNYXA7Ci0gICAgU3VyZmFjZU1hcCBtX3N1cmZhY2VzOworICAgIHR5cGVkZWYg
SGFzaE1hcDxDb29yZGluYXRlZFN1cmZhY2VJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
PiBDb29yZGluYXRlZFN1cmZhY2VNYXA7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlTWFwIG1fc3Vy
ZmFjZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiYTg4ZGU1M2ZmMzNlNDVmMWQwODhhM2Qy
MDU1NzBhNDBmZDRiNTY3Li4wYzI0NzI5OGJkNjE5M2ZkNDhiNDI1MzViNzYyNGRiMTZiZjFiNzRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI5LDggKzI5LDggQEAgbWVzc2FnZXMgLT4gTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eSB7CiAgICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQs
IGludCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGFyZ2V0UmVjdCwgV2ViS2l0OjpTdXJmYWNl
VXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBs
YXllcklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRhcmdldFJlY3QsIFdlYktpdDo6
U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBSZW1vdmVUaWxlRm9yTGF5ZXIodWlu
dDMyX3QgbGF5ZXJJRCwgaW50IHRpbGVJRCkKLSAgICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRs
YXNJRCwgV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQotICAgIFJlbW92
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQorICAgIENyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShX
ZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8gc3VyZmFjZUluZm8pCisgICAgUmVtb3ZlQ29v
cmRpbmF0ZWRTdXJmYWNlKHVpbnQzMl90IGNvb3JkaW5hdGVkU3VyZmFjZUlkKQogICAgIENyZWF0
ZURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5LCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGhhbmRsZSkKICAgICBEZXN0cm95RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2Uo
aW50NjRfdCBrZXkpCiAgICAgRGlkUmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50
c1NpemUsIFdlYkNvcmU6OkludFJlY3QgY292ZXJlZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuaAppbmRleCBkZGVhMzFkN2JlYmEzY2ExOThiMzgyNDJkODYwM2FlNzBlNDZkNmEz
Li45MDczMjIzYjk2OTEwMDQwYTllNjU4MTJlYzk0OWRkMTc0ZmM0MTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJTaGFy
ZWFibGVTdXJmYWNlLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVJbmZvLmgiCkBAIC01MCw5ICs1MCw5IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc291
cmNlUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCB0YXJnZXRSZWN0OwotICAgICAgICBS
ZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4gc3VyZmFjZTsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0Owot
ICAgICAgICBUaWxlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNvdXJjZSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG5l
d1N1cmZhY2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdPZmZzZXQpCisgICAgICAgIFRp
bGVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiB0YXJnZXQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBuZXdTdXJmYWNl
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbmV3T2Zmc2V0KQogICAgICAgICAgICAgOiBzb3Vy
Y2VSZWN0KHNvdXJjZSkKICAgICAgICAgICAgICwgdGFyZ2V0UmVjdCh0YXJnZXQpCiAgICAgICAg
ICAgICAsIHN1cmZhY2UobmV3U3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGEwZjRmNjVmNDFiMDZj
YWRhNGU4ZmRmZGNkMjMyMzVjY2FhZWRkMjMuLjc3ZDA4N2EzODFiNTZlMzlmMjE3YWU5NGEzZTYw
ZWQ5NWYwMGZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNjM3LDkgKzYzNyw5IEBAIENvbG9yIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogICAgIHJldHVybiBjb250ZW50c09wYXF1ZSgpID8gQ29sb3I6OndoaXRlIDogQ29sb3I6
OnRyYW5zcGFyZW50OwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4g
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSwgaW50JiBhdGxhcywgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCkK
K1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJl
Z2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2VJ
RCYgaWQsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIG1fQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50LT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUo
KSA/IDAgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwor
ICAgIHJldHVybiBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudC0+YmVnaW5Db250ZW50
VXBkYXRlKHNpemUsICFjb250ZW50c09wYXF1ZSgpLCBpZCwgb2Zmc2V0KTsKIH0KIAogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUoaW50IHRpbGVJRCwgY29uc3QgU3Vy
ZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCmluZGV4IGI4ZTg1OTU3MWM3N2Y5YjUyMGFhMzNjYTAyYWJmYjE0NjhjNmIzNGYuLjg4N2M2
NzM3Mjg3YzEwYTUyYmMxMDc0MmQ2NzhkNDRkNTlmYTVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yMSw2ICsy
MSw3IEBACiAjaWZuZGVmIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcl9oCiAjZGVmaW5lIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcl9oCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIK
ICNpbmNsdWRlICJDb29yZGluYXRlZFRpbGUuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCkBAIC0yOSw3ICszMCw2IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5n
U3RvcmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygp
ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmly
dHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBk
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBib29sIGFscGhhLCBDb29yZGluYXRlZFN1cmZh
Y2VJRCYsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogfTsKIH0KIApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShpbnQgdGlsZUlELCBjb25z
dCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFdlYktpdDo6U3Vy
ZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVRpbGUoaW50IHRpbGVJRCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCBp
bnQmIGF0bGFzSUQsIEludFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCBXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUlEJiwgSW50UG9pbnQmKSBPVkVSUklERTsKIAogICAgIHZv
aWQgc2V0Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KFdlYktpdDo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyQ2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZFRpbGUuY3BwCmluZGV4IDU0OGQ0OWQzMjdmMDM1NTMyNzQ2ZmQyZmI1OTU1YmQ2MWRh
OGJhYzcuLjZjY2JhYWIxOTBhMmRjNGYxYjVkYTkxOWFhNmI2ZjU2ZDUzMzNmZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBWZWN0b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkK
ICAgICAgICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwogCiAgICAgU3VyZmFjZVVwZGF0ZUlu
Zm8gdXBkYXRlSW5mbzsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRl
eHQgPSBtX2NsaWVudC0+YmVnaW5Db250ZW50VXBkYXRlKG1fZGlydHlSZWN0LnNpemUoKSwgdXBk
YXRlSW5mby5hdGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpOworICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5iZWdpbkNvbnRlbnRV
cGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZUlE
LCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpOwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQog
ICAgICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlSZWN0LnkoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFRpbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5oCmluZGV4IDMyZmY0ZTdjNzkxZjJiZTM0
YjUwMzgwMDg1NjU4Mzg2ZWUxZWM2MzguLmE2MTk0ZTk5ODQzN2I3M2YyZmJkZjdlMWM0YWEzODRi
MDNmNTEwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkVGlsZS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIAorI2lu
Y2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRpbGUuaCIKICNpbmNsdWRl
ICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIldlYkNvcmUvSW50UmVjdC5oIgpAQCAt
NzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUoaW50IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFN1cmZh
Y2VVcGRhdGVJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlVGlsZShpbnQgdGlsZUlEKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAg
IHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVu
dFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBX
ZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkVGlsZUJhY2tl
bmQgOiBwdWJsaWMgV2ViQ29yZTo6VGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCA5
ZWIzNzhlNWRhMzMxZmM4YzkxYzUyYTQ0OTliNmE1OWQ0ZWZmMmFjLi42MTI3MjkwNjMxMTljOWMx
MTkxZTcwZWE3MjM0NmE1NzZkZGMxOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNs
dWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2VJbmZv
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCkBA
IC02MTYsMTQgKzYxNywxNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVUaWxl
KFdlYkxheWVySUQgbGF5ZXJJRCwgaW50IHRpbGVJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXll
cklELCB0aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBk
YXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFu
ZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNl
KFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCiB7Ci0g
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpD
cmVhdGVVcGRhdGVBdGxhcyhhdGxhc0lELCBoYW5kbGUpKTsKKyAgICBBU1NFUlQoY29vcmRpbmF0
ZWRTdXJmYWNlLT50eXBlKCkgPT0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTaGFyZWFibGUpOworICAg
IENvb3JkaW5hdGVkU3VyZmFjZUluZm8gc3VyZmFjZUluZm87CisgICAgc3VyZmFjZUluZm8uY29v
cmRpbmF0ZWRTdXJmYWNlID0gY29vcmRpbmF0ZWRTdXJmYWNlOworICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Q3JlYXRlQ29vcmRpbmF0ZWRT
dXJmYWNlKHN1cmZhY2VJbmZvKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJl
bW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKENvb3JkaW5hdGVkU3VyZmFjZUlEIGlkKQogewotICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVt
b3ZlVXBkYXRlQXRsYXMoYXRsYXNJRCkpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6UmVtb3ZlQ29vcmRpbmF0ZWRTdXJmYWNlKGlkKSk7
CiB9CiAKIFdlYkNvcmU6OkludFJlY3QgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdApAQCAtNzA5LDIzICs3MTMsMjMgQEAgdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIo
KTsKIH0KIAotUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNv
b3JkaW5hdG9yOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJ
bnRQb2ludCYgb2Zmc2V0KQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNv
b3JkaW5hdG9yOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBh
bHBoYSwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmIGlkLCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAg
IE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dDsKKyAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBVcGRh
dGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmIChh
dGxhcy0+ZmxhZ3MoKSA9PSBmbGFncykgeworICAgICAgICBpZiAoYXRsYXMtPmFscGhhKCkgPT0g
YWxwaGEpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGVyZSBp
cyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
ID0gYXRsYXMtPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBv
ZmZzZXQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRp
bmdPbkF2YWlsYWJsZUJ1ZmZlcihzaXplLCBpZCwgb2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChn
cmFwaGljc0NvbnRleHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5y
ZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgaW50IFNjcmF0
Y2hCdWZmZXJEaW1lbnNpb24gPSAxMDI0OyAvLyBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28uCi0g
ICAgbV91cGRhdGVBdGxhc2VzLmFwcGVuZChhZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywg
U2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiwgZmxhZ3MpKSk7CisgICAgbV91cGRhdGVBdGxhc2VzLmFw
cGVuZChhZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywgU2NyYXRjaEJ1ZmZlckRpbWVuc2lv
biwgYWxwaGEpKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCk7Ci0gICAg
cmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1
ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOworICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMu
bGFzdCgpLT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoc2l6ZSwgaWQsIG9mZnNldCk7
CiB9CiAKIGNvbnN0IGRvdWJsZSBSZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCA9
IDAuNTsKQEAgLTc0NSw3ICs3NDksNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxl
YXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZChUaW1lcjxMYXllclRyZWVDb29yZAogICAgICAg
ICBVcGRhdGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAg
IGlmICghYXRsYXMtPmlzSW5Vc2UoKSkKICAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5hY3Rp
dmUoUmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29sIHVz
YWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gYXRsYXMtPmZsYWdzKCkgPT0gU2hhcmVhYmxl
Qml0bWFwOjpOb0ZsYWdzOworICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250
ZW50ID0gIWF0bGFzLT5hbHBoYSgpOwogICAgICAgICBpZiAoYXRsYXMtPmlzSW5hY3RpdmUoKSkg
ewogICAgICAgICAgICAgaWYgKCFmb3VuZEFjdGl2ZUF0bGFzRm9yTm9uQ29tcG9zaXRlZENvbnRl
bnQgJiYgIWF0bGFzVG9LZWVwQW55d2F5ICYmIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50
KQogICAgICAgICAgICAgICAgIGF0bGFzVG9LZWVwQW55d2F5ID0gbV91cGRhdGVBdGxhc2VzW2ld
LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oCmluZGV4IGQ3MjVhZjY5N2E4NTNkZWM5MWZjNjg5NTkyYTI1ZDMwOTY0NzcxZjUu
LmU3M2E4ZDZhMDhmZjdiYzk1NzkwNmJiNDQwYTI1MTNmN2UzNjNhMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtMzksNyArMzks
NyBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBMYXllclRyZWVDb29yZGluYXRvciA6IHB1Ymxp
YyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAgICAgLCBwdWJs
aWMgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Ci0gICAgLCBwdWJsaWMgVXBkYXRlQXRs
YXNDbGllbnQKKyAgICAsIHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2VDbGllbnQKICAgICAsIHB1
YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TGF5ZXJUcmVlQ29vcmRpbmF0b3I+IGNyZWF0ZShXZWJQYWdlKik7CkBAIC05
NCwxMSArOTQsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0Zp
eGVkTGF5ZXJzKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJl
YWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wgYWxwaGEsIENvb3JkaW5hdGVk
U3VyZmFjZUlEJiwgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAotICAgIC8vIFVwZGF0ZUF0bGFzQ2xp
ZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25z
dCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBk
YXRlQXRsYXMoaW50IGF0bGFzSUQpOworICAgIC8vIENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ29vcmRpbmF0ZWRTdXJm
YWNlKENvb3JkaW5hdGVkU3VyZmFjZUlEKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxh
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuY3Bw
CmluZGV4IDlhNTQxOGYxZWFhYTM0ODdiNGU0MjRiOWE5NTYyMDIwODMwOTc1NGUuLjg0N2QxNDUz
MWMxMTE2ZWY1NjQyNjNkNmIzMGNjZDJlMzlkYzU4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zMCwyOCArMzEsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1VcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXND
bGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFn
cykKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBt
X2luYWN0aXZpdHlJblNlY29uZHMoMCkKLSAgICAsIG1faXNWYWlsZCh0cnVlKQorVXBkYXRlQXRs
YXM6OlVwZGF0ZUF0bGFzKENvb3JkaW5hdGVkU3VyZmFjZUNsaWVudCogY2xpZW50LCBpbnQgZGlt
ZW5zaW9uLCBib29sIGFscGhhKQorICAgIDogbV9pbmFjdGl2aXR5SW5TZWNvbmRzKDApCiB7Ci0g
ICAgc3RhdGljIGludCBuZXh0SUQgPSAwOwotICAgIG1fSUQgPSArK25leHRJRDsKICAgICBJbnRT
aXplIHNpemUgPSBuZXh0UG93ZXJPZlR3byhJbnRTaXplKGRpbWVuc2lvbiwgZGltZW5zaW9uKSk7
Ci0gICAgbV9zdXJmYWNlID0gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzLCBT
aGFyZWFibGVTdXJmYWNlOjpTdXBwb3J0c0dyYXBoaWNzU3VyZmFjZSk7Ci0KLSAgICBpZiAoIW1f
c3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlKSkgewotICAgICAgICBtX2lzVmFpbGQgPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRl
QXRsYXMobV9JRCwgbV9oYW5kbGUpOworICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKGNsaWVudCwgc2l6ZSwgYWxwaGEpOwogfQogCiBVcGRhdGVBdGxhczo6flVwZGF0
ZUF0bGFzKCkKIHsKLSAgICBpZiAobV9pc1ZhaWxkKQotICAgICAgICBtX2NsaWVudC0+cmVtb3Zl
VXBkYXRlQXRsYXMobV9JRCk7CiB9CiAKIHZvaWQgVXBkYXRlQXRsYXM6OmJ1aWxkTGF5b3V0SWZO
ZWVkZWQoKQpAQCAtNjcsNyArNTUsNyBAQCB2b2lkIFVwZGF0ZUF0bGFzOjpkaWRTd2FwQnVmZmVy
cygpCiAgICAgbV9hcmVhQWxsb2NhdG9yLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGlu
dCYgYXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgSW50UG9pbnQmIG9mZnNl
dCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGlu
Z09uQXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFj
ZUlEJiBpZCwgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBtX2luYWN0aXZpdHlJblNlY29uZHMg
PSAwOwogICAgIGJ1aWxkTGF5b3V0SWZOZWVkZWQoKTsKQEAgLTc3LDIxICs2NSwyMCBAQCBQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWls
YWJsZUJ1ZmZlcihpbnQmIGF0bAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PigpOwogCi0gICAgaWYgKCFtX2lzVmFpbGQp
Ci0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKLQotICAgIGF0
bGFzSUQgPSBtX0lEOwotCiAgICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywgdG8g
YWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwogICAg
IE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQorICAg
ICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CiAKLSAgICBpZiAoZmxh
Z3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkgeworICAgIGlmIChhbHBoYSgp
KSB7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZUNvcHkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgc2l6ZSksIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIH0KIAorICAgIGlkID0gbV9zdXJmYWNlLT5pZCgpOwor
CiAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmgKaW5kZXggN2NlZmU5Yzk3
OTQyMTU4NjI3M2Y0ZTBjZDMwOWEyMDIzNGM3MWFkMS4uYjRhZTA1MGY5ZTEwNTcxYjFlNDkyMzJh
YTAyM2I0MDNkMTlmYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1VwZGF0ZUF0bGFzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsOCArMjIs
OCBAQAogI2RlZmluZSBVcGRhdGVBdGxhc19oCiAKICNpbmNsdWRlICJBcmVhQWxsb2NhdG9yLmgi
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMyLDI0ICszMywxOCBAQCBjbGFzcyBJbnRQ
b2ludDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50IHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQs
IGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpID0gMDsKLX07Ci0KIGNsYXNzIFVwZGF0ZUF0
bGFzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVcGRhdGVBdGxhcyk7CiBwdWJsaWM6Ci0g
ICAgVXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqLCBpbnQgZGltZW5zaW9uLCBTaGFyZWFi
bGVCaXRtYXA6OkZsYWdzKTsKKyAgICBVcGRhdGVBdGxhcyhDb29yZGluYXRlZFN1cmZhY2VDbGll
bnQqLCBpbnQgZGltZW5zaW9uLCBib29sIGFscGhhKTsKICAgICB+VXBkYXRlQXRsYXMoKTsKIAog
ICAgIGlubGluZSBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZh
Y2UtPnNpemUoKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIG51bGwgcG9pbnRlciBvZiB0aGVyZSBp
cyBubyBhdmFpbGFibGUgYnVmZmVyLgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50JiBhdGxhc0lELCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCk7CisgICAgUGFz
c093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJs
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlSUQmLCBX
ZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFy
ZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAg
IGJvb2wgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPmFscGhhKCk7IH0KIAogICAg
IHZvaWQgYWRkVGltZUluYWN0aXZlKGRvdWJsZSBzZWNvbmRzKQogICAgIHsKQEAgLTY3LDE0ICs2
Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZExheW91dElmTmVlZGVkKCk7CiAKIHByaXZh
dGU6Ci0gICAgVXBkYXRlQXRsYXNDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxHZW5lcmFs
QXJlYUFsbG9jYXRvcj4gbV9hcmVhQWxsb2NhdG9yOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwotICAg
IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsK
LSAgICBpbnQgbV9JRDsKLSAgICBib29sIG1faXNWYWlsZDsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175727</attachid>
            <date>2012-11-22 18:55:53 -0800</date>
            <delta_ts>2012-11-23 23:13:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121123115332.patch</filename>
            <type>text/plain</type>
            <size>51349</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzU0NDQ2YmM2NzJkMWNk
MmVkOThlNTFkMDlmOTI2M2QxODRkMWRkZi4uNmNmODNkZTcxNWE1NmRhNTQyODIwYjJkMTIyODQx
MTYyOTY1OTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExMiBAQAogMjAxMi0xMS0yMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAorICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogQWRkIENvb3JkaW5hdGVkU3VyZmFjZSB0byByZW1vdmUgdGhlIGRlcGVu
ZGVuY3kgb2YgU2hhcmVhYmxlU3VyZmFjZSBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJuYWwgUmV2
aWV3IGJ5IEd3YW5nIFlvb24gSHdhbmcgYW5kIEphZSBIeXVuIFBhcmsuCisKKyAgICAgICAgSXQg
aXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3Mg
b24gV0sxLgorCisgICAgICAgIEN1cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLCBD
b29yZGluYXRlZFRpbGUgYW5kCisgICAgICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGRpcmVj
dGx5IHVzZSBTaGFyZWFibGVTdXJmYWNlLiBTaGFyZWFibGVTdXJmYWNlIHdhcworICAgICAgICBp
bXBsZW1lbnRlZCB0byBzaGFyZSBhbiBpbWFnZSBiZXR3ZWVuIHByb2Nlc3NlcyBhcyB3ZWxsIGFz
IHBsYWNlZCBpbiBXSzIuCisgICAgICAgIFdlIHdhbnQgdGhlbSB0byBub3QgZGVwZW5kIG9uIFNo
YXJlYWJsZVN1cmZhY2UgdG8gbW92ZSB0aGVtIGludG8gV2ViQ29yZS4gU28KKyAgICAgICAgdGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjbGFzczogQ29vcmRpbmF0ZWRTdXJmYWNlLiBBZnRlciB0
aGlzIHBhdGNoLAorICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljcyBkcmF3cyBzb21ldGhpbmcg
b24gQ29vcmRpbmF0ZWRTdXJmYWNlLgorCisgICAgICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZSBwbGF5cyBhIHJvbGUgaW4gc2hhcmluZyBhbiBzdXJmYWNlIGJldHdlZW4gcHJvY2Vzc2Vz
CisgICAgICAgIGFzIFNoYXJlYWJsZVN1cmZhY2UgZGlkLiBUaGUgaW1wbGVtZW50YXRpb24gb2Yg
Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIGlzCisgICAgICAgIGp1c3QgdXNpbmcgU2hhcmVh
YmxlU3VyZmFjZS4KKworICAgICAgICBXaGVuIHdlIG1vdmUgc29tZSBjbGFzc2VzIG9mIENvb3Jk
aW5hdGVkIEdyYXBoaWNzIGludG8gV2ViQ29yZSwKKyAgICAgICAgQ29vcmRpbmF0ZWRTdXJmYWNl
Lmggd2lsbCBiZSBtb3ZlZCB0b28sIGJ1dCBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UKKyAg
ICAgICAgd2lsbCBiZSBsZWZ0IGluIFdLMi4KKworICAgICAgICBXZSB3aWxsIGludHJvZHVjZSBD
b29yZGluYXRlZFRocmVhZFNhZmVTdXJmYWNlIGxhdGVyLCB3aGljaCBwbGF5cyBhIHJvbGUgaW4K
KyAgICAgICAgc2hhcmluZyBhbiBzdXJmYWNlIGJldHdlZW4gdGhyZWFkcy4gQ29vcmRpbmF0ZWQg
R3JhcGhpY3Mgb24gV0sxIHdpbGwgdXNlCisgICAgICAgIENvb3JkaW5hdGVkVGhyZWFkU2FmZVN1
cmZhY2UuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAg
IChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZTo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjp+Q29vcmRpbmF0ZWRTaGFy
ZWFibGVTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJm
YWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZFNoYXJlYWJsZVN1cmZhY2U6OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6Cisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
Q29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNl
Ojp+Q29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmg6IEFkZGVkLgorICAgICAgICAgIFRoaXMgc3Ry
dWN0IGV4aXN0cyB0byBwYXNzIENvb3JkaW5hdGVkU3VyZmFjZSB0byBVSSBQcm9jZXNzLiBXZSBj
YW4KKyAgICAgICAgICBub3QgcGFzcyB0aGUgbWVzc2FnZSBpbmNsdWRpbmcgbm9uLVBPRCBtZW1i
ZXJzIGJldHdlZW4gcHJvY2Vzc2VzIHlldC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChD
b29yZGluYXRlZFN1cmZhY2VJbmZvKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVm
ZmVycyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0
QmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1
cGRhdGVUaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
IChMYXllclRyZWVDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2lu
Zyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6CisgICAgICAgIChMYXllclRyZWVS
ZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6
dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnJlbGVh
c2VTdXJmYWNlSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmg6CisgICAgICAgIChDb29yZGlu
YXRvcik6CisgICAgICAgIChDb29yZGluYXRlZEltYWdlQmFja2luZyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VC
YWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVw
ZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2lu
Q29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpy
ZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXBk
YXRlQXRsYXM6OlVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXM6On5V
cGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5n
T25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVB
dGxhcy5oOgorICAgICAgICAoVXBkYXRlQXRsYXNDbGllbnQpOgorICAgICAgICAoVXBkYXRlQXRs
YXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6YWxwaGEpOgorCisyMDEyLTExLTIy
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCiAgICAgICAgIFtU
ZXhNYXBdIFJlbW92ZSBkZXBlbmRlbmN5IG9mIFRleHR1cmVNYXBwZXJMYXllciBvbiBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzA0NgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDAwMzM5NmE2NTdm
ZDQ1YjhiZTJjODI1MGUwOTJjZTJkM2Y2ZmQyMjAuLmE0NzM5NzlkMzBhODY4NTY3NWM0N2VlMmY0
ZmU0ZTcxYjRhZjExZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0yMTgsNiArMjE4LDcgQEAg
U0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKIAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NBcmd1bWVudENvZGVycy5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmNwcAogCiAgICAgU2hhcmVkL1BsdWdp
bnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGE4MDI3ZmRiOTVjYjM2MDZmNmFjNjFl
MjJjOWQ4OTJmMmM3ODRlYzAuLmM5YTViNTZkMTRlODM2NWI3MzBlNWEyMmZhNzEyNDFmMDIwZjAy
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lu
Y2x1ZGUgIkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkU3VyZmFjZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4K
QEAgLTcxLDEyICs3MywyNiBAQAogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0jZW5kaWYK
IAogbmFtZXNwYWNlIENvcmVJUEMgewogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRT
dXJmYWNlSW5mbz46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvb3Jk
aW5hdGVkU3VyZmFjZUluZm8mIHN1cmZhY2VJbmZvKQoreworICAgIENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZSogc2hhcmVhYmxlU3VyZmFjZSA9IHN0YXRpY19jYXN0PENvb3JkaW5hdGVkU2hh
cmVhYmxlU3VyZmFjZSo+KHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZS5nZXQoKSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGUoc2hhcmVhYmxlU3VyZmFjZS0+aGFuZGxlKCkpOworfQorCitib29s
IEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbz46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIENvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1cmZhY2VJbmZvKQorewor
ICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3VyZmFjZUluZm8u
Y29vcmRpbmF0ZWRTdXJmYWNlID0gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUo
aGFuZGxlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPEZsb2F0
UG9pbnQzRD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZsb2F0UG9p
bnQzRCYgZmxvYXRQb2ludDNEKQogewogICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRQb2lu
dDNEPjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UG9pbnQzRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCmluZGV4IGJiYTQyN2QwMWE5MTRi
MWIzZmI5Yjk5MTFhNjI2MTM1ZTA5YzFjN2QuLmVlNDExNTA1NDdkMWVjZjY4Y2M2NTNmOTAxOTM0
MmU4YTVmODVmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5oCkBAIC01Miw4ICs1MiwxNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNl
VG9rZW47CiAjZW5kaWYKIH0KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDb29yZGluYXRl
ZFN1cmZhY2VJbmZvOworfQorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJbmZvPiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYktpdDo6Q29vcmRp
bmF0ZWRTdXJmYWNlSW5mbyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29k
ZXIqLCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKK307CisKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRQb2ludDNEPiB7CiAgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQz
RCYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpG
bG9hdFBvaW50M0QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgxY2M1NDIyZDQzMWFiY2IzYTc5NzQ3YzdlZGY1MTczODNjMDUx
YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuY3BwCkBAIC0wLDAgKzEsMTA0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgi
CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
cmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBhbHBoYSkKK3sKKyAgICBy
ZXR1cm4gQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgYWxwaGEpOwor
fQorCitQYXNzUmVmUHRyPENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZT4gQ29vcmRpbmF0ZWRT
aGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9v
bCBhbHBoYSkKK3sKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBzdXJm
YWNlKGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgYWxwaGEp
KSk7CisgICAgaWYgKCFzdXJmYWNlLT5tX3N1cmZhY2UpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxDb29yZGluYXRlZFNo
YXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0
IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQoreworICAgIFJlZlB0cjxDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2UobmV3IENvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZShoYW5kbGUpKTsKKyAgICBpZiAoIXN1cmZhY2UtPm1fc3VyZmFjZSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOworfQorCitDb29yZGluYXRlZFNo
YXJlYWJsZVN1cmZhY2U6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBib29sIGFscGhhKQorICAgIDogbV9zdXJmYWNlKFNoYXJlYWJsZVN1
cmZhY2U6OmNyZWF0ZShzaXplLCBhbHBoYSA/IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncywgU2hhcmVhYmxlU3VyZmFjZTo6U3VwcG9ydHNH
cmFwaGljc1N1cmZhY2UpKQorICAgICwgbV9wdXJwb3NlKFByb2R1Y2VyKQoreworICAgIGlmICgh
bV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUobV9oYW5kbGUpKSB7CisgICAgICAgIG1fc3VyZmFjZS5j
bGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitDb29yZGluYXRlZFNoYXJlYWJs
ZVN1cmZhY2U6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShjb25zdCBTaGFyZWFibGVTdXJm
YWNlOjpIYW5kbGUmIGhhbmRsZSkKKyAgICA6IG1fc3VyZmFjZShTaGFyZWFibGVTdXJmYWNlOjpj
cmVhdGUoaGFuZGxlKSkKKyAgICAsIG1fcHVycG9zZShDb25zdW1lcikKK3sKK30KKworQ29vcmRp
bmF0ZWRTaGFyZWFibGVTdXJmYWNlOjp+Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKCkKK3sK
K30KKworUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAg
QVNTRVJUKG1fcHVycG9zZSA9PSBQcm9kdWNlcik7CisgICAgQVNTRVJUKG1fc3VyZmFjZSk7Cisg
ICAgcmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOworfQorCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQordm9pZCBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6
OmNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQoreworICAg
IEFTU0VSVChtX3B1cnBvc2UgPT0gQ29uc3VtZXIpOworICAgIEFTU0VSVChtX3N1cmZhY2UpOwor
ICAgIG1fc3VyZmFjZS0+Y29weVRvVGV4dHVyZShwYXNzVGV4dHVyZSwgdGFyZ2V0LCBzb3VyY2VP
ZmZzZXQpOworfQorI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKKworY29uc3QgU2hhcmVh
YmxlU3VyZmFjZTo6SGFuZGxlJiBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmhhbmRsZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcHVycG9zZSA9PSBQcm9kdWNlcik7CisgICAgQVNTRVJU
KG1fc3VyZmFjZSk7CisgICAgcmV0dXJuIG1faGFuZGxlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYjY3ZmQyMTdlZGE5MWE0ZTM5OGU5MDA5YzJkODdhYzAzZDJkNGU3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZV9oCisjZGVm
aW5lIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCisKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlICJT
aGFyZWFibGVTdXJmYWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2UgOiBwdWJsaWMgQ29vcmRpbmF0ZWRTdXJmYWNlIHsKK3B1Ymxp
YzoKKyAgICAvLyBDcmVhdGUgYSBuZXcgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLCBhbmQg
YWxsb2NhdGUgYSBTaGFyZWFibGVTdXJmYWNlIGFzIGJhY2tpbmcuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIGJvb2wgYWxwaGEpOworCisgICAgLy8gQ3JlYXRlIGEgY29vcmRpbmF0ZWQgc2hh
cmVhYmxlIHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGUmKTsKKworICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSgpOwor
CisgICAgdmlydHVhbCBib29sIGFscGhhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zdXJm
YWNlLT5mbGFncygpID09IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsgfQorICAgIHZp
cnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250
ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFw
aGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdl
dCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgT1ZFUlJJREU7CisjZW5k
aWYKKworICAgIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgZW51bSBQdXJwb3NlIHsKKyAgICAgICAgUHJvZHVjZXIsCisgICAg
ICAgIENvbnN1bWVyCisgICAgfTsKKyAgICBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wgYWxwaGEpOworICAgIGV4cGxpY2l0IENvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZShjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKwor
ICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgUHVycG9zZSBtX3B1
cnBvc2U7CisKKyAgICAvLyBPbmx5IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSB3aXRoIFBy
b2R1Y2VyIGVudW0gaGFzIHRoaXMgbWVtYmVyLgorICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRs
ZSBtX2hhbmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRp
ZiAvLyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZh
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44MGEyMDZmYTliNDU1ZWQ3ZDBjOTVlMDAwYWZkMTk0NmQxOTc3ZDY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkU3VyZmFjZV9oCisjZGVmaW5lIENvb3JkaW5hdGVk
U3VyZmFjZV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4
dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvb3JkaW5hdGVkU3VyZmFjZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgYm9vbCBhbHBoYSk7CisKKyAgICB2aXJ0dWFsIH5Db29yZGlu
YXRlZFN1cmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBhbHBoYSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdCA9IDA7CisK
KyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFp
bnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpID0gMDsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICB2aXJ0dWFsIHZv
aWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3Vy
Y2VPZmZzZXQpID0gMDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgorI2VuZGlmIC8vIENvb3JkaW5hdGVkU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZv
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFN1cmZhY2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk4NGU5NGQ2ODBhOWY4MDdmOTNiZTllYWFjMWY3
YTk2ZDBhYjc3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZUluZm8uaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mb19oCisj
ZGVmaW5lIENvb3JkaW5hdGVkU3VyZmFjZUluZm9faAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQorCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisvLyBUaGlzIHN0cnVjdCBleGlzdHMgdG8gcGFzcyBDb29yZGluYXRlZFN1cmZh
Y2UgdG8gVUkgUHJvY2Vzcy4KKy8vIFdlIGNhbiBub3QgcGFzcyB0aGUgbWVzc2FnZSBpbmNsdWRp
bmcgbm9uLVBPRCBtZW1iZXJzIGJldHdlZW4gcHJvY2Vzc2VzIHlldC4KK3N0cnVjdCBDb29yZGlu
YXRlZFN1cmZhY2VJbmZvIHsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGlu
YXRlZFN1cmZhY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisjZW5k
aWYgLy8gVXBkYXRlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
IGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCAwOThiNWI5NTQzZjVmZGZiOWI4YTkz
MWExMjgyNzkxZTZhOTc1NjkxLi5mN2Y1Mjg0YzRlZDhlYzJhOTQ5NzAyZGExZWEyNWNmMDJhYTE3
OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkKQEAgLTEzNSw2ICsxMzUsOSBAQCBIRUFERVJTICs9IFwKICAgICBT
aGFyZWQvV2ViVVJMUmVzcG9uc2UuaCBcCiAgICAgU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5oIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmggXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmggXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVP
YmplY3RNYXAuaCBcCkBAIC01MDMsNiArNTA2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVk
L1dlYlVSTFJlc3BvbnNlLmNwcCBcCiAgICAgU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwIFwKICAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRD
b2RlcnMuY3BwIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNo
YXJlYWJsZVN1cmZhY2UuY3BwIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJD
dXN0b21GaWx0ZXJQcm9ncmFtUHJveHkuY3BwIFwKICAgICBTaGFyZWQvcXQvQXJndW1lbnRDb2Rl
cnNRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9MYXllclRyZWVDb250ZXh0UXQuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMmFmYmM5NGUz
MTRiNDA2YzVhZDA3NTZiMmU0ZjI3OGUzMzY2NjJjLi45YjM3NDM1ZDc2ZmViM2Q0NmIxOGM0MDQz
ZDU3ODZiZTc5ZjE5MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJDb29y
ZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSAi
U2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyR0wuaCIKIApAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwCiAKICAgICBBU1NFUlQodGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKS53
aWR0aCgpID49IG1fdGlsZVJlY3Quc2l6ZSgpLndpZHRoKCkgJiYgdGV4dHVyZU1hcHBlci0+bWF4
VGV4dHVyZVNpemUoKS5oZWlnaHQoKSA+PSBtX3RpbGVSZWN0LnNpemUoKS5oZWlnaHQoKSk7CiAg
ICAgaWYgKHNob3VsZFJlc2V0KQotICAgICAgICB0ZXh0dXJlLT5yZXNldChtX3RpbGVSZWN0LnNp
emUoKSwgbV9zdXJmYWNlLT5mbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
ID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOworICAgICAgICB0ZXh0dXJlLT5y
ZXNldChtX3RpbGVSZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5hbHBoYSgpKTsKIAogICAgIG1fc3Vy
ZmFjZS0+Y29weVRvVGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1fc3VyZmFjZU9mZnNl
dCk7CiAgICAgbV9zdXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwg
Y29uc3QgSW50UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
OjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0KQogewogICAgIG1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAg
bV90aWxlUmVjdCA9IHRpbGVSZWN0OwpAQCAtODQsNyArODQsNyBAQCB2b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjpyZW1vdmVBbGxUaWxlcygpCiAgICAgICAgIG1fdGlsZXNUb1JlbW92ZS5h
ZGQoaXQtPmtleSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRp
bGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxl
UmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZShp
bnQgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0
LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYmFja0J1ZmZlciwgY29uc3QgSW50UG9p
bnQmIG9mZnNldCkKIHsKICAgICBIYXNoTWFwPGludCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBt
X3RpbGVzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IGIwYmFjYTYzNWJlYjcxNWRiOTNkY2Q5MWI5NmU5NTZiODIzZjRmNWYuLjAyZDkxNWU2
NDE4NGUyMTc1ZDQxZjQzZjQzZTNjMjUzN2QwZDQwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKK2NsYXNzIENvb3JkaW5hdGVkU3VyZmFj
ZTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJUaWxlIHsKIHB1YmxpYzoKQEAgLTQ0LDEwICs0NCwxMCBAQCBwdWJsaWM6
CiAgICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVwYWludENv
dW50OyB9CiAgICAgaW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3Jl
cGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ciopOwotICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVy
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8
Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAK
IHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgV2ViQ29yZTo6SW50UmVj
dCBtX3NvdXJjZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3RpbGVSZWN0OwogICAgIFdl
YkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY3JlYXRlVGlsZShpbnQsIGZsb2F0KTsKICAgICB2b2lkIHJlbW92ZVRpbGUo
aW50KTsKICAgICB2b2lkIHJlbW92ZUFsbFRpbGVzKCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKGlu
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNz
UmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAg
IHZvaWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBjb21taXRUaWxl
T3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDhmYjEyYjkwMmIyZGJhNDBhYmZk
NzZmMDI1MDcyYjI2ZDdkNjRlODEuLjI0NGIyNmU0N2M0MTMxOGYzMjI4NjBiYjU1MzM5ZWQ0MGVj
Mjg3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
Y3BwCkBAIC0yNCw3ICsyNCw2IEBACiAKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGluYXRvck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKLSNpbmNsdWRlICJVcGRh
dGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViTGF5ZXJUcmVlSW5mby5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgpAQCAtNzksMTAg
Kzc4LDEwIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVGlsZUZvckxh
eWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxh
eWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlLCBtX3JlbmRlcmVyLmdldCgpLCBsYXllcklELCB0
aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVVcGRh
dGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJiBoYW5k
bGUpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lELCBjb25zdCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1cmZhY2VJ
bmZvKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7Ci0gICAg
bV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSkp
OworICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3Vy
ZmFjZSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVXBkYXRl
QXRsYXMoaW50IGF0bGFzSUQpCkBAIC0xNDgsOSArMTQ3LDkgQEAgdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvclByb3h5OjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJ
RCBpbWEKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRl
SW1hZ2VCYWNraW5nLCBtX3JlbmRlcmVyLmdldCgpLCBpbWFnZUlEKSk7CiB9CiAKLXZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQgaW1hZ2VJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJiBoYW5k
bGUpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFdlYktpdDo6Q29vcmRpbmF0
ZWRTdXJmYWNlSW5mbyYgc3VyZmFjZUluZm8pCiB7Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
TGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZywgbV9yZW5kZXJlci5nZXQoKSwg
aW1hZ2VJRCwgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSkpKTsKKyAgICBkaXNwYXRj
aFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5nLCBtX3Jl
bmRlcmVyLmdldCgpLCBpbWFnZUlELCBzdXJmYWNlSW5mby5jb29yZGluYXRlZFN1cmZhY2UpKTsK
IH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjbGVhckltYWdlQmFja2luZ0Nv
bnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAppbmRleCBmYjU4YjFhZTc0ZmFkYzQ0MmM5
ZDdmMDBlNDc2OTMzNDRmYTMxZGVmLi4yYTBkNGE3MGU0OGFjMjExODNkYjYxODQxMWM3OTZjODYw
MThiMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5o
CkBAIC0yNCw5ICsyNCw5IEBACiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRl
ICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb29yZGlu
YXRlZFN1cmZhY2VJbmZvLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1
ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKICNpbmNsdWRlICJT
dXJmYWNlVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtNjksMTAgKzY5LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CiAgICAg
dm9pZCB1cGRhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgcmVt
b3ZlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlEKTsKLSAgICB2b2lkIGNyZWF0
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUm
KTsKKyAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBXZWJLaXQ6
OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lEKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2b2lkIHVw
ZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBXZWJLaXQ6
OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mKTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29u
dGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJh
Y2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJl
Y3Q7CiAgICAgZmxvYXQgbV9sYXN0U2VudFNjYWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBh
dGxhc0lEICovLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBTdXJmYWNlTWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFj
ZT4gPiBTdXJmYWNlTWFwOwogICAgIFN1cmZhY2VNYXAgbV9zdXJmYWNlczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDQyYzY5YmJlZjNhYThhNWVkODEzZGM3OWM2Zjk2NTdlNTViMDA0MTMuLjQxNWI3
MGRjNDE5ZGYxZGNjYWQ0ZGI5Yzk4M2VlMjMwYTE5NTViNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMs
MTAgKzMzLDEwIEBAIG1lc3NhZ2VzIC0+IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkgewogICAg
IENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJDb3Jl
OjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8p
CiAgICAgVXBkYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIGludCB0aWxlSUQsIFdl
YkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRl
SW5mbykKICAgICBSZW1vdmVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgaW50IHRpbGVJ
RCkKLSAgICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgV2ViS2l0OjpTaGFyZWFibGVT
dXJmYWNlOjpIYW5kbGUgaGFuZGxlKQorICAgIENyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lE
LCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8gc3VyZmFjZUluZm8pCiAgICAgUmVtb3Zl
VXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpCiAgICAgQ3JlYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90
IGltYWdlSUQpCi0gICAgVXBkYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQsIFdlYktp
dDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKKyAgICBVcGRhdGVJbWFnZUJhY2tp
bmcodWludDY0X3QgaW1hZ2VJRCwgV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJbmZvIHN1cmZh
Y2VJbmZvKQogICAgIENsZWFySW1hZ2VCYWNraW5nQ29udGVudHModWludDY0X3QgaW1hZ2VJRCkK
ICAgICBSZW1vdmVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKICAgICBEaWRSZW5kZXJG
cmFtZShXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjb3Zl
cmVkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCA1MTY3Y2Yy
YWQzMGU2MDhjZmZjMmMxM2NlOWUyYWY3MWNmOTU2ZDUwLi5lZmU2YTQwNzcxZWMxOWQwZDkyY2Ix
YzhjMzcwNTViMWJjYzk1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3Bw
CkBAIC00NzIsNyArNDcyLDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKICAgICBtX2ltYWdlQmFj
a2luZ3MuYWRkKGltYWdlSUQsIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCkpOwogfQogCi12b2lkIExh
eWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2UpCit2b2lk
IExheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSkK
IHsKICAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKICAgICBJ
bWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUJhY2tpbmdzLmZpbmQoaW1hZ2VJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA0MDMzM2NmYTFjNWYxMzA0
YjhmMWI5NTlmMGVkZmY0YzFmMmRkY2M4Li5kNDkxOTk4ZDU1NThhMGZiYTQ4Nzg3Mjc3ZGE2Njcz
ZGNhMmMxNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTIyLDcgKzIy
LDcgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJCYWNraW5n
U3RvcmUuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCisjaW5jbHVkZSAiQ29vcmRp
bmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVJbmZvLmgi
CkBAIC01NSw5ICs1NSw5IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAg
ICAgIFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVj
dCB0aWxlUmVjdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2U7Cisg
ICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CiAgICAgICAgIFdlYkNv
cmU6OkludFBvaW50IG9mZnNldDsKLSAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NSZWZQdHI8
U2hhcmVhYmxlU3VyZmFjZT4gbmV3U3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG5l
d09mZnNldCkKKyAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlPiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbmV3T2Zmc2V0KQog
ICAgICAgICAgICAgOiBzb3VyY2VSZWN0KHNvdXJjZSkKICAgICAgICAgICAgICwgdGlsZVJlY3Qo
dGlsZSkKICAgICAgICAgICAgICwgc3VyZmFjZShuZXdTdXJmYWNlKQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRpbGUoV2ViTGF5ZXJJRCwgaW50LCBjb25zdCBU
aWxlVXBkYXRlJik7CiAgICAgdm9pZCBmbHVzaExheWVyQ2hhbmdlcygpOwogICAgIHZvaWQgY3Jl
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZvaWQgdXBk
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4pOworICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CiAgICAgdm9p
ZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwog
ICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwog
ICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBlNTYzOWNmNzk5MmQ0YTJi
MDY4ODYxNjEzZDhiODdiODk4MWZmYzlmLi41Zjc3Y2Q0YjkzMjAwOWVlMWY0YjhiZDAyMmJjZWVj
YWNkZmRkOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTcyNSw3ICs3MjUsNyBAQCBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRh
dGUoY29uc3QgSQogICAgIGlmICghbV9jb29yZGluYXRvcikKICAgICAgICAgcmV0dXJuIFBhc3NP
d25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PigpOwogCi0gICAgcmV0dXJuIG1fY29vcmRp
bmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gMCA6IFNo
YXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSwgYXRsYXMsIG9mZnNldCk7CisgICAgcmV0dXJu
IG1fY29vcmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCAhY29udGVudHNPcGFxdWUo
KSwgYXRsYXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
cmVhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggYTkwM2U2NTE5
OGE4MDgwNWNkZGVkYWRmYzllNjdkMTE5ZTZhZDg4MS4uZWQxMzc4MThmYjM4NGRkZDdlMzVlOTU3
ZGQ5MTcyOWZkMzQxYjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC03NSw3ICs3NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpID0gMDsK
LSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBib29sIGFscGhhLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6
OkludFBvaW50JikgPSAwOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCmluZGV4IDU1Y2E5ZGE3YjU5NGNiNjk4
Zjc4YTZjOTBhYjE0MTk0ZjlhMWIxYjEuLmZlY2M5MmJmNTcwODI3YWNlOGJhNDg5MWRhNDQzYjdh
YjQwMzUwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTEwMywxMSArMTAzLDggQEAgdm9pZCBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fc3VyZmFj
ZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShtX2ltYWdlLT5zaXplKCksIG1faW1hZ2UtPmN1
cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBT
aGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhp
Y3NTdXJmYWNlKTsKLSAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBTaGFyZWFibGVTdXJmYWNl
OjpIYW5kbGUoKSk7Ci0KLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFuZGxlKCptX2hhbmRs
ZSkpIHsKLSAgICAgICAgcmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOworICAgIG1fc3VyZmFjZSA9
IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwgbV9pbWFnZS0+Y3Vy
cmVudEZyYW1lSGFzQWxwaGEoKSk7CisgICAgaWYgKCFtX3N1cmZhY2UpIHsKICAgICAgICAgbV9p
c0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTgsNyArMTE1LDcg
QEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKIAogICAgIG1fbmF0aXZl
SW1hZ2VQdHIgPSBtX2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCi0gICAg
bV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCksICptX2hhbmRsZSk7CisgICAg
bV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFjZSk7CiAgICAg
bV9pc0RpcnR5ID0gZmFsc2U7CiB9CiAKQEAgLTEyNiw3ICsxMjMsNiBAQCB2b2lkIENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjpyZWxlYXNlU3VyZmFjZUlmTmVlZGVkKCkKIHsKICAgICAvLyBXZSBt
dXN0IGtlZXAgbV9zdXJmYWNlIHVudGlsIFVJIFByb2Nlc3MgcmVhZHMgbV9zdXJmYWNlLgogICAg
IC8vIElmIG1fc3VyZmFjZSBleGlzdHMsIGl0IHdhcyBjcmVhdGVkIGluIHRoZSBwcmV2aW91cyB1
cGRhdGUuCi0gICAgbV9oYW5kbGUuY2xlYXIoKTsKICAgICBtX3N1cmZhY2UuY2xlYXIoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmgKaW5kZXggNzYyNjZhNGI0MTQwYjk0MzdiMTE3MjUzNzU3MGE3ZjIwMDc5MTBkZC4uNGQ0
NmI1OThhYTg2NWRkZDM4YWZhMDRkZmE0YzNkYWUwN2ViNGQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCkBAIC0yOCw4ICsy
OCw4IEBACiAjZGVmaW5lIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nX2gKIAogI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKICNpbmNsdWRlICJX
ZWJMYXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBD
b29yZGluYXRvciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25z
dCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdl
QmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KSA9IDA7CiAgICAgfTsKQEAgLTgwLDggKzgwLDcgQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIG1faWQ7CiAgICAgVmVjdG9yPEhvc3QqPiBtX2hvc3RzOwogCi0gICAg
UmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKLSAgICBPd25QdHI8U2hhcmVhYmxl
U3VyZmFjZTo6SGFuZGxlPiBtX2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiBtX3N1cmZhY2U7CiAKICAgICBXZWJDb3JlOjpUaW1lcjxDb29yZGluYXRlZEltYWdlQmFja2lu
Zz4gbV9jbGVhckNvbnRlbnRzVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCAxNzZkY2Y2ZTMzNjg5ZTdmM2JkYWM1
NTAzZWNmMjViN2Y4MTQyODNmLi42OGM5NzZiOTFlMTJkMjlkNzdhNjliZTE2MGY1ZDk5MjlhNWE1
ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2VJbmZvLmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmgiCkBAIC01NzAsMTAgKzU3MSwxMiBAQCB2
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Q3JlYXRlSW1hZ2VCYWNraW5nKGltYWdlSUQpKTsKIH0K
IAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxl
JiBoYW5kbGUpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjp1cGRhdGVJbWFnZUJhY2tpbmco
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0g
dHJ1ZTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OlVwZGF0ZUltYWdlQmFja2luZyhpbWFnZUlELCBoYW5kbGUpKTsKKyAgICBDb29yZGlu
YXRlZFN1cmZhY2VJbmZvIHN1cmZhY2VJbmZvOworICAgIHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVk
U3VyZmFjZSA9IGNvb3JkaW5hdGVkU3VyZmFjZTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlVwZGF0ZUltYWdlQmFja2luZyhpbWFnZUlE
LCBzdXJmYWNlSW5mbykpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpjbGVhcklt
YWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKQEAg
LTY1OCw5ICs2NjEsMTEgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVtb3ZlVGlsZShX
ZWJMYXllcklEIGxheWVySUQsIGludCB0aWxlSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVUaWxlRm9yTGF5ZXIobGF5ZXJJ
RCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0
ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRs
ZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxh
c0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQog
ewotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6Q3JlYXRlVXBkYXRlQXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7CisgICAgQ29vcmRpbmF0ZWRT
dXJmYWNlSW5mbyBzdXJmYWNlSW5mbzsKKyAgICBzdXJmYWNlSW5mby5jb29yZGluYXRlZFN1cmZh
Y2UgPSBjb29yZGluYXRlZFN1cmZhY2U7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpM
YXllclRyZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVVcGRhdGVBdGxhcyhhdGxhc0lELCBzdXJm
YWNlSW5mbykpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVVcGRhdGVB
dGxhcyhpbnQgYXRsYXNJRCkKQEAgLTc2NCwxMiArNzY5LDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29v
cmRpbmF0b3I6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFy
KCk7CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBMYXllclRyZWVD
b29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6
SW50UG9pbnQmIG9mZnNldCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBMYXllclRyZWVD
b29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wg
YWxwaGEsIGludCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkKIHsKLSAgICBPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CisgICAgT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVXBkYXRlQXRsYXMqIGF0
bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOwotICAgICAgICBpZiAoYXRsYXMtPmZsYWdz
KCkgPT0gZmxhZ3MpIHsKKyAgICAgICAgaWYgKGF0bGFzLT5hbHBoYSgpID09IGFscGhhKSB7CiAg
ICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm8gYXZhaWxh
YmxlIGJ1ZmZlciBzcGFjZS4KICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dCA9IGF0bGFzLT5i
ZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0KTsKICAg
ICAgICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpCkBAIC03NzgsNyArNzgzLDcgQEAgUGFzc093
blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNvb3JkaW5hdG9yOjpiZWdp
bkNvbnRlbnRVcGRhdGUoY28KICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgaW50IFNjcmF0Y2hC
dWZmZXJEaW1lbnNpb24gPSAxMDI0OyAvLyBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28uCi0gICAg
bV91cGRhdGVBdGxhc2VzLmFwcGVuZChhZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywgU2Ny
YXRjaEJ1ZmZlckRpbWVuc2lvbiwgZmxhZ3MpKSk7CisgICAgbV91cGRhdGVBdGxhc2VzLmFwcGVu
ZChhZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywgU2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiwg
YWxwaGEpKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCk7CiAgICAgcmV0
dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZl
cihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwogfQpAQCAtODAwLDcgKzgwNSw3IEBAIHZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVkKFRpbWVy
PExheWVyVHJlZUNvb3JkCiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRlQXRs
YXNlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFhdGxhcy0+aXNJblVzZSgpKQogICAgICAgICAg
ICAgYXRsYXMtPmFkZFRpbWVJbmFjdGl2ZShSZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRl
cnZhbCk7Ci0gICAgICAgIGJvb2wgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQgPSBhdGxh
cy0+ZmxhZ3MoKSA9PSBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3M7CisgICAgICAgIGJvb2wgdXNh
YmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQgPSAhYXRsYXMtPmFscGhhKCk7CiAgICAgICAgIGlm
IChhdGxhcy0+aXNJbmFjdGl2ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWZvdW5kQWN0aXZlQXRs
YXNGb3JOb25Db21wb3NpdGVkQ29udGVudCAmJiAhYXRsYXNUb0tlZXBBbnl3YXkgJiYgdXNhYmxl
Rm9yTm9uQ29tcG9zaXRlZENvbnRlbnQpCiAgICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3
YXkgPSBtX3VwZGF0ZUF0bGFzZXNbaV0ucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggZjA0YjUwODIxZmRjOGYxYTJm
YTMyNzkzNTA3YWY2MDY0YWMyYzc1OS4uMjFhNTE5YTRiYmZjZGY2ZjMxNmNkODRmOTIzNWQxYTk4
NDkzMmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oCkBAIC0zOCw2ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBDb29yZGluYXRlZFN1cmZhY2U7CiBjbGFzcyBVcGRhdGVJbmZvOwogY2xhc3MgV2ViUGFnZTsK
IApAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hM
YXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9p
bnQmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGJvb2wgYWxwaGEsIGlu
dCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xp
ZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25z
dCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBk
YXRlQXRsYXMoaW50IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKTsKIAogI2lmIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEyNSw3ICsxMjYsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdG9yCiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcAppbmRleCA5YTU0MThmMWVhYWEz
NDg3YjRlNDI0YjlhOTU2MjAyMDgzMDk3NTRlLi5hYzcyMDZjM2Y4ODRjMWRjZWE5YzhjNzUyYzQw
ZjM2OWM2NDkyYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9VcGRhdGVBdGxhcy5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzAsMjcgKzMx
LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
VXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBk
aW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCitVcGRhdGVBdGxhczo6VXBk
YXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgYm9vbCBh
bHBoYSkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAg
LCBtX2luYWN0aXZpdHlJblNlY29uZHMoMCkKLSAgICAsIG1faXNWYWlsZCh0cnVlKQogewogICAg
IHN0YXRpYyBpbnQgbmV4dElEID0gMDsKICAgICBtX0lEID0gKytuZXh0SUQ7Ci0gICAgSW50U2l6
ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikpOwot
ICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncywgU2hh
cmVhYmxlU3VyZmFjZTo6U3VwcG9ydHNHcmFwaGljc1N1cmZhY2UpOwogCi0gICAgaWYgKCFtX3N1
cmZhY2UtPmNyZWF0ZUhhbmRsZShtX2hhbmRsZSkpIHsKLSAgICAgICAgbV9pc1ZhaWxkID0gZmFs
c2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9jbGllbnQtPmNyZWF0ZVVwZGF0ZUF0
bGFzKG1fSUQsIG1faGFuZGxlKTsKKyAgICBJbnRTaXplIHNpemUgPSBuZXh0UG93ZXJPZlR3byhJ
bnRTaXplKGRpbWVuc2lvbiwgZGltZW5zaW9uKSk7CisgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgYWxwaGEpOworICAgIGlmIChtX3N1cmZhY2UpCisgICAg
ICAgIG1fY2xpZW50LT5jcmVhdGVVcGRhdGVBdGxhcyhtX0lELCBtX3N1cmZhY2UpOwogfQogCiBV
cGRhdGVBdGxhczo6flVwZGF0ZUF0bGFzKCkKIHsKLSAgICBpZiAobV9pc1ZhaWxkKQorICAgIGlm
IChtX3N1cmZhY2UpCiAgICAgICAgIG1fY2xpZW50LT5yZW1vdmVVcGRhdGVBdGxhcyhtX0lEKTsK
IH0KIApAQCAtNzcsNyArNzMsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBkYXRl
QXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihpbnQmIGF0bAogICAgIGlmIChy
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PigpOwogCi0gICAgaWYgKCFtX2lzVmFpbGQpCisgICAgaWYgKCFtX3N1cmZhY2UpCiAgICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKIAogICAgIGF0bGFzSUQgPSBt
X0lEOwpAQCAtODYsNyArODIsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBkYXRl
QXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihpbnQmIGF0bAogICAgIG9mZnNl
dCA9IHJlY3QubG9jYXRpb24oKTsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQgPSBtX3N1cmZhY2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKIAotICAg
IGlmIChmbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSB7CisgICAgaWYg
KGFscGhhKCkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlQ29weSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBzaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5oCmluZGV4IDdjZWZlOWM5Nzk0MjE1ODYyNzNmNGUwY2Qz
MDlhMjAyMzRjNzFhZDEuLjBkMzdiMDQ3YzQ1NWVhNmEwMzA4OGE1YzM5ODJiYzhmZWRkNmE4ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxh
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBh
bnkgMTAwLCBJbmMuCiAKICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIyLDggQEAKICNkZWZpbmUgVXBk
YXRlQXRsYXNfaAogCiAjaW5jbHVkZSAiQXJlYUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkNvb3Jk
aW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJTaGFyZWFi
bGVTdXJmYWNlLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNCwxNCArMzUsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFVwZGF0ZUF0bGFzQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBk
YXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVV
cGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgVXBkYXRlQXRsYXMgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBVcGRh
dGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MpOworICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50IGRpbWVu
c2lvbiwgYm9vbCBhbHBoYSk7CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBpbmxpbmUgV2Vi
Q29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7IH0K
QEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBudWxsIHBvaW50ZXIg
b2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KICAgICBQYXNzT3duUHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGludCYgYXRs
YXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQp
OwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdz
IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIGJvb2wgYWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX3N1cmZhY2UtPmFscGhhKCk7IH0KIAogICAgIHZvaWQgYWRkVGltZUluYWN0
aXZlKGRvdWJsZSBzZWNvbmRzKQogICAgIHsKQEAgLTY5LDEyICs3MCw5IEBAIHByaXZhdGU6CiBw
cml2YXRlOgogICAgIFVwZGF0ZUF0bGFzQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8R2Vu
ZXJhbEFyZWFBbGxvY2F0b3I+IG1fYXJlYUFsbG9jYXRvcjsKLSAgICBTaGFyZWFibGVCaXRtYXA6
OkZsYWdzIG1fZmxhZ3M7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsK
LSAgICBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgbV9oYW5kbGU7CisgICAgUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwogICAgIGRvdWJsZSBtX2luYWN0aXZpdHlJblNlY29u
ZHM7CiAgICAgaW50IG1fSUQ7Ci0gICAgYm9vbCBtX2lzVmFpbGQ7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175852</attachid>
            <date>2012-11-23 23:14:05 -0800</date>
            <delta_ts>2012-12-06 02:28:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121124161138.patch</filename>
            <type>text/plain</type>
            <size>71215</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjUyNzk4NjMxMTU4YTZl
MmYyYzhhMGIwNjMzYWZlMTk3YzVhZGVmOS4uNDIyNGUwM2Q1NTVjMjY4ODczOWFmNWM5MzQ4NDYx
NDM2NTIzYTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMi0xMS0yMyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogQWRkIENvb3JkaW5hdGVkU3VyZmFjZSB0byByZW1vdmUgdGhlIGRlcGVu
ZGVuY3kgb2YgU2hhcmVhYmxlU3VyZmFjZSBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJuYWwgUmV2
aWV3IGJ5IEd3YW5nIFlvb24gSHdhbmcgYW5kIEphZSBIeXVuIFBhcmsuCisKKyAgICAgICAgSXQg
aXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3Mg
b24gV0sxLgorCisgICAgICAgIEN1cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLCBD
b29yZGluYXRlZFRpbGUgYW5kCisgICAgICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGRpcmVj
dGx5IHVzZSBTaGFyZWFibGVTdXJmYWNlLiBTaGFyZWFibGVTdXJmYWNlIHdhcworICAgICAgICBp
bXBsZW1lbnRlZCB0byBzaGFyZSBhbiBpbWFnZSBiZXR3ZWVuIHByb2Nlc3NlcyBhcyB3ZWxsIGFz
IHBsYWNlZCBpbiBXSzIuCisgICAgICAgIFdlIHdhbnQgdGhlbSB0byBub3QgZGVwZW5kIG9uIFNo
YXJlYWJsZVN1cmZhY2UgdG8gbW92ZSB0aGVtIGludG8gV2ViQ29yZS4gU28KKyAgICAgICAgdGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjbGFzczogQ29vcmRpbmF0ZWRTdXJmYWNlLCB0byBiZSB1
c2VkIGFzIGEKKyAgICAgICAgZHJhd2luZyBzdXJmYWNlIGZvciBDb29yZGluYXRlZCBHcmFwaGlj
cy4KKworICAgICAgICBXaGVuIHdlIG1vdmUgc29tZSBjbGFzc2VzIG9mIENvb3JkaW5hdGVkIEdy
YXBoaWNzIGludG8gV2ViQ29yZSwKKyAgICAgICAgQ29vcmRpbmF0ZWRTdXJmYWNlLmggd2lsbCBi
ZSBtb3ZlZCB0b28sIGJ1dCBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UKKyAgICAgICAgd2ls
bCBiZSBsZWZ0IGluIFdLMi4KKworICAgICAgICBXZSB3aWxsIGludHJvZHVjZSBDb29yZGluYXRl
ZFRocmVhZFNhZmVTdXJmYWNlIGxhdGVyLCB3aGljaCBwbGF5cyBhIHJvbGUgaW4KKyAgICAgICAg
c2hhcmluZyBhbiBzdXJmYWNlIGJldHdlZW4gdGhyZWFkcy4gQ29vcmRpbmF0ZWQgR3JhcGhpY3Mg
b24gV0sxIHdpbGwgdXNlCisgICAgICAgIENvb3JkaW5hdGVkVGhyZWFkU2FmZVN1cmZhY2UuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
Q29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBD
Ojo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFj
ZS5jcHAuCisgICAgICAgICAgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIHBsYXlzIGEgcm9s
ZSBpbiBzaGFyaW5nIGFuIHN1cmZhY2UgYmV0d2VlbgorICAgICAgICAgIHByb2Nlc3NlcyBhcyBT
aGFyZWFibGVTdXJmYWNlIGRpZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpIYW5kbGUpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNl
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1
cmZhY2U6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6fkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFu
ZGxlKToKKyAgICAgICAgICBUaGlzIG1ldGhvZCBpcyBvbmx5IHVzZWQgYnkgdGhlIGNyZWF0ZSBt
ZXRob2QsIHNvIHRoaXMgbWV0aG9kIGlzCisgICAgICAgICAgcHJpdmF0ZSBub3cuIFdlIGRvbid0
IGhhdmUgdGhlIHJlcXVpcmVtZW50IG9mIGNyZWF0aW5nIG1hbnkgaGFuZGxlcy4KKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpoYW5kbGUpOgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSk6CisgICAgICAgIChIYW5kbGUpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6Z3Jh
cGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFNoYXJlYWJs
ZVN1cmZhY2U6OmlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAqIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENvb3JkaW5hdGVkU3VyZmFj
ZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6fkNvb3JkaW5hdGVkU3Vy
ZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6c3VwcG9ydHNBbHBo
YSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6dG9BbHBoYSk6CisgICAg
ICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5o
OiBBZGRlZC4KKyAgICAgICAgICBUaGlzIHN0cnVjdCBleGlzdHMgdG8gcGFzcyBDb29yZGluYXRl
ZFN1cmZhY2UgdG8gVUkgUHJvY2Vzcy4gV2UgY2FuCisgICAgICAgICAgbm90IHBhc3MgdGhlIG1l
c3NhZ2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycyBiZXR3ZWVuIHByb2Nlc3NlcyB5ZXQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyk6CisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5Lmg6CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvclByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6
OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6Cisg
ICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc6OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmg6
CisgICAgICAgIChDb29yZGluYXRvcik6CisgICAgICAgIChDb29yZGluYXRlZEltYWdlQmFja2lu
Zyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGlu
YXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
Q29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChMYXllclRyZWVDb29yZGlu
YXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktp
dDo6VXBkYXRlQXRsYXM6On5VcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0
bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5oOgorICAgICAgICAoVXBkYXRlQXRsYXNDbGllbnQpOgor
ICAgICAgICAoVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6YWxw
aGEpOgorCiAyMDEyLTExLTIzICBBbGV4aXMgTWVuYXJkICA8YWxleGlzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0NTUzMgQmFja2dyb3VuZHMgYW5kIEJvcmRlcnNdIEltcGxlbWVudCBuZXcgQ1NT
MyBiYWNrZ3JvdW5kLXBvc2l0aW9uIHBhcnNpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDAw
MzM5NmE2NTdmZDQ1YjhiZTJjODI1MGUwOTJjZTJkM2Y2ZmQyMjAuLjVjM2FiNGNjY2JkOWQ4YWZi
MDBlYzdlNDRmZTBhYTY2MWZiMDVkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0xNTMsNyAr
MTUzLDYgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwCiAgICAgU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKICAgICBTaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmNwcAotICAgIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAogICAgIFNoYXJlZC9T
dGF0aXN0aWNzRGF0YS5jcHAKICAgICBTaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwCiAgICAg
U2hhcmVkL1VwZGF0ZUluZm8uY3BwCkBAIC0yMTgsNiArMjE3LDcgQEAgU0VUKFdlYktpdDJfU09V
UkNFUwogICAgIFNoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKIAogICAg
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENv
ZGVycy5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJl
YWJsZVN1cmZhY2UuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5LmNwcAogCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVy
RGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IGE4MDI3ZmRiOTVjYjM2MDZmNmFjNjFlMjJjOWQ4OTJmMmM3ODRl
YzAuLjMwMDVhMWJmNWQyMzliMjRhZDJjODZjMjkyODNmMjkyNTY2YzBiZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MjksNiArMjksOCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZUluZm8u
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0FuaW1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KQEAgLTcxLDEyICs3Mywy
NiBAQAogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0jZW5kaWYKIAogbmFtZXNwYWNlIENv
cmVJUEMgewogCit2b2lkIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbz46OmVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvb3JkaW5hdGVkU3VyZmFjZUlu
Zm8mIHN1cmZhY2VJbmZvKQoreworICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSogc2hh
cmVhYmxlU3VyZmFjZSA9IHN0YXRpY19jYXN0PENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSo+
KHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZS5nZXQoKSk7CisgICAgZW5jb2Rlci5lbmNv
ZGUoc2hhcmVhYmxlU3VyZmFjZS0+aGFuZGxlKCkpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8
Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IENvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1cmZhY2VJbmZvKQoreworICAgIENvb3JkaW5hdGVk
U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShoYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzdXJmYWNlSW5mby5jb29y
ZGluYXRlZFN1cmZhY2UgPSBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShoYW5k
bGUpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2lu
dDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNE
JiBmbG9hdFBvaW50M0QpCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+
OjplbmNvZGUoZW5jb2RlciwgZmxvYXRQb2ludDNEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYmJhNDI3ZDAxYTkxNGIxYjNm
YjliOTkxMWE2MjYxMzVlMDljMWM3ZC4uZWU0MTE1MDU0N2QxZWNmNjhjYzY1M2Y5MDE5MzQyZThh
NWY4NWY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3Vt
ZW50Q29kZXJzLmgKQEAgLTUyLDggKzUyLDE3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tl
bjsKICNlbmRpZgogfQogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvb3JkaW5hdGVkU3Vy
ZmFjZUluZm87Cit9CisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViS2l0OjpDb29yZGluYXRl
ZFN1cmZhY2VJbmZvJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlcios
IFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbyYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9hdFBvaW50M0Q+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZsb2F0
UG9pbnQzRCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDU0MDc5M2Q2ZDJmODM3ZWQ2OTE2YWRiNzE4NzliMzA0ZTVkYTA0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZS5jcHAKQEAgLTAsMCArMSwyMzQgQEAKKy8q
CisgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgorCisgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29vcmRp
bmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2VUb2tlbi5oPgorCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorI2VuZGlmCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OkhhbmRsZSgpCit7Cit9CisKK3ZvaWQgQ29vcmRp
bmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci5lbmNvZGUobV9zaXplKTsKKyAg
ICBlbmNvZGVyLmVuY29kZUVudW0obV9hbHBoYSk7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CisgICAgZW5jb2Rlci5lbmNvZGUobV9ncmFwaGljc1N1cmZhY2VUb2tlbik7CisgICAgaWYgKG1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisjZW5kaWYK
KyAgICBlbmNvZGVyLmVuY29kZShtX2JpdG1hcEhhbmRsZSk7Cit9CisKK2Jvb2wgQ29vcmRpbmF0
ZWRTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGhhbmRsZS5tX3NpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVFbnVtKGhhbmRsZS5tX2FscGhhKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5t
X2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICho
YW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworI2VuZGlmCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fYml0bWFwSGFu
ZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bh
c3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkFscGhhIGFs
cGhhKQoreworICAgIHJldHVybiBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShz
aXplLCBhbHBoYSk7Cit9CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNl
PiBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBDb29yZGluYXRlZFN1cmZhY2U6OkFscGhhIGFscGhhKQoreworICAgIFJlZlB0cjxDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2U7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CisgICAgc3VyZmFjZSA9IGNyZWF0ZVdpdGhTdXJmYWNlKHNpemUsIGFscGhhKTsKKyNlbmRpZgor
CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICBzdXJmYWNlID0gY3JlYXRlKHNpemUsIGFscGhh
LCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBzdXBwb3J0c0FscGhhKGFs
cGhhKSA/IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6
Tm9GbGFncykpOworCisgICAgaWYgKCFzdXJmYWNlLT5jcmVhdGVIYW5kbGUoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7Cit9CisKKyNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNl
PiBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IElu
dFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6QWxwaGEgYWxwaGEpCit7CisgICAgR3Jh
cGhpY3NTdXJmYWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPQorICAgICAgICBHcmFwaGljc1N1cmZh
Y2U6OlN1cHBvcnRzU29mdHdhcmVXcml0ZQorICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3Vw
cG9ydHNDb3B5VG9UZXh0dXJlCisgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1No
YXJpbmc7CisKKyAgICBpZiAoc3VwcG9ydHNBbHBoYShhbHBoYSkpCisgICAgICAgIHN1cmZhY2VG
bGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQWxwaGE7CisKKyAgICAvLyBUaGlzIG1p
Z2h0IHJldHVybiBudWxsLCBpZiB0aGUgc3lzdGVtIGlzIHVuYWJsZSB0byBwcm92aWRlIGEgbmV3
IGdyYXBoaWNzIHN1cmZhY2UuCisgICAgLy8gSW4gdGhhdCBjYXNlLCB0aGlzIGZ1bmN0aW9uIHdv
dWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxsaW5nIGJhY2sgdG8gU2hhcmVhYmxlQml0bWFw
LgorICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBBU1NFUlQoc3VyZmFjZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgYWxwaGEsIHN1cmZhY2UucmVsZWFz
ZSgpKSk7Cit9CisjZW5kaWYKKworUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgQVNTRVJUKG1fcHVycG9zZSA9PSBQcm9kdWNlcik7Cisj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZh
Y2UoKSkKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5iZWdpblBhaW50KHJlY3Qs
IDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5pbmcgcGl4ZWxzKi8pOworI2VuZGlmCisKKyAgICBB
U1NFUlQobV9iaXRtYXApOworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29u
dGV4dCA9IG1fYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXAocmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUocmVjdC54
KCksIHJlY3QueSgpKTsKKyAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKK30K
KworUGFzc1JlZlB0cjxDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U+IENvb3JkaW5hdGVkU2hh
cmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6QWxwaGEgYWxwaGEsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2Uoc2l6
ZSwgYWxwaGEsIGJpdG1hcCkpOworfQorCitDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OkNv
b3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRl
ZFN1cmZhY2U6OkFscGhhIGFscGhhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
KQorICAgIDogbV9zaXplKHNpemUpCisgICAgLCBtX2FscGhhKGFscGhhKQorICAgICwgbV9iaXRt
YXAoYml0bWFwKQorICAgICwgbV9wdXJwb3NlKENvbnN1bWVyKQoreworfQorCisjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCitDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U6OkNvb3JkaW5hdGVk
U2hhcmVhYmxlU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRl
ZFN1cmZhY2U6OkFscGhhIGFscGhhLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZT4gc3VyZmFjZSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwgbV9hbHBoYShhbHBoYSkKKyAg
ICAsIG1fZ3JhcGhpY3NTdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX3B1cnBvc2UoQ29uc3VtZXIp
Cit7Cit9CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBDb29yZGlu
YXRlZFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkFscGhhIGFscGhhLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3Vy
ZmFjZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkU2hhcmVhYmxlU3Vy
ZmFjZShzaXplLCBhbHBoYSwgc3VyZmFjZSkpOworfQorI2VuZGlmCisKK0Nvb3JkaW5hdGVkU2hh
cmVhYmxlU3VyZmFjZTo6fkNvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSgpCit7Cit9CisKK1Bh
c3NSZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBDb29yZGluYXRlZFNoYXJlYWJs
ZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKK3sKKyNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKKyAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxp
ZCgpKSB7CisgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0gMDsK
KyAgICAgICAgaWYgKHN1cHBvcnRzQWxwaGEoaGFuZGxlLm1fYWxwaGEpKQorICAgICAgICAgICAg
c3VyZmFjZUZsYWdzIHw9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNBbHBoYTsKKyAgICAgICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRl
KGhhbmRsZS5tX3NpemUsIHN1cmZhY2VGbGFncywgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9r
ZW4pOworICAgICAgICBpZiAoc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2Fs
cGhhLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oc3VyZmFjZSkpKTsKKyAgICB9CisjZW5k
aWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSk7CisgICAgaWYgKCFiaXRtYXApCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUu
bV9hbHBoYSwgYml0bWFwLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wgQ29vcmRpbmF0ZWRTaGFyZWFi
bGVTdXJmYWNlOjpjcmVhdGVIYW5kbGUoKQoreworICAgIG1fcHVycG9zZSA9IFByb2R1Y2VyOwor
ICAgIG1faGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKKyAgICBtX2hhbmRsZS5tX2FscGhhID0gbV9h
bHBoYTsKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIG1faGFuZGxlLm1fZ3JhcGhp
Y3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJmYWNlLT5l
eHBvcnRUb2tlbigpIDogR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAgICBpZiAobV9oYW5kbGUu
bV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisgICAgaWYgKCFtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlLm1fYml0bWFw
SGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCit2b2lkIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZTo6Y29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHBhc3NU
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQpCit7CisgICAgQVNTRVJUKG1fcHVycG9zZSA9PSBDb25zdW1lcik7CisgICAgUmVmUHRyPEJp
dG1hcFRleHR1cmU+IHRleHR1cmUocGFzc1RleHR1cmUpOworCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkgeworICAgICAgICBS
ZWZQdHI8Qml0bWFwVGV4dHVyZUdMPiB0ZXh0dXJlR0wgPSB0b0JpdG1hcFRleHR1cmVHTCh0ZXh0
dXJlLmdldCgpKTsKKyAgICAgICAgaWYgKHRleHR1cmVHTCkgeworICAgICAgICAgICAgdWludDMy
X3QgdGV4dHVyZUlEID0gdGV4dHVyZUdMLT5pZCgpOworICAgICAgICAgICAgdWludDMyX3QgdGV4
dHVyZVRhcmdldCA9IHRleHR1cmVHTC0+dGV4dHVyZVRhcmdldCgpOworICAgICAgICAgICAgbV9n
cmFwaGljc1N1cmZhY2UtPmNvcHlUb0dMVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlSUQs
IHRhcmdldCwgc291cmNlT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2dyYXBoaWNzU3VyZmFjZS0+Y3JlYXRl
UmVhZE9ubHlJbWFnZShJbnRSZWN0KHNvdXJjZU9mZnNldCwgdGFyZ2V0LnNpemUoKSkpOworICAg
ICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBJbnRQb2lu
dDo6emVybygpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0
YSk7CisgICAgfQorI2VuZGlmCisKKyAgICBBU1NFUlQobV9iaXRtYXApOworICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKKyAgICB0ZXh0dXJlLT51cGRh
dGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQsIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICByZXR1cm47Cit9Cisj
ZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQorCitjb25zdCBDb29yZGluYXRlZFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSYgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlOjpoYW5kbGUoKSBj
b25zdAoreworICAgIEFTU0VSVChtX3B1cnBvc2UgPT0gUHJvZHVjZXIpOworICAgIHJldHVybiBt
X2hhbmRsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8gVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFNoYXJlYWJsZVN1cmZh
Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YmNhMzE5OWY2MmU5ZDQxNTcyM2U4NmIyMzllNDU0ZjI3MDVmZDVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8q
CisgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgorCisgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZV9o
CisjZGVmaW5lIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZV9oCisKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNs
dWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBCaXRtYXBUZXh0dXJlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlIDogcHVibGlj
IENvb3JkaW5hdGVkU3VyZmFjZSB7CitwdWJsaWM6CisgICAgY2xhc3MgSGFuZGxlIHsKKyAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIEhh
bmRsZSgpOworCisgICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYp
IGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiwgSGFuZGxlJik7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7
IHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOyB9CisjZW5kaWYKKworICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2U7CisgICAg
ICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9iaXRtYXBIYW5kbGU7CisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CisjZW5kaWYKKyAgICAgICAgV2ViQ29yZTo6SW50
U2l6ZSBtX3NpemU7CisgICAgICAgIENvb3JkaW5hdGVkU3VyZmFjZTo6QWxwaGEgbV9hbHBoYTsK
KyAgICB9OworCisgICAgLy8gQ3JlYXRlIGEgbmV3IENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZSwgYW5kIGFsbG9jYXRlIGVpdGhlciBhIEdyYXBoaWNzU3VyZmFjZSBvciBhIFNoYXJlYWJsZUJp
dG1hcCBhcyBiYWNraW5nLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU2hhcmVh
YmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBBbHBoYSk7CisKKyAg
ICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxlLgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhh
bmRsZSYpOworCisgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKCk7CisK
KyAgICB2aXJ0dWFsIEFscGhhIGFscGhhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9hbHBo
YTsgfQorICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBPVkVSUklERTsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICB2aXJ0
dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBjb25zdCBIYW5kbGUmIGhh
bmRsZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFj
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQWxwaGEsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPik7CisKKyAgICAvLyBDcmVhdGUgYSBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UgcmVm
ZXJlbmNpbmcgYW4gZXhpc3RpbmcgU2hhcmVhYmxlQml0bWFwLgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBBbHBoYSwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKworICAgIC8vIENy
ZWF0ZSBhIGhhbmRsZS4KKyAgICBib29sIGNyZWF0ZUhhbmRsZSgpOworCisjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCisgICAgQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBBbHBoYSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+
KTsKKyAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGJhY2tlZCBieSBhIGdyYXBoaWNz
IHN1cmZhY2UuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTaGFyZWFibGVTdXJm
YWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQWxwaGEpOwor
ICAgIC8vIENyZWF0ZSBhIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZSByZWZlcmVuY2luZyBh
biBleGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRp
bmF0ZWRTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEFs
cGhhLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOworCisgICAgYm9vbCBp
c0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gISFtX2dyYXBoaWNzU3Vy
ZmFjZTsgfQorI2VuZGlmCisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKKyAgICBBbHBo
YSBtX2FscGhhOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0bWFwOworCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKKworICAgIC8vIE9ubHkgQ29vcmRpbmF0ZWRT
aGFyZWFibGVTdXJmYWNlIGluIFdlYiBQcm9jZXNzIGhhcyB0aGlzIG1lbWJlci4KKyAgICBIYW5k
bGUgbV9oYW5kbGU7CisKKyAgICBlbnVtIFB1cnBvc2UgeworICAgICAgICBQcm9kdWNlciwKKyAg
ICAgICAgQ29uc3VtZXIKKyAgICB9OworICAgIC8vIFRoaXMgbWVtYmVyIGV4aXN0cyBmb3Igb25s
eSBhIGRlYnVnZ2luZyBwdXJwb3NlLiBJdCBpcyBQcm9kdWNlciBpbiBXZWIgUHJvY2Vzcywgd2hp
bGUgQ29uc3VtZXIgaW4gVUkgUHJvY2Vzcy4KKyAgICBQdXJwb3NlIG1fcHVycG9zZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorI2VuZGlmIC8vIENvb3JkaW5hdGVkU2hhcmVhYmxlU3VyZmFjZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1
cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhYmQyYzg5MTljMzU1OWRjMmY2MDI2ZDA3YTY5
YTVmODU0NTUwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKyNkZWZpbmUg
Q29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJlOworY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ29vcmRpbmF0
ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkU3VyZmFj
ZT4geworcHVibGljOgorICAgIGVudW0gQWxwaGEgeworICAgICAgICBPcGFxdWUsCisgICAgICAg
IFN1cHBvcnRzQWxwaGEKKyAgICB9OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBBbHBoYSk7CisKKyAgICB2
aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKSB7IH0KKworICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzQWxwaGEoQWxwaGEgYWxwaGEpIHsgcmV0dXJuIGFscGhhID09IE9wYXF1ZSA/IGZhbHNlIDog
dHJ1ZTsgfQorICAgIHN0YXRpYyBBbHBoYSB0b0FscGhhKGJvb2wgc3VwcG9ydHNBbHBoYSkgeyBy
ZXR1cm4gc3VwcG9ydHNBbHBoYSA/IFN1cHBvcnRzQWxwaGEgOiBPcGFxdWU7IH0KKworICAgIHZp
cnR1YWwgQWxwaGEgYWxwaGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKCkgY29uc3QgPSAwOworCisgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3Mg
Y29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUu
CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVIpCisgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0
cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CisjZW5kaWYKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBDb29yZGluYXRl
ZFN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5ODRlOTRkNjgwYTlmODA3ZjkzYmU5ZWFhYzFmN2E5NmQwYWI3NzAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZFN1cmZhY2VJbmZvLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIENvb3JkaW5hdGVkU3VyZmFjZUluZm9faAorI2RlZmluZSBDb29yZGluYXRlZFN1cmZhY2VJ
bmZvX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2luY2x1ZGUgIkNvb3Jk
aW5hdGVkU3VyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBzdHJ1Y3Qg
ZXhpc3RzIHRvIHBhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIFVJIFByb2Nlc3MuCisvLyBXZSBj
YW4gbm90IHBhc3MgdGhlIG1lc3NhZ2UgaW5jbHVkaW5nIG5vbi1QT0QgbWVtYmVycyBiZXR3ZWVu
IHByb2Nlc3NlcyB5ZXQuCitzdHJ1Y3QgQ29vcmRpbmF0ZWRTdXJmYWNlSW5mbyB7CisgICAgUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorI2VuZGlmIC8vIFVwZGF0ZUluZm9faApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiZjhmYTEwNjk5MzVjOTY2NzQ1NjYyZjBmMTI3ZmRiMjk0N2M2NTg1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCww
IEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKLQotI2luY2x1ZGUgIkNvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KLQotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6
SGFuZGxlKCkKLXsKLX0KLQotdm9pZCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci5l
bmNvZGUobV9zaXplKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2ZsYWdzKTsKLSNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKLSAgICBlbmNvZGVyLmVuY29kZShtX2dyYXBoaWNzU3VyZmFjZVRva2Vu
KTsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybjsKLSNlbmRpZgotICAgIGVuY29kZXIuZW5jb2RlKG1fYml0bWFwSGFuZGxlKTsKLX0KLQot
Ym9vbCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQotewotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGhhbmRsZS5tX3NpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGhh
bmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0jZW5kaWYKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9iaXRtYXBIYW5k
bGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotUGFz
c1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgSGludHMgaGludHMp
Ci17Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhpbnRzICYgU3VwcG9ydHNH
cmFwaGljc1N1cmZhY2UpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZh
Y2UgPSBjcmVhdGVXaXRoU3VyZmFjZShzaXplLCBmbGFncyk7Ci0gICAgICAgIGlmIChzdXJmYWNl
KQotICAgICAgICAgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOwotICAgIH0KLSNlbmRpZgot
ICAgIFVOVVNFRF9QQVJBTShoaW50cyk7Ci0KLSAgICByZXR1cm4gY3JlYXRlKHNpemUsIGZsYWdz
LCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBmbGFncykpOwotfQotCi0j
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi1QYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNo
YXJlYWJsZVN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCi17Ci0gICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFn
cyBzdXJmYWNlRmxhZ3MgPQotICAgICAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1Nv
ZnR3YXJlV3JpdGUKLSAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0NvcHlU
b1RleHR1cmUKLSAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NoYXJpbmc7
Ci0KLSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpCi0gICAg
ICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQWxwaGE7Ci0KLSAg
ICAvLyBUaGlzIG1pZ2h0IHJldHVybiBudWxsLCBpZiB0aGUgc3lzdGVtIGlzIHVuYWJsZSB0byBw
cm92aWRlIGEgbmV3IGdyYXBoaWNzIHN1cmZhY2UuCi0gICAgLy8gSW4gdGhhdCBjYXNlLCB0aGlz
IGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxsaW5nIGJhY2sgdG8gU2hh
cmVhYmxlQml0bWFwLgotICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFw
aGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOwotICAgIGlmICghc3VyZmFj
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoc3VyZmFjZSk7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlLnJlbGVh
c2UoKSkpOwotfQotI2VuZGlmCi0KLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYg
cmVjdCkKLXsgICAgCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlzQmFja2Vk
QnlHcmFwaGljc1N1cmZhY2UoKSkKLSAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5i
ZWdpblBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5pbmcgcGl4ZWxzKi8pOwot
I2VuZGlmCi0KLSAgICBBU1NFUlQobV9iaXRtYXApOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
LSAgICBncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50
cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0
LnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVT
dXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFn
cyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKLXsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIGJpdG1hcCkpOwot
fQotCi1TaGFyZWFibGVTdXJmYWNlOjpTaGFyZWFibGVTdXJmYWNlKGNvbnN0IEludFNpemUmIHNp
emUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXApCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0g
ICAgLCBtX2JpdG1hcChiaXRtYXApCi17Ci19Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
LVNoYXJlYWJsZVN1cmZhY2U6OlNoYXJlYWJsZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1f
ZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX2dyYXBoaWNzU3VyZmFjZShzdXJmYWNlKQotewotfQotCi1Q
YXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRy
PEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNo
YXJlYWJsZVN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UpKTsKLX0KLSNlbmRpZgotCi1TaGFy
ZWFibGVTdXJmYWNlOjp+U2hhcmVhYmxlU3VyZmFjZSgpCi17Ci19Ci0KLVBhc3NSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFu
ZGxlKQotewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChoYW5kbGUuZ3JhcGhp
Y3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZS5tX3NpemUsIGhh
bmRsZS5tX2ZsYWdzLCBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbik7Ci0gICAgICAgIGlm
IChzdXJmYWNlKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJm
YWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4oc3VyZmFjZSkpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhh
bmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJu
IGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgYml0bWFwLnJlbGVhc2UoKSk7
Ci19Ci0KLWJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxl
KQotewotICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7Ci0gICAgaGFuZGxlLm1fZmxhZ3MgPSBt
X2ZsYWdzOwotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaGFuZGxlLm1fZ3JhcGhp
Y3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJmYWNlLT5l
eHBvcnRUb2tlbigpIDogR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKLSAgICBpZiAoaGFuZGxlLm1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNl
bmRpZgotICAgIGlmICghbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9iaXRtYXBIYW5k
bGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lm
IFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6Y29weVRvVGV4dHVy
ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHBhc3NUZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCi17Ci0gICAgUmVm
UHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUocGFzc1RleHR1cmUpOwotCi0jaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkgewotICAg
ICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZUdMPiB0ZXh0dXJlR0wgPSB0b0JpdG1hcFRleHR1cmVH
TCh0ZXh0dXJlLmdldCgpKTsKLSAgICAgICAgaWYgKHRleHR1cmVHTCkgewotICAgICAgICAgICAg
dWludDMyX3QgdGV4dHVyZUlEID0gdGV4dHVyZUdMLT5pZCgpOwotICAgICAgICAgICAgdWludDMy
X3QgdGV4dHVyZVRhcmdldCA9IHRleHR1cmVHTC0+dGV4dHVyZVRhcmdldCgpOwotICAgICAgICAg
ICAgbV9ncmFwaGljc1N1cmZhY2UtPmNvcHlUb0dMVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0
dXJlSUQsIHRhcmdldCwgc291cmNlT2Zmc2V0KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2dyYXBoaWNzU3VyZmFjZS0+
Y3JlYXRlUmVhZE9ubHlJbWFnZShJbnRSZWN0KHNvdXJjZU9mZnNldCwgdGFyZ2V0LnNpemUoKSkp
OwotICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBJ
bnRQb2ludDo6emVybygpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbElt
YWdlRGF0YSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBBU1NFUlQobV9iaXRtYXApOwotICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKLSAgICB0ZXh0dXJl
LT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQsIEJpdG1h
cFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICByZXR1cm47
Ci19Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlMGU3YTM5ZjI4YTc2NzE1NWE0ZTliZmZkY2U5N2ZhNDU5YjdkZjRl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEg
KzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
U2hhcmVhYmxlU3VyZmFjZV9oCi0jZGVmaW5lIFNoYXJlYWJsZVN1cmZhY2VfaAotCi0jaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotI2luY2x1ZGUgIkdyYXBoaWNzU3Vy
ZmFjZS5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJpdG1hcFRleHR1
cmU7Ci1jbGFzcyBJbWFnZTsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2hhcmVhYmxlU3VyZmFjZT4gewotcHVibGljOgotICAgIGVudW0gSGludCB7Ci0g
ICAgICAgIFN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlID0gMHgwMQotICAgIH07Ci0KLSAgICB0eXBl
ZGVmIHVuc2lnbmVkIEhpbnRzOwotCi0gICAgY2xhc3MgSGFuZGxlIHsKLSAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEhhbmRsZSgpOwot
Ci0gICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBlbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBib29sIGRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBIYW5kbGUmKTsKLQotI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGlj
c1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47IH0K
LSNlbmRpZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVN1
cmZhY2U7Ci0gICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9iaXRtYXBI
YW5kbGU7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47Ci0jZW5kaWYKLSAgICAgICAg
V2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Mg
bV9mbGFnczsKLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IFNoYXJlYWJsZVN1cmZhY2Us
IGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3IgYSBTaGFyZWFibGVCaXRt
YXAgYXMgYmFja2luZy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIEhp
bnRzKTsKLQotICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBzdXJmYWNlIGZyb20gYSBoYW5kbGUu
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhh
bmRsZSYpOwotCi0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fZmxhZ3M7IH0KLQotICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KLSAgICBib29sIGNyZWF0
ZUhhbmRsZShIYW5kbGUmKTsKLQotICAgIH5TaGFyZWFibGVTdXJmYWNlKCk7Ci0KLSAgICBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAg
V2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRSZWN0
KFdlYkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KLQotICAgIC8vIENyZWF0ZSBhIGdyYXBo
aWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0
b3JlLgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFw
aGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotCi0jaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKQotICAgIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1h
cFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBzb3VyY2VPZmZzZXQpOwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU2hhcmVh
YmxlU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFn
cywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKLQotICAgIC8vIENyZWF0ZSBhIFNoYXJl
YWJsZVN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU2hhcmVhYmxlQml0bWFwLgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+KTsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIFNoYXJlYWJsZVN1cmZh
Y2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7Ci0gICAgLy8gQ3JlYXRlIGEgc2hhcmVh
YmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzKTsKLSAgICAvLyBDcmVhdGUgYSBTaGFy
ZWFibGVTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFjZS4KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
R3JhcGhpY3NTdXJmYWNlPik7Ci0KLSAgICBib29sIGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2Uo
KSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NTdXJmYWNlOyB9Ci0jZW5kaWYKLQotICAgIFdl
YkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgbV9mbGFn
czsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKLQotI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IG1fZ3Jh
cGhpY3NTdXJmYWNlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIFNoYXJlYWJsZVN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMDk4YjViOTU0M2Y1ZmRm
YjliOGE5MzFhMTI4Mjc5MWU2YTk3NTY5MS4uOTk3MjBiNDkxNzBlMDYwYTg5NTMyNDE2Yzk1NjA4
MjgzMmFhNjc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03MSw3ICs3MSw2IEBAIEhFQURFUlMgKz0gXAog
ICAgIFNoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBcCiAgICAgU2hhcmVkL0FQSUNsaWVudFRy
YWl0cy5oIFwKICAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggXAotICAgIFNoYXJlZC9TaGFy
ZWFibGVTdXJmYWNlLmggXAogICAgIFNoYXJlZC9DYWNoZU1vZGVsLmggXAogICAgIFNoYXJlZC9D
aGlsZFByb2Nlc3MuaCBcCiAgICAgU2hhcmVkL0Nvbm5lY3Rpb25TdGFjay5oIFwKQEAgLTEzNSw2
ICsxMzQsOSBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuaCBcCiAg
ICAgU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKICAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCBcCisgICAg
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTaGFyZWFibGVTdXJmYWNlLmgg
XAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oIFwK
KyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2VJbmZvLmgg
XAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0u
aCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBc
CiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCkBAIC00NDEsNyArNDQz
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVOb25lLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5j
cHAgXAotICAgIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdp
bnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZp
ZXJEYXRhLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIu
Y3BwIFwKQEAgLTUwMyw2ICs1MDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViVVJM
UmVzcG9uc2UuY3BwIFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAogICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAgXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU2hhcmVhYmxl
U3VyZmFjZS5jcHAgXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZp
bHRlclByb2dyYW1Qcm94eS5jcHAgXAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNw
cCBcCiAgICAgU2hhcmVkL3F0L0xheWVyVHJlZUNvbnRleHRRdC5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEyYWZiYzk0ZTMxNGI0MDZj
NWFkMDc1NmIyZTRmMjc4ZTMzNjY2MmMuLmFmMDMwMmNjNmFmMWQ2YzZmMjIyMmYyYzI4NTc3Yjgx
M2E3MjIwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5j
cHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJDb29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
IgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVk
U3VyZmFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWFi
bGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJHTC5oIgogCkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXAKIAogICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCkg
Pj0gbV90aWxlUmVjdC5zaXplKCkud2lkdGgoKSAmJiB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJl
U2l6ZSgpLmhlaWdodCgpID49IG1fdGlsZVJlY3Quc2l6ZSgpLmhlaWdodCgpKTsKICAgICBpZiAo
c2hvdWxkUmVzZXQpCi0gICAgICAgIHRleHR1cmUtPnJlc2V0KG1fdGlsZVJlY3Quc2l6ZSgpLCBt
X3N1cmZhY2UtPmZsYWdzKCkgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgPyBCaXRt
YXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogMCk7CisgICAgICAgIHRleHR1cmUtPnJlc2V0KG1f
dGlsZVJlY3Quc2l6ZSgpLCBDb29yZGluYXRlZFN1cmZhY2U6OnN1cHBvcnRzQWxwaGEobV9zdXJm
YWNlLT5hbHBoYSgpKSk7CiAKICAgICBtX3N1cmZhY2UtPmNvcHlUb1RleHR1cmUodGV4dHVyZSwg
bV9zb3VyY2VSZWN0LCBtX3N1cmZhY2VPZmZzZXQpOwogICAgIG1fc3VyZmFjZS5jbGVhcigpOwog
fQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25z
dCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0
cjxTaGFyZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lk
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBtX3Nv
dXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgIG1fdGlsZVJlY3QgPSB0aWxlUmVjdDsKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxsVGlsZXMo
KQogICAgICAgICBtX3RpbGVzVG9SZW1vdmUuYWRkKGl0LT5rZXkpOwogfQogCi12b2lkIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gYmFja0J1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZh
Y2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDxp
bnQsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5m
aW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBiMGJhY2E2MzViZWI3MTVkYjkzZGNk
OTFiOTZlOTU2YjgyM2Y0ZjVmLi4wMmQ5MTVlNjQxODRlMjE3NWQ0MWY0M2Y0M2UzYzI1MzdkMGQ0
MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlYWJsZVN1cmZh
Y2U7CitjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlVGlsZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6
CkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJl
cGFpbnRDb3VudCgpIHsgKyttX3JlcGFpbnRDb3VudDsgfQogICAgIGlubGluZSBpbnQgcmVwYWlu
dENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBC
dWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVm
UHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWFi
bGVTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9z
dXJmYWNlOwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9zb3VyY2VSZWN0OwogICAgIFdlYkNvcmU6
OkludFJlY3QgbV90aWxlUmVjdDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1cmZhY2VPZmZz
ZXQ7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUoaW50LCBm
bG9hdCk7CiAgICAgdm9pZCByZW1vdmVUaWxlKGludCk7CiAgICAgdm9pZCByZW1vdmVBbGxUaWxl
cygpOwotICAgIHZvaWQgdXBkYXRlVGlsZShpbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUoaW50LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdT
dG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNw
cAppbmRleCA4ZmIxMmI5MDJiMmRiYTQwYWJmZDc2ZjAyNTA3MmIyNmQ3ZDY0ZTgxLi4yNDRiMjZl
NDdjNDEzMThmMzIyODYwYmI1NTMzOWVkNDBlYzI4NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAjaW5j
bHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxheWVyVHJl
ZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKQEAgLTc5LDEwICs3OCwxMCBAQCB2b2lkIExheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHk6OnJlbW92ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwgaW50IHRpbGVJRCkK
ICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSwg
bV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNo
YXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViS2l0OjpDb29y
ZGluYXRlZFN1cmZhY2VJbmZvJiBzdXJmYWNlSW5mbykKIHsKICAgICBBU1NFUlQoIW1fc3VyZmFj
ZXMuY29udGFpbnMoYXRsYXNJRCkpOwotICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFNoYXJl
YWJsZVN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpKTsKKyAgICBtX3N1cmZhY2VzLmFkZChhdGxhc0lE
LCBzdXJmYWNlSW5mby5jb29yZGluYXRlZFN1cmZhY2UpOwogfQogCiB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OnJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQpAQCAtMTQ4LDkg
KzE0Nyw5IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmlu
ZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUltYWdlQmFja2luZywgbV9yZW5kZXJlci5nZXQo
KSwgaW1hZ2VJRCkpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFNo
YXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRv
clByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlELCBjb25zdCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZUluZm8mIHN1cmZhY2VJbmZvKQog
ewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFn
ZUJhY2tpbmcsIG1fcmVuZGVyZXIuZ2V0KCksIGltYWdlSUQsIFNoYXJlYWJsZVN1cmZhY2U6OmNy
ZWF0ZShoYW5kbGUpKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVy
ZXI6OnVwZGF0ZUltYWdlQmFja2luZywgbV9yZW5kZXJlci5nZXQoKSwgaW1hZ2VJRCwgc3VyZmFj
ZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eTo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEIGltYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
LmgKaW5kZXggZmI1OGIxYWU3NGZhZGM0NDJjOWQ3ZjAwZTQ3NjkzMzQ0ZmEzMWRlZi4uMmEwZDRh
NzBlNDhhYzIxMTgzZGI2MTg0MTFjNzk2Yzg2MDE4YjAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjQsOSArMjQsOSBAQAogCiAjaW5jbHVk
ZSAiQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlSW5mby5oIgogI2luY2x1ZGUg
IkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKLSNpbmNsdWRlICJTaGFy
ZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUluZm8uaCIKICNpbmNsdWRl
ICJXZWJMYXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KQEAgLTY5LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5
ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUZvckxheWVyKGludCBs
YXllcklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFj
ZVVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHJlbW92ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwg
aW50IHRpbGVJRCk7Ci0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29u
c3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7CisgICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxh
cyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJbmZvJik7CiAg
ICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCk7CiAgICAgdm9pZCBjcmVhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgU2hhcmVhYmxlU3Vy
ZmFjZTo6SGFuZGxlJik7CisgICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJbmZvJik7CiAg
ICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQpOwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJik7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6
OkludFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0OwogICAgIGZsb2F0IG1fbGFzdFNlbnRTY2Fs
ZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwot
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+ID4gU3VyZmFjZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQg
Ki8sIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNl
TWFwIG1fc3VyZmFjZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0MmM2OWJiZWYzYWE4YTVlZDgx
M2RjNzljNmY5NjU3ZTU1YjAwNDEzLi40MTViNzBkYzQxOWRmMWRjY2FkNGRiOWM5ODNlZTIzMGEx
OTU1YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDEwICszMywxMCBAQCBtZXNzYWdlcyAtPiBMYXll
clRyZWVDb29yZGluYXRvclByb3h5IHsKICAgICBDcmVhdGVUaWxlRm9yTGF5ZXIodWludDMyX3Qg
bGF5ZXJJRCwgaW50IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpT
dXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcih1aW50
MzJfdCBsYXllcklELCBpbnQgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJL
aXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm8pCiAgICAgUmVtb3ZlVGlsZUZvckxheWVy
KHVpbnQzMl90IGxheWVySUQsIGludCB0aWxlSUQpCi0gICAgQ3JlYXRlVXBkYXRlQXRsYXMoaW50
IGF0bGFzSUQsIFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKKyAgICBD
cmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VJ
bmZvIHN1cmZhY2VJbmZvKQogICAgIFJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQogICAg
IENyZWF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQotICAgIFVwZGF0ZUltYWdlQmFj
a2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBo
YW5kbGUpCisgICAgVXBkYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQsIFdlYktpdDo6
Q29vcmRpbmF0ZWRTdXJmYWNlSW5mbyBzdXJmYWNlSW5mbykKICAgICBDbGVhckltYWdlQmFja2lu
Z0NvbnRlbnRzKHVpbnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2
NF90IGltYWdlSUQpCiAgICAgRGlkUmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50
c1NpemUsIFdlYkNvcmU6OkludFJlY3QgY292ZXJlZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5jcHAKaW5kZXggMGMwMDllYzQ4M2FkZGIzYTZmZjVhZDU5OWQ4ZmFlZGIzNDcy
MGRkZS4uMjAxNzVlNTA4ODM4ODVlZDY1MDM4NWFiNDdhNjYwYzA1ZTY4YmM1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEIGltYWdlSUQpCiAgICAgbV9pbWFnZUJhY2tpbmdzLmFkZChpbWFnZUlELCBiYWNraW5nU3Rv
cmUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiBzdXJmYWNlKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2UpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VCYWNraW5n
cy5jb250YWlucyhpbWFnZUlEKSk7CiAgICAgSW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBpdCA9
IG1faW1hZ2VCYWNraW5ncy5maW5kKGltYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRl
cmVyLmgKaW5kZXggYjA4MWM1ZTE2OTNhMjFjODcxMzg5MDM1NzE0NjhmNDc3Yzg5MDY2ZC4uNzJi
NTA1OTc2NDBlMGI3NzllYWNjYmQ3ZTg5MTc3MWI2ZDllZjc3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxl
U3VyZmFjZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCiAj
aW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5mby5oIgpAQCAtNTUsOSArNTUsOSBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFRpbGVVcGRhdGUgewogICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJl
Y3Q7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWFibGVTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiBzdXJmYWNlOwogICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQ7Ci0gICAgICAg
IFRpbGVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB0aWxlLCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG5ld1N1cmZhY2Us
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdPZmZzZXQpCisgICAgICAgIFRpbGVVcGRhdGUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0
aWxlLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbmV3U3VyZmFjZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG5ld09mZnNldCkKICAgICAgICAgICAgIDogc291cmNlUmVjdChzb3Vy
Y2UpCiAgICAgICAgICAgICAsIHRpbGVSZWN0KHRpbGUpCiAgICAgICAgICAgICAsIHN1cmZhY2Uo
bmV3U3VyZmFjZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVU
aWxlKFdlYkxheWVySUQsIGludCwgY29uc3QgVGlsZVVwZGF0ZSYpOwogICAgIHZvaWQgZmx1c2hM
YXllckNoYW5nZXMoKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+KTsKKyAgICB2b2lkIHVw
ZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENv
b3JkaW5hdGVkU3VyZmFjZT4pOwogICAgIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHNldExheWVyQW5pbWF0aW9ucyhX
ZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggYzc4MDhiMmIyY2MyZmQxOTg4OWQwMzZkZjRhYWZjMmEwMmZjMmIyOS4uNWU1
NGNkOTg5Y2E3M2JhZjNkNmI5Yjk4YTk2OTZkOTE2NzlmMWM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03
MjUsNyArNzI1LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEkKICAgICBpZiAoIW1fY29vcmRp
bmF0b3IpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4oKTsKIAotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6
ZSwgY29udGVudHNPcGFxdWUoKSA/IDAgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEs
IGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRV
cGRhdGUoc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjp0b0FscGhhKCFjb250ZW50c09wYXF1ZSgp
KSwgYXRsYXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
cmVhdGVUaWxlKGludCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggYTkwM2U2NTE5
OGE4MDgwNWNkZGVkYWRmYzllNjdkMTE5ZTZhZDg4MS4uYjYxNGM1NDE5MzJlYjNjZmEzMjA5MTc3
YTE1MmViM2M0MDA1NTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRC
YWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC03NSw3ICs3NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpID0gMDsK
LSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkFscGhhLCBpbnQmIGF0
bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCmluZGV4IDU1
Y2E5ZGE3YjU5NGNiNjk4Zjc4YTZjOTBhYjE0MTk0ZjlhMWIxYjEuLmRlNGIyMGVmMjIyYjJhNWI1
NjczOWMyMmE2ZTkyM2QxYTAyZDMwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTEwMywxMSArMTAzLDggQEAg
dm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShtX2ltYWdlLT5zaXpl
KCksIG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBTaGFyZWFibGVCaXRtYXA6OlN1
cHBvcnRzQWxwaGEgOiBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6
OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKTsKLSAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBT
aGFyZWFibGVTdXJmYWNlOjpIYW5kbGUoKSk7Ci0KLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRl
SGFuZGxlKCptX2hhbmRsZSkpIHsKLSAgICAgICAgcmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOwor
ICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUo
KSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjp0b0FscGhhKG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0Fs
cGhhKCkpKTsKKyAgICBpZiAoIW1fc3VyZmFjZSkgewogICAgICAgICBtX2lzRGlydHkgPSBmYWxz
ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExOCw3ICsxMTUsNyBAQCB2b2lkIENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUoKQogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1f
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKLSAgICBtX2Nvb3JkaW5hdG9y
LT51cGRhdGVJbWFnZUJhY2tpbmcoaWQoKSwgKm1faGFuZGxlKTsKKyAgICBtX2Nvb3JkaW5hdG9y
LT51cGRhdGVJbWFnZUJhY2tpbmcoaWQoKSwgbV9zdXJmYWNlKTsKICAgICBtX2lzRGlydHkgPSBm
YWxzZTsKIH0KIApAQCAtMTI2LDcgKzEyMyw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQoKQogewogICAgIC8vIFdlIG11c3Qga2VlcCBtX3N1
cmZhY2UgdW50aWwgVUkgUHJvY2VzcyByZWFkcyBtX3N1cmZhY2UuCiAgICAgLy8gSWYgbV9zdXJm
YWNlIGV4aXN0cywgaXQgd2FzIGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHVwZGF0ZS4KLSAgICBt
X2hhbmRsZS5jbGVhcigpOwogICAgIG1fc3VyZmFjZS5jbGVhcigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEltYWdlQmFja2luZy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCA3
NjI2NmE0YjQxNDBiOTQzN2IxMTcyNTM3NTcwYTdmMjAwNzkxMGRkLi40ZDQ2YjU5OGFhODY1ZGRk
MzhhZmEwNGRmYTRjM2RhZTA3ZWI0ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTI4LDggKzI4LDggQEAKICNkZWZp
bmUgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdfaAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkltYWdlLmgi
Ci0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUlu
Zm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGNsYXNzIENvb3JkaW5hdG9yIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
SW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1
cmZhY2U6OkhhbmRsZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVu
dHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICB9
OwpAQCAtODAsOCArODAsNyBAQCBwcml2YXRlOgogICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQgbV9pZDsKICAgICBWZWN0b3I8SG9zdCo+IG1faG9zdHM7CiAKLSAgICBSZWZQdHI8U2hhcmVh
YmxlU3VyZmFjZT4gbV9zdXJmYWNlOwotICAgIE93blB0cjxTaGFyZWFibGVTdXJmYWNlOjpIYW5k
bGU+IG1faGFuZGxlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsK
IAogICAgIFdlYkNvcmU6OlRpbWVyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBtX2NsZWFyQ29u
dGVudHNUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDE3NmRjZjZlMzM2ODllN2YzYmRhYzU1MDNlY2YyNWI3Zjgx
NDI4M2YuLjE4NGY1ZTRhOWU2MjNlZTM3ZjMzMmJkZDlhYjhiOTc5NjcyMTQwZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAg
LTEsNiArMSw3IEBACiAgICAgLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDEyIENv
bXBhbnkgMTAwLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYg
KzMyLDcgQEAKIAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkNvb3Jk
aW5hdGVkU3VyZmFjZUluZm8uaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGluYXRvclBy
b3h5TWVzc2FnZXMuaCIKQEAgLTU3MCwxMCArNTcyLDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdl
SUQpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpDcmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJRCkpOwogfQogCi12b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBp
bWFnZUlELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRl
ZFN1cmZhY2UpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6VXBkYXRlSW1hZ2VC
YWNraW5nKGltYWdlSUQsIGhhbmRsZSkpOworICAgIENvb3JkaW5hdGVkU3VyZmFjZUluZm8gc3Vy
ZmFjZUluZm87CisgICAgc3VyZmFjZUluZm8uY29vcmRpbmF0ZWRTdXJmYWNlID0gY29vcmRpbmF0
ZWRTdXJmYWNlOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eTo6VXBkYXRlSW1hZ2VCYWNraW5nKGltYWdlSUQsIHN1cmZhY2VJbmZvKSk7CiB9
CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMo
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQpAQCAtNjU4LDkgKzY2MiwxMSBAQCB2
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZW1vdmVUaWxlKFdlYkxheWVySUQgbGF5ZXJJRCwg
aW50IHRpbGVJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXllcklELCB0aWxlSUQpKTsKIH0KIAot
dm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQs
IGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVD
b29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCiB7Ci0gICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVVcGRhdGVBdGxh
cyhhdGxhc0lELCBoYW5kbGUpKTsKKyAgICBDb29yZGluYXRlZFN1cmZhY2VJbmZvIHN1cmZhY2VJ
bmZvOworICAgIHN1cmZhY2VJbmZvLmNvb3JkaW5hdGVkU3VyZmFjZSA9IGNvb3JkaW5hdGVkU3Vy
ZmFjZTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OkNyZWF0ZVVwZGF0ZUF0bGFzKGF0bGFzSUQsIHN1cmZhY2VJbmZvKSk7CiB9CiAKIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQpA
QCAtNzY0LDEyICs3NzAsMTIgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cHVyZ2VCYWNr
aW5nU3RvcmVzKCkKICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIoKTsKIH0KIAotUGFzc093blB0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNvb3JkaW5hdG9yOjpiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFw
OjpGbGFncyBmbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYgb2Zmc2V0KQor
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IExheWVyVHJlZUNvb3JkaW5hdG9yOjpiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpBbHBo
YSBhbHBoYSwgaW50JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIE93blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dDsKKyAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBVcGRhdGVBdGxhcyog
YXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmIChhdGxhcy0+Zmxh
Z3MoKSA9PSBmbGFncykgeworICAgICAgICBpZiAoYXRsYXMtPmFscGhhKCkgPT0gYWxwaGEpIHsK
ICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBhdmFp
bGFibGUgYnVmZmVyIHNwYWNlLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMt
PmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwog
ICAgICAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkKQEAgLTc3OCw3ICs3ODQsNyBAQCBQYXNz
T3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJl
Z2luQ29udGVudFVwZGF0ZShjbwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBpbnQgU2NyYXRj
aEJ1ZmZlckRpbWVuc2lvbiA9IDEwMjQ7IC8vIFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3by4KLSAg
ICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKGFkb3B0UHRyKG5ldyBVcGRhdGVBdGxhcyh0aGlzLCBT
Y3JhdGNoQnVmZmVyRGltZW5zaW9uLCBmbGFncykpKTsKKyAgICBtX3VwZGF0ZUF0bGFzZXMuYXBw
ZW5kKGFkb3B0UHRyKG5ldyBVcGRhdGVBdGxhcyh0aGlzLCBTY3JhdGNoQnVmZmVyRGltZW5zaW9u
LCBhbHBoYSkpKTsKICAgICBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXMoKTsKICAgICBy
ZXR1cm4gbV91cGRhdGVBdGxhc2VzLmxhc3QoKS0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVm
ZmVyKGF0bGFzSUQsIHNpemUsIG9mZnNldCk7CiB9CkBAIC04MDAsNyArODA2LDcgQEAgdm9pZCBM
YXllclRyZWVDb29yZGluYXRvcjo6cmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQoVGlt
ZXI8TGF5ZXJUcmVlQ29vcmQKICAgICAgICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVB
dGxhc2VzW2ldLmdldCgpOwogICAgICAgICBpZiAoIWF0bGFzLT5pc0luVXNlKCkpCiAgICAgICAg
ICAgICBhdGxhcy0+YWRkVGltZUluYWN0aXZlKFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lcklu
dGVydmFsKTsKLSAgICAgICAgYm9vbCB1c2FibGVGb3JOb25Db21wb3NpdGVkQ29udGVudCA9IGF0
bGFzLT5mbGFncygpID09IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFnczsKKyAgICAgICAgYm9vbCB1
c2FibGVGb3JOb25Db21wb3NpdGVkQ29udGVudCA9ICFDb29yZGluYXRlZFN1cmZhY2U6OnN1cHBv
cnRzQWxwaGEoYXRsYXMtPmFscGhhKCkpOwogICAgICAgICBpZiAoYXRsYXMtPmlzSW5hY3RpdmUo
KSkgewogICAgICAgICAgICAgaWYgKCFmb3VuZEFjdGl2ZUF0bGFzRm9yTm9uQ29tcG9zaXRlZENv
bnRlbnQgJiYgIWF0bGFzVG9LZWVwQW55d2F5ICYmIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250
ZW50KQogICAgICAgICAgICAgICAgIGF0bGFzVG9LZWVwQW55d2F5ID0gbV91cGRhdGVBdGxhc2Vz
W2ldLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5oCmluZGV4IGYwNGI1MDgyMWZkYzhmMWEyZmEzMjc5MzUwN2FmNjA2NGFjMmM3
NTkuLmJiNzM3ZDE0MTM4OTg3NDFlM2VjNzk2N2YxYmFhNDJmNzU0ZDQxYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtMzgsNiAr
MzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNl
OwogY2xhc3MgVXBkYXRlSW5mbzsKIGNsYXNzIFdlYlBhZ2U7CiAKQEAgLTEwMywxMCArMTA0LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygp
OwogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVn
aW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6
OkZsYWdzLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkFscGhhLCBpbnQmIGF0
bGFzSUQsIFdlYkNvcmU6OkludFBvaW50Jik7CiAKICAgICAvLyBVcGRhdGVBdGxhc0NsaWVudAot
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hh
cmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0
bGFzKGludCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCk7CiAKICNpZiBFTkFCTEUo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCkBAIC0xMjUsNyArMTI2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDb29yZGluYXRvcgogICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJ
RCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1VwZGF0ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5jcHAKaW5kZXggOWE1NDE4ZjFlYWFhMzQ4N2I0
ZTQyNGI5YTk1NjIwMjA4MzA5NzU0ZS4uMTE0OGY0NmExYmI2NDYxMzkxNzFmYzNkNDkzNThkYjY4
NmRiNTBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Vw
ZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVXBk
YXRlQXRsYXMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChD
KSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCiAKICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDI3ICszMSwyMiBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVVwZGF0
ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50LCBpbnQgZGltZW5z
aW9uLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQorVXBkYXRlQXRsYXM6OlVwZGF0ZUF0
bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIENvb3JkaW5hdGVk
U3VyZmFjZTo6QWxwaGEgYWxwaGEpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2Zs
YWdzKGZsYWdzKQogICAgICwgbV9pbmFjdGl2aXR5SW5TZWNvbmRzKDApCi0gICAgLCBtX2lzVmFp
bGQodHJ1ZSkKIHsKICAgICBzdGF0aWMgaW50IG5leHRJRCA9IDA7CiAgICAgbV9JRCA9ICsrbmV4
dElEOwotICAgIEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNpemUoZGltZW5zaW9u
LCBkaW1lbnNpb24pKTsKLSAgICBtX3N1cmZhY2UgPSBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUo
c2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKTsK
IAotICAgIGlmICghbV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUobV9oYW5kbGUpKSB7Ci0gICAgICAg
IG1faXNWYWlsZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fY2xpZW50
LT5jcmVhdGVVcGRhdGVBdGxhcyhtX0lELCBtX2hhbmRsZSk7CisgICAgSW50U2l6ZSBzaXplID0g
bmV4dFBvd2VyT2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikpOworICAgIG1fc3Vy
ZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGFscGhhKTsKKyAgICBpZiAo
bV9zdXJmYWNlKQorICAgICAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9z
dXJmYWNlKTsKIH0KIAogVXBkYXRlQXRsYXM6On5VcGRhdGVBdGxhcygpCiB7Ci0gICAgaWYgKG1f
aXNWYWlsZCkKKyAgICBpZiAobV9zdXJmYWNlKQogICAgICAgICBtX2NsaWVudC0+cmVtb3ZlVXBk
YXRlQXRsYXMobV9JRCk7CiB9CiAKQEAgLTc3LDcgKzczLDcgQEAgUGFzc093blB0cjxHcmFwaGlj
c0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50
JiBhdGwKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4oKTsKIAotICAgIGlmICghbV9pc1ZhaWxkKQorICAgIGlmICghbV9z
dXJmYWNlKQogICAgICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CiAK
ICAgICBhdGxhc0lEID0gbV9JRDsKQEAgLTg2LDcgKzgyLDcgQEAgUGFzc093blB0cjxHcmFwaGlj
c0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50
JiBhdGwKICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgT3duUHRyPEdyYXBoaWNz
Q29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQocmVjdCk7CiAKLSAgICBpZiAoZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSkgeworICAgIGlmIChDb29yZGluYXRlZFN1cmZhY2U6OnN1cHBvcnRzQWxwaGEoYWxwaGEo
KSkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlQ29weSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBzaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlU291cmNlT3Zlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9VcGRhdGVBdGxhcy5oCmluZGV4IDdjZWZlOWM5Nzk0MjE1ODYyNzNmNGUwY2QzMDlhMjAy
MzRjNzFhZDEuLjY4MTYyZThlNjEzMjZjN2QyOWNhNDRmYzk0MmU2ZmZmODlhYmRjYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9VcGRhdGVBdGxhcy5oCkBAIC0x
LDUgKzEsNiBAQAogLyoKICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAw
LCBJbmMuCiAKICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIyLDggQEAKICNkZWZpbmUgVXBkYXRlQXRs
YXNfaAogCiAjaW5jbHVkZSAiQXJlYUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVk
U3VyZmFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJm
YWNlLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zNCwxNCArMzUsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFVwZGF0
ZUF0bGFzQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRs
YXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIFBhc3NSZWZQdHI8
Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVB
dGxhcyhpbnQgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgVXBkYXRlQXRsYXMgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBVcGRhdGVBdGxh
cyhVcGRhdGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MpOworICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpBbHBoYSk7CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBp
bmxpbmUgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5z
aXplKCk7IH0KQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBudWxs
IHBvaW50ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KICAgICBQYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVy
KGludCYgYXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkludFBvaW50
JiBvZmZzZXQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFyZWFibGVCaXRt
YXA6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIENvb3JkaW5h
dGVkU3VyZmFjZTo6QWxwaGEgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPmFscGhh
KCk7IH0KIAogICAgIHZvaWQgYWRkVGltZUluYWN0aXZlKGRvdWJsZSBzZWNvbmRzKQogICAgIHsK
QEAgLTY5LDEyICs3MCw5IEBAIHByaXZhdGU6CiBwcml2YXRlOgogICAgIFVwZGF0ZUF0bGFzQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8R2VuZXJhbEFyZWFBbGxvY2F0b3I+IG1fYXJlYUFs
bG9jYXRvcjsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIG1fZmxhZ3M7Ci0gICAgUmVmUHRy
PFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKLSAgICBTaGFyZWFibGVTdXJmYWNlOjpIYW5k
bGUgbV9oYW5kbGU7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwog
ICAgIGRvdWJsZSBtX2luYWN0aXZpdHlJblNlY29uZHM7CiAgICAgaW50IG1fSUQ7Ci0gICAgYm9v
bCBtX2lzVmFpbGQ7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177979</attachid>
            <date>2012-12-06 02:28:34 -0800</date>
            <delta_ts>2012-12-06 23:55:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121206192555.patch</filename>
            <type>text/plain</type>
            <size>69626</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2MyNmFiMDk3MDVkNTVi
OWExNmUyNzlhMjM5ZWU3ODRhNjFhMjA4Ny4uNjY4Yjg1NjA0MTNiOGQ2OWZjN2FkNjRkZDUyYzdm
YTE4OTJmY2M5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxMi0xMi0wNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogQWRkIENvb3JkaW5hdGVkU3VyZmFjZSB0byByZW1vdmUgdGhlIGRlcGVu
ZGVuY3kgb2YgU2hhcmVhYmxlU3VyZmFjZSBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJuYWwgUmV2
aWV3IGJ5IEd3YW5nIFlvb24gSHdhbmcgYW5kIEphZSBIeXVuIFBhcmsuCisKKyAgICAgICAgSXQg
aXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3Mg
b24gV0sxLgorCisgICAgICAgIEN1cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLCBD
b29yZGluYXRlZFRpbGUgYW5kCisgICAgICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGRpcmVj
dGx5IHVzZSBTaGFyZWFibGVTdXJmYWNlLiBTaGFyZWFibGVTdXJmYWNlIHdhcworICAgICAgICBp
bXBsZW1lbnRlZCB0byBzaGFyZSBhbiBpbWFnZSBiZXR3ZWVuIHByb2Nlc3NlcyBhcyB3ZWxsIGFz
IHBsYWNlZCBpbiBXSzIuCisgICAgICAgIFdlIHdhbnQgdGhlbSB0byBub3QgZGVwZW5kIG9uIFNo
YXJlYWJsZVN1cmZhY2UgdG8gbW92ZSB0aGVtIGludG8gV2ViQ29yZS4gU28KKyAgICAgICAgdGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjbGFzczogQ29vcmRpbmF0ZWRTdXJmYWNlLCB0byBiZSB1
c2VkIGFzIGEKKyAgICAgICAgZHJhd2luZyBzdXJmYWNlIGZvciBDb29yZGluYXRlZCBHcmFwaGlj
cy4KKworICAgICAgICBXaGVuIHdlIG1vdmUgc29tZSBjbGFzc2VzIG9mIENvb3JkaW5hdGVkIEdy
YXBoaWNzIGludG8gV2ViQ29yZSwKKyAgICAgICAgQ29vcmRpbmF0ZWRTdXJmYWNlLmggd2lsbCBi
ZSBtb3ZlZCB0b28sIGJ1dCBDb29yZGluYXRlZFNoYXJlYWJsZVN1cmZhY2UKKyAgICAgICAgd2ls
bCBiZSBsZWZ0IGluIFdLMi4KKworICAgICAgICBDcmVhdGUgYSBDb29yZGluYXRlZFN1cmZhY2Ug
Y2xhc3MgdGhhdCBjYW4gYmUgdGhlIGJhc2UgY2xhc3MgYm90aCBmb3IKKyAgICAgICAgdGhlIGN1
cnJlbnQgSVBDLWJhc2VkIFNoYXJlYWJsZVN1cmZhY2UsIHJlbmFtZWQgaGVyZSB0bworICAgICAg
ICBXZWJDb29yZGluYXRlZFN1cmZhY2UsIGFuZCB0byBhIGZ1dHVyZSB0aHJlYWQtYmFzZWQgc3Vy
ZmFjZQorICAgICAgICBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKGZvcndh
cmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKToKKyAgICAgICAgICBUaGlzIHBhdGNoIG5lZWRz
IHRvIHVzZSB0eXBlZGVmIGFzIGFuIGFyZ3VtZW50IG9mIG1lc3NhZ2VzLCBzbyB0aGlzIHBhdGNo
IGNoYW5nZXMKKyAgICAgICAgICBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyBmdW5j
dGlvbiB0byBpbmNsdWRlIGhlYWRlcnMgZm9yIHR5cGVzIGluIHNwZWNpYWxfY2FzZXMgc2V0LAor
ICAgICAgICAgIG5vdCB0byBtYWtlIGZvcndhcmQgZGVjbGFyYXRpb25zLgorICAgICAgICAoaGVh
ZGVyc19mb3JfdHlwZSk6CisgICAgICAgICAgQ29vcmRpbmF0ZWRTdXJmYWNlUmVmJ3MgaGVhZGVy
IG5lZWRzIHRvIGJlIHNwZWNpYWwgY2FzZWQgdG8KKyAgICAgICAgICBDb29yZGluYXRlZFN1cmZh
Y2UuaC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgor
ICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRTdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjp+Q29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpzdXBwb3J0c0FscGhhKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjp0b0ZsYWdzKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6OkhhbmRsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjp+V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVI
YW5kbGUpOgorICAgICAgICAgIFRoaXMgbWV0aG9kIGlzIG9ubHkgdXNlZCBieSB0aGUgY3JlYXRl
IG1ldGhvZCwgc28gdGhpcyBtZXRob2QgaXMKKyAgICAgICAgICBwcml2YXRlIG5vdy4gV2UgZG9u
J3QgaGF2ZSB0aGUgcmVxdWlyZW1lbnQgb2YgY3JlYXRpbmcgbWFueSBoYW5kbGVzLgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmhhbmRsZSk6CisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6aXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFj
ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAg
ICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlSW1hZ2VCYWNr
aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvclByb3h5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVl
UmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVw
ZGF0ZSk6CisgICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250
ZW50VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmg6CisgICAgICAgIChDb29yZGluYXRvcik6CisgICAgICAgIChDb29yZGluYXRlZElt
YWdlQmFja2luZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJl
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChMYXllclRy
ZWVDb29yZGluYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6
VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6flVwZGF0ZUF0bGFz
KToKKyAgICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJs
ZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvVXBkYXRlQXRsYXMuaDoKKyAgICAgICAgKFVwZGF0ZUF0bGFzQ2xpZW50KToKKyAgICAgICAg
KFVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6VXBkYXRlQXRsYXM6OnN1cHBvcnRzQWxw
aGEpOgorCiAyMDEyLTEyLTA1ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAu
bmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBSZW9yZGVyIG1lc3NhZ2VzIHRv
IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMmY0YjNj
NmM1Zjc2NzM4OTFkODM4Mjk0MWNhMmEzMDQwY2RjYjQ1OC4uMmI4ZTkxMDE1MzU3MjQwYmVjN2Mz
YmQ2ZTUzYTJkNzA1MTczMzhhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE1NCw3ICsxNTQs
NiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5j
cHAKICAgICBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogICAgIFNoYXJlZC9TaGFyZWFibGVCaXRt
YXAuY3BwCi0gICAgU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCiAgICAgU2hhcmVkL1N0YXRp
c3RpY3NEYXRhLmNwcAogICAgIFNoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAKICAgICBTaGFy
ZWQvVXBkYXRlSW5mby5jcHAKQEAgLTIxOSw2ICsyMTgsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAogCiAgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtUHJveHkuY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CmluZGV4IDBjOWI5NDEx
NjdiYjBlMGEwZGNiZDYyOGQwYzEzZWZhMWJmMTJjNTUuLmM0YjU0MDBiMWE3YjI3MTE2OTliZTQx
MjIyNzdlNjEwOTMxZmYxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Vi
a2l0Mi9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVz
c2FnZXMucHkKQEAgLTI0OSw2ICsyNDksMTUgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2Fu
ZF9oZWFkZXJzKHJlY2VpdmVyKToKIAogICAgICAgICBzcGxpdCA9IHR5cGUuc3BsaXQoJzo6JykK
IAorICAgICAgICBzcGVjaWFsX2Nhc2VzID0gZnJvemVuc2V0KFsKKyAgICAgICAgICAgICdXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZVJlZicsCisgICAgICAgIF0pCisKKyAgICAgICAgaWYgdHlw
ZSBpbiBzcGVjaWFsX2Nhc2VzOgorICAgICAgICAgICAgIyBEb24ndCBmb3J3YXJkIGRlY2xhcmUg
Y2xhc3MuIEZvciBleGFtcGxlLCB0eXBlZGVmLgorICAgICAgICAgICAgaGVhZGVycy51cGRhdGUo
aGVhZGVyc19mb3JfdHlwZSh0eXBlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAg
aWYgbGVuKHNwbGl0KSA9PSAyOgogICAgICAgICAgICAgbmFtZXNwYWNlID0gc3BsaXRbMF0KICAg
ICAgICAgICAgIGlubmVyX3R5cGUgPSBzcGxpdFsxXQpAQCAtMzk2LDYgKzQwNSw3IEBAIGRlZiBo
ZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luSW5mbyc6IFsn
PFdlYkNvcmUvUGx1Z2luRGF0YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0JzogWyc8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5o
PiddLAorICAgICAgICAnV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2VSZWYnOiBbJyJDb29yZGlu
YXRlZFN1cmZhY2UuaCInXSwKICAgICAgICAgJ1dlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXInOiBbXSwKICAgICAgICAgJ1dlYktpdDo6V2ViQ29udGV4dFVzZXJNZXNzYWdl
RW5jb2Rlcic6IFtdLAogICAgICAgICAnV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQnOiBbJyJXZWJF
dmVudC5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggYTgwMjdmZGI5NWNiMzYwNmY2YWM2MWUyMmM5ZDg5MmYyYzc4
NGVjMC4uYWE5NDZiNWFkZGE0MDE5MTZiOGMyNmQyYjBmZDhkZWE2M2U5MzcwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29k
ZXJzLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CkBAIC03MSwxMiArNzIsMjYgQEAKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotI2VuZGlm
CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAordm9pZCBBcmd1bWVudENvZGVyPENvb3JkaW5hdGVk
U3VyZmFjZVJlZj46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENvb3Jk
aW5hdGVkU3VyZmFjZVJlZiYgc3VyZmFjZVJlZikKK3sKKyAgICBXZWJDb29yZGluYXRlZFN1cmZh
Y2UqIHNoYXJlYWJsZVN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2Uq
PihzdXJmYWNlUmVmLmdldCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZShzaGFyZWFibGVTdXJmYWNl
LT5oYW5kbGUoKSk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRlZFN1cmZhY2VS
ZWY+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBDb29yZGluYXRlZFN1cmZhY2VS
ZWYmIHN1cmZhY2VSZWYpCit7CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFu
ZGxlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHN1cmZhY2VSZWYgPSBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZSho
YW5kbGUpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQ
b2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRmxvYXRQb2lu
dDNEJiBmbG9hdFBvaW50M0QpCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50
M0Q+OjplbmNvZGUoZW5jb2RlciwgZmxvYXRQb2ludDNEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggYmJhNDI3ZDAxYTkxNGIx
YjNmYjliOTkxMWE2MjYxMzVlMDljMWM3ZC4uYjM2ODhjNjYxOGVkYzcyMWNhOTdhYjRkMTk0NzAz
OGIzOTExMTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkU3VyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50M0Q7
CkBAIC01NCw2ICs1NSwxMSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlVG9rZW47CiAKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJLaXQ6
OkNvb3JkaW5hdGVkU3VyZmFjZVJlZj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXImLCBjb25zdCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZVJlZiYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3Vy
ZmFjZVJlZiYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGbG9hdFBvaW50M0Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTVjNzA0NTE1MmIzNDkxODM0NmM0NjY2MzdiZGEw
ZmQ1YTg0MTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkU3VyZmFjZV9oCisjZGVmaW5lIENv
b3JkaW5hdGVkU3VyZmFjZV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENvb3JkaW5hdGVk
U3VyZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+
IHsKK3B1YmxpYzoKKyAgICBlbnVtIEZsYWcgeworICAgICAgICBOb0ZsYWdzID0gMCwKKyAgICAg
ICAgU3VwcG9ydHNBbHBoYSA9IDEgPDwgMCwKKyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQg
RmxhZ3M7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworCisgICAgdmlydHVhbCB+Q29vcmRp
bmF0ZWRTdXJmYWNlKCkgeyB9CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FscGhhKEZsYWdz
IGZsYWdzKSB7IHJldHVybiBmbGFncyAmIFN1cHBvcnRzQWxwaGE7IH0KKyAgICBzdGF0aWMgYm9v
bCB0b0ZsYWdzKGJvb2wgc3VwcG9ydEFscGhhKSB7IHJldHVybiBzdXBwb3J0QWxwaGEgPyBTdXBw
b3J0c0FscGhhIDogTm9GbGFnczsgfQorCisgICAgYm9vbCBzdXBwb3J0c0FscGhhKCkgeyByZXR1
cm4gZmxhZ3MoKSAmIFN1cHBvcnRzQWxwaGE7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBj
b250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4K
KyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVH
cmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKworI2lmIFVTRShU
RVhUVVJFX01BUFBFUikKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRy
PFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKKyNlbmRpZgorCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCBGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKK307CisKK3R5
cGVkZWYgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlUmVmOwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisjZW5kaWYgLy8gQ29vcmRpbmF0ZWRT
dXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkxNGI1MmE0MTY3NzcyOTM2ZmFmMWYwZWNlOGJjN2FmMWUyNjA1NTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgorIENvcHlyaWdodCAoQykgMjAx
MiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmln
aHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIgor
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3Jh
cGhpY3NBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NTdXJmYWNlVG9rZW4uaD4KKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyR0wuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpIYW5k
bGUoKQoreworfQorCit2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIu
ZW5jb2RlKG1fc2l6ZSk7CisgICAgZW5jb2Rlci5lbmNvZGUobV9mbGFncyk7CisjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCisgICAgZW5jb2Rlci5lbmNvZGUobV9ncmFwaGljc1N1cmZhY2VUb2tl
bik7CisgICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKKyAgICBlbmNvZGVyLmVuY29kZShtX2JpdG1hcEhhbmRsZSk7Cit9CisK
K2Jvb2wgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGhhbmRsZS5tX3NpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFu
ZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9iaXRt
YXBIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MgZmxhZ3MpCit7CisgICAgcmV0dXJuIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNp
emUsIGZsYWdzKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVk
U3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCit7CisgICAgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZT4gc3VyZmFjZTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBzdXJmYWNlID0gY3Jl
YXRlV2l0aFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpOworI2VuZGlmCisKKyAgICBpZiAoIXN1cmZhY2Up
CisgICAgICAgIHN1cmZhY2UgPSBjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKHNpemUsIHN1cHBvcnRzQWxwaGEoZmxhZ3MpID8gU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhIDogU2hhcmVhYmxlQml0bWFwOjpOb0ZsYWdzKSk7CisKKyAgICBp
ZiAoIXN1cmZhY2UtPmNyZWF0ZUhhbmRsZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiBzdXJmYWNlLnJlbGVhc2UoKTsKK30KKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
UGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNl
OjpGbGFncyBmbGFncykKK3sKKyAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHN1cmZhY2VGbGFn
cyA9CisgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2FyZVdyaXRlCisgICAg
ICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0NvcHlUb1RleHR1cmUKKyAgICAgICAgfCBH
cmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKKworICAgIGlmIChzdXBwb3J0c0FscGhh
KGZsYWdzKSkKKyAgICAgICAgc3VyZmFjZUZsYWdzIHw9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9y
dHNBbHBoYTsKKworICAgIC8vIFRoaXMgbWlnaHQgcmV0dXJuIG51bGwsIGlmIHRoZSBzeXN0ZW0g
aXMgdW5hYmxlIHRvIHByb3ZpZGUgYSBuZXcgZ3JhcGhpY3Mgc3VyZmFjZS4KKyAgICAvLyBJbiB0
aGF0IGNhc2UsIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0dXJuIG51bGwgYW5kIGFsbG93IGZhbGxp
bmcgYmFjayB0byBTaGFyZWFibGVCaXRtYXAuCisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHN1cmZhY2VGbGFncyk7Cisg
ICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChzdXJmYWNl
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBm
bGFncywgc3VyZmFjZS5yZWxlYXNlKCkpKTsKK30KKyNlbmRpZgorCitQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBBU1NFUlQobV9wdXJwb3NlID09
IFByb2R1Y2VyKTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoaXNCYWNrZWRC
eUdyYXBoaWNzU3VyZmFjZSgpKQorICAgICAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPmJl
Z2luUGFpbnQocmVjdCwgMCAvKiBXcml0ZSB3aXRob3V0IHJldGFpbmluZyBwaXhlbHMqLyk7Cisj
ZW5kaWYKKworICAgIEFTU0VSVChtX2JpdG1hcCk7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9iaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwor
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChyZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQtPnRy
YW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOworICAgIHJldHVybiBncmFwaGljc0NvbnRleHQu
cmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRT
dXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBm
bGFncywgYml0bWFwKSk7Cit9CisKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0
ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Mg
ZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCisgICAgOiBtX3NpemUo
c2l6ZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2JpdG1hcChiaXRtYXApCisgICAg
LCBtX3B1cnBvc2UoQ29uc3VtZXIpCit7Cit9CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
K1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQorICAgIDogbV9zaXplKHNp
emUpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9ncmFwaGljc1N1cmZhY2Uoc3VyZmFj
ZSkKKyAgICAsIG1fcHVycG9zZShDb25zdW1lcikKK3sKK30KKworUGFzc1JlZlB0cjxXZWJDb29y
ZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBzdXJmYWNlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlKSk7Cit9CisjZW5kaWYKKworV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjp+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKCkKK3sKK30KKworUGFz
c1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQoreworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
ICAgIGlmIChoYW5kbGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPSAwOworICAgICAgICBpZiAo
c3VwcG9ydHNBbHBoYShoYW5kbGUubV9mbGFncykpCisgICAgICAgICAgICBzdXJmYWNlRmxhZ3Mg
fD0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0FscGhhOworICAgICAgICBSZWZQdHI8R3JhcGhp
Y3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoaGFuZGxlLm1fc2l6
ZSwgc3VyZmFjZUZsYWdzLCBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbik7CisgICAgICAg
IGlmIChzdXJmYWNlKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGlu
YXRlZFN1cmZhY2UoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPihzdXJmYWNlKSkpOworICAgIH0KKyNlbmRpZgorCisgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLm1f
Yml0bWFwSGFuZGxlKTsKKyAgICBpZiAoIWJpdG1hcCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBiaXRtYXAucmVs
ZWFzZSgpKTsKK30KKworYm9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUhhbmRsZSgp
Cit7CisgICAgbV9wdXJwb3NlID0gUHJvZHVjZXI7CisgICAgbV9oYW5kbGUubV9zaXplID0gbV9z
aXplOworICAgIG1faGFuZGxlLm1fZmxhZ3MgPSBtX2ZsYWdzOworCisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCisgICAgbV9oYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhp
Y3NTdXJmYWNlID8gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCkgOiBHcmFwaGljc1N1
cmZhY2VUb2tlbigpOworICAgIGlmIChtX2hhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICBpZiAoIW1fYml0bWFw
LT5jcmVhdGVIYW5kbGUobV9oYW5kbGUubV9iaXRtYXBIYW5kbGUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIFVTRShURVhUVVJFX01BUFBFUikK
K3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldCwg
Y29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkKK3sKKyAgICBBU1NFUlQobV9wdXJwb3NlID09
IENvbnN1bWVyKTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZShwYXNzVGV4dHVy
ZSk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoaXNCYWNrZWRCeUdyYXBo
aWNzU3VyZmFjZSgpKSB7CisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVH
TCA9IHRvQml0bWFwVGV4dHVyZUdMKHRleHR1cmUuZ2V0KCkpOworICAgICAgICBpZiAodGV4dHVy
ZUdMKSB7CisgICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7
CisgICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlVGFyZ2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJl
VGFyZ2V0KCk7CisgICAgICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIHRleHR1cmVJRCwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IG1fZ3JhcGhpY3NTdXJmYWNlLT5jcmVhdGVSZWFkT25seUltYWdlKEludFJlY3Qoc291cmNlT2Zm
c2V0LCB0YXJnZXQuc2l6ZSgpKSk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGlt
YWdlLmdldCgpLCB0YXJnZXQsIEludFBvaW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0
ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VS
VChtX2JpdG1hcCk7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fYml0bWFwLT5jcmVhdGVJ
bWFnZSgpOworICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQs
IHNvdXJjZU9mZnNldCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFn
ZURhdGEpOworICAgIHJldHVybjsKK30KKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIpCisK
K2NvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmhhbmRsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcHVycG9zZSA9PSBQcm9kdWNlcik7
CisgICAgcmV0dXJuIG1faGFuZGxlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKyNlbmRp
ZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQyMWVjODNlYTAwYWU2ZGRkNmUzNjAwMWM2NmYyOWQwMWY3MmEx
M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyBD
b3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisKKyBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKyNkZWZpbmUg
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
KyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1ZGUgIkdyYXBoaWNzU3Vy
ZmFjZS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJpdG1hcFRleHR1
cmU7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJDb29yZGluYXRlZFN1cmZhY2UgOiBwdWJsaWMgQ29vcmRpbmF0ZWRTdXJmYWNlIHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBIYW5kbGUgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShIYW5kbGUpOworICAgIHB1YmxpYzoKKyAgICAgICAgSGFuZGxlKCk7CisKKyAgICAgICAgdm9p
ZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHN0YXRp
YyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBIYW5kbGUmKTsKKworI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VU
b2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJm
YWNlVG9rZW47IH0KKyNlbmRpZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTsKKyAgICAgICAgbXV0YWJsZSBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBtX2JpdG1hcEhhbmRsZTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICAg
ICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsK
KyNlbmRpZgorICAgICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKKyAgICAgICAgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBtX2ZsYWdzOworICAgIH07CisKKyAgICAvLyBDcmVhdGUgYSBu
ZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLCBhbmQgYWxsb2NhdGUgZWl0aGVyIGEgR3JhcGhpY3NT
dXJmYWNlIG9yIGEgU2hhcmVhYmxlQml0bWFwIGFzIGJhY2tpbmcuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIEZsYWdzKTsKKworICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBzdXJmYWNlIGZyb20gYSBo
YW5kbGUuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVh
dGUoY29uc3QgSGFuZGxlJik7CisKKyAgICB2aXJ0dWFsIH5XZWJDb29yZGluYXRlZFN1cmZhY2Uo
KTsKKworICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBPVkVSUklERTsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICB2aXJ0
dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICBjb25zdCBIYW5kbGUmIGhh
bmRsZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7
CisKKyAgICB2aXJ0dWFsIEZsYWdzIGZsYWdzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9m
bGFnczsgfQorCisgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5j
aW5nIGFuIGV4aXN0aW5nIFNoYXJlYWJsZUJpdG1hcC4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxh
Z3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisKKyAgICAvLyBDcmVhdGUgYSBoYW5k
bGUuCisgICAgYm9vbCBjcmVhdGVIYW5kbGUoKTsKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQorICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxh
Z3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CisgICAgLy8gQ3JlYXRl
IGEgc2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2Uo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKyAgICAvLyBDcmVhdGUgYSBXZWJDb29y
ZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgR3JhcGhpY3NTdXJmYWNlLgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2U+KTsKKworICAgIGJvb2wgaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsg
cmV0dXJuICEhbV9ncmFwaGljc1N1cmZhY2U7IH0KKyNlbmRpZgorCisgICAgV2ViQ29yZTo6SW50
U2l6ZSBtX3NpemU7CisgICAgRmxhZ3MgbV9mbGFnczsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX2JpdG1hcDsKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIFJlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJmYWNlOworI2VuZGlmCisKKyAg
ICAvLyBPbmx5IFdlYkNvb3JkaW5hdGVkU3VyZmFjZSBpbiBXZWIgUHJvY2VzcyBoYXMgdGhpcyBt
ZW1iZXIuCisgICAgSGFuZGxlIG1faGFuZGxlOworCisgICAgZW51bSBQdXJwb3NlIHsKKyAgICAg
ICAgUHJvZHVjZXIsCisgICAgICAgIENvbnN1bWVyCisgICAgfTsKKyAgICAvLyBUaGlzIG1lbWJl
ciBleGlzdHMgZm9yIG9ubHkgYSBkZWJ1Z2dpbmcgcHVycG9zZS4gSXQgaXMgUHJvZHVjZXIgaW4g
V2ViIFByb2Nlc3MsIHdoaWxlIENvbnN1bWVyIGluIFVJIFByb2Nlc3MuCisgICAgUHVycG9zZSBt
X3B1cnBvc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKKyNlbmRpZiAvLyBXZWJDb29yZGluYXRlZFN1cmZhY2VfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZjhmYTEwNjk5MzVjOTY2NzQ1NjYyZjBmMTI3ZmRiMjk0N2M2NTg1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIx
MCArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQot
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKLQotI2luY2x1ZGUg
IkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KLQotI2lmIFVTRShURVhUVVJFX01BUFBF
UikKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNlbmRpZgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVNoYXJlYWJsZVN1cmZhY2U6Okhh
bmRsZTo6SGFuZGxlKCkKLXsKLX0KLQotdm9pZCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5j
b2Rlci5lbmNvZGUobV9zaXplKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2ZsYWdzKTsKLSNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBlbmNvZGVyLmVuY29kZShtX2dyYXBoaWNzU3VyZmFj
ZVRva2VuKTsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybjsKLSNlbmRpZgotICAgIGVuY29kZXIuZW5jb2RlKG1fYml0bWFwSGFuZGxlKTsK
LX0KLQotYm9vbCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQotewotICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGhhbmRsZS5tX3NpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFu
ZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9iaXRt
YXBIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgSGludHMg
aGludHMpCi17Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhpbnRzICYgU3Vw
cG9ydHNHcmFwaGljc1N1cmZhY2UpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+
IHN1cmZhY2UgPSBjcmVhdGVXaXRoU3VyZmFjZShzaXplLCBmbGFncyk7Ci0gICAgICAgIGlmIChz
dXJmYWNlKQotICAgICAgICAgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOwotICAgIH0KLSNl
bmRpZgotICAgIFVOVVNFRF9QQVJBTShoaW50cyk7Ci0KLSAgICByZXR1cm4gY3JlYXRlKHNpemUs
IGZsYWdzLCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBmbGFncykpOwot
fQotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi1QYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZh
Y2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNp
emUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCi17Ci0gICAgR3JhcGhpY3NTdXJmYWNl
OjpGbGFncyBzdXJmYWNlRmxhZ3MgPQotICAgICAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpTdXBw
b3J0c1NvZnR3YXJlV3JpdGUKLSAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0
c0NvcHlUb1RleHR1cmUKLSAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1No
YXJpbmc7Ci0KLSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEp
Ci0gICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQWxwaGE7
Ci0KLSAgICAvLyBUaGlzIG1pZ2h0IHJldHVybiBudWxsLCBpZiB0aGUgc3lzdGVtIGlzIHVuYWJs
ZSB0byBwcm92aWRlIGEgbmV3IGdyYXBoaWNzIHN1cmZhY2UuCi0gICAgLy8gSW4gdGhhdCBjYXNl
LCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxsaW5nIGJhY2sg
dG8gU2hhcmVhYmxlQml0bWFwLgotICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2Ug
PSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOwotICAgIGlmICgh
c3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoc3VyZmFjZSk7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNl
LnJlbGVhc2UoKSkpOwotfQotI2VuZGlmCi0KLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50
UmVjdCYgcmVjdCkKLXsgICAgCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlz
QmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkKLSAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJm
YWNlLT5iZWdpblBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5pbmcgcGl4ZWxz
Ki8pOwotI2VuZGlmCi0KLSAgICBBU1NFUlQobV9iaXRtYXApOwotICAgIE93blB0cjxHcmFwaGlj
c0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICByZXR1cm4gZ3JhcGhpY3ND
b250ZXh0LnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFy
ZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFw
OjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIGJpdG1h
cCkpOwotfQotCi1TaGFyZWFibGVTdXJmYWNlOjpTaGFyZWFibGVTdXJmYWNlKGNvbnN0IEludFNp
emUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXApCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZmxhZ3MoZmxh
Z3MpCi0gICAgLCBtX2JpdG1hcChiaXRtYXApCi17Ci19Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKLVNoYXJlYWJsZVN1cmZhY2U6OlNoYXJlYWJsZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAg
ICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX2dyYXBoaWNzU3VyZmFjZShzdXJmYWNlKQotewot
fQotCi1QYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBQYXNz
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UpKTsKLX0KLSNlbmRpZgot
Ci1TaGFyZWFibGVTdXJmYWNlOjp+U2hhcmVhYmxlU3VyZmFjZSgpCi17Ci19Ci0KLVBhc3NSZWZQ
dHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlKQotewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChoYW5kbGUu
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZS5tX3Np
emUsIGhhbmRsZS5tX2ZsYWdzLCBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbik7Ci0gICAg
ICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFi
bGVTdXJmYWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4oc3VyZmFjZSkpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZS5tX2Jp
dG1hcEhhbmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
cmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgYml0bWFwLnJlbGVh
c2UoKSk7Ci19Ci0KLWJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYg
aGFuZGxlKQotewotICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7Ci0gICAgaGFuZGxlLm1fZmxh
Z3MgPSBtX2ZsYWdzOwotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaGFuZGxlLm1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJm
YWNlLT5leHBvcnRUb2tlbigpIDogR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKLSAgICBpZiAoaGFu
ZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSNlbmRpZgotICAgIGlmICghbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9iaXRt
YXBIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6Y29weVRv
VGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHBhc3NUZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCi17Ci0g
ICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUocGFzc1RleHR1cmUpOwotCi0jaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkg
ewotICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZUdMPiB0ZXh0dXJlR0wgPSB0b0JpdG1hcFRl
eHR1cmVHTCh0ZXh0dXJlLmdldCgpKTsKLSAgICAgICAgaWYgKHRleHR1cmVHTCkgewotICAgICAg
ICAgICAgdWludDMyX3QgdGV4dHVyZUlEID0gdGV4dHVyZUdMLT5pZCgpOwotICAgICAgICAgICAg
dWludDMyX3QgdGV4dHVyZVRhcmdldCA9IHRleHR1cmVHTC0+dGV4dHVyZVRhcmdldCgpOwotICAg
ICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPmNvcHlUb0dMVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0
LCB0ZXh0dXJlSUQsIHRhcmdldCwgc291cmNlT2Zmc2V0KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2dyYXBoaWNzU3Vy
ZmFjZS0+Y3JlYXRlUmVhZE9ubHlJbWFnZShJbnRSZWN0KHNvdXJjZU9mZnNldCwgdGFyZ2V0LnNp
emUoKSkpOwotICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFy
Z2V0LCBJbnRQb2ludDo6emVybygpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmln
aW5hbEltYWdlRGF0YSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBBU1NFUlQobV9iaXRtYXApOwot
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKLSAgICB0
ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQs
IEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICBy
ZXR1cm47Ci19Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGU3YTM5ZjI4YTc2NzE1NWE0ZTliZmZkY2U5N2ZhNDU5
YjdkZjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjEgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
Zm5kZWYgU2hhcmVhYmxlU3VyZmFjZV9oCi0jZGVmaW5lIFNoYXJlYWJsZVN1cmZhY2VfaAotCi0j
aW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotI2luY2x1ZGUgIkdyYXBo
aWNzU3VyZmFjZS5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJpdG1h
cFRleHR1cmU7Ci1jbGFzcyBJbWFnZTsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLX0KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2UgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlU3VyZmFjZT4gewotcHVibGljOgotICAgIGVudW0gSGlu
dCB7Ci0gICAgICAgIFN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlID0gMHgwMQotICAgIH07Ci0KLSAg
ICB0eXBlZGVmIHVuc2lnbmVkIEhpbnRzOwotCi0gICAgY2xhc3MgSGFuZGxlIHsKLSAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEhhbmRs
ZSgpOwotCi0gICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBlbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyBib29s
IGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBIYW5kbGUmKTsKLQotI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBn
cmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlVG9r
ZW47IH0KLSNlbmRpZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJl
YWJsZVN1cmZhY2U7Ci0gICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9i
aXRtYXBIYW5kbGU7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47Ci0jZW5kaWYKLSAg
ICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6
RmxhZ3MgbV9mbGFnczsKLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IFNoYXJlYWJsZVN1
cmZhY2UsIGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3IgYSBTaGFyZWFi
bGVCaXRtYXAgYXMgYmFja2luZy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MsIEhpbnRzKTsKLQotICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBzdXJmYWNlIGZyb20gYSBo
YW5kbGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNv
bnN0IEhhbmRsZSYpOwotCi0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3M7IH0KLQotICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KLSAgICBib29s
IGNyZWF0ZUhhbmRsZShIYW5kbGUmKTsKLQotICAgIH5TaGFyZWFibGVTdXJmYWNlKCk7Ci0KLSAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJ
bnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KLQotICAgIC8vIENyZWF0ZSBh
IGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNr
aW5nIHN0b3JlLgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVh
dGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQotICAgIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6
OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpOwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAg
U2hhcmVhYmxlU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFw
OjpGbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKLQotICAgIC8vIENyZWF0ZSBh
IFNoYXJlYWJsZVN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU2hhcmVhYmxlQml0bWFw
LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywgUGFzc1JlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+KTsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIFNoYXJlYWJs
ZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Ms
IFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7Ci0gICAgLy8gQ3JlYXRlIGEg
c2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzKTsKLSAgICAvLyBDcmVhdGUg
YSBTaGFyZWFibGVTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFj
ZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlPik7Ci0KLSAgICBib29sIGlzQmFja2VkQnlHcmFwaGljc1N1
cmZhY2UoKSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NTdXJmYWNlOyB9Ci0jZW5kaWYKLQot
ICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Mg
bV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKLQotI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+
IG1fZ3JhcGhpY3NTdXJmYWNlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFNoYXJlYWJsZVN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggMDIzZDc0NWI5
MjRiN2JjYmNkNGU4NjQ5N2NkNGZiNjMxNjZjYzk4OC4uNjNhZTYzYzE3M2U3NzQyZjQ1ZTgwY2Y0
NjU5YzQ3NzcxMjhjYjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03MSw3ICs3MSw2IEBAIEhFQURFUlMg
Kz0gXAogICAgIFNoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBcCiAgICAgU2hhcmVkL0FQSUNs
aWVudFRyYWl0cy5oIFwKICAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggXAotICAgIFNoYXJl
ZC9TaGFyZWFibGVTdXJmYWNlLmggXAogICAgIFNoYXJlZC9DYWNoZU1vZGVsLmggXAogICAgIFNo
YXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmggXApA
QCAtMTM2LDYgKzEzNSw4IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25z
ZS5oIFwKICAgICBTaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAogICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBc
CisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgg
XAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0u
aCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBc
CiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCkBAIC00NDIsNyArNDQz
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVOb25lLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5j
cHAgXAotICAgIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdp
bnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZp
ZXJEYXRhLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIu
Y3BwIFwKQEAgLTUwNSw2ICs1MDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViVVJM
UmVzcG9uc2UuY3BwIFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAogICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAgXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHAgXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclBy
b2dyYW1Qcm94eS5jcHAgXAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAg
ICAgU2hhcmVkL3F0L0xheWVyVHJlZUNvbnRleHRRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmluZGV4IDcwZTljZTI1ZmYzZDc5ZGI3MzI0Y2My
YzVlOGI5MDIxMjAxNDNhMDIuLjRhN2JiMTA4NmVlN2E4NjdiMmQzZmQ2ODBjNWEzN2RiMDViOGI3
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAg
LTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJDb29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIgogCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFj
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJm
YWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHTC5oIgogCkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXAKIAog
ICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCkgPj0gbV90
aWxlUmVjdC5zaXplKCkud2lkdGgoKSAmJiB0ZXh0dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgp
LmhlaWdodCgpID49IG1fdGlsZVJlY3Quc2l6ZSgpLmhlaWdodCgpKTsKICAgICBpZiAoc2hvdWxk
UmVzZXQpCi0gICAgICAgIHRleHR1cmUtPnJlc2V0KG1fdGlsZVJlY3Quc2l6ZSgpLCBtX3N1cmZh
Y2UtPmZsYWdzKCkgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgPyBCaXRtYXBUZXh0
dXJlOjpTdXBwb3J0c0FscGhhIDogMCk7CisgICAgICAgIHRleHR1cmUtPnJlc2V0KG1fdGlsZVJl
Y3Quc2l6ZSgpLCBtX3N1cmZhY2UtPnN1cHBvcnRzQWxwaGEoKSk7CiAKICAgICBtX3N1cmZhY2Ut
PmNvcHlUb1RleHR1cmUodGV4dHVyZSwgbV9zb3VyY2VSZWN0LCBtX3N1cmZhY2VPZmZzZXQpOwog
ICAgIG1fc3VyZmFjZS5jbGVhcigpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0
IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0
QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9p
bnQmIG9mZnNldCkKIHsKICAgICBtX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwogICAgIG1fdGls
ZVJlY3QgPSB0aWxlUmVjdDsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTo6cmVtb3ZlQWxsVGlsZXMoKQogICAgICAgICBtX3RpbGVzVG9SZW1vdmUuYWRkKGl0
LT5rZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVp
bnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxl
UmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSh1
aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0KQogewogICAgIEhhc2hNYXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlkKTsKICAgICBBU1NF
UlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuaAppbmRleCBjZDE1MWY4NDc2ZWNkNWJmY2IwYzIyODZhNTRjMTMzMTUzZjg1YTk5
Li5hZTVhZjhkNGZhMmZjOWViZDIxMTk3MjdmY2FkZDg1OTYyMzMwZjk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2U7CitjbGFzcyBDb29yZGlu
YXRlZFN1cmZhY2U7CiAKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSA6IHB1Ymxp
YyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSB7CiBwdWJsaWM6CkBAIC00NCwxMCArNDQsMTAg
QEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIGluY3JlbWVudFJlcGFpbnRDb3VudCgpIHsgKytt
X3JlcGFpbnRDb3VudDsgfQogICAgIGlubGluZSBpbnQgcmVwYWludENvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXBhaW50Q291bnQ7IH0KICAgICB2b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZh
Y2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHNldEJhY2tC
dWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQ
YXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZh
Y2U7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwogICAgIFdlYkNv
cmU6OkludFJlY3QgbV9zb3VyY2VSZWN0OwogICAgIFdlYkNvcmU6OkludFJlY3QgbV90aWxlUmVj
dDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1cmZhY2VPZmZzZXQ7CkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBmbG9hdCk7
CiAgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVB
bGxUaWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0
ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tp
bmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlciopOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVy
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
LmNwcAppbmRleCA4NDM1ZTYxMjM0Nzc5ZTE3NzgwYmRkOThhZDZlOTI5MzliMTgyNDlmLi5mZDk3
N2Q1M2UwODhmYzc2MDVmMTU0ZTQxYjdlY2Q0NzRiZTg4ZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjQsNyArMjQsNiBAQAogCiAj
aW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxheWVy
VHJlZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNs
dWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTc5LDEwICs3OCwxMCBAQCB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OnJlbW92ZVRpbGVGb3JMYXllcihXZWJMYXllcklEIGxheWVySUQsIHVp
bnQzMl90CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92
ZVRpbGUsIG1fcmVuZGVyZXIuZ2V0KCksIGxheWVySUQsIHRpbGVJRCkpOwogfQogCi12b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBj
b25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYktp
dDo6Q29vcmRpbmF0ZWRTdXJmYWNlUmVmJiBzdXJmYWNlUmVmKQogewogICAgIEFTU0VSVCghbV9z
dXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwg
U2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSkpOworICAgIG1fc3VyZmFjZXMuYWRkKGF0
bGFzSUQsIHN1cmZhY2VSZWYpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OnJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQpAQCAtMTQ2LDkgKzE0NSw5IEBAIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQgaW1hCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVu
ZGVyZXI6OmNyZWF0ZUltYWdlQmFja2luZywgbV9yZW5kZXJlci5nZXQoKSwgaW1hZ2VJRCkpOwog
fQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6
OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBXZWJL
aXQ6OkNvb3JkaW5hdGVkU3VyZmFjZVJlZiYgc3VyZmFjZVJlZikKIHsKLSAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5nLCBtX3JlbmRl
cmVyLmdldCgpLCBpbWFnZUlELCBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkpOwor
ICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFnZUJh
Y2tpbmcsIG1fcmVuZGVyZXIuZ2V0KCksIGltYWdlSUQsIHN1cmZhY2VSZWYpKTsKIH0KIAogdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAyMzA1ZmZkYzJmZDMwZDcxNDY1NjljYjViZjhj
MWU1NDE2NjE5M2I2Li4zNmVjNDAyNGUyMzhhZDEwM2UxNTMyYzFjZjlhMjVkNWVhMGE3OWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yNCw5
ICsyNCw5IEBACiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJDb29yZGlu
YXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZh
Y2UuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgi
Ci0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIlN1cmZhY2VVcGRhdGVJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CkBAIC02OSwxMCArNjksMTAgQEAgcHVibGljOgogICAgIHZvaWQg
Y3JlYXRlVGlsZUZvckxheWVyKFdlYkxheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRh
dGVUaWxlRm9yTGF5ZXIoV2ViTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHJlbW92ZVRp
bGVGb3JMYXllcihXZWJMYXllcklELCB1aW50MzJfdCB0aWxlSUQpOwotICAgIHZvaWQgY3JlYXRl
VXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYp
OworICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYktpdDo6
Q29vcmRpbmF0ZWRTdXJmYWNlUmVmJik7CiAgICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQg
YXRsYXNJRCk7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7CisgICAgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViS2l0OjpD
b29yZGluYXRlZFN1cmZhY2VSZWYmKTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVu
dHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTEwMiw3ICsxMDIsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7
CiAgICAgZmxvYXQgbV9sYXN0U2VudFNjYWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9s
YXN0U2VudFRyYWplY3RvcnlWZWN0b3I7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBhdGxh
c0lEICovLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBTdXJmYWNlTWFwOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
PiBTdXJmYWNlTWFwOwogICAgIFN1cmZhY2VNYXAgbV9zdXJmYWNlczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDM1YzE5ZmZmODYwYzU5ZTk1NDg1ZjhjYjVkMzZlNDExNjlmOTk4YzMuLmFjNzUwZDUy
YWZiZTYwNDlkZTU5MjViMjNlOGYzZjJjODNlNWEwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMsMTAg
KzMzLDEwIEBAIG1lc3NhZ2VzIC0+IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkgewogICAgIENy
ZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNv
cmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5m
bykKICAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGls
ZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZv
IHVwZGF0ZUluZm8pCiAgICAgUmVtb3ZlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVp
bnQzMl90IHRpbGVJRCkKLSAgICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgV2ViS2l0
OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQorICAgIENyZWF0ZVVwZGF0ZUF0bGFz
KGludCBhdGxhc0lELCBXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZVJlZiBzdXJmYWNlUmVmKQog
ICAgIFJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQogICAgIENyZWF0ZUltYWdlQmFja2lu
Zyh1aW50NjRfdCBpbWFnZUlEKQotICAgIFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFn
ZUlELCBXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBoYW5kbGUpCisgICAgVXBkYXRl
SW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQsIFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNl
UmVmIHN1cmZhY2VSZWYpCiAgICAgQ2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyh1aW50NjRfdCBp
bWFnZUlEKQogICAgIFJlbW92ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQogICAgIERp
ZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplLCBXZWJDb3JlOjpJbnRS
ZWN0IGNvdmVyZWRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4
IDZkYTMyODJlOTc1NDEwNDQ1YWJkMmNmZmFlM2I5MzdlZmY1Y2ZjOTMuLjk0Y2EwZWJkYmI4YmY4
YTVhNTY4OTg1YmI5ZWJjY2Y1MmNjMjc2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogICAgIG1f
aW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgYmFja2luZ1N0b3JlLnJlbGVhc2UoKSk7CiB9CiAK
LXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gc3VyZmFj
ZSkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBz
dXJmYWNlKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkp
OwogICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlQmFja2luZ3MuZmlu
ZChpbWFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IGEwM2M5ODIw
Y2NmNDczYTVkOTA2YTM4ZjJhYmEyODUwNGM5ZDZiOTAuLjk3ZWYyNmFmMWE2OGYzZDRhMjIyZWNl
MzBmNzZhYTE1N2U3MWE0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAt
MjIsNyArMjIsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUg
IkJhY2tpbmdTdG9yZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNsdWRl
ICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJl
ZUluZm8uaCIKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgIHN0cnVjdCBUaWxlVXBkYXRl
IHsKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0OwogICAgICAgICBXZWJDb3Jl
OjpJbnRSZWN0IHRpbGVSZWN0OwotICAgICAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gc3Vy
ZmFjZTsKKyAgICAgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKICAgICAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0OwotICAgICAgICBUaWxlVXBkYXRlKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZSwgUGFz
c1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbmV3T2Zmc2V0KQorICAgICAgICBUaWxlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZSwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+IG5ld1N1cmZhY2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdP
ZmZzZXQpCiAgICAgICAgICAgICA6IHNvdXJjZVJlY3Qoc291cmNlKQogICAgICAgICAgICAgLCB0
aWxlUmVjdCh0aWxlKQogICAgICAgICAgICAgLCBzdXJmYWNlKG5ld1N1cmZhY2UpCkBAIC0xMDUs
NyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGlsZShXZWJMYXllcklELCB1aW50
MzJfdCB0aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKICAgICB2b2lkIGZsdXNoTGF5ZXJDaGFu
Z2VzKCk7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPik7CisgICAgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+KTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoV2ViTGF5ZXJJ
RCwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmlu
ZGV4IDk4NTZmNTFmNDUwNTYwY2FhNDE2ZGQ4MWY5OGY5MWMyMmNlNzY0N2UuLjVmMDgyOTQ0ZWU3
ZWUxOTk1MmY0MjJlN2E1ZmM3MGM1MGI3ZDZiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNzM0LDcgKzcz
NCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJCiAgICAgaWYgKCFtX2Nvb3JkaW5hdG9yKQog
ICAgICAgICByZXR1cm4gUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KCk7CiAK
LSAgICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRl
bnRzT3BhcXVlKCkgPyAwIDogU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhLCBhdGxhcywg
b2Zmc2V0KTsKKyAgICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNp
emUsIENvb3JkaW5hdGVkU3VyZmFjZTo6dG9GbGFncyghY29udGVudHNPcGFxdWUoKSksIGF0bGFz
LCBvZmZzZXQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGls
ZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggMzBmYjg3ZGRkNmQw
NjA2ZTY4YzU1NWM5MThiMzRiY2M4ZWJhNjA1NC4uNGM4MDBhZDcyMGI4NjRkZThmNWI0NTY4NWJj
YTgyYjMzYWY2YjA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNr
aW5nU3RvcmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC03NSw3ICs3NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpID0gMDsKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Ms
IGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBQYXNz
T3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCBpbnQmIGF0bGFz
SUQsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCmluZGV4IDU1Y2E5
ZGE3YjU5NGNiNjk4Zjc4YTZjOTBhYjE0MTk0ZjlhMWIxYjEuLmVhNzI5ZDBjMjZhNDczNjAxNTZl
MTZlYWZhOWIwYzlhNmNjMGExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTEwMywxMSArMTAzLDggQEAgdm9p
ZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShtX2ltYWdlLT5zaXplKCks
IG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEgOiBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1
cHBvcnRzR3JhcGhpY3NTdXJmYWNlKTsKLSAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBTaGFy
ZWFibGVTdXJmYWNlOjpIYW5kbGUoKSk7Ci0KLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFu
ZGxlKCptX2hhbmRsZSkpIHsKLSAgICAgICAgcmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOworICAg
IG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjp0b0ZsYWdzKG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhh
KCkpKTsKKyAgICBpZiAoIW1fc3VyZmFjZSkgewogICAgICAgICBtX2lzRGlydHkgPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTExOCw3ICsxMTUsNyBAQCB2b2lkIENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUoKQogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1faW1h
Z2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKLSAgICBtX2Nvb3JkaW5hdG9yLT51
cGRhdGVJbWFnZUJhY2tpbmcoaWQoKSwgKm1faGFuZGxlKTsKKyAgICBtX2Nvb3JkaW5hdG9yLT51
cGRhdGVJbWFnZUJhY2tpbmcoaWQoKSwgbV9zdXJmYWNlKTsKICAgICBtX2lzRGlydHkgPSBmYWxz
ZTsKIH0KIApAQCAtMTI2LDcgKzEyMyw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQoKQogewogICAgIC8vIFdlIG11c3Qga2VlcCBtX3N1cmZh
Y2UgdW50aWwgVUkgUHJvY2VzcyByZWFkcyBtX3N1cmZhY2UuCiAgICAgLy8gSWYgbV9zdXJmYWNl
IGV4aXN0cywgaXQgd2FzIGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHVwZGF0ZS4KLSAgICBtX2hh
bmRsZS5jbGVhcigpOwogICAgIG1fc3VyZmFjZS5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCA3NjI2
NmE0YjQxNDBiOTQzN2IxMTcyNTM3NTcwYTdmMjAwNzkxMGRkLi40ZDQ2YjU5OGFhODY1ZGRkMzhh
ZmEwNGRmYTRjM2RhZTA3ZWI0ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTI4LDggKzI4LDggQEAKICNkZWZpbmUg
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdfaAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0j
aW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8u
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIGNsYXNzIENvb3JkaW5hdG9yIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZh
Y2U6OkhhbmRsZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFj
ZT4pID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMo
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICB9OwpA
QCAtODAsOCArODAsNyBAQCBwcml2YXRlOgogICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQg
bV9pZDsKICAgICBWZWN0b3I8SG9zdCo+IG1faG9zdHM7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxl
U3VyZmFjZT4gbV9zdXJmYWNlOwotICAgIE93blB0cjxTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU+
IG1faGFuZGxlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKIAog
ICAgIFdlYkNvcmU6OlRpbWVyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBtX2NsZWFyQ29udGVu
dHNUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuY3BwCmluZGV4IDUwM2ZkMDE2MjE5YjZiNjA3NzkwNTdiM2YyOTZiNzljOWUzOTNk
YTIuLmJkMDRiMzEyZDlkNmViYmI2MTNmNjQyMDU0ZjhjYTFkZDIyZjQzMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTEs
NiArMSw3IEBACiAgICAgLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBh
bnkgMTAwLCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMy
LDcgQEAKIAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW1wbC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNz
YWdlcy5oIgpAQCAtNTcxLDEwICs1NzMsMTEgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKICAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNy
ZWF0ZUltYWdlQmFja2luZyhpbWFnZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQs
IGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVD
b29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQg
aW1hZ2VJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFj
ZSkKIHsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpVcGRhdGVJbWFnZUJhY2tpbmco
aW1hZ2VJRCwgaGFuZGxlKSk7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNlUmVmIHN1cmZhY2VSZWYg
PSBjb29yZGluYXRlZFN1cmZhY2U7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpVcGRhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJRCwgc3VyZmFj
ZVJlZikpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpjbGVhckltYWdlQmFja2lu
Z0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKQEAgLTY1OSw5ICs2
NjIsMTAgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVtb3ZlVGlsZShXZWJMYXllcklE
IGxheWVySUQsIHVpbnQzMl90IHRpbGVJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXllcklELCB0
aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRs
YXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQor
dm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQs
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCiB7Ci0g
ICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpD
cmVhdGVVcGRhdGVBdGxhcyhhdGxhc0lELCBoYW5kbGUpKTsKKyAgICBDb29yZGluYXRlZFN1cmZh
Y2VSZWYgc3VyZmFjZVJlZiA9IGNvb3JkaW5hdGVkU3VyZmFjZTsKKyAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZVVwZGF0ZUF0bGFz
KGF0bGFzSUQsIHN1cmZhY2VSZWYpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
cmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpCkBAIC03NjUsMTIgKzc2OSwxMiBAQCB2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAgIG1fdXBkYXRl
QXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBpbnQmIGF0bGFz
SUQsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBpbnQmIGF0bGFzSUQsIElu
dFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4g
Z3JhcGhpY3NDb250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29u
dGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRhdGVBdGxhc2VzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRlQXRsYXNlc1tp
XS5nZXQoKTsKLSAgICAgICAgaWYgKGF0bGFzLT5mbGFncygpID09IGZsYWdzKSB7CisgICAgICAg
IGlmIChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IENvb3JkaW5hdGVkU3VyZmFjZTo6c3VwcG9y
dHNBbHBoYShmbGFncykpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBp
ZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lE
LCBzaXplLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkKQEAgLTgw
MSw3ICs4MDUsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNlSW5hY3RpdmVB
dGxhc2VzVGltZXJGaXJlZChUaW1lcjxMYXllclRyZWVDb29yZAogICAgICAgICBVcGRhdGVBdGxh
cyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghYXRsYXMt
PmlzSW5Vc2UoKSkKICAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5hY3RpdmUoUmVsZWFzZUlu
YWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29sIHVzYWJsZUZvck5vbkNv
bXBvc2l0ZWRDb250ZW50ID0gYXRsYXMtPmZsYWdzKCkgPT0gU2hhcmVhYmxlQml0bWFwOjpOb0Zs
YWdzOworICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gIWF0bGFz
LT5zdXBwb3J0c0FscGhhKCk7CiAgICAgICAgIGlmIChhdGxhcy0+aXNJbmFjdGl2ZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIWZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21wb3NpdGVkQ29udGVudCAm
JiAhYXRsYXNUb0tlZXBBbnl3YXkgJiYgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQpCiAg
ICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3YXkgPSBtX3VwZGF0ZUF0bGFzZXNbaV0ucmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmgKaW5kZXggZTA5ZmUzYWJhN2FmZWUwNjU2NjQ1MWM0ZjQ5ODg2NjUyYWVjZDgxNC4uNTAx
ZmU3YjNkODVjZmViMzk4OWE5NGM2ZGFkNDE1ODgwY2YzZGE3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0zOCw2ICszOCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiBjbGFz
cyBVcGRhdGVJbmZvOwogY2xhc3MgV2ViUGFnZTsKIApAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Ms
IGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIGludCYgYXRsYXNJRCwg
V2ViQ29yZTo6SW50UG9pbnQmKTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xpZW50Ci0gICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVT
dXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50
IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKTsKIAogI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkKQEAgLTEyNSw3ICsxMjYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdG9yCiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFz
c1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVB
dGxhcy5jcHAKaW5kZXggOWE1NDE4ZjFlYWFhMzQ4N2I0ZTQyNGI5YTk1NjIwMjA4MzA5NzU0ZS4u
MTRmNzcwNjljZTU0NDQ3N2E5NTI4OTllYWJiNGFkMzA0Njg1N2RjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRl
QXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgQ29weXJp
Z2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zMCwyNyArMzEsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1VcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqIGNs
aWVudCwgaW50IGRpbWVuc2lvbiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncykKK1VwZGF0
ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50LCBpbnQgZGltZW5z
aW9uLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQotICAgICwgbV9mbGFncyhmbGFncykKICAgICAsIG1faW5hY3Rpdml0eUluU2Vjb25kcygw
KQotICAgICwgbV9pc1ZhaWxkKHRydWUpCiB7CiAgICAgc3RhdGljIGludCBuZXh0SUQgPSAwOwog
ICAgIG1fSUQgPSArK25leHRJRDsKLSAgICBJbnRTaXplIHNpemUgPSBuZXh0UG93ZXJPZlR3byhJ
bnRTaXplKGRpbWVuc2lvbiwgZGltZW5zaW9uKSk7Ci0gICAgbV9zdXJmYWNlID0gU2hhcmVhYmxl
U3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzLCBTaGFyZWFibGVTdXJmYWNlOjpTdXBwb3J0c0dy
YXBoaWNzU3VyZmFjZSk7CiAKLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1faGFu
ZGxlKSkgewotICAgICAgICBtX2lzVmFpbGQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9oYW5kbGUpOworICAg
IEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNpemUoZGltZW5zaW9uLCBkaW1lbnNp
b24pKTsKKyAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBm
bGFncyk7CisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAgbV9jbGllbnQtPmNyZWF0ZVVwZGF0
ZUF0bGFzKG1fSUQsIG1fc3VyZmFjZSk7CiB9CiAKIFVwZGF0ZUF0bGFzOjp+VXBkYXRlQXRsYXMo
KQogewotICAgIGlmIChtX2lzVmFpbGQpCisgICAgaWYgKG1fc3VyZmFjZSkKICAgICAgICAgbV9j
bGllbnQtPnJlbW92ZVVwZGF0ZUF0bGFzKG1fSUQpOwogfQogCkBAIC03Nyw3ICs3Myw3IEBAIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZh
aWxhYmxlQnVmZmVyKGludCYgYXRsCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CiAKLSAgICBpZiAoIW1faXNWYWls
ZCkKKyAgICBpZiAoIW1fc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PigpOwogCiAgICAgYXRsYXNJRCA9IG1fSUQ7CkBAIC04Niw3ICs4Miw3IEBAIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZh
aWxhYmxlQnVmZmVyKGludCYgYXRsCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwogICAg
IE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOwogCi0gICAgaWYgKGZsYWdzKCkgJiBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpIHsKKyAgICBpZiAoc3VwcG9ydHNBbHBoYSgpKSB7CiAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkp
OwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgc2l6ZSksIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNv
dXJjZU92ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmgKaW5kZXggN2Nl
ZmU5Yzk3OTQyMTU4NjI3M2Y0ZTBjZDMwOWEyMDIzNGM3MWFkMS4uYmVhMTMxMWUwMGJkMDg1OGYz
MDE0YTUzYTUxZmQ4OTRlYzFkNjA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVB
dGxhcy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEy
IENvbXBhbnkgMTAwLCBJbmMuCiAKICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDggKzIyLDggQEAKICNkZWZp
bmUgVXBkYXRlQXRsYXNfaAogCiAjaW5jbHVkZSAiQXJlYUFsbG9jYXRvci5oIgorI2luY2x1ZGUg
IkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJT
aGFyZWFibGVTdXJmYWNlLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwxNCArMzUsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRs
ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQs
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgVXBkYXRlQXRs
YXMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAg
ICBVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MpOworICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50
IGRpbWVuc2lvbiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAgICAgflVwZGF0ZUF0bGFz
KCk7CiAKICAgICBpbmxpbmUgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zdXJmYWNlLT5zaXplKCk7IH0KQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybnMgYSBudWxsIHBvaW50ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KICAg
ICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZh
aWxhYmxlQnVmZmVyKGludCYgYXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkludFBvaW50JiBvZmZzZXQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBT
aGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQor
ICAgIGJvb2wgc3VwcG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9y
dHNBbHBoYSgpOyB9CiAKICAgICB2b2lkIGFkZFRpbWVJbmFjdGl2ZShkb3VibGUgc2Vjb25kcykK
ICAgICB7CkBAIC02OSwxMiArNzAsOSBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBVcGRhdGVB
dGxhc0NsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEdlbmVyYWxBcmVhQWxsb2NhdG9yPiBt
X2FyZWFBbGxvY2F0b3I7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBtX2ZsYWdzOwotICAg
IFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7Ci0gICAgU2hhcmVhYmxlU3VyZmFj
ZTo6SGFuZGxlIG1faGFuZGxlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1fc3Vy
ZmFjZTsKICAgICBkb3VibGUgbV9pbmFjdGl2aXR5SW5TZWNvbmRzOwogICAgIGludCBtX0lEOwot
ICAgIGJvb2wgbV9pc1ZhaWxkOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178168</attachid>
            <date>2012-12-06 23:55:15 -0800</date>
            <delta_ts>2012-12-07 23:07:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121207165233.patch</filename>
            <type>text/plain</type>
            <size>62711</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDI0Y2E4MDA1ZWJjODRm
YWVhMTEwMjViNmZjYTVjYmI3YzBlNzZkNy4uZDQ4YTFlYzZjZmIyNGUxNjI3NDcxYjIwNTE3OTI2
NGIzY2E2ZDExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk3IEBACiAyMDEyLTEyLTA2ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBBZGQgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIHJlbW92ZSB0aGUgZGVwZW5k
ZW5jeSBvZiBTaGFyZWFibGVTdXJmYWNlIGZyb20gQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRlcm5hbCBSZXZp
ZXcgYnkgR3dhbmcgWW9vbiBId2FuZyBhbmQgSmFlIEh5dW4gUGFyay4KKworICAgICAgICBJdCBp
cyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGljcyBv
biBXSzEuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIsIENv
b3JkaW5hdGVkVGlsZSBhbmQKKyAgICAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgZGlyZWN0
bHkgdXNlIFNoYXJlYWJsZVN1cmZhY2UuIFNoYXJlYWJsZVN1cmZhY2Ugd2FzCisgICAgICAgIGlt
cGxlbWVudGVkIHRvIHNoYXJlIGFuIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzIGFzIHdlbGwgYXMg
cGxhY2VkIGluIFdLMi4KKyAgICAgICAgV2Ugd2FudCB0aGVtIHRvIG5vdCBkZXBlbmQgb24gU2hh
cmVhYmxlU3VyZmFjZSB0byBtb3ZlIHRoZW0gaW50byBXZWJDb3JlLiBTbworICAgICAgICB0aGlz
IHBhdGNoIGludHJvZHVjZXMgbmV3IGNsYXNzOiBDb29yZGluYXRlZFN1cmZhY2UsIHRvIGJlIHVz
ZWQgYXMgYQorICAgICAgICBkcmF3aW5nIHN1cmZhY2UgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjp+Q29vcmRpbmF0ZWRTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpzdXBwb3J0c0FscGhhKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjp0b0ZsYWdzKToKKyAgICAgICAgKiBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwLgorICAg
ICAgICAgIEV4dGVuZHMgQ29vcmRpbmF0ZWRTdXJmYWNlLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6OkhhbmRsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjp+V2ViQ29vcmRpbmF0
ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlU
b1RleHR1cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYkNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChIYW5kbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6Z3JhcGhpY3NTdXJmYWNl
VG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmlzQmFja2Vk
QnlHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNr
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0
ZVRpbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGlu
YXRvclByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oOgorICAgICAgICAoVGlsZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJl
bmRlcmVyOjpUaWxlVXBkYXRlOjpUaWxlVXBkYXRlKToKKyAgICAgICAgKExheWVyVHJlZVJlbmRl
cmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
OgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFj
a2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nLmg6CisgICAgICAgIChDb29yZGluYXRvcik6CisgICAgICAg
IChDb29yZGluYXRlZEltYWdlQmFja2luZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNlSW5hY3RpdmVB
dGxhc2VzVGltZXJGaXJlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNv
b3JkaW5hdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpVcGRh
dGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25B
dmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmg6CisgICAgICAgIChVcGRhdGVBdGxhc0NsaWVudCk6Cisg
ICAgICAgIChVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0bGFzOjpzdXBw
b3J0c0FscGhhKToKKworMjAxMi0xMi0wNiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21w
YW55MTAwLm5ldD4KKwogICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBvdGhlciB0eXBl
cyBhcyB3ZWxsIGFzIGNsYXNzIGFuZCBzdHJ1Y3QgYXMgYW4gYXJndW1lbnQgb2YgbWVzc2FnZXMu
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQzMzkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA4ZjNiNmY5M2MwZDg3ZDFiZDVjNDEwNDQyZDZkM2Ux
NjFkYzgzMGUwLi45YmY1Y2QyMmE0YTQ4N2FkMjRjYWYyMDk1NWE2YjAyZGJkZjE1MGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTU0LDcgKzE1NCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMK
ICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAogICAgIFNoYXJlZC9TZXNzaW9uU3Rh
dGUuY3BwCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKLSAgICBTaGFyZWQvU2hhcmVh
YmxlU3VyZmFjZS5jcHAKICAgICBTaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwCiAgICAgU2hhcmVk
L1N1cmZhY2VVcGRhdGVJbmZvLmNwcAogICAgIFNoYXJlZC9VcGRhdGVJbmZvLmNwcApAQCAtMjE5
LDYgKzIxOCw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKICAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5jcHAKKyAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCiAgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmNwcAog
CiAgICAgU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFj
ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRTdXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRjOTE2YzAzOTg1MmRkY2ZkZjc4ZWJkYjExYmZjYzRh
MmUwMWQyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBDb29yZGluYXRlZFN1cmZhY2VfaAorI2RlZmluZSBDb29y
ZGluYXRlZFN1cmZhY2VfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1
ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJpdG1hcFRleHR1cmU7CitjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBDb29yZGluYXRlZFN1
cmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRTdXJmYWNlPiB7
CitwdWJsaWM6CisgICAgZW51bSBGbGFnIHsKKyAgICAgICAgTm9GbGFncyA9IDAsCisgICAgICAg
IFN1cHBvcnRzQWxwaGEgPSAxIDw8IDAsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEZs
YWdzOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKworICAgIHZpcnR1YWwgfkNvb3JkaW5h
dGVkU3VyZmFjZSgpIHsgfQorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNBbHBoYShGbGFncyBm
bGFncykgeyByZXR1cm4gZmxhZ3MgJiBTdXBwb3J0c0FscGhhOyB9CisgICAgc3RhdGljIGJvb2wg
dG9GbGFncyhib29sIHN1cHBvcnRBbHBoYSkgeyByZXR1cm4gc3VwcG9ydEFscGhhID8gU3VwcG9y
dHNBbHBoYSA6IE5vRmxhZ3M7IH0KKworICAgIGJvb2wgc3VwcG9ydHNBbHBoYSgpIHsgcmV0dXJu
IGZsYWdzKCkgJiBTdXBwb3J0c0FscGhhOyB9CisgICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKCkgY29uc3QgPSAwOworCisgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29u
dGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCisg
ICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CisKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpCisgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CisjZW5kaWYKKworcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisjZW5kaWYgLy8gQ29vcmRpbmF0ZWRTdXJmYWNl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1NDYx
MDkxYzViMjVmN2ZjNDE4MGUxMGU1YmFhNTAwMzM3Yzk0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuY3BwCkBAIC0wLDAgKzEsMjIwIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMp
IDIwMTIgQ29tcGFueSAxMDAsIEluYy4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJm
YWNlVG9rZW4uaD4KKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0wuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpIYW5kbGUoKQor
eworfQorCit2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIuZW5jb2Rl
KG1fc2l6ZSk7CisgICAgZW5jb2Rlci5lbmNvZGUobV9mbGFncyk7CisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCisgICAgZW5jb2Rlci5lbmNvZGUobV9ncmFwaGljc1N1cmZhY2VUb2tlbik7Cisg
ICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKyAgICBlbmNvZGVyLmVuY29kZShtX2JpdG1hcEhhbmRsZSk7Cit9CisKK2Jvb2wg
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQoreworICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGhhbmRsZS5tX3NpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGhh
bmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9iaXRtYXBIYW5k
bGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUGFz
c1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxh
Z3MpCit7CisgICAgcmV0dXJuIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZs
YWdzKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MgZmxhZ3MpCit7CisgICAgUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gc3Vy
ZmFjZTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBzdXJmYWNlID0gY3JlYXRlV2l0
aFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpOworI2VuZGlmCisKKyAgICBpZiAoIXN1cmZhY2UpCisgICAg
ICAgIHN1cmZhY2UgPSBjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKHNpemUsIHN1cHBvcnRzQWxwaGEoZmxhZ3MpID8gU2hhcmVhYmxlQml0bWFwOjpT
dXBwb3J0c0FscGhhIDogU2hhcmVhYmxlQml0bWFwOjpOb0ZsYWdzKSk7CisKKyAgICByZXR1cm4g
c3VyZmFjZS5yZWxlYXNlKCk7Cit9CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK1Bhc3NS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZVdpdGhTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MgZmxhZ3MpCit7CisgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPQor
ICAgICAgICBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU29mdHdhcmVXcml0ZQorICAgICAgICB8
IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNDb3B5VG9UZXh0dXJlCisgICAgICAgIHwgR3JhcGhp
Y3NTdXJmYWNlOjpTdXBwb3J0c1NoYXJpbmc7CisKKyAgICBpZiAoc3VwcG9ydHNBbHBoYShmbGFn
cykpCisgICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQWxw
aGE7CisKKyAgICAvLyBUaGlzIG1pZ2h0IHJldHVybiBudWxsLCBpZiB0aGUgc3lzdGVtIGlzIHVu
YWJsZSB0byBwcm92aWRlIGEgbmV3IGdyYXBoaWNzIHN1cmZhY2UuCisgICAgLy8gSW4gdGhhdCBj
YXNlLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxsaW5nIGJh
Y2sgdG8gU2hhcmVhYmxlQml0bWFwLgorICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZh
Y2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOworICAgIGlm
ICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoc3VyZmFjZSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3Ms
IHN1cmZhY2UucmVsZWFzZSgpKSk7Cit9CisjZW5kaWYKKworUGFzc093blB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisg
ICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkKKyAgICAgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NTdXJmYWNlLT5iZWdpblBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5p
bmcgcGl4ZWxzKi8pOworI2VuZGlmCisKKyAgICBBU1NFUlQobV9iaXRtYXApOworICAgIE93blB0
cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICByZXR1cm4g
Z3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJDb29yZGluYXRl
ZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNp
emUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXApCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRl
ZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIGJpdG1hcCkpOworfQorCitXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRl
ZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
KQorICAgIDogbV9zaXplKHNpemUpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9iaXRt
YXAoYml0bWFwKQoreworfQorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCitXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwg
bV9mbGFncyhmbGFncykKKyAgICAsIG1fZ3JhcGhpY3NTdXJmYWNlKHN1cmZhY2UpCit7Cit9CisK
K1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6
OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZs
YWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncywgc3VyZmFjZSkp
OworfQorI2VuZGlmCisKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6fldlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSgpCit7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKK3sKKyNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCku
aXNWYWxpZCgpKSB7CisgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdz
ID0gMDsKKyAgICAgICAgaWYgKHN1cHBvcnRzQWxwaGEoaGFuZGxlLm1fZmxhZ3MpKQorICAgICAg
ICAgICAgc3VyZmFjZUZsYWdzIHw9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNBbHBoYTsKKyAg
ICAgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6
Y3JlYXRlKGhhbmRsZS5tX3NpemUsIHN1cmZhY2VGbGFncywgaGFuZGxlLm1fZ3JhcGhpY3NTdXJm
YWNlVG9rZW4pOworICAgICAgICBpZiAoc3VyZmFjZSkKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2Zs
YWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oc3VyZmFjZSkpKTsKKyAgICB9CisjZW5k
aWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSk7CisgICAgaWYgKCFiaXRtYXApCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUu
bV9mbGFncywgYml0bWFwLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaGFuZGxlLm1fc2l6ZSA9
IG1fc2l6ZTsKKyAgICBoYW5kbGUubV9mbGFncyA9IG1fZmxhZ3M7CisKKyNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKKyAgICBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhp
Y3NTdXJmYWNlID8gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCkgOiBHcmFwaGljc1N1
cmZhY2VUb2tlbigpOworICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKCFtX2JpdG1hcC0+
Y3JlYXRlSGFuZGxlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQordm9p
ZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25z
dCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQoreworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlKHBhc3NUZXh0dXJlKTsKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlm
IChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpIHsKKyAgICAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmVHTD4gdGV4dHVyZUdMID0gdG9CaXRtYXBUZXh0dXJlR0wodGV4dHVyZS5nZXQoKSk7Cisg
ICAgICAgIGlmICh0ZXh0dXJlR0wpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRleHR1cmVJRCA9
IHRleHR1cmVHTC0+aWQoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHRleHR1cmVUYXJnZXQgPSB0
ZXh0dXJlR0wtPnRleHR1cmVUYXJnZXQoKTsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNl
LT5jb3B5VG9HTFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVyZUlELCB0YXJnZXQsIHNvdXJj
ZU9mZnNldCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gbV9ncmFwaGljc1N1cmZhY2UtPmNyZWF0ZVJlYWRPbmx5SW1hZ2Uo
SW50UmVjdChzb3VyY2VPZmZzZXQsIHRhcmdldC5zaXplKCkpKTsKKyAgICAgICAgdGV4dHVyZS0+
dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwgSW50UG9pbnQ6Onplcm8oKSwgQml0
bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIH0KKyNl
bmRpZgorCisgICAgQVNTRVJUKG1fYml0bWFwKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
bV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7CisgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1h
Z2UuZ2V0KCksIHRhcmdldCwgc291cmNlT2Zmc2V0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5N
b2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgcmV0dXJuOworfQorI2VuZGlmIC8vIFVTRShU
RVhUVVJFX01BUFBFUikKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisjZW5kaWYgLy8gVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMzMzZDM0OGM1ZTVhNzc1YjY2OGI1YjdkZGVmYzI4ZjRkYzZlODIxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgQ29weXJpZ2h0IChD
KSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENv
cHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgorCisgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFdlYkNvb3JkaW5hdGVkU3VyZmFjZV9oCisjZGVmaW5lIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAi
Q29vcmRpbmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJlOworY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFjZSB7CitwdWJsaWM6Cisg
ICAgY2xhc3MgSGFuZGxlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsK
KyAgICBwdWJsaWM6CisgICAgICAgIEhhbmRsZSgpOworCisgICAgICAgIHZvaWQgZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OworICAgICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlJik7CisKKyNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhp
Y3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOyB9
CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBXZWJDb29yZGlu
YXRlZFN1cmZhY2U7CisgICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9i
aXRtYXBIYW5kbGU7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CisjZW5kaWYKKyAg
ICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CisgICAgICAgIENvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MgbV9mbGFnczsKKyAgICB9OworCisgICAgLy8gQ3JlYXRlIGEgbmV3IFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVpdGhlciBhIEdyYXBoaWNzU3VyZmFjZSBvciBh
IFNoYXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNv
b3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7
CisKKyAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxlLgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEhh
bmRsZSYpOworCisgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgorICAgIGJvb2wgY3JlYXRlSGFuZGxl
KEhhbmRsZSYpOworCisgICAgdmlydHVhbCB+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKCk7CisKKyAg
ICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3NpemU7IH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgT1ZFUlJJREU7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgdmlydHVhbCB2b2lk
IGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNl
T2Zmc2V0KSBPVkVSUklERTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPik7CisKKyAgICB2aXJ0dWFsIEZsYWdzIGZsYWdzKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9mbGFnczsgfQorCisgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFNoYXJlYWJsZUJpdG1hcC4KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisKKyNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4p
OworICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhpY3Mg
c3VyZmFjZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNy
ZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisgICAgLy8g
Q3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdy
YXBoaWNzU3VyZmFjZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZh
Y2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CisKKyAgICBib29sIGlzQmFja2VkQnlHcmFwaGljc1N1
cmZhY2UoKSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NTdXJmYWNlOyB9CisjZW5kaWYKKwor
ICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOworICAgIEZsYWdzIG1fZmxhZ3M7CisgICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBoaWNzU3VyZmFj
ZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCisjZW5kaWYgLy8gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmY4ZmExMDY5OTM1Yzk2Njc0NTY2MmYwZjEyN2ZkYjI5NDdjNjU4
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
MTAgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0K
LSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCi0KLSNpbmNsdWRl
ICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1TaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGU6OkhhbmRsZSgpCi17Ci19Ci0KLXZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVu
Y29kZXIuZW5jb2RlKG1fc2l6ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9mbGFncyk7Ci0jaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgZW5jb2Rlci5lbmNvZGUobV9ncmFwaGljc1N1cmZh
Y2VUb2tlbik7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBlbmNvZGVyLmVuY29kZShtX2JpdG1hcEhhbmRsZSk7
Ci19Ci0KLWJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShoYW5kbGUubV9zaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhh
bmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotI2VuZGlmCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fYml0
bWFwSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRl
KGNvbnN0IEludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIEhpbnRz
IGhpbnRzKQotewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChoaW50cyAmIFN1
cHBvcnRzR3JhcGhpY3NTdXJmYWNlKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNl
PiBzdXJmYWNlID0gY3JlYXRlV2l0aFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpOwotICAgICAgICBpZiAo
c3VyZmFjZSkKLSAgICAgICAgICAgIHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsKLSAgICB9Ci0j
ZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oaGludHMpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShzaXpl
LCBmbGFncywgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgZmxhZ3MpKTsK
LX0KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXplJiBz
aXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQotewotICAgIEdyYXBoaWNzU3VyZmFj
ZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KLSAgICAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3Vw
cG9ydHNTb2Z0d2FyZVdyaXRlCi0gICAgICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9y
dHNDb3B5VG9UZXh0dXJlCi0gICAgICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNT
aGFyaW5nOwotCi0gICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KQotICAgICAgICBzdXJmYWNlRmxhZ3MgfD0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0FscGhh
OwotCi0gICAgLy8gVGhpcyBtaWdodCByZXR1cm4gbnVsbCwgaWYgdGhlIHN5c3RlbSBpcyB1bmFi
bGUgdG8gcHJvdmlkZSBhIG5ldyBncmFwaGljcyBzdXJmYWNlLgotICAgIC8vIEluIHRoYXQgY2Fz
ZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1cm4gbnVsbCBhbmQgYWxsb3cgZmFsbGluZyBiYWNr
IHRvIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNl
ID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc3VyZmFjZUZsYWdzKTsKLSAgICBpZiAo
IXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKHN1cmZhY2UpOwotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlU3VyZmFjZShzaXplLCBmbGFncywgc3VyZmFj
ZS5yZWxlYXNlKCkpKTsKLX0KLSNlbmRpZgotCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCi17ICAgIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChp
c0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpCi0gICAgICAgIHJldHVybiBtX2dyYXBoaWNzU3Vy
ZmFjZS0+YmVnaW5QYWludChyZWN0LCAwIC8qIFdyaXRlIHdpdGhvdXQgcmV0YWluaW5nIHBpeGVs
cyovKTsKLSNlbmRpZgotCi0gICAgQVNTRVJUKG1fYml0bWFwKTsKLSAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJlY3QpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgcmV0dXJuIGdyYXBoaWNz
Q29udGV4dC5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hh
cmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBiaXRt
YXApKTsKLX0KLQotU2hhcmVhYmxlU3VyZmFjZTo6U2hhcmVhYmxlU3VyZmFjZShjb25zdCBJbnRT
aXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gYml0bWFwKQotICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2ZsYWdzKGZs
YWdzKQotICAgICwgbV9iaXRtYXAoYml0bWFwKQotewotfQotCi0jaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCi1TaGFyZWFibGVTdXJmYWNlOjpTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQotICAgIDogbV9zaXplKHNpemUpCi0g
ICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9ncmFwaGljc1N1cmZhY2Uoc3VyZmFjZSkKLXsK
LX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgUGFz
c1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlKSk7Ci19Ci0jZW5kaWYK
LQotU2hhcmVhYmxlU3VyZmFjZTo6flNoYXJlYWJsZVN1cmZhY2UoKQotewotfQotCi1QYXNzUmVm
UHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5k
bGUmIGhhbmRsZSkKLXsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBpZiAoaGFuZGxl
LmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgIFJlZlB0cjxHcmFw
aGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShoYW5kbGUubV9z
aXplLCBoYW5kbGUubV9mbGFncywgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOwotICAg
ICAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVh
YmxlU3VyZmFjZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgUGFzc1JlZlB0cjxHcmFw
aGljc1N1cmZhY2U+KHN1cmZhY2UpKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUubV9i
aXRtYXBIYW5kbGUpOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxl
YXNlKCkpOwotfQotCi1ib29sIFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUm
IGhhbmRsZSkKLXsKLSAgICBoYW5kbGUubV9zaXplID0gbV9zaXplOwotICAgIGhhbmRsZS5tX2Zs
YWdzID0gbV9mbGFnczsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGhhbmRsZS5t
X2dyYXBoaWNzU3VyZmFjZVRva2VuID0gbV9ncmFwaGljc1N1cmZhY2UgPyBtX2dyYXBoaWNzU3Vy
ZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7Ci0gICAgaWYgKGhh
bmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0jZW5kaWYKLSAgICBpZiAoIW1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlLm1fYml0
bWFwSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi12b2lkIFNoYXJlYWJsZVN1cmZhY2U6OmNvcHlU
b1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQotewot
ICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKHBhc3NUZXh0dXJlKTsKLQotI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkp
IHsKLSAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4gdGV4dHVyZUdMID0gdG9CaXRtYXBU
ZXh0dXJlR0wodGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIGlmICh0ZXh0dXJlR0wpIHsKLSAgICAg
ICAgICAgIHVpbnQzMl90IHRleHR1cmVJRCA9IHRleHR1cmVHTC0+aWQoKTsKLSAgICAgICAgICAg
IHVpbnQzMl90IHRleHR1cmVUYXJnZXQgPSB0ZXh0dXJlR0wtPnRleHR1cmVUYXJnZXQoKTsKLSAg
ICAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5VG9HTFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgdGV4dHVyZUlELCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9ncmFwaGljc1N1
cmZhY2UtPmNyZWF0ZVJlYWRPbmx5SW1hZ2UoSW50UmVjdChzb3VyY2VPZmZzZXQsIHRhcmdldC5z
aXplKCkpKTsKLSAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRh
cmdldCwgSW50UG9pbnQ6Onplcm8oKSwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3Jp
Z2luYWxJbWFnZURhdGEpOwotICAgIH0KLSNlbmRpZgotCi0gICAgQVNTRVJUKG1fYml0bWFwKTsK
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7Ci0gICAg
dGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwgc291cmNlT2Zmc2V0
LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAg
cmV0dXJuOwotfQotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3Vy
ZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlN2EzOWYyOGE3NjcxNTVhNGU5YmZmZGNlOTdmYTQ1
OWI3ZGY0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTIxICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aWZuZGVmIFNoYXJlYWJsZVN1cmZhY2VfaAotI2RlZmluZSBTaGFyZWFibGVTdXJmYWNlX2gKLQot
I2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotCi0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlICJHcmFw
aGljc1N1cmZhY2UuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBCaXRt
YXBUZXh0dXJlOwotY2xhc3MgSW1hZ2U7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBTaGFyZWFibGVTdXJmYWNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVN1cmZhY2U+IHsKLXB1YmxpYzoKLSAgICBlbnVtIEhp
bnQgewotICAgICAgICBTdXBwb3J0c0dyYXBoaWNzU3VyZmFjZSA9IDB4MDEKLSAgICB9OwotCi0g
ICAgdHlwZWRlZiB1bnNpZ25lZCBIaW50czsKLQotICAgIGNsYXNzIEhhbmRsZSB7Ci0gICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7Ci0gICAgcHVibGljOgotICAgICAgICBIYW5k
bGUoKTsKLQotICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlJik7Ci0KLSNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4g
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZVRv
a2VuOyB9Ci0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFy
ZWFibGVTdXJmYWNlOwotICAgICAgICBtdXRhYmxlIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG1f
Yml0bWFwSGFuZGxlOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICBXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOwotI2VuZGlmCi0g
ICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgICAgICBTaGFyZWFibGVCaXRtYXA6
OkZsYWdzIG1fZmxhZ3M7Ci0gICAgfTsKLQotICAgIC8vIENyZWF0ZSBhIG5ldyBTaGFyZWFibGVT
dXJmYWNlLCBhbmQgYWxsb2NhdGUgZWl0aGVyIGEgR3JhcGhpY3NTdXJmYWNlIG9yIGEgU2hhcmVh
YmxlQml0bWFwIGFzIGJhY2tpbmcuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZs
YWdzLCBIaW50cyk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9tIGEg
aGFuZGxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShj
b25zdCBIYW5kbGUmKTsKLQotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MoKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0KLSAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCi0gICAgYm9v
bCBjcmVhdGVIYW5kbGUoSGFuZGxlJik7Ci0KLSAgICB+U2hhcmVhYmxlU3VyZmFjZSgpOwotCi0g
ICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQotICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6
SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBzaXplKCkpOyB9Ci0KLSAgICAvLyBDcmVhdGUg
YSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFj
a2luZyBzdG9yZS4KLSAgICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQotI2lmIFVTRShU
RVhUVVJFX01BUFBFUikKLSAgICB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IFNoYXJlYWJsZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7Ci0KLSAgICAvLyBDcmVhdGUg
YSBTaGFyZWFibGVTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFNoYXJlYWJsZUJpdG1h
cC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPik7Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBTaGFyZWFi
bGVTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdz
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwotICAgIC8vIENyZWF0ZSBh
IHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhpY3Mgc3VyZmFjZS4KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyk7Ci0gICAgLy8gQ3JlYXRl
IGEgU2hhcmVhYmxlU3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1cmZh
Y2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwotCi0gICAgYm9vbCBpc0JhY2tlZEJ5R3JhcGhpY3NT
dXJmYWNlKCkgY29uc3QgeyByZXR1cm4gISFtX2dyYXBoaWNzU3VyZmFjZTsgfQotI2VuZGlmCi0K
LSAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdz
IG1fZmxhZ3M7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7Ci0KLSNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
PiBtX2dyYXBoaWNzU3VyZmFjZTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBTaGFyZWFibGVTdXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDEyNjBiM2Mx
YWE0NmJiNWNiMjQ2MzRhYmNjMWIxMmY0ZDk0MzE0NzMuLjIyMWIwMzE0MGE0MmY5MTRkODdhNjky
NjZjMmIzZTAzYmFlZDNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtNzEsNyArNzEsNiBAQCBIRUFERVJT
ICs9IFwKICAgICBTaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmggXAogICAgIFNoYXJlZC9BUElD
bGllbnRUcmFpdHMuaCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIFwKLSAgICBTaGFy
ZWQvU2hhcmVhYmxlU3VyZmFjZS5oIFwKICAgICBTaGFyZWQvQ2FjaGVNb2RlbC5oIFwKICAgICBT
aGFyZWQvQ2hpbGRQcm9jZXNzLmggXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oIFwK
QEAgLTEzNiw2ICsxMzUsOCBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmggXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVySW5mby5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVP
YmplY3RNYXAuaCBcCkBAIC00NDIsNyArNDQzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGVOb25lLmNwcCBcCiAgICAgU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBcCiAg
ICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgXAotICAgIFNoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIFwKICAg
ICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdp
bnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKQEAgLTUwNSw2ICs1MDUsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAogICAgIFNoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgXAog
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmNwcCBc
CisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNw
cCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3h5LmNwcCBcCiAgICAgU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBT
aGFyZWQvcXQvTGF5ZXJUcmVlQ29udGV4dFF0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNzBlOWNlMjVmZjNkNzlkYjczMjRjYzJjNWU4
YjkwMjEyMDE0M2EwMi4uNGE3YmIxMDg2ZWU3YTg2N2IyZDNmZDY4MGM1YTM3ZGIwNWI4YjdkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMjEs
OCArMjEsOCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgiCiAKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2Uu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdM
LmgiCiAKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGls
ZTo6c3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcAogCiAgICAg
QVNTRVJUKHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCkud2lkdGgoKSA+PSBtX3RpbGVS
ZWN0LnNpemUoKS53aWR0aCgpICYmIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCkuaGVp
Z2h0KCkgPj0gbV90aWxlUmVjdC5zaXplKCkuaGVpZ2h0KCkpOwogICAgIGlmIChzaG91bGRSZXNl
dCkKLSAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVjdC5zaXplKCksIG1fc3VyZmFjZS0+
ZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA/IEJpdG1hcFRleHR1cmU6
OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVjdC5z
aXplKCksIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpKTsKIAogICAgIG1fc3VyZmFjZS0+Y29w
eVRvVGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1fc3VyZmFjZU9mZnNldCk7CiAgICAg
bV9zdXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
OjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50
UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNr
QnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQb2ludCYg
b2Zmc2V0KQogewogICAgIG1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgbV90aWxlUmVj
dCA9IHRpbGVSZWN0OwpAQCAtODQsNyArODQsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpyZW1vdmVBbGxUaWxlcygpCiAgICAgICAgIG1fdGlsZXNUb1JlbW92ZS5hZGQoaXQtPmtl
eSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWludDMy
X3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBvaW50
JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQz
Ml90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVj
dCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChp
dCAhPSBtX3RpbGVzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5oCmluZGV4IGNkMTUxZjg0NzZlY2Q1YmZjYjBjMjI4NmE1NGMxMzMxNTNmODVhOTkuLmFl
NWFmOGQ0ZmEyZmM5ZWJkMjExOTcyN2ZjYWRkODU5NjIzMzBmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKK2NsYXNzIENvb3JkaW5hdGVk
U3VyZmFjZTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlIDogcHVibGljIFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlIHsKIHB1YmxpYzoKQEAgLTQ0LDEwICs0NCwxMCBAQCBw
dWJsaWM6CiAgICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21fcmVw
YWludENvdW50OyB9CiAgICAgaW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlciopOwotICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4g
YnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgc2V0QmFja0J1ZmZl
cihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsK
KyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgV2ViQ29yZTo6
SW50UmVjdCBtX3NvdXJjZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3RpbGVSZWN0Owog
ICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGZsb2F0KTsKICAg
ICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKTsKICAgICB2b2lkIHJlbW92ZUFsbFRp
bGVzKCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJlYWJs
ZVN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgdXBkYXRlVGls
ZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUpOyB9CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyKik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3Bw
CmluZGV4IDJiNjFlYjkwYzUzZjk3NzQ4MmQzYjRkZjQyOGE5MTMwM2UyMDc3NjQuLjk4NDJjZjMx
NDhkNjE5ZWQ3MGQ4NjE0N2UwZWNjYTliZGNjNjY4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVk
ZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGluYXRv
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKLSNpbmNsdWRlICJV
cGRhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC03OSwx
MCArNzgsMTAgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVUaWxlRm9y
TGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHUKICAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSwgbV9yZW5kZXJlci5nZXQoKSwgbGF5
ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3Jl
YXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRs
ZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVVcGRhdGVB
dGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhh
bmRsZSkKIHsKICAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29udGFpbnMoYXRsYXNJRCkpOwotICAg
IG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShoYW5kbGUp
KTsKKyAgICBtX3N1cmZhY2VzLmFkZChhdGxhc0lELCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNy
ZWF0ZShoYW5kbGUpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpyZW1v
dmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKQEAgLTE0Niw5ICsxNDUsOSBAQCB2b2lkIExheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEIGltYQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVy
OjpjcmVhdGVJbWFnZUJhY2tpbmcsIG1fcmVuZGVyZXIuZ2V0KCksIGltYWdlSUQpKTsKIH0KIAot
dm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5k
bGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgY29uc3QgV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5k
KCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5nLCBtX3JlbmRlcmVyLmdldCgp
LCBpbWFnZUlELCBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkpOworICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcsIG1f
cmVuZGVyZXIuZ2V0KCksIGltYWdlSUQsIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhh
bmRsZSkpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjbGVhckltYWdl
QmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAppbmRleCBkYWYzODgyYmYz
N2Y3NDFkODMwNDc4NjJhY2IzY2Q0MDcyZWUxYWQ1Li5mMDBjYmM5NjY4ZmU1MTJiMzI4ZTBiYmE4
YWJkOGQ0MDFlNzcyYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5oCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllcklu
Zm8uaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgi
Ci0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIlN1cmZhY2VVcGRhdGVJ
bmZvLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaD4KQEAgLTY5LDEw
ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0
ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25z
dCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUZvckxheWVyKENvb3Jk
aW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHJlbW92ZVRpbGVGb3JMYXllcihD
b29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCk7Ci0gICAgdm9pZCBjcmVhdGVVcGRh
dGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7Cisg
ICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpIYW5kbGUmKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxh
c0lEKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2b2lkIHVwZGF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZSYpOwogICAgIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVD
b29yZGluYXRvclByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHBy
b3RlY3RlZDoKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGFzdFNlbnRWaXNpYmxlUmVjdDsKICAg
ICBmbG9hdCBtX2xhc3RTZW50U2NhbGU7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RT
ZW50VHJhamVjdG9yeVZlY3RvcjsKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQg
Ki8sIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiA+IFN1cmZhY2VNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGludCAvKiBhdGxhc0lEICovLCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiA+IFN1
cmZhY2VNYXA7CiAgICAgU3VyZmFjZU1hcCBtX3N1cmZhY2VzOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggNmM5Njc3YmVmZDA5ZTkwZjU5YWEzNmNjMjkwNGYxZDY3MzM4Y2JjNi4uYjk3NGRiMGVmM2U2
OWUzNjE1YWUyZTY5NzYzMjBiNzBhNmViYWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMywxMCArMzMs
MTAgQEAgbWVzc2FnZXMgLT4gTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSB7CiAgICAgQ3JlYXRl
VGlsZUZvckxheWVyKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90
IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpTdXJmYWNlVXBkYXRl
SW5mbyB1cGRhdGVJbmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcihXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJJRCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGls
ZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBSZW1vdmVU
aWxlRm9yTGF5ZXIoV2ViS2l0OjpDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMyX3Qg
dGlsZUlEKQotICAgIENyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBXZWJLaXQ6OlNoYXJl
YWJsZVN1cmZhY2U6OkhhbmRsZSBoYW5kbGUpCisgICAgQ3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0
bGFzSUQsIFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQogICAg
IFJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQogICAgIENyZWF0ZUltYWdlQmFja2luZyhX
ZWJLaXQ6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKLSAgICBVcGRhdGVJbWFn
ZUJhY2tpbmcoV2ViS2l0OjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFdlYktp
dDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKKyAgICBVcGRhdGVJbWFnZUJhY2tp
bmcoV2ViS2l0OjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFdlYktpdDo6V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQogICAgIENsZWFySW1hZ2VCYWNraW5n
Q29udGVudHMoV2ViS2l0OjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiAgICAg
UmVtb3ZlSW1hZ2VCYWNraW5nKFdlYktpdDo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlEKQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplLCBX
ZWJDb3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCmluZGV4IGY4ZmU2YjcxNjJlYzBiYTZiZTQ0ZDc4MGVmOTQ1ZmE1MGJhOWM1MTEuLmUy
YWQ4YzAzNTBkNmRiMDdhMjI4MDQ3YjU2ZWNhYjBhNDNjNjM3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlEKQogICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgYmFja2luZ1N0b3JlLnJlbGVh
c2UoKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gc3VyZmFjZSkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPiBzdXJmYWNlKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29udGFp
bnMoaW1hZ2VJRCkpOwogICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdl
QmFja2luZ3MuZmluZChpbWFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmlu
ZGV4IDk5MTIzZjAyN2MzYWUyOTU1N2U1NTYwOTk5OTI1ZmQwYTM4NzljOGIuLmJkYjIwYjBhZTQy
YjE3MmE4ZjVlYWM1Y2Y1NTI0OGRjZTc2NDE3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuaApAQCAtMjMsNyArMjMsNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZExheWVySW5m
by5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNsdWRlICJDb29yZGluYXRl
ZFN1cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Lmg+CkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAg
ICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50
UmVjdCB0aWxlUmVjdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2U7
CisgICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CiAgICAgICAgIFdl
YkNvcmU6OkludFBvaW50IG9mZnNldDsKLSAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlU3VyZmFjZT4gbmV3U3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IG5ld09mZnNldCkKKyAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
b3VyY2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbmV3T2Zmc2V0
KQogICAgICAgICAgICAgOiBzb3VyY2VSZWN0KHNvdXJjZSkKICAgICAgICAgICAgICwgdGlsZVJl
Y3QodGlsZSkKICAgICAgICAgICAgICwgc3VyZmFjZShuZXdTdXJmYWNlKQpAQCAtMTA1LDcgKzEw
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1
aW50MzJfdCB0aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKICAgICB2b2lkIGZsdXNoTGF5ZXJD
aGFuZ2VzKCk7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPik7CisgICAgdm9pZCB1cGRhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+KTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRp
bmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKaW5kZXggZDZhZDc3YWEwOGY0OGU0ZmI4MzMzZGU5NmQxNWUwM2Q1YTI5ZDdlZS4u
ZjgxNmUwYTYxN2YyNmMyZmU3M2E5NTM3Mjc4ZDgxZjVmYTkwZjY0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBA
IC03MzQsNyArNzM0LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEkKICAgICBpZiAoIW1fY29v
cmRpbmF0b3IpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dD4oKTsKIAotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUo
c2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IDAgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxw
aGEsIGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRl
bnRVcGRhdGUoc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjp0b0ZsYWdzKCFjb250ZW50c09wYXF1
ZSgpKSwgYXRsYXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVw
ZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA1
NjRhOTc0MWZmMTA5MmZhNGYyNTY4NTQ1ZjQ1YjdlYTRkOWY0NWExLi5hNTc0ZWJiNDFjZDAxNDA5
MjRlMTM4Y2UwOWVjZmEyNzAxMWI4ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTc1LDcgKzc0LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJz
KCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0
bWFwOjpGbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRV
cGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Ms
IGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CiB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAK
aW5kZXggNTVjYTlkYTdiNTk0Y2I2OThmNzhhNmM5MGFiMTQxOTRmOWExYjFiMS4uM2ZhYzFiMDJm
Njg4NzBiZjY5NmRmNWEyMzk3OWZiNTVlMDBlY2EwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtMTAzLDEwICsx
MDMsMTAgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShtX2lt
YWdlLT5zaXplKCksIG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJlYWJs
ZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKTsKLSAgICBtX2hhbmRsZSA9IGFkb3B0
UHRyKG5ldyBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUoKSk7CisgICAgbV9zdXJmYWNlID0gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6ZSgpLCBDb29yZGluYXRlZFN1cmZh
Y2U6OnRvRmxhZ3MobV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSkpOworICAgIG1faGFu
ZGxlID0gYWRvcHRQdHIobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlKCkpOwogCi0g
ICAgaWYgKCFtX3N1cmZhY2UtPmNyZWF0ZUhhbmRsZSgqbV9oYW5kbGUpKSB7CisgICAgaWYgKCFz
dGF0aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihtX3N1cmZhY2UuZ2V0KCkpLT5jcmVh
dGVIYW5kbGUoKm1faGFuZGxlKSkgewogICAgICAgICByZWxlYXNlU3VyZmFjZUlmTmVlZGVkKCk7
CiAgICAgICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEltYWdlQmFja2luZy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCA2
NWU4MjQ2NzJiOTM5ZjhhYzg1Y2YwYWU0NjVkYjgyYzM3MzkwNjlhLi5lZGM2ZTQ0MmIxYjY3YzFi
Njc3NmU1NWU4ZjAyNjA4NTk4ODZiZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2lu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTI5LDggKzI5LDkgQEAKIAogI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJDb29yZGluYXRlZExheWVySW5m
by5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkltYWdlLmgi
Ci0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIldlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQyLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIGNsYXNzIENvb3JkaW5hdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICB9OwpAQCAtODAsOCArODEsOCBAQCBw
cml2YXRlOgogICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgbV9pZDsKICAgICBWZWN0b3I8
SG9zdCo+IG1faG9zdHM7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNl
OwotICAgIE93blB0cjxTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU+IG1faGFuZGxlOworICAgIFJl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBPd25QdHI8V2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpIYW5kbGU+IG1faGFuZGxlOwogCiAgICAgV2ViQ29yZTo6VGltZXI8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+IG1fY2xlYXJDb250ZW50c1RpbWVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggYzk4
NWQxMWIzYTZlMDA2YzNmZjI2MDBhZDIzZDBiYzkwOWE3MDQyNi4uYTZmMWQ1OThhMDlmOWVjNGM4
OTRiNmU3YWUyODAxZWIwYzdhNDIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01NzEsNyArNTcyLDcgQEAgdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1h
Z2VJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OkNyZWF0ZUltYWdlQmFja2luZyhpbWFnZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
IGltYWdlSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBM
YXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQgaW1hZ2VJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhh
bmRsZSkKIHsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CiAgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpVcGRhdGVJbWFnZUJhY2tp
bmcoaW1hZ2VJRCwgaGFuZGxlKSk7CkBAIC02NTksNyArNjYwLDcgQEAgdm9pZCBMYXllclRyZWVD
b29yZGluYXRvcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdWludDMy
X3QgdGlsZUkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXllcklELCB0aWxlSUQpKTsKIH0KIAotdm9p
ZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNv
bnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29y
ZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVVcGRhdGVBdGxhcyhhdGxhc0lE
LCBoYW5kbGUpKTsKIH0KQEAgLTc2NSwxMiArNzY2LDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7
CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBMYXllclRyZWVDb29y
ZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50
UG9pbnQmIG9mZnNldCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBMYXllclRyZWVDb29y
ZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5h
dGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIGludCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkK
IHsKLSAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7
CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOwotICAgICAg
ICBpZiAoYXRsYXMtPmZsYWdzKCkgPT0gZmxhZ3MpIHsKKyAgICAgICAgaWYgKGF0bGFzLT5zdXBw
b3J0c0FscGhhKCkgPT0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpzdXBwb3J0c0FscGhhKGZsYWdzKSkg
ewogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGF2
YWlsYWJsZSBidWZmZXIgc3BhY2UuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQgPSBhdGxh
cy0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0bGFzSUQsIHNpemUsIG9mZnNldCk7
CiAgICAgICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KQpAQCAtODAxLDcgKzgwMiw3IEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVk
KFRpbWVyPExheWVyVHJlZUNvb3JkCiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBk
YXRlQXRsYXNlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFhdGxhcy0+aXNJblVzZSgpKQogICAg
ICAgICAgICAgYXRsYXMtPmFkZFRpbWVJbmFjdGl2ZShSZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGlt
ZXJJbnRlcnZhbCk7Ci0gICAgICAgIGJvb2wgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQg
PSBhdGxhcy0+ZmxhZ3MoKSA9PSBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3M7CisgICAgICAgIGJv
b2wgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQgPSAhYXRsYXMtPnN1cHBvcnRzQWxwaGEo
KTsKICAgICAgICAgaWYgKGF0bGFzLT5pc0luYWN0aXZlKCkpIHsKICAgICAgICAgICAgIGlmICgh
Zm91bmRBY3RpdmVBdGxhc0Zvck5vbkNvbXBvc2l0ZWRDb250ZW50ICYmICFhdGxhc1RvS2VlcEFu
eXdheSAmJiB1c2FibGVGb3JOb25Db21wb3NpdGVkQ29udGVudCkKICAgICAgICAgICAgICAgICBh
dGxhc1RvS2VlcEFueXdheSA9IG1fdXBkYXRlQXRsYXNlc1tpXS5yZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAppbmRleCAyNjhh
OGE5MWMyNGQyNmYzYzJlOWU5NzJkOGI1ZTc0ZTkyN2Y0ODVmLi5hYjM4Y2FhMzc5ZGY0M2M3NGE1
YzM5Mzk2OWVmMjQ4ZGYxMzFiZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJMYXll
clRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVcGRhdGVBdGxhcy5o
IgorI2luY2x1ZGUgIldlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckZh
Y3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0xMDMsMTAgKzEwNCwxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXllcnMoKTsKIAot
ICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29u
dGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFn
cywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgUGFzc093
blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgaW50JiBhdGxhc0lE
LCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCiAgICAgLy8gVXBkYXRlQXRsYXNDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSYpOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhp
bnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpOwogCiAjaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpAQCAtMTI1LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0b3IKICAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmco
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0
bGFzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAppbmRleCA5YTU0MThmMWVhYWEzNDg3YjRlNDI0YjlhOTU2
MjAyMDgzMDk3NTRlLi45OTY1MzE4ZDBmYTU1MmI2NzRlY2ExNTBhMTg4ZWEwODE3ZWExNGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCiAK
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTMwLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1VcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoVXBkYXRlQXRs
YXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBm
bGFncykKK1VwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50
LCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogICAgIDog
bV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mbGFncyhmbGFncykKICAgICAsIG1faW5hY3Rpdml0
eUluU2Vjb25kcygwKQpAQCAtMzksOSArNDAsOSBAQCBVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMo
VXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgU2hhcmVhYmxlQml0bQog
ICAgIHN0YXRpYyBpbnQgbmV4dElEID0gMDsKICAgICBtX0lEID0gKytuZXh0SUQ7CiAgICAgSW50
U2l6ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikp
OwotICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncywg
U2hhcmVhYmxlU3VyZmFjZTo6U3VwcG9ydHNHcmFwaGljc1N1cmZhY2UpOworICAgIG1fc3VyZmFj
ZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzKTsKIAotICAgIGlmICgh
bV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUobV9oYW5kbGUpKSB7CisgICAgaWYgKCFzdGF0aWNfY2Fz
dDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihtX3N1cmZhY2UuZ2V0KCkpLT5jcmVhdGVIYW5kbGUo
bV9oYW5kbGUpKSB7CiAgICAgICAgIG1faXNWYWlsZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtODYsNyArODcsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBk
YXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihpbnQmIGF0bAogICAgIG9m
ZnNldCA9IHJlY3QubG9jYXRpb24oKTsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFw
aGljc0NvbnRleHQgPSBtX3N1cmZhY2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKIAot
ICAgIGlmIChmbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKSB7CisgICAg
aWYgKHN1cHBvcnRzQWxwaGEoKSkgewogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5m
aWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNpemUpLCBDb2xvcjo6dHJhbnNwYXJl
bnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0
bGFzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9VcGRhdGVBdGxhcy5oCmluZGV4IDdjZWZlOWM5Nzk0MjE1ODYyNzNmNGUwY2QzMDlhMjAy
MzRjNzFhZDEuLmQwYjc3OWUwNGI5ZmUzNjhmZWFhNjJjNTMxM2YyZGU5Yzg1NTRkMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMiw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJBcmVhQWxsb2NhdG9yLmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNsdWRl
ICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDE0ICszNSwxNCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgVXBkYXRlQXRsYXNDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFj
ZTo6SGFuZGxlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQg
YXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKSA9IDA7CiB9OwogCiBj
bGFzcyBVcGRhdGVBdGxhcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVXBkYXRlQXRsYXMp
OwogcHVibGljOgotICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50IGRpbWVu
c2lvbiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyk7CisgICAgVXBkYXRlQXRsYXMoVXBkYXRlQXRs
YXNDbGllbnQqLCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKICAg
ICB+VXBkYXRlQXRsYXMoKTsKIAogICAgIGlubGluZSBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnNpemUoKTsgfQpAQCAtNDksNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyBhIG51bGwgcG9pbnRlciBvZiB0aGVyZSBpcyBubyBhdmFpbGFi
bGUgYnVmZmVyLgogICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdp
blBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50JiBhdGxhc0lELCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCk7CiAgICAgdm9pZCBkaWRTd2FwQnVm
ZmVycygpOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzOyB9CisgICAgYm9vbCBzdXBwb3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9z
dXJmYWNlLT5zdXBwb3J0c0FscGhhKCk7IH0KIAogICAgIHZvaWQgYWRkVGltZUluYWN0aXZlKGRv
dWJsZSBzZWNvbmRzKQogICAgIHsKQEAgLTcwLDggKzcxLDggQEAgcHJpdmF0ZToKICAgICBVcGRh
dGVBdGxhc0NsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPEdlbmVyYWxBcmVhQWxsb2NhdG9y
PiBtX2FyZWFBbGxvY2F0b3I7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBtX2ZsYWdzOwot
ICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7Ci0gICAgU2hhcmVhYmxlU3Vy
ZmFjZTo6SGFuZGxlIG1faGFuZGxlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1f
c3VyZmFjZTsKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKICAg
ICBkb3VibGUgbV9pbmFjdGl2aXR5SW5TZWNvbmRzOwogICAgIGludCBtX0lEOwogICAgIGJvb2wg
bV9pc1ZhaWxkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178341</attachid>
            <date>2012-12-07 23:07:33 -0800</date>
            <delta_ts>2012-12-09 21:01:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121208160447.patch</filename>
            <type>text/plain</type>
            <size>62679</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzZhNDVhZjg4ODk4OGUz
NzMwYzkwODQxZTg5YjJlZTNmYWNiODU5My4uOWVjNzU1MDFmZGQ4MGMwMmM4ZDMyZDMyOTAwOWRj
ZDBjODY3MTk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0xMi0wNyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogQWRkIENvb3JkaW5hdGVkU3VyZmFjZSB0byByZW1vdmUgdGhlIGRlcGVu
ZGVuY3kgb2YgU2hhcmVhYmxlU3VyZmFjZSBmcm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZXJuYWwgUmV2
aWV3IGJ5IEd3YW5nIFlvb24gSHdhbmcgYW5kIEphZSBIeXVuIFBhcmsuCisKKyAgICAgICAgSXQg
aXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3Mg
b24gV0sxLgorCisgICAgICAgIEN1cnJlbnRseSwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLCBD
b29yZGluYXRlZFRpbGUgYW5kCisgICAgICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlIGRpcmVj
dGx5IHVzZSBTaGFyZWFibGVTdXJmYWNlLiBTaGFyZWFibGVTdXJmYWNlIHdhcworICAgICAgICBp
bXBsZW1lbnRlZCB0byBzaGFyZSBhbiBpbWFnZSBiZXR3ZWVuIHByb2Nlc3NlcyBhcyB3ZWxsIGFz
IHBsYWNlZCBpbiBXSzIuCisgICAgICAgIFdlIHdhbnQgdGhlbSB0byBub3QgZGVwZW5kIG9uIFNo
YXJlYWJsZVN1cmZhY2UgdG8gbW92ZSB0aGVtIGludG8gV2ViQ29yZS4gU28KKyAgICAgICAgdGhp
cyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjbGFzczogQ29vcmRpbmF0ZWRTdXJmYWNlLCB0byBiZSB1
c2VkIGFzIGEKKyAgICAgICAgZHJhd2luZyBzdXJmYWNlIGZvciBDb29yZGluYXRlZCBHcmFwaGlj
cy4KKworICAgICAgICBDcmVhdGUgYSBDb29yZGluYXRlZFN1cmZhY2UgY2xhc3MgdGhhdCBjYW4g
YmUgdGhlIGJhc2UgY2xhc3MgYm90aCBmb3IKKyAgICAgICAgdGhlIGN1cnJlbnQgSVBDLWJhc2Vk
IFNoYXJlYWJsZVN1cmZhY2UsIHJlbmFtZWQgaGVyZSB0bworICAgICAgICBXZWJDb29yZGluYXRl
ZFN1cmZhY2UsIGFuZCB0byBhIGZ1dHVyZSB0aHJlYWQtYmFzZWQgc3VyZmFjZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENvb3JkaW5hdGVk
U3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6fkNvb3JkaW5h
dGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6c3VwcG9y
dHNBbHBoYSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6dG9GbGFncyk6
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmNwcC4KKyAgICAgICAgICBFeHRlbmRzIENvb3JkaW5hdGVkU3VyZmFjZS4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxl
OjpIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRs
ZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5k
bGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
fldlYkNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpjb3B5VG9UZXh0dXJlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoSGFu
ZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6Omdy
YXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjppc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxl
Ojpzd2FwQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZTo6c2V0QmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZSk6CisgICAgICAgIChDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6
CisgICAgICAgIChMYXllclRyZWVDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUlt
YWdlQmFja2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuaDoKKyAgICAgICAgKFRpbGVVcGRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVSZW5kZXJlcjo6VGlsZVVwZGF0ZTo6VGlsZVVwZGF0ZSk6CisgICAgICAgIChM
YXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEltYWdl
QmFja2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5oOgorICAgICAgICAoQ29vcmRpbmF0
b3IpOgorICAgICAgICAoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpjcmVhdGVVcGRh
dGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpiZWdpbkNv
bnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6cmVs
ZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAg
IChMYXllclRyZWVDb29yZGluYXRvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpVcGRh
dGVBdGxhczo6VXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRhdGVBdGxhczo6YmVn
aW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oOgorICAgICAgICAoVXBkYXRlQXRs
YXNDbGllbnQpOgorICAgICAgICAoVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpVcGRh
dGVBdGxhczo6c3VwcG9ydHNBbHBoYSk6CisKIDIwMTItMTItMDcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdGhlIFdlYlByb2Nlc3MgYWNjZXNzIHRv
IHRoZSBDb3JlTWVkaWEgcHJlZmVyZW5jZXMgZmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
OGYzYjZmOTNjMGQ4N2QxYmQ1YzQxMDQ0MmQ2ZDNlMTYxZGM4MzBlMC4uOWJmNWNkMjJhNGE0ODdh
ZDI0Y2FmMjA5NTVhNmIwMmRiZGYxNTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE1NCw3
ICsxNTQsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAKICAgICBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogICAgIFNoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwCi0gICAgU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCiAgICAgU2hhcmVk
L1N0YXRpc3RpY3NEYXRhLmNwcAogICAgIFNoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAKICAg
ICBTaGFyZWQvVXBkYXRlSW5mby5jcHAKQEAgLTIxOSw2ICsyMTgsNyBAQCBzZXQoV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllckluZm8uY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5jcHAKIAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRl
bnRpZmllckRhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0
YzkxNmMwMzk4NTJkZGNmZGY3OGViZGIxMWJmY2M0YTJlMDFkMjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1
cmZhY2UuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBh
bnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29v
cmRpbmF0ZWRTdXJmYWNlX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBCaXRtYXBUZXh0dXJlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENvb3JkaW5hdGVkU3VyZmFjZT4geworcHVibGljOgorICAgIGVudW0gRmxhZyB7
CisgICAgICAgIE5vRmxhZ3MgPSAwLAorICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAor
ICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBGbGFnczsKKworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncyk7CisKKyAgICB2aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKSB7IH0KKworICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzQWxwaGEoRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgU3Vw
cG9ydHNBbHBoYTsgfQorICAgIHN0YXRpYyBib29sIHRvRmxhZ3MoYm9vbCBzdXBwb3J0QWxwaGEp
IHsgcmV0dXJuIHN1cHBvcnRBbHBoYSA/IFN1cHBvcnRzQWxwaGEgOiBOb0ZsYWdzOyB9CisKKyAg
ICBib29sIHN1cHBvcnRzQWxwaGEoKSB7IHJldHVybiBmbGFncygpICYgU3VwcG9ydHNBbHBoYTsg
fQorICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0ID0gMDsK
KworICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBw
YWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JikgPSAwOworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwg
dm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNv
dXJjZU9mZnNldCkgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEZsYWdz
IGZsYWdzKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgorI2VuZGlmIC8vIENvb3JkaW5hdGVkU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTQ2MTA5MWM1YjI1ZjdmYzQxODBlMTBlNWJhYTUw
MDMzN2M5NGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDIyMCBA
QAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisK
KyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
KyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CisKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjZW5kaWYKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OkhhbmRsZTo6SGFuZGxlKCkKK3sKK30KKwordm9pZCBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyLmVuY29kZShtX3NpemUpOworICAgIGVuY29kZXIuZW5j
b2RlKG1fZmxhZ3MpOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGVuY29kZXIuZW5j
b2RlKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOworICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZVRv
a2VuLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgZW5jb2Rlci5lbmNv
ZGUobV9iaXRtYXBIYW5kbGUpOworfQorCitib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFu
ZGxlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhh
bmRsZSkKK3sKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9zaXplKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2ZsYWdz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tl
bi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
LCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIHJldHVybiBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7Cit9CisKK1Bhc3NSZWZQdHI8V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIFJl
ZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgc3VyZmFjZSA9IGNyZWF0ZVdpdGhTdXJmYWNlKHNpemUsIGZsYWdzKTsKKyNl
bmRpZgorCisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICBzdXJmYWNlID0gY3JlYXRlKHNpemUs
IGZsYWdzLCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBzdXBwb3J0c0Fs
cGhhKGZsYWdzKSA/IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJp
dG1hcDo6Tm9GbGFncykpOworCisgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOworfQorCisj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXpl
JiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIEdyYXBoaWNz
U3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KKyAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpT
dXBwb3J0c1NvZnR3YXJlV3JpdGUKKyAgICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRz
Q29weVRvVGV4dHVyZQorICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5n
OworCisgICAgaWYgKHN1cHBvcnRzQWxwaGEoZmxhZ3MpKQorICAgICAgICBzdXJmYWNlRmxhZ3Mg
fD0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0FscGhhOworCisgICAgLy8gVGhpcyBtaWdodCBy
ZXR1cm4gbnVsbCwgaWYgdGhlIHN5c3RlbSBpcyB1bmFibGUgdG8gcHJvdmlkZSBhIG5ldyBncmFw
aGljcyBzdXJmYWNlLgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCBy
ZXR1cm4gbnVsbCBhbmQgYWxsb3cgZmFsbGluZyBiYWNrIHRvIFNoYXJlYWJsZUJpdG1hcC4KKyAg
ICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVh
dGUoc2l6ZSwgc3VyZmFjZUZsYWdzKTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIHJldHVy
biAwOworCisgICAgQVNTRVJUKHN1cmZhY2UpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlLnJlbGVhc2UoKSkpOworfQor
I2VuZGlmCisKK1Bhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRSZWN0JiByZWN0KQor
eworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NT
dXJmYWNlKCkpCisgICAgICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+YmVnaW5QYWludChy
ZWN0LCAwIC8qIFdyaXRlIHdpdGhvdXQgcmV0YWluaW5nIHBpeGVscyovKTsKKyNlbmRpZgorCisg
ICAgQVNTRVJUKG1fYml0bWFwKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGlwKHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSk7CisgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7
Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZs
YWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBiaXRt
YXApKTsKK30KKworV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRlZFN1cmZhY2Uo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKKyAgICA6IG1fc2l6ZShzaXplKQorICAg
ICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1fYml0bWFwKGJpdG1hcCkKK3sKK30KKworI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQorV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRl
ZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNl
OjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZh
Y2UpCisgICAgOiBtX3NpemUoc2l6ZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2dy
YXBoaWNzU3VyZmFjZShzdXJmYWNlKQoreworfQorCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVk
U3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1
cmZhY2U+IHN1cmZhY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRl
ZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UpKTsKK30KKyNlbmRpZgorCitXZWJDb29yZGlu
YXRlZFN1cmZhY2U6On5XZWJDb29yZGluYXRlZFN1cmZhY2UoKQoreworfQorCitQYXNzUmVmUHRy
PFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29u
c3QgSGFuZGxlJiBoYW5kbGUpCit7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYg
KGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlzVmFsaWQoKSkgeworICAgICAgICBHcmFw
aGljc1N1cmZhY2U6OkZsYWdzIHN1cmZhY2VGbGFncyA9IDA7CisgICAgICAgIGlmIChzdXBwb3J0
c0FscGhhKGhhbmRsZS5tX2ZsYWdzKSkKKyAgICAgICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFw
aGljc1N1cmZhY2U6OlN1cHBvcnRzQWxwaGE7CisgICAgICAgIFJlZlB0cjxHcmFwaGljc1N1cmZh
Y2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShoYW5kbGUubV9zaXplLCBzdXJm
YWNlRmxhZ3MsIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKTsKKyAgICAgICAgaWYgKHN1
cmZhY2UpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1
cmZhY2U+KHN1cmZhY2UpKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUubV9iaXRtYXBI
YW5kbGUpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVy
biBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkp
OworfQorCitib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYg
aGFuZGxlKQoreworICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7CisgICAgaGFuZGxlLm1fZmxh
Z3MgPSBtX2ZsYWdzOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaGFuZGxlLm1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJm
YWNlLT5leHBvcnRUb2tlbigpIDogR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAgICBpZiAoaGFu
ZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgorICAgIGlmICghbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9iaXRt
YXBIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworI2lmIFVTRShURVhUVVJFX01BUFBFUikKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
b3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1
cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkK
K3sKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZShwYXNzVGV4dHVyZSk7CisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFj
ZSgpKSB7CisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVHTCA9IHRvQml0
bWFwVGV4dHVyZUdMKHRleHR1cmUuZ2V0KCkpOworICAgICAgICBpZiAodGV4dHVyZUdMKSB7Cisg
ICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7CisgICAgICAg
ICAgICB1aW50MzJfdCB0ZXh0dXJlVGFyZ2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJlVGFyZ2V0KCk7
CisgICAgICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmVJRCwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fZ3JhcGhp
Y3NTdXJmYWNlLT5jcmVhdGVSZWFkT25seUltYWdlKEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJn
ZXQuc2l6ZSgpKSk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgp
LCB0YXJnZXQsIEludFBvaW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlm
eU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChtX2JpdG1h
cCk7CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOwor
ICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIHNvdXJjZU9m
ZnNldCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwor
ICAgIHJldHVybjsKK30KKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIpCisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDMzM2QzNDhjNWU1YTc3NWI2
NjhiNWI3ZGRlZmMyOGY0ZGM2ZTgyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0w
LDAgKzEsMTEyIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAx
MDAsIEluYy4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJDb29yZGluYXRl
ZFN1cmZhY2VfaAorI2RlZmluZSBXZWJDb29yZGluYXRlZFN1cmZhY2VfaAorCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2lu
Y2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisj
aW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSA6IHB1YmxpYyBD
b29yZGluYXRlZFN1cmZhY2UgeworcHVibGljOgorICAgIGNsYXNzIEhhbmRsZSB7CisgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CisgICAgcHVibGljOgorICAgICAgICBIYW5k
bGUoKTsKKworICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBj
b25zdDsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciosIEhhbmRsZSYpOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsgfQorI2VuZGlmCisKKyAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOworICAgICAgICBtdXRh
YmxlIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG1fYml0bWFwSGFuZGxlOworI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dy
YXBoaWNzU3VyZmFjZVRva2VuOworI2VuZGlmCisgICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9z
aXplOworICAgICAgICBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIG1fZmxhZ3M7CisgICAgfTsK
KworICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2UsIGFuZCBhbGxvY2F0
ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3IgYSBTaGFyZWFibGVCaXRtYXAgYXMgYmFja2lu
Zy4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworCisgICAgLy8gQ3JlYXRlIGEgc2hhcmVh
YmxlIHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29y
ZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKKworICAgIC8vIENyZWF0ZSBh
IGhhbmRsZS4KKyAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmKTsKKworICAgIHZpcnR1YWwg
fldlYkNvb3JkaW5hdGVkU3VyZmFjZSgpOworCisgICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGlj
c0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgT1ZFUlJJREU7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOworCisgICAgdmlydHVh
bCBGbGFncyBmbGFncygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZmxhZ3M7IH0KKworICAg
IC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGlu
ZyBTaGFyZWFibGVCaXRtYXAuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4pOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKKyAgICAvLyBDcmVhdGUgYSBzaGFyZWFi
bGUgYml0bWFwIGJhY2tlZCBieSBhIGdyYXBoaWNzIHN1cmZhY2UuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgRmxhZ3MpOworICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwor
CisgICAgYm9vbCBpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gISFt
X2dyYXBoaWNzU3VyZmFjZTsgfQorI2VuZGlmCisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6
ZTsKKyAgICBGbGFncyBtX2ZsYWdzOworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYml0
bWFwOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgUmVmUHRyPFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2Vu
ZGlmIC8vIFdlYkNvb3JkaW5hdGVkU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hh
cmVhYmxlU3VyZmFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmOGZhMTA2
OTkzNWM5NjY3NDU2NjJmMGYxMjdmZGIyOTQ3YzY1ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1
cmZhY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0
IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQot
Ci0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
U2hhcmVhYmxlU3VyZmFjZS5oIgotCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3Vt
ZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2VU
b2tlbi5oPgotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHTC5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpIYW5kbGUoKQotewotfQotCi12
b2lkIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyLmVuY29kZShtX3NpemUpOwotICAg
IGVuY29kZXIuZW5jb2RlKG1fZmxhZ3MpOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAg
IGVuY29kZXIuZW5jb2RlKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOwotICAgIGlmIChtX2dyYXBo
aWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAg
ZW5jb2Rlci5lbmNvZGUobV9iaXRtYXBIYW5kbGUpOwotfQotCi1ib29sIFNoYXJlYWJsZVN1cmZh
Y2U6OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgSGFu
ZGxlJiBoYW5kbGUpCi17Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fc2l6ZSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUu
bV9mbGFncykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tl
bikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJm
YWNlVG9rZW4uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1QYXNzUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBTaGFy
ZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBIaW50cyBoaW50cykKLXsKLSNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKLSAgICBpZiAoaGludHMgJiBTdXBwb3J0c0dyYXBoaWNzU3VyZmFjZSkgewot
ICAgICAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gc3VyZmFjZSA9IGNyZWF0ZVdpdGhTdXJm
YWNlKHNpemUsIGZsYWdzKTsKLSAgICAgICAgaWYgKHN1cmZhY2UpCi0gICAgICAgICAgICByZXR1
cm4gc3VyZmFjZS5yZWxlYXNlKCk7Ci0gICAgfQotI2VuZGlmCi0gICAgVU5VU0VEX1BBUkFNKGhp
bnRzKTsKLQotICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGZsYWdzKSk7Ci19Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKLVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFn
cyBmbGFncykKLXsKLSAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHN1cmZhY2VGbGFncyA9Ci0g
ICAgICAgICAgICBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU29mdHdhcmVXcml0ZQotICAgICAg
ICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQ29weVRvVGV4dHVyZQotICAgICAgICAg
ICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKLQotICAgIGlmIChmbGFncyAm
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkKLSAgICAgICAgc3VyZmFjZUZsYWdzIHw9
IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNBbHBoYTsKLQotICAgIC8vIFRoaXMgbWlnaHQgcmV0
dXJuIG51bGwsIGlmIHRoZSBzeXN0ZW0gaXMgdW5hYmxlIHRvIHByb3ZpZGUgYSBuZXcgZ3JhcGhp
Y3Mgc3VyZmFjZS4KLSAgICAvLyBJbiB0aGF0IGNhc2UsIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0
dXJuIG51bGwgYW5kIGFsbG93IGZhbGxpbmcgYmFjayB0byBTaGFyZWFibGVCaXRtYXAuCi0gICAg
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRl
KHNpemUsIHN1cmZhY2VGbGFncyk7Ci0gICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIEFTU0VSVChzdXJmYWNlKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJl
YWJsZVN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UucmVsZWFzZSgpKSk7Ci19Ci0jZW5kaWYK
LQotUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZVN1cmZhY2U6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRSZWN0JiByZWN0KQoteyAgICAKLSNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgp
KQotICAgICAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCwgMCAv
KiBXcml0ZSB3aXRob3V0IHJldGFpbmluZyBwaXhlbHMqLyk7Ci0jZW5kaWYKLQotICAgIEFTU0VS
VChtX2JpdG1hcCk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0
ID0gbV9iaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGdyYXBoaWNzQ29udGV4
dC0+Y2xpcChyZWN0KTsKLSAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwg
cmVjdC55KCkpOwotICAgIHJldHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOwotfQotCi1Q
YXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hh
cmVhYmxlU3VyZmFjZShzaXplLCBmbGFncywgYml0bWFwKSk7Ci19Ci0KLVNoYXJlYWJsZVN1cmZh
Y2U6OlNoYXJlYWJsZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFw
OjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKLSAgICA6
IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKLSAgICAsIG1fYml0bWFwKGJpdG1h
cCkKLXsKLX0KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotU2hhcmVhYmxlU3VyZmFjZTo6
U2hhcmVhYmxlU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBTaGFyZWFibGVC
aXRtYXA6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSkKLSAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKLSAgICAs
IG1fZ3JhcGhpY3NTdXJmYWNlKHN1cmZhY2UpCi17Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVhYmxl
U3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFNo
YXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBz
dXJmYWNlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlU3VyZmFjZShzaXpl
LCBmbGFncywgc3VyZmFjZSkpOwotfQotI2VuZGlmCi0KLVNoYXJlYWJsZVN1cmZhY2U6On5TaGFy
ZWFibGVTdXJmYWNlKCkKLXsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFy
ZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCi17Ci0jaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlz
VmFsaWQoKSkgewotICAgICAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3Jh
cGhpY3NTdXJmYWNlOjpjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGhhbmRs
ZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKTsKLSAgICAgICAgaWYgKHN1cmZhY2UpCi0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2UoaGFuZGxlLm1fc2l6ZSwg
aGFuZGxlLm1fZmxhZ3MsIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPihzdXJmYWNlKSkpOwot
ICAgIH0KLSNlbmRpZgotCi0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKTsKLSAgICBpZiAoIWJp
dG1hcCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gY3JlYXRlKGhhbmRsZS5tX3Np
emUsIGhhbmRsZS5tX2ZsYWdzLCBiaXRtYXAucmVsZWFzZSgpKTsKLX0KLQotYm9vbCBTaGFyZWFi
bGVTdXJmYWNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgaGFuZGxlLm1f
c2l6ZSA9IG1fc2l6ZTsKLSAgICBoYW5kbGUubV9mbGFncyA9IG1fZmxhZ3M7Ci0KLSNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1f
Z3JhcGhpY3NTdXJmYWNlID8gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCkgOiBHcmFw
aGljc1N1cmZhY2VUb2tlbigpOwotICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tl
bi5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgaWYgKCFtX2Jp
dG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQotdm9pZCBTaGFyZWFibGVTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29u
c3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkKLXsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZShwYXNzVGV4dHVyZSk7Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBp
ZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlR0w+IHRleHR1cmVHTCA9IHRvQml0bWFwVGV4dHVyZUdMKHRleHR1cmUuZ2V0KCkpOwot
ICAgICAgICBpZiAodGV4dHVyZUdMKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlSUQg
PSB0ZXh0dXJlR0wtPmlkKCk7Ci0gICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlVGFyZ2V0ID0g
dGV4dHVyZUdMLT50ZXh0dXJlVGFyZ2V0KCk7Ci0gICAgICAgICAgICBtX2dyYXBoaWNzU3VyZmFj
ZS0+Y29weVRvR0xUZXh0dXJlKHRleHR1cmVUYXJnZXQsIHRleHR1cmVJRCwgdGFyZ2V0LCBzb3Vy
Y2VPZmZzZXQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IG1fZ3JhcGhpY3NTdXJmYWNlLT5jcmVhdGVSZWFkT25seUltYWdl
KEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXQuc2l6ZSgpKSk7Ci0gICAgICAgIHRleHR1cmUt
PnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIEludFBvaW50Ojp6ZXJvKCksIEJp
dG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIEFTU0VSVChtX2JpdG1hcCk7Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOwotICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGlt
YWdlLmdldCgpLCB0YXJnZXQsIHNvdXJjZU9mZnNldCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2Fu
TW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHJldHVybjsKLX0KLSNlbmRpZiAvLyBVU0Uo
VEVYVFVSRV9NQVBQRVIpCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUw
ZTdhMzlmMjhhNzY3MTU1YTRlOWJmZmRjZTk3ZmE0NTliN2RmNGUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vKgotIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBTaGFyZWFibGVTdXJmYWNlX2gK
LSNkZWZpbmUgU2hhcmVhYmxlU3VyZmFjZV9oCi0KLSNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKLQotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi0jaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCi0jaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCi0jZW5kaWYKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQml0bWFwVGV4dHVyZTsKLWNsYXNzIEltYWdlOwot
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
U2hhcmVhYmxlU3VyZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVT
dXJmYWNlPiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBIaW50IHsKLSAgICAgICAgU3VwcG9ydHNHcmFw
aGljc1N1cmZhY2UgPSAweDAxCi0gICAgfTsKLQotICAgIHR5cGVkZWYgdW5zaWduZWQgSGludHM7
Ci0KLSAgICBjbGFzcyBIYW5kbGUgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5k
bGUpOwotICAgIHB1YmxpYzoKLSAgICAgICAgSGFuZGxlKCk7Ci0KLSAgICAgICAgYm9vbCBpc051
bGwoKSBjb25zdDsKLQotICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXImKSBjb25zdDsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIEhhbmRsZSYpOwotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29u
c3QgeyByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsgfQotI2VuZGlmCi0KLSAgICBwcml2
YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKLSAgICAgICAgbXV0
YWJsZSBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBtX2JpdG1hcEhhbmRsZTsKLSNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gbV9n
cmFwaGljc1N1cmZhY2VUb2tlbjsKLSNlbmRpZgotICAgICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZTsKLSAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBtX2ZsYWdzOwotICAgIH07Ci0K
LSAgICAvLyBDcmVhdGUgYSBuZXcgU2hhcmVhYmxlU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVpdGhl
ciBhIEdyYXBoaWNzU3VyZmFjZSBvciBhIFNoYXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywgSGludHMpOwotCi0gICAgLy8gQ3Jl
YXRlIGEgc2hhcmVhYmxlIHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3QgSGFuZGxlJik7Ci0KLSAgICBTaGFy
ZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQotCi0g
ICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgotICAgIGJvb2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYpOwot
Ci0gICAgflNoYXJlYWJsZVN1cmZhY2UoKTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IGJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQo
KSwgc2l6ZSgpKTsgfQotCi0gICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29udGV4dCB0aGF0IGNh
biBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgUGFzc093blB0
cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAgdm9pZCBj
b3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9m
ZnNldCk7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzLCBQYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4pOwotCi0gICAgLy8gQ3JlYXRlIGEgU2hhcmVhYmxlU3VyZmFjZSByZWZlcmVu
Y2luZyBhbiBleGlzdGluZyBTaGFyZWFibGVCaXRtYXAuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFi
bGVCaXRtYXA6OkZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOwotCi0jaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgU2hhcmVhYmxlU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2U+KTsKLSAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGJhY2tlZCBi
eSBhIGdyYXBoaWNzIHN1cmZhY2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MpOwotICAgIC8vIENyZWF0ZSBhIFNoYXJlYWJsZVN1cmZhY2UgcmVmZXJl
bmNpbmcgYW4gZXhpc3RpbmcgR3JhcGhpY3NTdXJmYWNlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVh
YmxlQml0bWFwOjpGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsK
LQotICAgIGJvb2wgaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuICEh
bV9ncmFwaGljc1N1cmZhY2U7IH0KLSNlbmRpZgotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Np
emU7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBtX2ZsYWdzOwotICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IG1fYml0bWFwOwotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAg
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7Ci0jZW5k
aWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gU2hhcmVhYmxlU3Vy
ZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dl
YktpdDIvVGFyZ2V0LnByaQppbmRleCAxMjYwYjNjMWFhNDZiYjVjYjI0NjM0YWJjYzFiMTJmNGQ5
NDMxNDczLi4yMjFiMDMxNDBhNDJmOTE0ZDg3YTY5MjY2YzJiM2UwM2JhZWQzYmQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Rhcmdl
dC5wcmkKQEAgLTcxLDcgKzcxLDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0FQSS9jL3F0
L1dLSW1hZ2VRdC5oIFwKICAgICBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmggXAogICAgIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaCBcCi0gICAgU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaCBcCiAg
ICAgU2hhcmVkL0NhY2hlTW9kZWwuaCBcCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIFwKICAg
ICBTaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHkuaCBcCkBAIC0xMzYsNiArMTM1LDggQEAgSEVBREVS
UyArPSBcCiAgICAgU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKICAgICBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMu
aCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllckluZm8u
aCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmgg
XAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5o
IFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFt
LmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgg
XAogICAgIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXApAQCAtNDQyLDcgKzQ0
Myw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlTm9uZS5jcHAgXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3gxMS9O
ZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgXAogICAgIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAu
Y3BwIFwKLSAgICBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAgXAogICAgIFNoYXJlZC9QbHVn
aW5zL05QUmVtb3RlT2JqZWN0TWFwLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlm
aWVyRGF0YS5jcHAgXAogICAgIFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVy
LmNwcCBcCkBAIC01MDUsNiArNTA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYldo
ZWVsRXZlbnQuY3BwIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVySW5mby5jcHAgXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgXAogICAgIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5jcHAgXAogICAgIFNoYXJlZC9x
dC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVkL3F0L0xheWVyVHJlZUNvbnRleHRR
dC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDcwZTljZTI1ZmYzZDc5ZGI3MzI0Y2MyYzVlOGI5MDIxMjAxNDNhMDIuLjRhN2JiMTA4NmVl
N2E4NjdiMmQzZmQ2ODBjNWEzN2RiMDViOGI3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oIgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
I2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgogCkBAIC01MSwxMyArNTEsMTMgQEAg
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXAKIAogICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyLT5tYXhU
ZXh0dXJlU2l6ZSgpLndpZHRoKCkgPj0gbV90aWxlUmVjdC5zaXplKCkud2lkdGgoKSAmJiB0ZXh0
dXJlTWFwcGVyLT5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpID49IG1fdGlsZVJlY3Quc2l6ZSgp
LmhlaWdodCgpKTsKICAgICBpZiAoc2hvdWxkUmVzZXQpCi0gICAgICAgIHRleHR1cmUtPnJlc2V0
KG1fdGlsZVJlY3Quc2l6ZSgpLCBtX3N1cmZhY2UtPmZsYWdzKCkgJiBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEgPyBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogMCk7CisgICAg
ICAgIHRleHR1cmUtPnJlc2V0KG1fdGlsZVJlY3Quc2l6ZSgpLCBtX3N1cmZhY2UtPnN1cHBvcnRz
QWxwaGEoKSk7CiAKICAgICBtX3N1cmZhY2UtPmNvcHlUb1RleHR1cmUodGV4dHVyZSwgbV9zb3Vy
Y2VSZWN0LCBtX3N1cmZhY2VPZmZzZXQpOwogICAgIG1fc3VyZmFjZS5jbGVhcigpOwogfQogCi12
b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1
cmZhY2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBtX3NvdXJjZVJl
Y3QgPSBzb3VyY2VSZWN0OwogICAgIG1fdGlsZVJlY3QgPSB0aWxlUmVjdDsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cmVtb3ZlQWxsVGlsZXMoKQogICAg
ICAgICBtX3RpbGVzVG9SZW1vdmUuYWRkKGl0LT5rZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlPiBiYWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIEhhc2hN
YXA8dWludDMyX3QsIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZT46Oml0ZXJhdG9yIGl0ID0g
bV90aWxlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQgIT0gbV90aWxlcy5lbmQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCBjZDE1MWY4NDc2ZWNk
NWJmY2IwYzIyODZhNTRjMTMzMTUzZjg1YTk5Li5hZTVhZjhkNGZhMmZjOWViZDIxMTk3MjdmY2Fk
ZDg1OTYyMzMwZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFNoYXJl
YWJsZVN1cmZhY2U7CitjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CiAKIGNsYXNzIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlVGlsZSA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSB7
CiBwdWJsaWM6CkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogICAgIGlubGluZSB2b2lkIGlu
Y3JlbWVudFJlcGFpbnRDb3VudCgpIHsgKyttX3JlcGFpbnRDb3VudDsgfQogICAgIGlubGluZSBp
bnQgcmVwYWludENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXBhaW50Q291bnQ7IH0KICAgICB2
b2lkIHN3YXBCdWZmZXJzKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqKTsKLSAgICB2b2lkIHNldEJh
Y2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
YnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4gbV9zdXJmYWNlOwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9zb3VyY2VSZWN0OwogICAg
IFdlYkNvcmU6OkludFJlY3QgbV90aWxlUmVjdDsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N1
cmZhY2VPZmZzZXQ7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRp
bGUodWludDMyX3QgdGlsZUlELCBmbG9hdCk7CiAgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90
IHRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVBbGxUaWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGls
ZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyAgICB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGls
ZU9wZXJhdGlvbnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwogICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBkMzcwNDQ4NjQ4ZmU4ODRlYTll
NGVkZmUxNTZkYzY3NjgzNmRlNzM5Li42ZWIxNDkzYWQxYWE4MjBiNjYxNmI3MDQ3NjhhM2Y1YWU3
YmY0MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJJbmZvLmgi
CiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxh
eWVyVHJlZVJlbmRlcmVyLmgiCi0jaW5jbHVkZSAiVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtNzksMTAgKzc4LDEwIEBAIHZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVGlsZUZvckxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBs
YXllcklELCB1CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnJl
bW92ZVRpbGUsIG1fcmVuZGVyZXIuZ2V0KCksIGxheWVySUQsIHRpbGVJRCkpOwogfQogCi12b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lE
LCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgQVNTRVJUKCFtX3N1
cmZhY2VzLmNvbnRhaW5zKGF0bGFzSUQpKTsKLSAgICBtX3N1cmZhY2VzLmFkZChhdGxhc0lELCBT
aGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSk7CisgICAgbV9zdXJmYWNlcy5hZGQoYXRs
YXNJRCwgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSk7CiB9CiAKIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQp
CkBAIC0xNDYsOSArMTQ1LDkgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWEKICAgICBkaXNwYXRj
aFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlSW1hZ2VCYWNraW5nLCBtX3Jl
bmRlcmVyLmdldCgpLCBpbWFnZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJ
RCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCit2b2lkIExheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGltYWdlSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5k
bGUpCiB7Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0
ZUltYWdlQmFja2luZywgbV9yZW5kZXJlci5nZXQoKSwgaW1hZ2VJRCwgU2hhcmVhYmxlU3VyZmFj
ZTo6Y3JlYXRlKGhhbmRsZSkpKTsKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVS
ZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5nLCBtX3JlbmRlcmVyLmdldCgpLCBpbWFnZUlELCBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpKSk7CiB9CiAKIHZvaWQgTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eTo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggMWUwOWRkNWY0YTZhOTRmNTcxNDQ3OTU5MzQzZTY1NjlkYzdi
ZmI2OC4uZGRmNjFiM2ZlYzFkNDY4MDRkYjYwYzQ3ZjBlNWNkNzIzZTY0ZTJmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjcsOCArMjcsOCBA
QAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJJbmZvLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZh
Y2UuaCIKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRlSW5mby5oIgorI2luY2x1ZGUgIldlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0xheWVyQW5pbWF0aW9uLmg+CkBAIC02OSwxMCArNjksMTAgQEAgcHVibGljOgogICAgIHZv
aWQgY3JlYXRlVGlsZUZvckxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlE
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKICAg
ICB2b2lkIHVwZGF0ZVRpbGVGb3JMYXllcihDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRp
bGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7
CiAgICAgdm9pZCByZW1vdmVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJf
dCB0aWxlSUQpOwotICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0
IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpOworICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMo
aW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJik7CiAgICAg
dm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCk7CiAgICAgdm9pZCBjcmVhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFj
ZTo6SGFuZGxlJik7CisgICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKICAgICB2
b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7
CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6Rmxv
YXRSZWN0IG1fbGFzdFNlbnRWaXNpYmxlUmVjdDsKICAgICBmbG9hdCBtX2xhc3RTZW50U2NhbGU7
CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiA+IFN1cmZhY2VNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBhdGxhc0lEICov
LCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiA+IFN1cmZhY2VNYXA7CiAgICAgU3VyZmFjZU1h
cCBtX3N1cmZhY2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZTE0NThjZGFjNmYzMjgxZTc4NjAw
NTc4YTdhNzU5ZGY4NGQyOWRmMS4uMTdlMTdkYWZjOGZjZTBlNjgxNWMyYTgyMmJmNTFjMTE4NjE4
NWFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMywxMCArMzMsMTAgQEAgbWVzc2FnZXMgLT4gTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eSB7CiAgICAgQ3JlYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxh
eWVySUQsIHVpbnQzMl90IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0
OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogICAgIFVwZGF0ZVRpbGVGb3JMYXllcih1
aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQsIFdlYkNvcmU6OkludFJlY3QgdGlsZVJl
Y3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbykKICAgICBSZW1vdmVUaWxl
Rm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKQotICAgIENyZWF0ZVVw
ZGF0ZUF0bGFzKGludCBhdGxhc0lELCBXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBo
YW5kbGUpCisgICAgQ3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIFdlYktpdDo6V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQogICAgIFJlbW92ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lEKQogICAgIENyZWF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQotICAg
IFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OlNoYXJlYWJsZVN1
cmZhY2U6OkhhbmRsZSBoYW5kbGUpCisgICAgVXBkYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGlt
YWdlSUQsIFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQogICAg
IENsZWFySW1hZ2VCYWNraW5nQ29udGVudHModWludDY0X3QgaW1hZ2VJRCkKICAgICBSZW1vdmVJ
bWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKICAgICBEaWRSZW5kZXJGcmFtZShXZWJDb3Jl
OjpJbnRTaXplIGNvbnRlbnRzU2l6ZSwgV2ViQ29yZTo6SW50UmVjdCBjb3ZlcmVkUmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCBkNTViZTRmMThjYzgxZTQyZjFl
MjJmODEwYzE0Zjg1NmViZWQ4MmYxLi4yZmUwOGVkMWM4NzkwZGVlNGJlMWE2NTRhYTkwNDNmNTVm
ODJhOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC01MjgsNyAr
NTI4LDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKICAgICBtX2ltYWdlQmFja2luZ3MuYWRkKGlt
YWdlSUQsIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCkpOwogfQogCi12b2lkIExheWVyVHJlZVJlbmRl
cmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlE
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2UpCit2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSkKIHsKICAgICBBU1NF
UlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKICAgICBJbWFnZUJhY2tpbmdN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUJhY2tpbmdzLmZpbmQoaW1hZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCBhNWFlODdkYzU1ZTc5NmZiYjQ3MDgxYzE1ZGQz
MGViODVmNTZjMzBjLi5hNjcyMjc0MDllN2YwMGZlY2MwMDczMTc2ZTFmZWQwZDdjODU1ZmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAjaW5j
bHVkZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNl
LmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlci5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFRpbGVVcGRhdGUgewogICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJl
Y3Q7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3Q7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWFibGVTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiBzdXJmYWNlOwogICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBvZmZzZXQ7Ci0gICAgICAg
IFRpbGVVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB0aWxlLCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG5ld1N1cmZhY2Us
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdPZmZzZXQpCisgICAgICAgIFRpbGVVcGRhdGUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0
aWxlLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbmV3U3VyZmFjZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG5ld09mZnNldCkKICAgICAgICAgICAgIDogc291cmNlUmVjdChzb3Vy
Y2UpCiAgICAgICAgICAgICAsIHRpbGVSZWN0KHRpbGUpCiAgICAgICAgICAgICAsIHN1cmZhY2Uo
bmV3U3VyZmFjZSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVU
aWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBUaWxlVXBkYXRl
Jik7CiAgICAgdm9pZCBmbHVzaExheWVyQ2hhbmdlcygpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4pOworICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CiAgICAgdm9pZCBjbGVhcklt
YWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQg
cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQg
c2V0TGF5ZXJBbmltYXRpb25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckFuaW1hdGlvbnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGFmMDc5ODMyZDZjZDk4ZDky
OWRiYWNlMmIwMjk2NjIyNDBiMWEzNzcuLjI4ODJiZmJhNDk5MDgzODg3ZjU5NmI2Zjg4MzM5NGYx
ZmM1ZjdjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNzQwLDcgKzc0MCw3IEBAIFBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBJCiAgICAgaWYgKCFtX2Nvb3JkaW5hdG9yKQogICAgICAgICByZXR1cm4gUGFzc093
blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+KCk7CiAKLSAgICByZXR1cm4gbV9jb29yZGlu
YXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkgPyAwIDogU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0KTsKKyAgICByZXR1cm4g
bV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6dG9GbGFncyghY29udGVudHNPcGFxdWUoKSksIGF0bGFzLCBvZmZzZXQpOwogfQogCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNv
bnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZDlmYmU3ZWM0YTFhNzg3MzUxNmQ5NTc4MTU2OTZhZTgz
MDM5OTg5My4uNDczYmFlMzA2MTZkM2YzN2JmN2MzMTUxOWI0MjY1NDk2NTc5ZjRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRl
ICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCkBAIC03NSw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29y
ZTo6SW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBD
b29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50
JikgPSAwOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCmluZGV4IDU1Y2E5ZGE3YjU5NGNiNjk4Zjc4YTZjOTBh
YjE0MTk0ZjlhMWIxYjEuLjNmYWMxYjAyZjY4ODcwYmY2OTZkZjVhMjM5NzlmYjU1ZTAwZWNhMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdl
QmFja2luZy5jcHAKQEAgLTEwMywxMCArMTAzLDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OnVwZGF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3N1cmZhY2UgPSBTaGFy
ZWFibGVTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6ZSgpLCBtX2ltYWdlLT5jdXJyZW50RnJh
bWVIYXNBbHBoYSgpID8gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhIDogU2hhcmVhYmxl
Qml0bWFwOjpOb0ZsYWdzLCBTaGFyZWFibGVTdXJmYWNlOjpTdXBwb3J0c0dyYXBoaWNzU3VyZmFj
ZSk7Ci0gICAgbV9oYW5kbGUgPSBhZG9wdFB0cihuZXcgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxl
KCkpOworICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2Ut
PnNpemUoKSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjp0b0ZsYWdzKG1faW1hZ2UtPmN1cnJlbnRGcmFt
ZUhhc0FscGhhKCkpKTsKKyAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZSgpKTsKIAotICAgIGlmICghbV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUo
Km1faGFuZGxlKSkgeworICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
Kj4obV9zdXJmYWNlLmdldCgpKS0+Y3JlYXRlSGFuZGxlKCptX2hhbmRsZSkpIHsKICAgICAgICAg
cmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOwogICAgICAgICBtX2lzRGlydHkgPSBmYWxzZTsKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmgKaW5kZXggNjVlODI0NjcyYjkzOWY4YWM4NWNmMGFlNDY1ZGI4MmMz
NzM5MDY5YS4uZWRjNmU0NDJiMWI2N2MxYjY3NzZlNTVlOGYwMjYwODU5ODg2YmRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5o
CkBAIC0yOSw4ICsyOSw5IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5j
bHVkZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZh
Y2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIK
KyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Rp
bWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDb29yZGluYXRvciB7CiAg
ICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBTaGFyZWFibGVTdXJm
YWNlOjpIYW5kbGUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpIYW5kbGUmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0Nv
bnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAg
ICAgfTsKQEAgLTgwLDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIG1faWQ7CiAgICAgVmVjdG9yPEhvc3QqPiBtX2hvc3RzOwogCi0gICAgUmVmUHRyPFNo
YXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKLSAgICBPd25QdHI8U2hhcmVhYmxlU3VyZmFjZTo6
SGFuZGxlPiBtX2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZh
Y2U7CisgICAgT3duUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlPiBtX2hhbmRsZTsK
IAogICAgIFdlYkNvcmU6OlRpbWVyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBtX2NsZWFyQ29u
dGVudHNUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGJmNjdlYWRmZDhjNGI5YWE5MzIyY2E3MmY3MTQxNDA5NGNm
OTlmOTguLjQxNDFhOTg4Zjg5NGUyODAyNDVmOTNjYTM4OGM2OTMzMTQxNGZlN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAg
LTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFu
eSAxMDAsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcxLDcgKzU3
Miw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJ
RCkpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjp1cGRhdGVJbWFnZUJhY2tpbmco
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBTaGFyZWFibGVTdXJmYWNl
OjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdl
QmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUg
PSB0cnVlOwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eTo6VXBkYXRlSW1hZ2VCYWNraW5nKGltYWdlSUQsIGhhbmRsZSkpOwpAQCAtNjU5LDcg
KzY2MCw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVRpbGUoQ29vcmRpbmF0
ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVUaWxlRm9yTGF5ZXIobGF5
ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVw
ZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhh
bmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKGludCBh
dGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQogewog
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6
Q3JlYXRlVXBkYXRlQXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7CiB9CkBAIC03NjksMTIgKzc3MCwx
MiBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAg
IG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBp
bnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQpCitQYXNzT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBpbnQmIGF0
bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdy
YXBoaWNzQ29udGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRhdGVBdGxh
c2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRl
QXRsYXNlc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKGF0bGFzLT5mbGFncygpID09IGZsYWdzKSB7
CisgICAgICAgIGlmIChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IENvb3JkaW5hdGVkU3VyZmFj
ZTo6c3VwcG9ydHNBbHBoYShmbGFncykpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1
cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgogICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZl
cihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4
dCkKQEAgLTgwNSw3ICs4MDYsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNl
SW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZChUaW1lcjxMYXllclRyZWVDb29yZAogICAgICAgICBV
cGRhdGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlm
ICghYXRsYXMtPmlzSW5Vc2UoKSkKICAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5hY3RpdmUo
UmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29sIHVzYWJs
ZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gYXRsYXMtPmZsYWdzKCkgPT0gU2hhcmVhYmxlQml0
bWFwOjpOb0ZsYWdzOworICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50
ID0gIWF0bGFzLT5zdXBwb3J0c0FscGhhKCk7CiAgICAgICAgIGlmIChhdGxhcy0+aXNJbmFjdGl2
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21wb3NpdGVk
Q29udGVudCAmJiAhYXRsYXNUb0tlZXBBbnl3YXkgJiYgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENv
bnRlbnQpCiAgICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3YXkgPSBtX3VwZGF0ZUF0bGFz
ZXNbaV0ucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmgKaW5kZXggN2JiNjhiOGM3NzNiODMyMzE2NWE3YWExOTQyODlkMTQ2ODFm
NWE1MS4uYTU0N2Y0ZTIzZjQ1MTQ5MDBhYmIyODYyYmEzN2E5ZjM1OTYyZTdhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSAiVXBkYXRlQXRsYXMuaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZh
Y2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hM
YXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9p
bnQmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogICAgIC8v
IFVwZGF0ZUF0bGFzQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6SGFuZGxlJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lEKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEy
NSw3ICsxMjYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OkNvb3JkaW5hdG9yCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZh
Y2U6OkhhbmRsZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpIYW5kbGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdD
b250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJS
SURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKaW5kZXggOWE1
NDE4ZjFlYWFhMzQ4N2I0ZTQyNGI5YTk1NjIwMjA4MzA5NzU0ZS4uOTk2NTMxOGQwZmE1NTJiNjc0
ZWNhMTUwYTE4OGVhMDgxN2VhMTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0
ZUF0bGFzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykg
MjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw3ICszMSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotVXBkYXRlQXRs
YXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24s
IFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCitVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMo
VXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZmxhZ3Mo
ZmxhZ3MpCiAgICAgLCBtX2luYWN0aXZpdHlJblNlY29uZHMoMCkKQEAgLTM5LDkgKzQwLDkgQEAg
VXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBk
aW1lbnNpb24sIFNoYXJlYWJsZUJpdG0KICAgICBzdGF0aWMgaW50IG5leHRJRCA9IDA7CiAgICAg
bV9JRCA9ICsrbmV4dElEOwogICAgIEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNp
emUoZGltZW5zaW9uLCBkaW1lbnNpb24pKTsKLSAgICBtX3N1cmZhY2UgPSBTaGFyZWFibGVTdXJm
YWNlOjpjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhp
Y3NTdXJmYWNlKTsKKyAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShz
aXplLCBmbGFncyk7CiAKLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxl
KSkgeworICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4obV9zdXJm
YWNlLmdldCgpKS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlKSkgewogICAgICAgICBtX2lzVmFpbGQg
PSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg2LDcgKzg3LDcgQEAgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFi
bGVCdWZmZXIoaW50JiBhdGwKICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNlLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQocmVjdCk7CiAKLSAgICBpZiAoZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1h
cDo6U3VwcG9ydHNBbHBoYSkgeworICAgIGlmIChzdXBwb3J0c0FscGhhKCkpIHsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBzaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNl
T3Zlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaAppbmRleCA3Y2VmZTlj
OTc5NDIxNTg2MjczZjRlMGNkMzA5YTIwMjM0YzcxYWQxLi5kMGI3NzllMDRiOWZlMzY4ZmVhYTYy
YzUzMTNmMmRlOWM4NTU0ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFz
LmgKQEAgLTEsNSArMSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29t
cGFueSAxMDAsIEluYy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNyArMjMsNyBAQAogCiAjaW5jbHVk
ZSAiQXJlYUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJTaGFy
ZWFibGVTdXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwx
NCArMzUsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFz
SUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZTo6SGFuZGxlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhp
bnQgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgVXBkYXRlQXRsYXMgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBVcGRhdGVBdGxhcyhVcGRh
dGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MpOwor
ICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBpbmxpbmUg
V2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7
IH0KQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBudWxsIHBvaW50
ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KICAgICBQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGludCYg
YXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkludFBvaW50JiBvZmZz
ZXQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZs
YWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIGJvb2wgc3VwcG9ydHNB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpOyB9CiAKICAg
ICB2b2lkIGFkZFRpbWVJbmFjdGl2ZShkb3VibGUgc2Vjb25kcykKICAgICB7CkBAIC03MCw4ICs3
MSw4IEBAIHByaXZhdGU6CiAgICAgVXBkYXRlQXRsYXNDbGllbnQqIG1fY2xpZW50OwogICAgIE93
blB0cjxHZW5lcmFsQXJlYUFsbG9jYXRvcj4gbV9hcmVhQWxsb2NhdG9yOwogICAgIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9z
dXJmYWNlOwotICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICBSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsK
ICAgICBpbnQgbV9JRDsKICAgICBib29sIG1faXNWYWlsZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178465</attachid>
            <date>2012-12-09 21:01:09 -0800</date>
            <delta_ts>2012-12-09 21:02:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121210135817.patch</filename>
            <type>text/plain</type>
            <size>62058</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDY5ZDEwZmM2YjgzZDAx
NzQxMGRlNTdhYzkxYzBlNWEwYTM4YmZjOC4uNDUyOTZiODhlMTJlMTBmZDQwYTFiN2NkZDYxODBk
ZjI3MDNlODFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEyLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBBZGQgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIHJlbW92ZSB0aGUgZGVwZW5k
ZW5jeSBvZiBTaGFyZWFibGVTdXJmYWNlIGZyb20gQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRlcm5hbCBSZXZp
ZXcgYnkgR3dhbmcgWW9vbiBId2FuZyBhbmQgSmFlIEh5dW4gUGFyay4KKworICAgICAgICBJdCBp
cyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGljcyBv
biBXSzEuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIsIENv
b3JkaW5hdGVkVGlsZSBhbmQKKyAgICAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgZGlyZWN0
bHkgdXNlIFNoYXJlYWJsZVN1cmZhY2UuIFNoYXJlYWJsZVN1cmZhY2Ugd2FzCisgICAgICAgIGlt
cGxlbWVudGVkIHRvIHNoYXJlIGFuIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzIGFzIHdlbGwgYXMg
cGxhY2VkIGluIFdLMi4KKyAgICAgICAgV2Ugd2FudCB0aGVtIHRvIG5vdCBkZXBlbmQgb24gU2hh
cmVhYmxlU3VyZmFjZSB0byBtb3ZlIHRoZW0gaW50byBXZWJDb3JlLiBTbworICAgICAgICB0aGlz
IHBhdGNoIGludHJvZHVjZXMgbmV3IGNsYXNzOiBDb29yZGluYXRlZFN1cmZhY2UsIHRvIGJlIHVz
ZWQgYXMgYQorICAgICAgICBkcmF3aW5nIHN1cmZhY2UgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNz
LgorCisgICAgICAgIENyZWF0ZSBhIENvb3JkaW5hdGVkU3VyZmFjZSBjbGFzcyB0aGF0IGNhbiBi
ZSB0aGUgYmFzZSBjbGFzcyBib3RoIGZvcgorICAgICAgICB0aGUgY3VycmVudCBJUEMtYmFzZWQg
U2hhcmVhYmxlU3VyZmFjZSwgcmVuYW1lZCBoZXJlIHRvCisgICAgICAgIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZSwgYW5kIHRvIGEgZnV0dXJlIHRocmVhZC1iYXNlZCBzdXJmYWNlCisgICAgICAgIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRT
dXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjp+Q29vcmRpbmF0
ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpzdXBwb3J0
c0FscGhhKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuY3BwLgorICAgICAgICAgIEV4dGVuZHMgQ29vcmRpbmF0ZWRTdXJmYWNlLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OkhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1
cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjp+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAg
ICAgIChIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OmlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGU6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoVGlsZVVwZGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpUaWxlVXBkYXRlOjpUaWxlVXBkYXRlKToKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmg6CisgICAgICAgIChD
b29yZGluYXRvcik6CisgICAgICAgIChDb29yZGluYXRlZEltYWdlQmFja2luZyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRl
SW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNy
ZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yOjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoK
KyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0
bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmg6CisgICAgICAgIChV
cGRhdGVBdGxhc0NsaWVudCk6CisgICAgICAgIChVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJL
aXQ6OlVwZGF0ZUF0bGFzOjpzdXBwb3J0c0FscGhhKToKKwogMjAxMi0xMi0wOSAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTW92ZSBidXR0b24gaW1hZ2UgdG8g
aW5qZWN0ZWQgYnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgzYjZlZWJkMjYwOGQyOTkz
NzYzZGJiYzliN2FjZGZlM2QzMmFiZTAuLjQ3ZjViZGQ5ZjdkY2ViYmY3NGEyYTdmMTA1YzJlOTk4
NWI1OGQ3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0xNTYsNyArMTU2LDYgQEAgc2V0KFdl
YktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCiAgICAgU2hh
cmVkL1Nlc3Npb25TdGF0ZS5jcHAKICAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAotICAg
IFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5j
cHAKICAgICBTaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwCiAgICAgU2hhcmVkL1VwZGF0ZUlu
Zm8uY3BwCkBAIC0yMjEsNiArMjIwLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZv
LmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtUHJveHkuY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDk5NzBmYjFjNTI4NmZlMzJj
MDlkYjU5MjE4ZGRiMDQ5YmFlNGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJ
bmMuCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNl
X2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJl
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3Jk
aW5hdGVkU3VyZmFjZT4geworcHVibGljOgorICAgIGVudW0gRmxhZyB7CisgICAgICAgIE5vRmxh
Z3MgPSAwLAorICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAorICAgIH07CisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBGbGFnczsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisKKyAgICB2
aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKSB7IH0KKworICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzQWxwaGEoRmxhZ3MgZmxhZ3MpIHsgcmV0dXJuIGZsYWdzICYgU3VwcG9ydHNBbHBoYTsgfQor
CisgICAgYm9vbCBzdXBwb3J0c0FscGhhKCkgeyByZXR1cm4gZmxhZ3MoKSAmIFN1cHBvcnRzQWxw
aGE7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWlu
dCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOworCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJj
ZU9mZnNldCkgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEZsYWdzIGZs
YWdzKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgor
I2VuZGlmIC8vIENvb3JkaW5hdGVkU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTQ2MTA5MWM1YjI1ZjdmYzQxODBlMTBlNWJhYTUwMDMz
N2M5NGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDIyMCBAQAor
LyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisKKyBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJD
b29yZGluYXRlZFN1cmZhY2UuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNp
bmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CisKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVIpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjZW5kaWYKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZTo6SGFuZGxlKCkKK3sKK30KKwordm9pZCBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyLmVuY29kZShtX3NpemUpOworICAgIGVuY29kZXIuZW5jb2Rl
KG1fZmxhZ3MpOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGVuY29kZXIuZW5jb2Rl
KG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOworICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZVRva2Vu
LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgZW5jb2Rlci5lbmNvZGUo
bV9iaXRtYXBIYW5kbGUpOworfQorCitib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxl
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRs
ZSkKK3sKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9zaXplKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5p
c1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBD
b29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBD
b29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIHJldHVybiBXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFncyk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIFJlZlB0
cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCisgICAgc3VyZmFjZSA9IGNyZWF0ZVdpdGhTdXJmYWNlKHNpemUsIGZsYWdzKTsKKyNlbmRp
ZgorCisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICBzdXJmYWNlID0gY3JlYXRlKHNpemUsIGZs
YWdzLCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBzdXBwb3J0c0FscGhh
KGZsYWdzKSA/IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1h
cDo6Tm9GbGFncykpOworCisgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOworfQorCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXplJiBz
aXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIEdyYXBoaWNzU3Vy
ZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KKyAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpTdXBw
b3J0c1NvZnR3YXJlV3JpdGUKKyAgICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQ29w
eVRvVGV4dHVyZQorICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5nOwor
CisgICAgaWYgKHN1cHBvcnRzQWxwaGEoZmxhZ3MpKQorICAgICAgICBzdXJmYWNlRmxhZ3MgfD0g
R3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0FscGhhOworCisgICAgLy8gVGhpcyBtaWdodCByZXR1
cm4gbnVsbCwgaWYgdGhlIHN5c3RlbSBpcyB1bmFibGUgdG8gcHJvdmlkZSBhIG5ldyBncmFwaGlj
cyBzdXJmYWNlLgorICAgIC8vIEluIHRoYXQgY2FzZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1
cm4gbnVsbCBhbmQgYWxsb3cgZmFsbGluZyBiYWNrIHRvIFNoYXJlYWJsZUJpdG1hcC4KKyAgICBS
ZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUo
c2l6ZSwgc3VyZmFjZUZsYWdzKTsKKyAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgIHJldHVybiAw
OworCisgICAgQVNTRVJUKHN1cmZhY2UpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlLnJlbGVhc2UoKSkpOworfQorI2Vu
ZGlmCisKK1Bhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRSZWN0JiByZWN0KQorewor
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJm
YWNlKCkpCisgICAgICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+YmVnaW5QYWludChyZWN0
LCAwIC8qIFdyaXRlIHdpdGhvdXQgcmV0YWluaW5nIHBpeGVscyovKTsKKyNlbmRpZgorCisgICAg
QVNTRVJUKG1fYml0bWFwKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0Nv
bnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LT5jbGlwKHJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKHJlY3Qu
eCgpLCByZWN0LnkoKSk7CisgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7Cit9
CisKK1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdz
IGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBiaXRtYXAp
KTsKK30KKworV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRlZFN1cmZhY2UoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwg
bV9mbGFncyhmbGFncykKKyAgICAsIG1fYml0bWFwKGJpdG1hcCkKK3sKK30KKworI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQorV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpXZWJDb29yZGluYXRlZFN1
cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpG
bGFncyBmbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2Up
CisgICAgOiBtX3NpemUoc2l6ZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2dyYXBo
aWNzU3VyZmFjZShzdXJmYWNlKQoreworfQorCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZh
Y2U+IHN1cmZhY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1
cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UpKTsKK30KKyNlbmRpZgorCitXZWJDb29yZGluYXRl
ZFN1cmZhY2U6On5XZWJDb29yZGluYXRlZFN1cmZhY2UoKQoreworfQorCitQYXNzUmVmUHRyPFdl
YkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3Qg
SGFuZGxlJiBoYW5kbGUpCit7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKGhh
bmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlzVmFsaWQoKSkgeworICAgICAgICBHcmFwaGlj
c1N1cmZhY2U6OkZsYWdzIHN1cmZhY2VGbGFncyA9IDA7CisgICAgICAgIGlmIChzdXBwb3J0c0Fs
cGhhKGhhbmRsZS5tX2ZsYWdzKSkKKyAgICAgICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGlj
c1N1cmZhY2U6OlN1cHBvcnRzQWxwaGE7CisgICAgICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+
IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShoYW5kbGUubV9zaXplLCBzdXJmYWNl
RmxhZ3MsIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKTsKKyAgICAgICAgaWYgKHN1cmZh
Y2UpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZh
Y2U+KHN1cmZhY2UpKSk7CisgICAgfQorI2VuZGlmCisKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUubV9iaXRtYXBIYW5k
bGUpOworICAgIGlmICghYml0bWFwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBj
cmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkpOwor
fQorCitib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFu
ZGxlKQoreworICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7CisgICAgaGFuZGxlLm1fZmxhZ3Mg
PSBtX2ZsYWdzOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaGFuZGxlLm1fZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJmYWNl
LT5leHBvcnRUb2tlbigpIDogR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAgICBpZiAoaGFuZGxl
Lm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorICAgIGlmICghbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9iaXRtYXBI
YW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
I2lmIFVTRShURVhUVVJFX01BUFBFUikKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5
VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1cmUs
IGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkKK3sK
KyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZShwYXNzVGV4dHVyZSk7CisKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgp
KSB7CisgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVHTCA9IHRvQml0bWFw
VGV4dHVyZUdMKHRleHR1cmUuZ2V0KCkpOworICAgICAgICBpZiAodGV4dHVyZUdMKSB7CisgICAg
ICAgICAgICB1aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7CisgICAgICAgICAg
ICB1aW50MzJfdCB0ZXh0dXJlVGFyZ2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJlVGFyZ2V0KCk7Cisg
ICAgICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJlKHRleHR1cmVUYXJn
ZXQsIHRleHR1cmVJRCwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fZ3JhcGhpY3NT
dXJmYWNlLT5jcmVhdGVSZWFkT25seUltYWdlKEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXQu
c2l6ZSgpKSk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0
YXJnZXQsIEludFBvaW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9y
aWdpbmFsSW1hZ2VEYXRhKTsKKyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChtX2JpdG1hcCk7
CisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOworICAg
IHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIHNvdXJjZU9mZnNl
dCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAg
IHJldHVybjsKK30KKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIpCisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5h
dGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjgyOGFhZDgxNzQ1NDJlZGQzN2Ix
OGUzN2YyNmNkYzk0YWI4MDlmMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAs
IEluYy4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJDb29yZGluYXRlZFN1
cmZhY2VfaAorI2RlZmluZSBXZWJDb29yZGluYXRlZFN1cmZhY2VfaAorCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2luY2x1
ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5j
bHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQml0bWFwVGV4dHVyZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSA6IHB1YmxpYyBDb29y
ZGluYXRlZFN1cmZhY2UgeworcHVibGljOgorICAgIGNsYXNzIEhhbmRsZSB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7CisgICAgcHVibGljOgorICAgICAgICBIYW5kbGUo
KTsKKworICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25z
dDsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IEhhbmRsZSYpOworCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgICAgIFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QgeyByZXR1
cm4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsgfQorI2VuZGlmCisKKyAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOworICAgICAgICBtdXRhYmxl
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG1fYml0bWFwSGFuZGxlOworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBo
aWNzU3VyZmFjZVRva2VuOworI2VuZGlmCisgICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXpl
OworICAgICAgICBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIG1fZmxhZ3M7CisgICAgfTsKKwor
ICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2UsIGFuZCBhbGxvY2F0ZSBl
aXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3IgYSBTaGFyZWFibGVCaXRtYXAgYXMgYmFja2luZy4K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOworCisgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxl
IHN1cmZhY2UgZnJvbSBhIGhhbmRsZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGlu
YXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKKworICAgIC8vIENyZWF0ZSBhIGhh
bmRsZS4KKyAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmKTsKKworICAgIHZpcnR1YWwgfldl
YkNvb3JkaW5hdGVkU3VyZmFjZSgpOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHNp
emUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NpemU7IH0KKworICAgIHZpcnR1YWwgUGFz
c093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCisgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpC
aXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSBPVkVSUklERTsKKyNlbmRpZgorCitwcml2YXRl
OgorICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxh
Z3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisKKyAgICB2aXJ0dWFsIEZsYWdzIGZs
YWdzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9mbGFnczsgfQorCisgICAgLy8gQ3JlYXRl
IGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFNoYXJlYWJs
ZUJpdG1hcC4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPik7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBXZWJDb29yZGluYXRl
ZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZT4pOworICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAg
YmFja2VkIGJ5IGEgZ3JhcGhpY3Mgc3VyZmFjZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBGbGFncyk7CisgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVy
ZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFjZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
RmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CisKKyAgICBib29s
IGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NT
dXJmYWNlOyB9CisjZW5kaWYKKworICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOworICAgIEZs
YWdzIG1fZmxhZ3M7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlPiBtX2dyYXBoaWNzU3VyZmFjZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjZW5kaWYgLy8gV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
aGFyZWFibGVTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY4ZmExMDY5OTM1Yzk2Njc0
NTY2MmYwZjEyN2ZkYjI5NDdjNjU4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVT
dXJmYWNlLmgiCi0KLSNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMu
aCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+Ci0K
LSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0j
ZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1TaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OkhhbmRsZSgpCi17Ci19Ci0KLXZvaWQgU2hhcmVh
YmxlU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAotewotICAgIGVuY29kZXIuZW5jb2RlKG1fc2l6ZSk7Ci0gICAgZW5jb2Rlci5l
bmNvZGUobV9mbGFncyk7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgZW5jb2Rlci5l
bmNvZGUobV9ncmFwaGljc1N1cmZhY2VUb2tlbik7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNl
VG9rZW4uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBlbmNvZGVyLmVu
Y29kZShtX2JpdG1hcEhhbmRsZSk7Ci19Ci0KLWJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxl
OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRs
ZSkKLXsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9zaXplKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5p
c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hh
cmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MgZmxhZ3MsIEhpbnRzIGhpbnRzKQotewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQotICAgIGlmIChoaW50cyAmIFN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKSB7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBzdXJmYWNlID0gY3JlYXRlV2l0aFN1cmZhY2Uoc2l6ZSwg
ZmxhZ3MpOwotICAgICAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgICAgIHJldHVybiBzdXJmYWNl
LnJlbGVhc2UoKTsKLSAgICB9Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oaGludHMpOwotCi0g
ICAgcmV0dXJuIGNyZWF0ZShzaXplLCBmbGFncywgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoc2l6ZSwgZmxhZ3MpKTsKLX0KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotUGFz
c1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVXaXRoU3Vy
ZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQot
ewotICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KLSAgICAgICAgICAg
IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2FyZVdyaXRlCi0gICAgICAgICAgICB8IEdy
YXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNDb3B5VG9UZXh0dXJlCi0gICAgICAgICAgICB8IEdyYXBo
aWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5nOwotCi0gICAgaWYgKGZsYWdzICYgU2hhcmVhYmxl
Qml0bWFwOjpTdXBwb3J0c0FscGhhKQotICAgICAgICBzdXJmYWNlRmxhZ3MgfD0gR3JhcGhpY3NT
dXJmYWNlOjpTdXBwb3J0c0FscGhhOwotCi0gICAgLy8gVGhpcyBtaWdodCByZXR1cm4gbnVsbCwg
aWYgdGhlIHN5c3RlbSBpcyB1bmFibGUgdG8gcHJvdmlkZSBhIG5ldyBncmFwaGljcyBzdXJmYWNl
LgotICAgIC8vIEluIHRoYXQgY2FzZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1cm4gbnVsbCBh
bmQgYWxsb3cgZmFsbGluZyBiYWNrIHRvIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc3Vy
ZmFjZUZsYWdzKTsKLSAgICBpZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKHN1cmZhY2UpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlU3VyZmFj
ZShzaXplLCBmbGFncywgc3VyZmFjZS5yZWxlYXNlKCkpKTsKLX0KLSNlbmRpZgotCi1QYXNzT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17ICAgIAotI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQotICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpCi0gICAgICAg
IHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+YmVnaW5QYWludChyZWN0LCAwIC8qIFdyaXRlIHdp
dGhvdXQgcmV0YWluaW5nIHBpeGVscyovKTsKLSNlbmRpZgotCi0gICAgQVNTRVJUKG1fYml0bWFw
KTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1h
cC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJl
Y3QpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7
Ci0gICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8
U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUm
IHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXApCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJm
YWNlKHNpemUsIGZsYWdzLCBiaXRtYXApKTsKLX0KLQotU2hhcmVhYmxlU3VyZmFjZTo6U2hhcmVh
YmxlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZs
YWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQotICAgIDogbV9zaXplKHNp
emUpCi0gICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9iaXRtYXAoYml0bWFwKQotewotfQot
Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi1TaGFyZWFibGVTdXJmYWNlOjpTaGFyZWFibGVT
dXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MgZmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQot
ICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9ncmFwaGlj
c1N1cmZhY2Uoc3VyZmFjZSkKLXsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBT
aGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0
bWFwOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBz
dXJmYWNlKSk7Ci19Ci0jZW5kaWYKLQotU2hhcmVhYmxlU3VyZmFjZTo6flNoYXJlYWJsZVN1cmZh
Y2UoKQotewotfQotCi1QYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZh
Y2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKLXsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKLSAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7
Ci0gICAgICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZh
Y2U6OmNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgaGFuZGxlLm1fZ3JhcGhp
Y3NTdXJmYWNlVG9rZW4pOwotICAgICAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhcmVhYmxlU3VyZmFjZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9m
bGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KHN1cmZhY2UpKSk7Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShoYW5kbGUubV9iaXRtYXBIYW5kbGUpOwotICAgIGlmICghYml0bWFwKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxl
Lm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkpOwotfQotCi1ib29sIFNoYXJlYWJsZVN1cmZhY2U6
OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBoYW5kbGUubV9zaXplID0gbV9z
aXplOwotICAgIGhhbmRsZS5tX2ZsYWdzID0gbV9mbGFnczsKLQotI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQotICAgIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuID0gbV9ncmFwaGljc1N1
cmZhY2UgPyBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IEdyYXBoaWNzU3VyZmFj
ZVRva2VuKCk7Ci0gICAgaWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoIW1fYml0bWFwLT5jcmVh
dGVIYW5kbGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi12b2lkIFNo
YXJlYWJsZVN1cmZhY2U6OmNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBU
ZXh0dXJlPiBwYXNzVGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2lu
dCYgc291cmNlT2Zmc2V0KQotewotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKHBh
c3NUZXh0dXJlKTsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChpc0JhY2tl
ZEJ5R3JhcGhpY3NTdXJmYWNlKCkpIHsKLSAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4g
dGV4dHVyZUdMID0gdG9CaXRtYXBUZXh0dXJlR0wodGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIGlm
ICh0ZXh0dXJlR0wpIHsKLSAgICAgICAgICAgIHVpbnQzMl90IHRleHR1cmVJRCA9IHRleHR1cmVH
TC0+aWQoKTsKLSAgICAgICAgICAgIHVpbnQzMl90IHRleHR1cmVUYXJnZXQgPSB0ZXh0dXJlR0wt
PnRleHR1cmVUYXJnZXQoKTsKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5VG9H
TFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVyZUlELCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWZQdHI8SW1hZ2U+
IGltYWdlID0gbV9ncmFwaGljc1N1cmZhY2UtPmNyZWF0ZVJlYWRPbmx5SW1hZ2UoSW50UmVjdChz
b3VyY2VPZmZzZXQsIHRhcmdldC5zaXplKCkpKTsKLSAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29u
dGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwgSW50UG9pbnQ6Onplcm8oKSwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgQVNTRVJUKG1fYml0bWFwKTsKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9iaXRtYXAt
PmNyZWF0ZUltYWdlKCk7Ci0gICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCks
IHRhcmdldCwgc291cmNlT2Zmc2V0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmln
aW5hbEltYWdlRGF0YSk7Ci0gICAgcmV0dXJuOwotfQotI2VuZGlmIC8vIFVTRShURVhUVVJFX01B
UFBFUikKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlN2EzOWYyOGE3
NjcxNTVhNGU5YmZmZGNlOTdmYTQ1OWI3ZGY0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFj
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAy
MDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFNoYXJlYWJsZVN1cmZhY2VfaAotI2RlZmluZSBT
aGFyZWFibGVTdXJmYWNlX2gKLQotI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotCi0jaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKLSNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOwotY2xhc3MgSW1hZ2U7Ci1jbGFzcyBHcmFw
aGljc0NvbnRleHQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBTaGFyZWFibGVT
dXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVN1cmZhY2U+IHsK
LXB1YmxpYzoKLSAgICBlbnVtIEhpbnQgewotICAgICAgICBTdXBwb3J0c0dyYXBoaWNzU3VyZmFj
ZSA9IDB4MDEKLSAgICB9OwotCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBIaW50czsKLQotICAgIGNs
YXNzIEhhbmRsZSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7Ci0gICAg
cHVibGljOgotICAgICAgICBIYW5kbGUoKTsKLQotICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0
OwotCi0gICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0
OwotICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
SGFuZGxlJik7Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgV2ViQ29yZTo6
R3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVy
biBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOyB9Ci0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVTdXJmYWNlOwotICAgICAgICBtdXRhYmxlIFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIG1fYml0bWFwSGFuZGxlOwotI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuOwotI2VuZGlmCi0gICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAg
ICAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIG1fZmxhZ3M7Ci0gICAgfTsKLQotICAgIC8vIENy
ZWF0ZSBhIG5ldyBTaGFyZWFibGVTdXJmYWNlLCBhbmQgYWxsb2NhdGUgZWl0aGVyIGEgR3JhcGhp
Y3NTdXJmYWNlIG9yIGEgU2hhcmVhYmxlQml0bWFwIGFzIGJhY2tpbmcuCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzLCBIaW50cyk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzaGFy
ZWFibGUgc3VyZmFjZSBmcm9tIGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJl
YWJsZVN1cmZhY2U+IGNyZWF0ZShjb25zdCBIYW5kbGUmKTsKLQotICAgIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0KLSAgICAvLyBDcmVh
dGUgYSBoYW5kbGUuCi0gICAgYm9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJik7Ci0KLSAgICB+U2hh
cmVhYmxlU3VyZmFjZSgpOwotCi0gICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBzaXplKCkp
OyB9Ci0KLSAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQg
dG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KLSAgICBQYXNzT3duUHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKLQotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICB2b2lkIGNvcHlUb1RleHR1
cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KTsKLSNl
bmRpZgotCi1wcml2YXRlOgotICAgIFNoYXJlYWJsZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
Pik7Ci0KLSAgICAvLyBDcmVhdGUgYSBTaGFyZWFibGVTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4
aXN0aW5nIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVT
dXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6
RmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7Ci0KLSNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKLSAgICBTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBT
aGFyZWFibGVCaXRtYXA6OkZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZT4pOwotICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhp
Y3Mgc3VyZmFjZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVh
dGVXaXRoU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpG
bGFncyk7Ci0gICAgLy8gQ3JlYXRlIGEgU2hhcmVhYmxlU3VyZmFjZSByZWZlcmVuY2luZyBhbiBl
eGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxl
U3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6
OkZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwotCi0gICAgYm9v
bCBpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gISFtX2dyYXBoaWNz
U3VyZmFjZTsgfQotI2VuZGlmCi0KLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBT
aGFyZWFibGVCaXRtYXA6OkZsYWdzIG1fZmxhZ3M7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gbV9iaXRtYXA7Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBoaWNzU3VyZmFjZTsKLSNlbmRpZgotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBTaGFyZWFibGVTdXJmYWNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCmluZGV4IDEyNjBiM2MxYWE0NmJiNWNiMjQ2MzRhYmNjMWIxMmY0ZDk0MzE0NzMuLjIy
MWIwMzE0MGE0MmY5MTRkODdhNjkyNjZjMmIzZTAzYmFlZDNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAt
NzEsNyArNzEsNiBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0
LmggXAogICAgIFNoYXJlZC9BUElDbGllbnRUcmFpdHMuaCBcCiAgICAgU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oIFwKLSAgICBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oIFwKICAgICBTaGFyZWQv
Q2FjaGVNb2RlbC5oIFwKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmggXAogICAgIFNoYXJlZC9D
aGlsZFByb2Nlc3NQcm94eS5oIFwKQEAgLTEzNiw2ICsxMzUsOCBAQCBIRUFERVJTICs9IFwKICAg
ICBTaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAogICAgIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIFwKICAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oIFwKKyAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBcCisgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggXAogICAgIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAgICAg
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAgICAgU2hh
cmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCkBAIC00NDIsNyArNDQzLDYgQEAgU09V
UkNFUyArPSBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVOb25lLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1
Z2luTW9kdWxlWDExLmNwcCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgXAotICAg
IFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1v
dGVPYmplY3RNYXAuY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNw
cCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKQEAg
LTUwNSw2ICs1MDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5j
cHAgXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAgXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJJbmZvLmNwcCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmNwcCBcCiAgICAgU2hhcmVkL3F0L0FyZ3VtZW50
Q29kZXJzUXQuY3BwIFwKICAgICBTaGFyZWQvcXQvTGF5ZXJUcmVlQ29udGV4dFF0LmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNzBlOWNl
MjVmZjNkNzlkYjczMjRjYzJjNWU4YjkwMjEyMDE0M2EwMi4uNGE3YmIxMDg2ZWU3YTg2N2IyZDNm
ZDY4MGM1YTM3ZGIwNWI4YjdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcApAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmgiCiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAi
Q29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1
ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCiAKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcAogCiAgICAgQVNTRVJUKHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXpl
KCkud2lkdGgoKSA+PSBtX3RpbGVSZWN0LnNpemUoKS53aWR0aCgpICYmIHRleHR1cmVNYXBwZXIt
Pm1heFRleHR1cmVTaXplKCkuaGVpZ2h0KCkgPj0gbV90aWxlUmVjdC5zaXplKCkuaGVpZ2h0KCkp
OwogICAgIGlmIChzaG91bGRSZXNldCkKLSAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVj
dC5zaXplKCksIG1fc3VyZmFjZS0+ZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgdGV4dHVy
ZS0+cmVzZXQobV90aWxlUmVjdC5zaXplKCksIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpKTsK
IAogICAgIG1fc3VyZmFjZS0+Y29weVRvVGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1f
c3VyZmFjZU9mZnNldCk7CiAgICAgbV9zdXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZh
Y2U+IGJ1ZmZlciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVm
ZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIG1fc291cmNlUmVjdCA9IHNvdXJj
ZVJlY3Q7CiAgICAgbV90aWxlUmVjdCA9IHRpbGVSZWN0OwpAQCAtODQsNyArODQsNyBAQCB2b2lk
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpyZW1vdmVBbGxUaWxlcygpCiAgICAgICAgIG1fdGls
ZXNUb1JlbW92ZS5hZGQoaXQtPmtleSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OnVwZGF0ZVRpbGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJhY2tC
dWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDx1aW50MzJf
dCwgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZp
bmQoaWQpOwogICAgIEFTU0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IGNkMTUxZjg0NzZlY2Q1YmZjYjBjMjI4
NmE1NGMxMzMxNTNmODVhOTkuLmFlNWFmOGQ0ZmEyZmM5ZWJkMjExOTcyN2ZjYWRkODU5NjIzMzBm
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMjks
NyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlU3VyZmFj
ZTsKK2NsYXNzIENvb3JkaW5hdGVkU3VyZmFjZTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlIHsKIHB1YmxpYzoK
QEAgLTQ0LDEwICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVw
YWludENvdW50KCkgeyArK21fcmVwYWludENvdW50OyB9CiAgICAgaW5saW5lIGludCByZXBhaW50
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1
ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciopOwotICAgIHZvaWQgc2V0QmFja0J1ZmZlcihj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwor
ICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlYWJs
ZVN1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1
cmZhY2U7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3NvdXJjZVJlY3Q7CiAgICAgV2ViQ29yZTo6
SW50UmVjdCBtX3RpbGVSZWN0OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNl
dDsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJf
dCB0aWxlSUQsIGZsb2F0KTsKICAgICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKTsK
ICAgICB2b2lkIHJlbW92ZUFsbFRpbGVzKCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90
IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OworICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1
cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9u
cyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGQzNzA0NDg2NDhmZTg4NGVhOWU0ZWRmZTE1NmRj
Njc2ODM2ZGU3MzkuLjZlYjE0OTNhZDFhYTgyMGI2NjE2YjcwNDc2OGEzZjVhZTdiZjQzMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0y
NSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKICNpbmNsdWRl
ICJMYXllclRyZWVDb29yZGluYXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVu
ZGVyZXIuaCIKLSNpbmNsdWRlICJVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCkBAIC03OSwxMCArNzgsMTAgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpyZW1vdmVUaWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHUK
ICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSwg
bV9yZW5kZXJlci5nZXQoKSwgbGF5ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNo
YXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRv
clByb3h5OjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29u
dGFpbnMoYXRsYXNJRCkpOwotICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFNoYXJlYWJsZVN1
cmZhY2U6OmNyZWF0ZShoYW5kbGUpKTsKKyAgICBtX3N1cmZhY2VzLmFkZChhdGxhc0lELCBXZWJD
b29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpKTsKIH0KIAogdm9pZCBMYXllclRyZWVD
b29yZGluYXRvclByb3h5OjpyZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKQEAgLTE0Niw5
ICsxNDUsOSBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYQogICAgIGRpc3BhdGNoVXBkYXRlKGJp
bmQoJkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVJbWFnZUJhY2tpbmcsIG1fcmVuZGVyZXIuZ2V0
KCksIGltYWdlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBT
aGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1h
Z2VJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNr
aW5nLCBtX3JlbmRlcmVyLmdldCgpLCBpbWFnZUlELCBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUo
aGFuZGxlKSkpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1
cGRhdGVJbWFnZUJhY2tpbmcsIG1fcmVuZGVyZXIuZ2V0KCksIGltYWdlSUQsIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSkpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGlu
YXRvclByb3h5OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQgaW1hZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaAppbmRleCAxZTA5ZGQ1ZjRhNmE5NGY1NzE0NDc5NTkzNDNlNjU2OWRjN2JmYjY4Li5kZGY2
MWIzZmVjMWQ0NjgwNGRiNjBjNDdmMGU1Y2Q3MjNlNjRlMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVk
ZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVnaW9uLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2lu
Y2x1ZGUgIlN1cmZhY2VVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJB
bmltYXRpb24uaD4KQEAgLTY5LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVU
aWxlRm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBk
YXRlVGlsZUZvckxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKICAgICB2b2lk
IHJlbW92ZVRpbGVGb3JMYXllcihDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCk7
Ci0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxl
U3VyZmFjZTo6SGFuZGxlJik7CisgICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJ
RCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKICAgICB2b2lkIHJlbW92
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUm
KTsKKyAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
LCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYpOwogICAgIHZvaWQgY2xlYXJJ
bWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lk
IHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVMYXllclRyZWVDb29yZGluYXRvclByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpA
QCAtMTAyLDcgKzEwMiw3IEBAIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9s
YXN0U2VudFZpc2libGVSZWN0OwogICAgIGZsb2F0IG1fbGFzdFNlbnRTY2FsZTsKICAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwotICAgIHR5cGVkZWYg
SGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+ID4gU3Vy
ZmFjZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFj
ZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMTQ1OGNkYWM2ZjMyODFlNzg2MDA1NzhhN2E3NTlk
Zjg0ZDI5ZGYxLi4xN2UxN2RhZmM4ZmNlMGU2ODE1YzJhODIyYmY1MWMxMTg2MTg1YWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVz
c2FnZXMuaW4KQEAgLTMzLDEwICszMywxMCBAQCBtZXNzYWdlcyAtPiBMYXllclRyZWVDb29yZGlu
YXRvclByb3h5IHsKICAgICBDcmVhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWlu
dDMyX3QgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VV
cGRhdGVJbmZvIHVwZGF0ZUluZm8pCiAgICAgVXBkYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxh
eWVySUQsIHVpbnQzMl90IHRpbGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0
OjpTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvKQogICAgIFJlbW92ZVRpbGVGb3JMYXllcih1
aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQpCi0gICAgQ3JlYXRlVXBkYXRlQXRsYXMo
aW50IGF0bGFzSUQsIFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKKyAg
ICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZSBoYW5kbGUpCiAgICAgUmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQp
CiAgICAgQ3JlYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQpCi0gICAgVXBkYXRlSW1h
Z2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQsIFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFu
ZGxlIGhhbmRsZSkKKyAgICBVcGRhdGVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCwgV2Vi
S2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGUpCiAgICAgQ2xlYXJJbWFn
ZUJhY2tpbmdDb250ZW50cyh1aW50NjRfdCBpbWFnZUlEKQogICAgIFJlbW92ZUltYWdlQmFja2lu
Zyh1aW50NjRfdCBpbWFnZUlEKQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUg
Y29udGVudHNTaXplLCBXZWJDb3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IGMyZDVlYzUxNWNhNTliMGZiZTg2MWEyMGZkYjBj
Nzk0NjE4NWVmN2QuLmI1MzkxNjI5YzM0NzRkOWM2OWI5ODMxNmYwZThmNGEwYWVjNWQzMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCB2
b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCBpbWFnZUlEKQogICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgYmFj
a2luZ1N0b3JlLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlU3VyZmFjZT4gc3VyZmFjZSkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVw
ZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQogewogICAgIEFTU0VSVChtX2ltYWdl
QmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwogICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0
b3IgaXQgPSBtX2ltYWdlQmFja2luZ3MuZmluZChpbWFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oCmluZGV4IGE1YWU4N2RjNTVlNzk2ZmJiNDcwODFjMTVkZDMwZWI4NWY1NmMz
MGMuLmE2NzIyNzQwOWU3ZjAwZmVjYzAwNzMxNzZlMWZlZDBkN2M4NTVmYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtMjMsNyArMjMsNyBAQAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJDb29y
ZGluYXRlZExheWVySW5mby5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNs
dWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
VGlsZVVwZGF0ZSB7CiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdDsKICAgICAg
ICAgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+IHN1cmZhY2U7CisgICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZh
Y2U7CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG9mZnNldDsKLSAgICAgICAgVGlsZVVwZGF0
ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHRpbGUsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbmV3U3VyZmFjZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIG5ld09mZnNldCkKKyAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgbmV3T2Zmc2V0KQogICAgICAgICAgICAgOiBzb3VyY2VSZWN0KHNvdXJjZSkKICAgICAg
ICAgICAgICwgdGlsZVJlY3QodGlsZSkKICAgICAgICAgICAgICwgc3VyZmFjZShuZXdTdXJmYWNl
KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRpbGUoQ29vcmRp
bmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKICAgICB2
b2lkIGZsdXNoTGF5ZXJDaGFuZ2VzKCk7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPik7Cisg
ICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFz
c1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5n
Q29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRMYXllckFu
aW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
QW5pbWF0aW9ucyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggYWYwNzk4MzJkNmNkOThkOTI5ZGJhY2UyYjAy
OTY2MjI0MGIxYTM3Ny4uZDBlOWM2ZDMyYjY3MWQ3YTE1ZDQ0OGI3MDBlMTY0N2EzOGFlM2ZlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCkBAIC03NDAsNyArNzQwLDcgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRl
eHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEkK
ICAgICBpZiAoIW1fY29vcmRpbmF0b3IpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4oKTsKIAotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdp
bkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IDAgOiBTaGFyZWFibGVCaXRt
YXA6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5h
dG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IENvb3JkaW5h
dGVkU3VyZmFjZTo6Tm9GbGFncyA6IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSwg
YXRsYXMsIG9mZnNldCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVh
dGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUlu
Zm8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGVSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBkOWZiZTdl
YzRhMWE3ODczNTE2ZDk1NzgxNTY5NmFlODMwMzk5ODkzLi40NzNiYWUzMDYxNmQzZjM3YmY3YzMx
NTE5YjQyNjU0OTY1NzlmNGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJUaWxl
ZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTc1LDcgKzc0LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCkgPSAw
OwotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2lu
Q29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpG
bGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIGludCYg
YXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7CiB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5kZXgg
NTVjYTlkYTdiNTk0Y2I2OThmNzhhNmM5MGFiMTQxOTRmOWExYjFiMS4uMTQ2ODExNThiMDhhNzFk
ODFiN2Y1YTZlZTEzMjg0MWI0YWI5ZGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtMTAzLDEwICsxMDMsMTAg
QEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShtX2ltYWdlLT5z
aXplKCksIG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGEgOiBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJlYWJsZVN1cmZh
Y2U6OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKTsKLSAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5l
dyBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUoKSk7CisgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGUobV9pbWFnZS0+c2l6ZSgpLCBtX2ltYWdlLT5jdXJyZW50RnJhbWVI
YXNBbHBoYSgpID8gQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhIDogQ29vcmRpbmF0
ZWRTdXJmYWNlOjpOb0ZsYWdzKTsKKyAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OkhhbmRsZSgpKTsKIAotICAgIGlmICghbV9zdXJmYWNlLT5jcmVhdGVI
YW5kbGUoKm1faGFuZGxlKSkgeworICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlKj4obV9zdXJmYWNlLmdldCgpKS0+Y3JlYXRlSGFuZGxlKCptX2hhbmRsZSkpIHsKICAg
ICAgICAgcmVsZWFzZVN1cmZhY2VJZk5lZWRlZCgpOwogICAgICAgICBtX2lzRGlydHkgPSBmYWxz
ZTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKaW5kZXggNjVlODI0NjcyYjkzOWY4YWM4NWNmMGFlNDY1
ZGI4MmMzNzM5MDY5YS4uZWRjNmU0NDJiMWI2N2MxYjY3NzZlNTVlOGYwMjYwODU5ODg2YmRmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFj
a2luZy5oCkBAIC0yOSw4ICsyOSw5IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKKyNpbmNsdWRlICJDb29yZGluYXRl
ZFN1cmZhY2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZh
Y2UuaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDb29yZGluYXRv
ciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5n
KENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBTaGFyZWFi
bGVTdXJmYWNlOjpIYW5kbGUmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpIYW5kbGUmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFj
a2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9
IDA7CiAgICAgfTsKQEAgLTgwLDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIG1faWQ7CiAgICAgVmVjdG9yPEhvc3QqPiBtX2hvc3RzOwogCi0gICAgUmVm
UHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFjZTsKLSAgICBPd25QdHI8U2hhcmVhYmxlU3Vy
ZmFjZTo6SGFuZGxlPiBtX2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBt
X3N1cmZhY2U7CisgICAgT3duUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlPiBtX2hh
bmRsZTsKIAogICAgIFdlYkNvcmU6OlRpbWVyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBtX2Ns
ZWFyQ29udGVudHNUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IGJmNjdlYWRmZDhjNGI5YWE5MzIyY2E3MmY3MTQx
NDA5NGNmOTlmOTguLjQxNDFhOTg4Zjg5NGUyODAyNDVmOTNjYTM4OGM2OTMzMTQxNGZlN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
Q29tcGFueSAxMDAsIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcx
LDcgKzU3Miw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVJbWFnZUJhY2tpbmco
aW1hZ2VJRCkpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjp1cGRhdGVJbWFnZUJh
Y2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBTaGFyZWFibGVT
dXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgbV9zaG91bGRTeW5j
RnJhbWUgPSB0cnVlOwogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6VXBkYXRlSW1hZ2VCYWNraW5nKGltYWdlSUQsIGhhbmRsZSkpOwpAQCAt
NjU5LDcgKzY2MCw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVRpbGUoQ29v
cmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHVpbnQzMl90IHRpbGVJCiAgICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVUaWxlRm9yTGF5
ZXIobGF5ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNy
ZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5k
bGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFz
KGludCBhdGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYgaGFuZGxl
KQogewogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eTo6Q3JlYXRlVXBkYXRlQXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7CiB9CkBAIC03NjksMTIg
Kzc3MCwxMiBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMo
KQogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZs
YWdzLCBpbnQmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQpCitQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBp
bnQmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgT3duUHRyPFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQ+IGdyYXBoaWNzQ29udGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRh
dGVBdGxhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1f
dXBkYXRlQXRsYXNlc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKGF0bGFzLT5mbGFncygpID09IGZs
YWdzKSB7CisgICAgICAgIGlmIChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IENvb3JkaW5hdGVk
U3VyZmFjZTo6c3VwcG9ydHNBbHBoYShmbGFncykpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2ls
bCByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgogICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJs
ZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdyYXBoaWNz
Q29udGV4dCkKQEAgLTgwNSw3ICs4MDYsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpy
ZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZChUaW1lcjxMYXllclRyZWVDb29yZAogICAg
ICAgICBVcGRhdGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAg
ICAgIGlmICghYXRsYXMtPmlzSW5Vc2UoKSkKICAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5h
Y3RpdmUoUmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29s
IHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gYXRsYXMtPmZsYWdzKCkgPT0gU2hhcmVh
YmxlQml0bWFwOjpOb0ZsYWdzOworICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRD
b250ZW50ID0gIWF0bGFzLT5zdXBwb3J0c0FscGhhKCk7CiAgICAgICAgIGlmIChhdGxhcy0+aXNJ
bmFjdGl2ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIWZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21w
b3NpdGVkQ29udGVudCAmJiAhYXRsYXNUb0tlZXBBbnl3YXkgJiYgdXNhYmxlRm9yTm9uQ29tcG9z
aXRlZENvbnRlbnQpCiAgICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3YXkgPSBtX3VwZGF0
ZUF0bGFzZXNbaV0ucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggN2JiNjhiOGM3NzNiODMyMzE2NWE3YWExOTQyODlk
MTQ2ODFmNWE1MS4uYTU0N2Y0ZTIzZjQ1MTQ5MDBhYmIyODYyYmEzN2E5ZjM1OTYyZTdhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSAiVXBkYXRlQXRsYXMuaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRl
ZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgpAQCAtMTAzLDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvb3JkaW5h
dGVkU3VyZmFjZTo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAog
ICAgIC8vIFVwZGF0ZUF0bGFzQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0
bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0
bGFzKGludCBhdGxhc0lEKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
QEAgLTEyNSw3ICsxMjYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OkNvb3JkaW5hdG9yCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpIYW5kbGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJh
Y2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQp
IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKaW5k
ZXggOWE1NDE4ZjFlYWFhMzQ4N2I0ZTQyNGI5YTk1NjIwMjA4MzA5NzU0ZS4uOTk2NTMxOGQwZmE1
NTJiNjc0ZWNhMTUwYTE4OGVhMDgxN2VhMTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L1VwZGF0ZUF0bGFzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdo
dCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgogCiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw3ICszMSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotVXBk
YXRlQXRsYXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1l
bnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCitVcGRhdGVBdGxhczo6VXBkYXRl
QXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
ZmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2luYWN0aXZpdHlJblNlY29uZHMoMCkKQEAgLTM5LDkgKzQw
LDkgQEAgVXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQs
IGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG0KICAgICBzdGF0aWMgaW50IG5leHRJRCA9IDA7
CiAgICAgbV9JRCA9ICsrbmV4dElEOwogICAgIEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdv
KEludFNpemUoZGltZW5zaW9uLCBkaW1lbnNpb24pKTsKLSAgICBtX3N1cmZhY2UgPSBTaGFyZWFi
bGVTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1cHBvcnRz
R3JhcGhpY3NTdXJmYWNlKTsKKyAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZhY2U6OmNy
ZWF0ZShzaXplLCBmbGFncyk7CiAKLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1f
aGFuZGxlKSkgeworICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4o
bV9zdXJmYWNlLmdldCgpKS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlKSkgewogICAgICAgICBtX2lz
VmFpbGQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg2LDcgKzg3LDcgQEAg
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25B
dmFpbGFibGVCdWZmZXIoaW50JiBhdGwKICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9uKCk7CiAg
ICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNlLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7CiAKLSAgICBpZiAoZmxhZ3MoKSAmIFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSkgeworICAgIGlmIChzdXBwb3J0c0FscGhhKCkpIHsKICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29w
eSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBzaXplKSwgQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
U291cmNlT3Zlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaAppbmRleCA3
Y2VmZTljOTc5NDIxNTg2MjczZjRlMGNkMzA5YTIwMjM0YzcxYWQxLi5kMGI3NzllMDRiOWZlMzY4
ZmVhYTYyYzUzMTNmMmRlOWM4NTU0ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0
ZUF0bGFzLmgKQEAgLTEsNSArMSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIw
MTIgQ29tcGFueSAxMDAsIEluYy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNyArMjMsNyBAQAogCiAj
aW5jbHVkZSAiQXJlYUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRl
ICJTaGFyZWFibGVTdXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgi
CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNCwxNCArMzUsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFVwZGF0ZUF0bGFz
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50
IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVB
dGxhcyhpbnQgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgVXBkYXRlQXRsYXMgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBVcGRhdGVBdGxh
cyhVcGRhdGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6Rmxh
Z3MpOworICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBp
bmxpbmUgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5z
aXplKCk7IH0KQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBudWxs
IHBvaW50ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KICAgICBQYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVy
KGludCYgYXRsYXNJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkludFBvaW50
JiBvZmZzZXQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFyZWFibGVCaXRt
YXA6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIGJvb2wgc3Vw
cG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpOyB9
CiAKICAgICB2b2lkIGFkZFRpbWVJbmFjdGl2ZShkb3VibGUgc2Vjb25kcykKICAgICB7CkBAIC03
MCw4ICs3MSw4IEBAIHByaXZhdGU6CiAgICAgVXBkYXRlQXRsYXNDbGllbnQqIG1fY2xpZW50Owog
ICAgIE93blB0cjxHZW5lcmFsQXJlYUFsbG9jYXRvcj4gbV9hcmVhQWxsb2NhdG9yOwogICAgIFNo
YXJlYWJsZUJpdG1hcDo6RmxhZ3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4gbV9zdXJmYWNlOwotICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAg
ICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpIYW5kbGUgbV9oYW5kbGU7CiAgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vj
b25kczsKICAgICBpbnQgbV9JRDsKICAgICBib29sIG1faXNWYWlsZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178466</attachid>
            <date>2012-12-09 21:08:28 -0800</date>
            <delta_ts>2012-12-09 22:15:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121210140536.patch</filename>
            <type>text/plain</type>
            <size>61986</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDY5ZDEwZmM2YjgzZDAx
NzQxMGRlNTdhYzkxYzBlNWEwYTM4YmZjOC4uNDUyOTZiODhlMTJlMTBmZDQwYTFiN2NkZDYxODBk
ZjI3MDNlODFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEyLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBBZGQgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIHJlbW92ZSB0aGUgZGVwZW5k
ZW5jeSBvZiBTaGFyZWFibGVTdXJmYWNlIGZyb20gQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRlcm5hbCBSZXZp
ZXcgYnkgR3dhbmcgWW9vbiBId2FuZyBhbmQgSmFlIEh5dW4gUGFyay4KKworICAgICAgICBJdCBp
cyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGljcyBv
biBXSzEuCisKKyAgICAgICAgQ3VycmVudGx5LCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIsIENv
b3JkaW5hdGVkVGlsZSBhbmQKKyAgICAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUgZGlyZWN0
bHkgdXNlIFNoYXJlYWJsZVN1cmZhY2UuIFNoYXJlYWJsZVN1cmZhY2Ugd2FzCisgICAgICAgIGlt
cGxlbWVudGVkIHRvIHNoYXJlIGFuIGltYWdlIGJldHdlZW4gcHJvY2Vzc2VzIGFzIHdlbGwgYXMg
cGxhY2VkIGluIFdLMi4KKyAgICAgICAgV2Ugd2FudCB0aGVtIHRvIG5vdCBkZXBlbmQgb24gU2hh
cmVhYmxlU3VyZmFjZSB0byBtb3ZlIHRoZW0gaW50byBXZWJDb3JlLiBTbworICAgICAgICB0aGlz
IHBhdGNoIGludHJvZHVjZXMgbmV3IGNsYXNzOiBDb29yZGluYXRlZFN1cmZhY2UsIHRvIGJlIHVz
ZWQgYXMgYQorICAgICAgICBkcmF3aW5nIHN1cmZhY2UgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNz
LgorCisgICAgICAgIENyZWF0ZSBhIENvb3JkaW5hdGVkU3VyZmFjZSBjbGFzcyB0aGF0IGNhbiBi
ZSB0aGUgYmFzZSBjbGFzcyBib3RoIGZvcgorICAgICAgICB0aGUgY3VycmVudCBJUEMtYmFzZWQg
U2hhcmVhYmxlU3VyZmFjZSwgcmVuYW1lZCBoZXJlIHRvCisgICAgICAgIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZSwgYW5kIHRvIGEgZnV0dXJlIHRocmVhZC1iYXNlZCBzdXJmYWNlCisgICAgICAgIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRT
dXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjp+Q29vcmRpbmF0
ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpzdXBwb3J0
c0FscGhhKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuY3BwLgorICAgICAgICAgIEV4dGVuZHMgQ29vcmRpbmF0ZWRTdXJmYWNlLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OkhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1
cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjp+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAg
ICAgIChIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OmlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAqIFRhcmdl
dC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGU6OnN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlKToKKyAgICAgICAgKENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6
dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAoVGlsZVVwZGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpUaWxlVXBkYXRlOjpUaWxlVXBkYXRlKToKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Q2xpZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmg6CisgICAgICAgIChD
b29yZGluYXRvcik6CisgICAgICAgIChDb29yZGluYXRlZEltYWdlQmFja2luZyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRl
SW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNy
ZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yOjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoK
KyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OlVwZGF0ZUF0
bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmg6CisgICAgICAgIChV
cGRhdGVBdGxhc0NsaWVudCk6CisgICAgICAgIChVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJL
aXQ6OlVwZGF0ZUF0bGFzOjpzdXBwb3J0c0FscGhhKToKKwogMjAxMi0xMi0wOSAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTW92ZSBidXR0b24gaW1hZ2UgdG8g
aW5qZWN0ZWQgYnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDgzYjZlZWJkMjYwOGQyOTkz
NzYzZGJiYzliN2FjZGZlM2QzMmFiZTAuLjQ3ZjViZGQ5ZjdkY2ViYmY3NGEyYTdmMTA1YzJlOTk4
NWI1OGQ3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0xNTYsNyArMTU2LDYgQEAgc2V0KFdl
YktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCiAgICAgU2hh
cmVkL1Nlc3Npb25TdGF0ZS5jcHAKICAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAotICAg
IFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAogICAgIFNoYXJlZC9TdGF0aXN0aWNzRGF0YS5j
cHAKICAgICBTaGFyZWQvU3VyZmFjZVVwZGF0ZUluZm8uY3BwCiAgICAgU2hhcmVkL1VwZGF0ZUlu
Zm8uY3BwCkBAIC0yMjEsNiArMjIwLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZv
LmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHAKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtUHJveHkuY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZWY3MWMyYTE5NmVkMTZhN2Iw
YWQ4NjcxMjU3OGJlNTliN2Y2YjBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJ
bmMuCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTdXJmYWNl
X2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRTdXJmYWNlX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBUZXh0dXJl
OworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3Jk
aW5hdGVkU3VyZmFjZT4geworcHVibGljOgorICAgIGVudW0gRmxhZyB7CisgICAgICAgIE5vRmxh
Z3MgPSAwLAorICAgICAgICBTdXBwb3J0c0FscGhhID0gMSA8PCAwLAorICAgIH07CisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBGbGFnczsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisKKyAgICB2
aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKSB7IH0KKworICAgIGJvb2wgc3VwcG9ydHNBbHBo
YSgpIHsgcmV0dXJuIGZsYWdzKCkgJiBTdXBwb3J0c0FscGhhOyB9CisgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CisKKyAgICAvLyBDcmVhdGUgYSBncmFwaGlj
cyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9y
ZS4KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVh
dGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKKworI2lmIFVT
RShURVhUVVJFX01BUFBFUikKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVm
UHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJn
ZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKKyNlbmRpZgor
Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKyNlbmRpZiAvLyBDb29yZGluYXRlZFN1
cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Zjc5MGM3OWZjZTYwYzU4ZTgwNTcwYjMzZjk1NjkwNGM1MWY4MWIzOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5h
dGVkU3VyZmFjZS5jcHAKQEAgLTAsMCArMSwyMjAgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEy
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdo
dCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCisK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c1N1cmZhY2VUb2tlbi5oPgorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2luY2x1ZGUgIlRl
eHR1cmVNYXBwZXJHTC5oIgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6OkhhbmRs
ZSgpCit7Cit9CisKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU6OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci5l
bmNvZGUobV9zaXplKTsKKyAgICBlbmNvZGVyLmVuY29kZShtX2ZsYWdzKTsKKyNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKKyAgICBlbmNvZGVyLmVuY29kZShtX2dyYXBoaWNzU3VyZmFjZVRva2Vu
KTsKKyAgICBpZiAobV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorICAgIGVuY29kZXIuZW5jb2RlKG1fYml0bWFwSGFuZGxlKTsKK30KKwor
Ym9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCit7CisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoaGFuZGxlLm1fc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZShoYW5kbGUubV9mbGFncykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5k
bGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2JpdG1h
cEhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncykKK3sKKyAgICByZXR1cm4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoc2l6
ZSwgZmxhZ3MpOworfQorCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRT
dXJmYWNlOjpGbGFncyBmbGFncykKK3sKKyAgICBSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
PiBzdXJmYWNlOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIHN1cmZhY2UgPSBjcmVh
dGVXaXRoU3VyZmFjZShzaXplLCBmbGFncyk7CisjZW5kaWYKKworICAgIGlmICghc3VyZmFjZSkK
KyAgICAgICAgc3VyZmFjZSA9IGNyZWF0ZShzaXplLCBmbGFncywgU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoc2l6ZSwgKGZsYWdzICYgU3VwcG9ydHNBbHBoYSkgPyBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBTaGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MpKTsKKworICAg
IHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsKK30KKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQorUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncyBmbGFncykKK3sKKyAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHN1cmZhY2VG
bGFncyA9CisgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2FyZVdyaXRlCisg
ICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0NvcHlUb1RleHR1cmUKKyAgICAgICAg
fCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKKworICAgIGlmIChmbGFncyAmIFN1
cHBvcnRzQWxwaGEpCisgICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1
cHBvcnRzQWxwaGE7CisKKyAgICAvLyBUaGlzIG1pZ2h0IHJldHVybiBudWxsLCBpZiB0aGUgc3lz
dGVtIGlzIHVuYWJsZSB0byBwcm92aWRlIGEgbmV3IGdyYXBoaWNzIHN1cmZhY2UuCisgICAgLy8g
SW4gdGhhdCBjYXNlLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBm
YWxsaW5nIGJhY2sgdG8gU2hhcmVhYmxlQml0bWFwLgorICAgIFJlZlB0cjxHcmFwaGljc1N1cmZh
Y2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3Mp
OworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoc3Vy
ZmFjZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2Uoc2l6
ZSwgZmxhZ3MsIHN1cmZhY2UucmVsZWFzZSgpKSk7Cit9CisjZW5kaWYKKworUGFzc093blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5iZWdpblBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91
dCByZXRhaW5pbmcgcGl4ZWxzKi8pOworI2VuZGlmCisKKyAgICBBU1NFUlQobV9iaXRtYXApOwor
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFwLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7
CisgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKKyAg
ICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IElu
dFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJD
b29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIGJpdG1hcCkpOworfQorCitXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBD
b29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gYml0bWFwKQorICAgIDogbV9zaXplKHNpemUpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAg
ICwgbV9iaXRtYXAoYml0bWFwKQoreworfQorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCitX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKKyAgICA6IG1fc2l6ZShzaXpl
KQorICAgICwgbV9mbGFncyhmbGFncykKKyAgICAsIG1fZ3JhcGhpY3NTdXJmYWNlKHN1cmZhY2Up
Cit7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncywg
c3VyZmFjZSkpOworfQorI2VuZGlmCisKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6fldlYkNvb3Jk
aW5hdGVkU3VyZmFjZSgpCit7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNl
PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKK3sK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFj
ZVRva2VuKCkuaXNWYWxpZCgpKSB7CisgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3Vy
ZmFjZUZsYWdzID0gMDsKKyAgICAgICAgaWYgKGhhbmRsZS5tX2ZsYWdzICYgU3VwcG9ydHNBbHBo
YSkKKyAgICAgICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRz
QWxwaGE7CisgICAgICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGlj
c1N1cmZhY2U6OmNyZWF0ZShoYW5kbGUubV9zaXplLCBzdXJmYWNlRmxhZ3MsIGhhbmRsZS5tX2dy
YXBoaWNzU3VyZmFjZVRva2VuKTsKKyAgICAgICAgaWYgKHN1cmZhY2UpCisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShoYW5kbGUubV9zaXplLCBo
YW5kbGUubV9mbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KHN1cmZhY2UpKSk7Cisg
ICAgfQorI2VuZGlmCisKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUubV9iaXRtYXBIYW5kbGUpOworICAgIGlmICghYml0
bWFwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6
ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5yZWxlYXNlKCkpOworfQorCitib29sIFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQoreworICAgIGhhbmRs
ZS5tX3NpemUgPSBtX3NpemU7CisgICAgaGFuZGxlLm1fZmxhZ3MgPSBtX2ZsYWdzOworCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4g
PSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpIDog
R3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNl
VG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgIGlmICgh
bV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9iaXRtYXBIYW5kbGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2lmIFVTRShURVhUVVJFX01B
UFBFUikKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gcGFzc1RleHR1cmUsIGNvbnN0IEludFJlY3QmIHRh
cmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkKK3sKKyAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gdGV4dHVyZShwYXNzVGV4dHVyZSk7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKKyAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpKSB7CisgICAgICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVHTCA9IHRvQml0bWFwVGV4dHVyZUdMKHRleHR1cmUu
Z2V0KCkpOworICAgICAgICBpZiAodGV4dHVyZUdMKSB7CisgICAgICAgICAgICB1aW50MzJfdCB0
ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7CisgICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJl
VGFyZ2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJlVGFyZ2V0KCk7CisgICAgICAgICAgICBtX2dyYXBo
aWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJlKHRleHR1cmVUYXJnZXQsIHRleHR1cmVJRCwgdGFy
Z2V0LCBzb3VyY2VPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fZ3JhcGhpY3NTdXJmYWNlLT5jcmVhdGVSZWFk
T25seUltYWdlKEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXQuc2l6ZSgpKSk7CisgICAgICAg
IHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIEludFBvaW50Ojp6
ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsK
KyAgICB9CisjZW5kaWYKKworICAgIEFTU0VSVChtX2JpdG1hcCk7CisgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOworICAgIHRleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIHNvdXJjZU9mZnNldCwgQml0bWFwVGV4dHVyZTo6
VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIHJldHVybjsKK30KKyNlbmRp
ZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIpCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlm
IC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjgyOGFhZDgxNzQ1NDJlZGQzN2IxOGUzN2YyNmNkYzk0YWI4MDlm
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgorIENv
cHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4KKworIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJDb29yZGluYXRlZFN1cmZhY2VfaAorI2RlZmluZSBX
ZWJDb29yZGluYXRlZFN1cmZhY2VfaAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
I2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJm
YWNlLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQml0bWFwVGV4dHVy
ZTsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSA6IHB1YmxpYyBDb29yZGluYXRlZFN1cmZhY2Ugewor
cHVibGljOgorICAgIGNsYXNzIEhhbmRsZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEhhbmRsZSk7CisgICAgcHVibGljOgorICAgICAgICBIYW5kbGUoKTsKKworICAgICAgICB2b2lk
IGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZSYpOworCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc1N1cmZh
Y2VUb2tlbjsgfQorI2VuZGlmCisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOworICAgICAgICBtdXRhYmxlIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIG1fYml0bWFwSGFuZGxlOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgICAg
ICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOwor
I2VuZGlmCisgICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOworICAgICAgICBDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzIG1fZmxhZ3M7CisgICAgfTsKKworICAgIC8vIENyZWF0ZSBhIG5l
dyBXZWJDb29yZGluYXRlZFN1cmZhY2UsIGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1
cmZhY2Ugb3IgYSBTaGFyZWFibGVCaXRtYXAgYXMgYmFja2luZy4KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgRmxhZ3MpOworCisgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHN1cmZhY2UgZnJvbSBhIGhh
bmRsZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0
ZShjb25zdCBIYW5kbGUmKTsKKworICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4KKyAgICBib29sIGNy
ZWF0ZUhhbmRsZShIYW5kbGUmKTsKKworICAgIHZpcnR1YWwgfldlYkNvb3JkaW5hdGVkU3VyZmFj
ZSgpOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX3NpemU7IH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikgT1ZFUlJJREU7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgdmlydHVhbCB2
b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291
cmNlT2Zmc2V0KSBPVkVSUklERTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPik7CisKKyAgICB2aXJ0dWFsIEZsYWdzIGZsYWdzKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9mbGFnczsgfQorCisgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFNoYXJlYWJsZUJpdG1hcC4KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZT4pOworICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhp
Y3Mgc3VyZmFjZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+
IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncyk7CisgICAg
Ly8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5n
IEdyYXBoaWNzU3VyZmFjZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CisKKyAgICBib29sIGlzQmFja2VkQnlHcmFwaGlj
c1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NTdXJmYWNlOyB9CisjZW5kaWYK
KworICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOworICAgIEZsYWdzIG1fZmxhZ3M7CisgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKKyAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBoaWNzU3Vy
ZmFjZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjZW5kaWYgLy8gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmY4ZmExMDY5OTM1Yzk2Njc0NTY2MmYwZjEyN2ZkYjI5NDdj
NjU4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyMTAgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCi0KLSNpbmNs
dWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+Ci0KLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1TaGFyZWFibGVTdXJmYWNl
OjpIYW5kbGU6OkhhbmRsZSgpCi17Ci19Ci0KLXZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxl
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAg
IGVuY29kZXIuZW5jb2RlKG1fc2l6ZSk7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9mbGFncyk7Ci0j
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgZW5jb2Rlci5lbmNvZGUobV9ncmFwaGljc1N1
cmZhY2VUb2tlbik7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBlbmNvZGVyLmVuY29kZShtX2JpdG1hcEhhbmRs
ZSk7Ci19Ci0KLWJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShoYW5kbGUubV9zaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1f
Yml0bWFwSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIEhp
bnRzIGhpbnRzKQotewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChoaW50cyAm
IFN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBzdXJmYWNlID0gY3JlYXRlV2l0aFN1cmZhY2Uoc2l6ZSwgZmxhZ3MpOwotICAgICAgICBp
ZiAoc3VyZmFjZSkKLSAgICAgICAgICAgIHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsKLSAgICB9
Ci0jZW5kaWYKLSAgICBVTlVTRURfUEFSQU0oaGludHMpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShz
aXplLCBmbGFncywgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgZmxhZ3Mp
KTsKLX0KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotUGFzc1JlZlB0cjxTaGFyZWFibGVT
dXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXpl
JiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzKQotewotICAgIEdyYXBoaWNzU3Vy
ZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KLSAgICAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6
U3VwcG9ydHNTb2Z0d2FyZVdyaXRlCi0gICAgICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3Vw
cG9ydHNDb3B5VG9UZXh0dXJlCi0gICAgICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9y
dHNTaGFyaW5nOwotCi0gICAgaWYgKGZsYWdzICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0Fs
cGhhKQotICAgICAgICBzdXJmYWNlRmxhZ3MgfD0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0Fs
cGhhOwotCi0gICAgLy8gVGhpcyBtaWdodCByZXR1cm4gbnVsbCwgaWYgdGhlIHN5c3RlbSBpcyB1
bmFibGUgdG8gcHJvdmlkZSBhIG5ldyBncmFwaGljcyBzdXJmYWNlLgotICAgIC8vIEluIHRoYXQg
Y2FzZSwgdGhpcyBmdW5jdGlvbiB3b3VsZCByZXR1cm4gbnVsbCBhbmQgYWxsb3cgZmFsbGluZyBi
YWNrIHRvIFNoYXJlYWJsZUJpdG1hcC4KLSAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJm
YWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc3VyZmFjZUZsYWdzKTsKLSAgICBp
ZiAoIXN1cmZhY2UpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKHN1cmZhY2UpOwot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVhYmxlU3VyZmFjZShzaXplLCBmbGFncywgc3Vy
ZmFjZS5yZWxlYXNlKCkpKTsKLX0KLSNlbmRpZgotCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0
IEludFJlY3QmIHJlY3QpCi17ICAgIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlm
IChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpCi0gICAgICAgIHJldHVybiBtX2dyYXBoaWNz
U3VyZmFjZS0+YmVnaW5QYWludChyZWN0LCAwIC8qIFdyaXRlIHdpdGhvdXQgcmV0YWluaW5nIHBp
eGVscyovKTsKLSNlbmRpZgotCi0gICAgQVNTRVJUKG1fYml0bWFwKTsKLSAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJlY3QpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgcmV0dXJuIGdyYXBo
aWNzQ29udGV4dC5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4g
U2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFNoYXJlYWJsZUJp
dG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBi
aXRtYXApKTsKLX0KLQotU2hhcmVhYmxlU3VyZmFjZTo6U2hhcmVhYmxlU3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwKQotICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX2ZsYWdz
KGZsYWdzKQotICAgICwgbV9iaXRtYXAoYml0bWFwKQotewotfQotCi0jaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCi1TaGFyZWFibGVTdXJmYWNlOjpTaGFyZWFibGVTdXJmYWNlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQotICAgIDogbV9zaXplKHNpemUp
Ci0gICAgLCBtX2ZsYWdzKGZsYWdzKQotICAgICwgbV9ncmFwaGljc1N1cmZhY2Uoc3VyZmFjZSkK
LXsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpj
cmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywg
UGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdzLCBzdXJmYWNlKSk7Ci19Ci0jZW5k
aWYKLQotU2hhcmVhYmxlU3VyZmFjZTo6flNoYXJlYWJsZVN1cmZhY2UoKQotewotfQotCi1QYXNz
UmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBI
YW5kbGUmIGhhbmRsZSkKLXsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBpZiAoaGFu
ZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgIFJlZlB0cjxH
cmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShoYW5kbGUu
bV9zaXplLCBoYW5kbGUubV9mbGFncywgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOwot
ICAgICAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hh
cmVhYmxlU3VyZmFjZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgUGFzc1JlZlB0cjxH
cmFwaGljc1N1cmZhY2U+KHN1cmZhY2UpKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUu
bV9iaXRtYXBIYW5kbGUpOwotICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHJldHVybiBjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGJpdG1hcC5y
ZWxlYXNlKCkpOwotfQotCi1ib29sIFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5k
bGUmIGhhbmRsZSkKLXsKLSAgICBoYW5kbGUubV9zaXplID0gbV9zaXplOwotICAgIGhhbmRsZS5t
X2ZsYWdzID0gbV9mbGFnczsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGhhbmRs
ZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuID0gbV9ncmFwaGljc1N1cmZhY2UgPyBtX2dyYXBoaWNz
U3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7Ci0gICAgaWYg
KGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoIW1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlLm1f
Yml0bWFwSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi12b2lkIFNoYXJlYWJsZVN1cmZhY2U6OmNv
cHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQot
ewotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKHBhc3NUZXh0dXJlKTsKLQotI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNl
KCkpIHsKLSAgICAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4gdGV4dHVyZUdMID0gdG9CaXRt
YXBUZXh0dXJlR0wodGV4dHVyZS5nZXQoKSk7Ci0gICAgICAgIGlmICh0ZXh0dXJlR0wpIHsKLSAg
ICAgICAgICAgIHVpbnQzMl90IHRleHR1cmVJRCA9IHRleHR1cmVHTC0+aWQoKTsKLSAgICAgICAg
ICAgIHVpbnQzMl90IHRleHR1cmVUYXJnZXQgPSB0ZXh0dXJlR0wtPnRleHR1cmVUYXJnZXQoKTsK
LSAgICAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5jb3B5VG9HTFRleHR1cmUodGV4dHVyZVRh
cmdldCwgdGV4dHVyZUlELCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9ncmFwaGlj
c1N1cmZhY2UtPmNyZWF0ZVJlYWRPbmx5SW1hZ2UoSW50UmVjdChzb3VyY2VPZmZzZXQsIHRhcmdl
dC5zaXplKCkpKTsKLSAgICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCks
IHRhcmdldCwgSW50UG9pbnQ6Onplcm8oKSwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5
T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIH0KLSNlbmRpZgotCi0gICAgQVNTRVJUKG1fYml0bWFw
KTsKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7Ci0g
ICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwgc291cmNlT2Zm
c2V0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0g
ICAgcmV0dXJuOwotfQotI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxl
U3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlN2EzOWYyOGE3NjcxNTVhNGU5YmZmZGNlOTdm
YTQ1OWI3ZGY0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTIxICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIFNoYXJlYWJsZVN1cmZhY2VfaAotI2RlZmluZSBTaGFyZWFibGVTdXJmYWNlX2gK
LQotI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotCi0jaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlICJH
cmFwaGljc1N1cmZhY2UuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBC
aXRtYXBUZXh0dXJlOwotY2xhc3MgSW1hZ2U7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci19Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBTaGFyZWFibGVTdXJmYWNlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZVN1cmZhY2U+IHsKLXB1YmxpYzoKLSAgICBlbnVt
IEhpbnQgewotICAgICAgICBTdXBwb3J0c0dyYXBoaWNzU3VyZmFjZSA9IDB4MDEKLSAgICB9Owot
Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBIaW50czsKLQotICAgIGNsYXNzIEhhbmRsZSB7Ci0gICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7Ci0gICAgcHVibGljOgotICAgICAgICBI
YW5kbGUoKTsKLQotICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQg
ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwotICAgICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlJik7Ci0KLSNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNzU3VyZmFj
ZVRva2VuOyB9Ci0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWFibGVTdXJmYWNlOwotICAgICAgICBtdXRhYmxlIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IG1fYml0bWFwSGFuZGxlOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICBXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOwotI2VuZGlm
Ci0gICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgICAgICBTaGFyZWFibGVCaXRt
YXA6OkZsYWdzIG1fZmxhZ3M7Ci0gICAgfTsKLQotICAgIC8vIENyZWF0ZSBhIG5ldyBTaGFyZWFi
bGVTdXJmYWNlLCBhbmQgYWxsb2NhdGUgZWl0aGVyIGEgR3JhcGhpY3NTdXJmYWNlIG9yIGEgU2hh
cmVhYmxlQml0bWFwIGFzIGJhY2tpbmcuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxl
U3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6
OkZsYWdzLCBIaW50cyk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9t
IGEgaGFuZGxlLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0
ZShjb25zdCBIYW5kbGUmKTsKLQotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MoKSBj
b25zdCB7IHJldHVybiBtX2ZsYWdzOyB9Ci0KLSAgICAvLyBDcmVhdGUgYSBoYW5kbGUuCi0gICAg
Ym9vbCBjcmVhdGVIYW5kbGUoSGFuZGxlJik7Ci0KLSAgICB+U2hhcmVhYmxlU3VyZmFjZSgpOwot
Ci0gICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQotICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gV2ViQ29y
ZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBzaXplKCkpOyB9Ci0KLSAgICAvLyBDcmVh
dGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUg
YmFja2luZyBzdG9yZS4KLSAgICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4g
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLQotI2lmIFVT
RShURVhUVVJFX01BUFBFUikKLSAgICB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJD
b3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KTsKLSNlbmRpZgotCi1wcml2YXRlOgot
ICAgIFNoYXJlYWJsZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJp
dG1hcDo6RmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7Ci0KLSAgICAvLyBDcmVh
dGUgYSBTaGFyZWFibGVTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFNoYXJlYWJsZUJp
dG1hcC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPik7Ci0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBTaGFy
ZWFibGVTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZs
YWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwotICAgIC8vIENyZWF0
ZSBhIHNoYXJlYWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhpY3Mgc3VyZmFjZS4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyk7Ci0gICAgLy8gQ3Jl
YXRlIGEgU2hhcmVhYmxlU3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1
cmZhY2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gY3JlYXRlKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwotCi0gICAgYm9vbCBpc0JhY2tlZEJ5R3JhcGhp
Y3NTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gISFtX2dyYXBoaWNzU3VyZmFjZTsgfQotI2VuZGlm
Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZs
YWdzIG1fZmxhZ3M7Ci0gICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7Ci0KLSNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlPiBtX2dyYXBoaWNzU3VyZmFjZTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBTaGFyZWFibGVTdXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDEyNjBi
M2MxYWE0NmJiNWNiMjQ2MzRhYmNjMWIxMmY0ZDk0MzE0NzMuLjIyMWIwMzE0MGE0MmY5MTRkODdh
NjkyNjZjMmIzZTAzYmFlZDNiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5w
cmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtNzEsNyArNzEsNiBAQCBIRUFE
RVJTICs9IFwKICAgICBTaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmggXAogICAgIFNoYXJlZC9B
UElDbGllbnRUcmFpdHMuaCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIFwKLSAgICBT
aGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oIFwKICAgICBTaGFyZWQvQ2FjaGVNb2RlbC5oIFwKICAg
ICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmggXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5o
IFwKQEAgLTEzNiw2ICsxMzUsOCBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmggXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVySW5mby5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggXAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1v
dGVPYmplY3RNYXAuaCBcCkBAIC00NDIsNyArNDQzLDYgQEAgU09VUkNFUyArPSBcCiAgICAgU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGVOb25lLmNwcCBcCiAgICAg
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcCBc
CiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgXAotICAgIFNoYXJlZC9TaGFyZWFibGVT
dXJmYWNlLmNwcCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwIFwK
ICAgICBTaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcCBcCiAgICAgU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKQEAgLTUwNSw2ICs1MDUsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAogICAgIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAg
XAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmNw
cCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJv
Z3JhbVByb3h5LmNwcCBcCiAgICAgU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAg
ICBTaGFyZWQvcXQvTGF5ZXJUcmVlQ29udGV4dFF0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNzBlOWNlMjVmZjNkNzlkYjczMjRjYzJj
NWU4YjkwMjEyMDE0M2EwMi4uNGE3YmIxMDg2ZWU3YTg2N2IyZDNmZDY4MGM1YTM3ZGIwNWI4Yjdk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAt
MjEsOCArMjEsOCBAQAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgiCiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZh
Y2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckdMLmgiCiAKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZTo6c3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcAogCiAg
ICAgQVNTRVJUKHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCkud2lkdGgoKSA+PSBtX3Rp
bGVSZWN0LnNpemUoKS53aWR0aCgpICYmIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCku
aGVpZ2h0KCkgPj0gbV90aWxlUmVjdC5zaXplKCkuaGVpZ2h0KCkpOwogICAgIGlmIChzaG91bGRS
ZXNldCkKLSAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVjdC5zaXplKCksIG1fc3VyZmFj
ZS0+ZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA/IEJpdG1hcFRleHR1
cmU6OlN1cHBvcnRzQWxwaGEgOiAwKTsKKyAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVj
dC5zaXplKCksIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpKTsKIAogICAgIG1fc3VyZmFjZS0+
Y29weVRvVGV4dHVyZSh0ZXh0dXJlLCBtX3NvdXJjZVJlY3QsIG1fc3VyZmFjZU9mZnNldCk7CiAg
ICAgbV9zdXJmYWNlLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVU
aWxlOjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJ1ZmZlciwgY29uc3Qg
SW50UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRC
YWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0KQogewogICAgIG1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgbV90aWxl
UmVjdCA9IHRpbGVSZWN0OwpAQCAtODQsNyArODQsNyBAQCB2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjpyZW1vdmVBbGxUaWxlcygpCiAgICAgICAgIG1fdGlsZXNUb1JlbW92ZS5hZGQoaXQt
PmtleSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRpbGUodWlu
dDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0LCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IEludFBv
aW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVUaWxlKHVp
bnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxl
UmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJhY2tCdWZmZXIsIGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpCiB7CiAgICAgSGFzaE1hcDx1aW50MzJfdCwgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmVUaWxlPjo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VS
VChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tp
bmdTdG9yZS5oCmluZGV4IGNkMTUxZjg0NzZlY2Q1YmZjYjBjMjI4NmE1NGMxMzMxNTNmODVhOTku
LmFlNWFmOGQ0ZmEyZmM5ZWJkMjExOTcyN2ZjYWRkODU5NjIzMzBmOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgU2hhcmVhYmxlU3VyZmFjZTsKK2NsYXNzIENvb3JkaW5h
dGVkU3VyZmFjZTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlIDogcHVibGlj
IFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlIHsKIHB1YmxpYzoKQEAgLTQ0LDEwICs0NCwxMCBA
QCBwdWJsaWM6CiAgICAgaW5saW5lIHZvaWQgaW5jcmVtZW50UmVwYWludENvdW50KCkgeyArK21f
cmVwYWludENvdW50OyB9CiAgICAgaW5saW5lIGludCByZXBhaW50Q291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGFpbnRDb3VudDsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlciopOwotICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4gYnVmZmVyLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgc2V0QmFja0J1
ZmZlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBh
c3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IG1fc3VyZmFj
ZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgV2ViQ29y
ZTo6SW50UmVjdCBtX3NvdXJjZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3RpbGVSZWN0
OwogICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3VyZmFjZU9mZnNldDsKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGZsb2F0KTsK
ICAgICB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKTsKICAgICB2b2lkIHJlbW92ZUFs
bFRpbGVzKCk7Ci0gICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPFNoYXJl
YWJsZVN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZvaWQgdXBkYXRl
VGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUpOyB9CiAgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyKik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
Y3BwCmluZGV4IGQzNzA0NDg2NDhmZTg4NGVhOWU0ZWRmZTE1NmRjNjc2ODM2ZGU3MzkuLjZlYjE0
OTNhZDFhYTgyMGI2NjE2YjcwNDc2OGEzZjVhZTdiZjQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5j
bHVkZSAiQ29vcmRpbmF0ZWRMYXllckluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb29yZGlu
YXRvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVyZXIuaCIKLSNpbmNsdWRl
ICJVcGRhdGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC03
OSwxMCArNzgsMTAgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpyZW1vdmVUaWxl
Rm9yTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQsIHUKICAgICBkaXNwYXRjaFVwZGF0
ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlVGlsZSwgbV9yZW5kZXJlci5nZXQoKSwg
bGF5ZXJJRCwgdGlsZUlEKSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6
Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6Okhh
bmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVVcGRh
dGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUm
IGhhbmRsZSkKIHsKICAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29udGFpbnMoYXRsYXNJRCkpOwot
ICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShoYW5k
bGUpKTsKKyAgICBtX3N1cmZhY2VzLmFkZChhdGxhc0lELCBXZWJDb29yZGluYXRlZFN1cmZhY2U6
OmNyZWF0ZShoYW5kbGUpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojpy
ZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKQEAgLTE0Niw5ICsxNDUsOSBAQCB2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVJbWFnZUJhY2tpbmcsIG1fcmVuZGVyZXIuZ2V0KCksIGltYWdlSUQpKTsKIH0K
IAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGUmIGhhbmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgY29uc3QgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKLSAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5nLCBtX3JlbmRlcmVyLmdl
dCgpLCBpbWFnZUlELCBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkpOworICAgIGRp
c3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcs
IG1fcmVuZGVyZXIuZ2V0KCksIGltYWdlSUQsIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRl
KGhhbmRsZSkpKTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjbGVhcklt
YWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAppbmRleCAxZTA5ZGQ1
ZjRhNmE5NGY1NzE0NDc5NTkzNDNlNjU2OWRjN2JmYjY4Li5kZGY2MWIzZmVjMWQ0NjgwNGRiNjBj
NDdmMGU1Y2Q3MjNlNjRlMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRMYXll
ckluZm8uaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUmVnaW9u
LmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogI2luY2x1ZGUgIlN1cmZhY2VVcGRh
dGVJbmZvLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaD4KQEAgLTY5
LDEwICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlRm9yTGF5ZXIoQ29vcmRp
bmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRlVGlsZUZvckxheWVyKENv
b3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKICAgICB2b2lkIHJlbW92ZVRpbGVGb3JMYXll
cihDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCk7Ci0gICAgdm9pZCBjcmVhdGVV
cGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJik7
CisgICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBh
dGxhc0lEKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2b2lkIHVwZGF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OkhhbmRsZSYpOwogICAgIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50
cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHJlbW92ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIGRpZFJlY2VpdmVMYXllclRy
ZWVDb29yZGluYXRvclByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTAyLDcgKzEwMiw3IEBA
IHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9sYXN0U2VudFZpc2libGVSZWN0
OwogICAgIGZsb2F0IG1fbGFzdFNlbnRTY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1f
bGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRs
YXNJRCAqLywgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+ID4gU3VyZmFjZU1hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8aW50IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
ID4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBlMTQ1OGNkYWM2ZjMyODFlNzg2MDA1NzhhN2E3NTlkZjg0ZDI5ZGYxLi4xN2UxN2Rh
ZmM4ZmNlMGU2ODE1YzJhODIyYmY1MWMxMTg2MTg1YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDEw
ICszMywxMCBAQCBtZXNzYWdlcyAtPiBMYXllclRyZWVDb29yZGluYXRvclByb3h5IHsKICAgICBD
cmVhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUlELCBXZWJD
b3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUlu
Zm8pCiAgICAgVXBkYXRlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVySUQsIHVpbnQzMl90IHRp
bGVJRCwgV2ViQ29yZTo6SW50UmVjdCB0aWxlUmVjdCwgV2ViS2l0OjpTdXJmYWNlVXBkYXRlSW5m
byB1cGRhdGVJbmZvKQogICAgIFJlbW92ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1
aW50MzJfdCB0aWxlSUQpCi0gICAgQ3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIFdlYktp
dDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKKyAgICBDcmVhdGVVcGRhdGVBdGxh
cyhpbnQgYXRsYXNJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5k
bGUpCiAgICAgUmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQpCiAgICAgQ3JlYXRlSW1hZ2VC
YWNraW5nKHVpbnQ2NF90IGltYWdlSUQpCi0gICAgVXBkYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90
IGltYWdlSUQsIFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKKyAgICBV
cGRhdGVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGUpCiAgICAgQ2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyh1
aW50NjRfdCBpbWFnZUlEKQogICAgIFJlbW92ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlE
KQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplLCBXZWJD
b3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
Y3BwCmluZGV4IGMyZDVlYzUxNWNhNTliMGZiZTg2MWEyMGZkYjBjNzk0NjE4NWVmN2QuLmI1Mzkx
NjI5YzM0NzRkOWM2OWI5ODMxNmYwZThmNGEwYWVjNWQzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlE
KQogICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgYmFja2luZ1N0b3JlLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4gc3VyZmFjZSkKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlPiBzdXJmYWNlKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29udGFpbnMo
aW1hZ2VJRCkpOwogICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlQmFj
a2luZ3MuZmluZChpbWFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4
IGE1YWU4N2RjNTVlNzk2ZmJiNDcwODFjMTVkZDMwZWI4NWY1NmMzMGMuLmE2NzIyNzQwOWU3ZjAw
ZmVjYzAwNzMxNzZlMWZlZDBkN2M4NTVmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaApAQCAtMjMsNyArMjMsNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNp
bmNsdWRlICJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZExheWVySW5mby5o
IgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1
cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAg
ICAgIFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdDsKICAgICAgICAgV2ViQ29yZTo6SW50UmVj
dCB0aWxlUmVjdDsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2U7Cisg
ICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CiAgICAgICAgIFdlYkNv
cmU6OkludFBvaW50IG9mZnNldDsKLSAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NSZWZQdHI8
U2hhcmVhYmxlU3VyZmFjZT4gbmV3U3VyZmFjZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG5l
d09mZnNldCkKKyAgICAgICAgVGlsZVVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRpbGUsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlPiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbmV3T2Zmc2V0KQog
ICAgICAgICAgICAgOiBzb3VyY2VSZWN0KHNvdXJjZSkKICAgICAgICAgICAgICwgdGlsZVJlY3Qo
dGlsZSkKICAgICAgICAgICAgICwgc3VyZmFjZShuZXdTdXJmYWNlKQpAQCAtMTA1LDcgKzEwNSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50
MzJfdCB0aWxlSUQsIGNvbnN0IFRpbGVVcGRhdGUmKTsKICAgICB2b2lkIGZsdXNoTGF5ZXJDaGFu
Z2VzKCk7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPik7CisgICAgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+KTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0
ZWRMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggYWYwNzk4MzJkNmNkOThkOTI5ZGJhY2UyYjAyOTY2MjI0MGIxYTM3Ny4uZDBl
OWM2ZDMyYjY3MWQ3YTE1ZDQ0OGI3MDBlMTY0N2EzOGFlM2ZlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC03
NDAsNyArNzQwLDcgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEkKICAgICBpZiAoIW1fY29vcmRp
bmF0b3IpCiAgICAgICAgIHJldHVybiBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4oKTsKIAotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6
ZSwgY29udGVudHNPcGFxdWUoKSA/IDAgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEs
IGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRV
cGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFn
cyA6IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSwgYXRsYXMsIG9mZnNldCk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKHVpbnQzMl90IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHRpbGVSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBkOWZiZTdlYzRhMWE3ODczNTE2ZDk1Nzgx
NTY5NmFlODMwMzk5ODkzLi40NzNiYWUzMDYxNmQzZjM3YmY3YzMxNTE5YjQyNjU0OTY1NzlmNGUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUcmFu
c2Zvcm0uaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCIKQEAgLTc1LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCkgPSAwOwotICAgIHZpcnR1YWwgUGFz
c093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywgaW50JiBhdGxhc0lE
LCBXZWJDb3JlOjpJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6
SW50UG9pbnQmKSA9IDA7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2lu
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5kZXggNTVjYTlkYTdiNTk0Y2I2OThm
NzhhNmM5MGFiMTQxOTRmOWExYjFiMS4uMTQ2ODExNThiMDhhNzFkODFiN2Y1YTZlZTEzMjg0MWI0
YWI5ZGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtMTAzLDEwICsxMDMsMTAgQEAgdm9pZCBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6dXBkYXRlKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fc3VyZmFj
ZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShtX2ltYWdlLT5zaXplKCksIG1faW1hZ2UtPmN1
cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEgOiBT
aGFyZWFibGVCaXRtYXA6Ok5vRmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhp
Y3NTdXJmYWNlKTsKLSAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBTaGFyZWFibGVTdXJmYWNl
OjpIYW5kbGUoKSk7CisgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUo
bV9pbWFnZS0+c2l6ZSgpLCBtX2ltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpID8gQ29vcmRp
bmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpOb0ZsYWdz
KTsKKyAgICBtX2hhbmRsZSA9IGFkb3B0UHRyKG5ldyBXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZSgpKTsKIAotICAgIGlmICghbV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUoKm1faGFuZGxlKSkg
eworICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4obV9zdXJmYWNl
LmdldCgpKS0+Y3JlYXRlSGFuZGxlKCptX2hhbmRsZSkpIHsKICAgICAgICAgcmVsZWFzZVN1cmZh
Y2VJZk5lZWRlZCgpOwogICAgICAgICBtX2lzRGlydHkgPSBmYWxzZTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmgKaW5kZXggNjVlODI0NjcyYjkzOWY4YWM4NWNmMGFlNDY1ZGI4MmMzNzM5MDY5YS4uZWRj
NmU0NDJiMWI2N2MxYjY3NzZlNTVlOGYwMjYwODU5ODg2YmRmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCkBAIC0yOSw4ICsy
OSw5IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ29vcmRp
bmF0ZWRMYXllckluZm8uaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKKyNpbmNsdWRlICJX
ZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00Miw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDb29yZGluYXRvciB7CiAgICAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAgICAgfTsKQEAgLTgw
LDggKzgxLDggQEAgcHJpdmF0ZToKICAgICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIG1faWQ7
CiAgICAgVmVjdG9yPEhvc3QqPiBtX2hvc3RzOwogCi0gICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZh
Y2U+IG1fc3VyZmFjZTsKLSAgICBPd25QdHI8U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlPiBtX2hh
bmRsZTsKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgT3du
UHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlPiBtX2hhbmRsZTsKIAogICAgIFdlYkNv
cmU6OlRpbWVyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBtX2NsZWFyQ29udGVudHNUaW1lcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGJmNjdlYWRmZDhjNGI5YWE5MzIyY2E3MmY3MTQxNDA5NGNmOTlmOTguLjNiN2U1
ZjFkMTQ1YjI1YWQ1ODk1YjI0ZGMwZmI5ZjY2ZDI0YzdlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTEsNiArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEIGltYWdlSUQpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRy
ZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJRCkpOwogfQogCi12
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhh
bmRsZSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwogICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6VXBk
YXRlSW1hZ2VCYWNraW5nKGltYWdlSUQsIGhhbmRsZSkpOwpAQCAtNjU5LDcgKzY2MCw3IEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklEIGxh
eWVySUQsIHVpbnQzMl90IHRpbGVJCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVUaWxlRm9yTGF5ZXIobGF5ZXJJRCwgdGlsZUlE
KSk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKGlu
dCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKK3ZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25z
dCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIG1fd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Q3JlYXRlVXBkYXRl
QXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7CiB9CkBAIC03NjksMTIgKzc3MCwxMiBAQCB2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAgIG1fdXBkYXRlQXRs
YXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4g
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzLCBpbnQmIGF0bGFzSUQs
IFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4g
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBpbnQmIGF0bGFzSUQsIEludFBv
aW50JiBvZmZzZXQpCiB7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4
dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRhdGVBdGxhc2VzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRlQXRsYXNlc1tpXS5n
ZXQoKTsKLSAgICAgICAgaWYgKGF0bGFzLT5mbGFncygpID09IGZsYWdzKSB7CisgICAgICAgIGlm
IChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IChmbGFncyAmIENvb3JkaW5hdGVkU3VyZmFjZTo6
U3VwcG9ydHNBbHBoYSkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBp
ZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgogICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lE
LCBzaXplLCBvZmZzZXQpOwogICAgICAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkKQEAgLTgw
NSw3ICs4MDYsNyBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpyZWxlYXNlSW5hY3RpdmVB
dGxhc2VzVGltZXJGaXJlZChUaW1lcjxMYXllclRyZWVDb29yZAogICAgICAgICBVcGRhdGVBdGxh
cyogYXRsYXMgPSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghYXRsYXMt
PmlzSW5Vc2UoKSkKICAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5hY3RpdmUoUmVsZWFzZUlu
YWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29sIHVzYWJsZUZvck5vbkNv
bXBvc2l0ZWRDb250ZW50ID0gYXRsYXMtPmZsYWdzKCkgPT0gU2hhcmVhYmxlQml0bWFwOjpOb0Zs
YWdzOworICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gIWF0bGFz
LT5zdXBwb3J0c0FscGhhKCk7CiAgICAgICAgIGlmIChhdGxhcy0+aXNJbmFjdGl2ZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIWZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21wb3NpdGVkQ29udGVudCAm
JiAhYXRsYXNUb0tlZXBBbnl3YXkgJiYgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQpCiAg
ICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3YXkgPSBtX3VwZGF0ZUF0bGFzZXNbaV0ucmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmgKaW5kZXggN2JiNjhiOGM3NzNiODMyMzE2NWE3YWExOTQyODlkMTQ2ODFmNWE1MS4uYTU0
N2Y0ZTIzZjQ1MTQ5MDBhYmIyODYyYmEzN2E5ZjM1OTYyZTdhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiVXBkYXRlQXRsYXMuaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMTAz
LDEwICsxMDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0Zp
eGVkTGF5ZXJzKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJl
YWJsZUJpdG1hcDo6RmxhZ3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MsIGludCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogICAgIC8vIFVwZGF0ZUF0
bGFzQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lE
LCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
SGFuZGxlJik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lE
KTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEyNSw3ICsxMjYs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5h
dG9yCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5n
KENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRs
ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKaW5kZXggOWE1NDE4ZjFlYWFh
MzQ4N2I0ZTQyNGI5YTk1NjIwMjA4MzA5NzU0ZS4uOTk2NTMxOGQwZmE1NTJiNjc0ZWNhMTUwYTE4
OGVhMDgxN2VhMTRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNw
cApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21w
YW55IDEwMCwgSW5jLgogCiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMCw3ICszMSw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotVXBkYXRlQXRsYXM6OlVwZGF0
ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCitVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMoVXBkYXRlQXRs
YXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAg
ICAgLCBtX2luYWN0aXZpdHlJblNlY29uZHMoMCkKQEAgLTM5LDkgKzQwLDkgQEAgVXBkYXRlQXRs
YXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24s
IFNoYXJlYWJsZUJpdG0KICAgICBzdGF0aWMgaW50IG5leHRJRCA9IDA7CiAgICAgbV9JRCA9ICsr
bmV4dElEOwogICAgIEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNpemUoZGltZW5z
aW9uLCBkaW1lbnNpb24pKTsKLSAgICBtX3N1cmZhY2UgPSBTaGFyZWFibGVTdXJmYWNlOjpjcmVh
dGUoc2l6ZSwgZmxhZ3MsIFNoYXJlYWJsZVN1cmZhY2U6OlN1cHBvcnRzR3JhcGhpY3NTdXJmYWNl
KTsKKyAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShzaXplLCBmbGFn
cyk7CiAKLSAgICBpZiAoIW1fc3VyZmFjZS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlKSkgeworICAg
IGlmICghc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4obV9zdXJmYWNlLmdldCgp
KS0+Y3JlYXRlSGFuZGxlKG1faGFuZGxlKSkgewogICAgICAgICBtX2lzVmFpbGQgPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg2LDcgKzg3LDcgQEAgUGFzc093blB0cjxHcmFw
aGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIo
aW50JiBhdGwKICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9uKCk7CiAgICAgT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0Nv
bnRleHQocmVjdCk7CiAKLSAgICBpZiAoZmxhZ3MoKSAmIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSkgeworICAgIGlmIChzdXBwb3J0c0FscGhhKCkpIHsKICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBzaXplKSwg
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaAppbmRleCA3Y2VmZTljOTc5NDIxNTg2
MjczZjRlMGNkMzA5YTIwMjM0YzcxYWQxLi5kMGI3NzllMDRiOWZlMzY4ZmVhYTYyYzUzMTNmMmRl
OWM4NTU0ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmgKQEAgLTEs
NSArMSw2IEBACiAvKgogIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAs
IEluYy4KIAogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiQXJlYUFs
bG9jYXRvci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJm
YWNlLmgiCisjaW5jbHVkZSAiV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCiAKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwxNCArMzUsMTQg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0
IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
VXBkYXRlQXRsYXMoaW50IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFu
ZGxlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJ
RCkgPSAwOwogfTsKIAogY2xhc3MgVXBkYXRlQXRsYXMgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0Ns
aWVudCosIGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MpOworICAgIFVwZGF0
ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncyk7CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBpbmxpbmUgV2ViQ29yZTo6
SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7IH0KQEAgLTQ5
LDcgKzUwLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYSBudWxsIHBvaW50ZXIgb2YgdGhl
cmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGludCYgYXRsYXNJRCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkludFBvaW50JiBvZmZzZXQpOwogICAg
IHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorICAgIGJvb2wgc3VwcG9ydHNBbHBoYSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpOyB9CiAKICAgICB2b2lkIGFk
ZFRpbWVJbmFjdGl2ZShkb3VibGUgc2Vjb25kcykKICAgICB7CkBAIC03MCw4ICs3MSw4IEBAIHBy
aXZhdGU6CiAgICAgVXBkYXRlQXRsYXNDbGllbnQqIG1fY2xpZW50OwogICAgIE93blB0cjxHZW5l
cmFsQXJlYUFsbG9jYXRvcj4gbV9hcmVhQWxsb2NhdG9yOwogICAgIFNoYXJlYWJsZUJpdG1hcDo6
RmxhZ3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9zdXJmYWNlOwot
ICAgIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSBtX2hhbmRsZTsKKyAgICBSZWZQdHI8Q29vcmRp
bmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5k
bGUgbV9oYW5kbGU7CiAgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25kczsKICAgICBpbnQg
bV9JRDsKICAgICBib29sIG1faXNWYWlsZDsK
</data>
<flag name="review"
          id="195020"
          type_id="1"
          status="+"
          setter="dongseong.hwang"
    />
    <flag name="commit-queue"
          id="195021"
          type_id="3"
          status="-"
          setter="dongseong.hwang"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178472</attachid>
            <date>2012-12-09 22:14:23 -0800</date>
            <delta_ts>2012-12-10 01:16:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100819-20121210151131.patch</filename>
            <type>text/plain</type>
            <size>61535</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDY5ZDEwZmM2YjgzZDAx
NzQxMGRlNTdhYzkxYzBlNWEwYTM4YmZjOC4uODdlNWY0ODY3MDVjNmY2MDhiNGY5M2U1YjdhYTFm
NGRiNzRkNGRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTEyLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBBZGQgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIHJlbW92ZSB0aGUgZGVwZW5k
ZW5jeSBvZiBTaGFyZWFibGVTdXJmYWNlIGZyb20gQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBJbnRlcm5hbCBSZXZp
ZXcgYnkgR3dhbmcgWW9vbiBId2FuZyBhbmQgSmFlIEh5dW4gUGFyay4KKworICAgICAgICBJdCBp
cyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGljcyBv
biBXSzEuCisKKyAgICAgICAgQ3JlYXRlIGEgQ29vcmRpbmF0ZWRTdXJmYWNlIGNsYXNzIHRoYXQg
Y2FuIGJlIHRoZSBiYXNlIGNsYXNzIGJvdGggZm9yCisgICAgICAgIHRoZSBjdXJyZW50IElQQy1i
YXNlZCBTaGFyZWFibGVTdXJmYWNlLCByZW5hbWVkIGhlcmUgdG8KKyAgICAgICAgV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlLCBhbmQgdG8gYSBmdXR1cmUgdGhyZWFkLWJhc2VkIHN1cmZhY2UKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2U6On5Db29y
ZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1cmZhY2U6OnN1
cHBvcnRzQWxwaGEpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNv
b3JkaW5hdGVkU3VyZmFjZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlU3VyZmFjZS5jcHAuCisgICAgICAgICAgRXh0ZW5kcyBDb29yZGluYXRlZFN1cmZh
Y2UuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpIYW5kbGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZFN1
cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpXZWJDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGlu
YXRlZFN1cmZhY2U6On5XZWJDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6Y29weVRvVGV4dHVyZSk6CisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKToK
KyAgICAgICAgKEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6aXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUpOgorICAgICAgICAo
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVVcGRhdGVBdGxhcyk6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZUltYWdlQmFja2luZyk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRl
cmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6CisgICAgICAgIChUaWxlVXBkYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OlRpbGVVcGRhdGU6OlRpbGVVcGRhdGUp
OgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVw
ZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAg
ICAgKENvb3JkaW5hdG9yKToKKyAgICAgICAgKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjp1
cGRhdGVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
cjo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGlu
YXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
ci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3IpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6VXBk
YXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaDoKKyAgICAg
ICAgKFVwZGF0ZUF0bGFzQ2xpZW50KToKKyAgICAgICAgKFVwZGF0ZUF0bGFzKToKKyAgICAgICAg
KFdlYktpdDo6VXBkYXRlQXRsYXM6OnN1cHBvcnRzQWxwaGEpOgorCiAyMDEyLTEyLTA5ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNb3ZlIGJ1dHRvbiBpbWFn
ZSB0byBpbmplY3RlZCBidW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggODNiNmVlYmQyNjA4
ZDI5OTM3NjNkYmJjOWI3YWNkZmUzZDMyYWJlMC4uNDdmNWJkZDlmN2RjZWJiZjc0YTJhN2YxMDVj
MmU5OTg1YjU4ZDdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE1Niw3ICsxNTYsNiBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKICAg
ICBTaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAogICAgIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
Ci0gICAgU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCiAgICAgU2hhcmVkL1N0YXRpc3RpY3NE
YXRhLmNwcAogICAgIFNoYXJlZC9TdXJmYWNlVXBkYXRlSW5mby5jcHAKICAgICBTaGFyZWQvVXBk
YXRlSW5mby5jcHAKQEAgLTIyMSw2ICsyMjAsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRD
b2RlcnMuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
ckluZm8uY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLmNwcAogICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRl
clByb2dyYW1Qcm94eS5jcHAKIAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlZjcxYzJhMTk2ZWQx
NmE3YjBhZDg2NzEyNTc4YmU1OWI3ZjZiMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAt
MCwwICsxLDY2IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAx
MDAsIEluYy4KKworIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDb29yZGluYXRlZFN1
cmZhY2VfaAorI2RlZmluZSBDb29yZGluYXRlZFN1cmZhY2VfaAorCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJpdG1hcFRl
eHR1cmU7CitjbGFzcyBHcmFwaGljc0NvbnRleHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBDb29yZGluYXRlZFN1cmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q29vcmRpbmF0ZWRTdXJmYWNlPiB7CitwdWJsaWM6CisgICAgZW51bSBGbGFnIHsKKyAgICAgICAg
Tm9GbGFncyA9IDAsCisgICAgICAgIFN1cHBvcnRzQWxwaGEgPSAxIDw8IDAsCisgICAgfTsKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRp
bmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsKKwor
ICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkU3VyZmFjZSgpIHsgfQorCisgICAgYm9vbCBzdXBwb3J0
c0FscGhhKCkgeyByZXR1cm4gZmxhZ3MoKSAmIFN1cHBvcnRzQWxwaGE7IH0KKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKKworICAgIC8vIENyZWF0ZSBhIGdy
YXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5n
IHN0b3JlLgorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAwOworCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNvdXJjZU9mZnNldCkgPSAwOworI2Vu
ZGlmCisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEZsYWdzIGZsYWdzKCkgY29uc3QgPSAwOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorI2VuZGlmIC8vIENvb3JkaW5h
dGVkU3VyZmFjZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNzkwYzc5ZmNlNjBjNThlODA1NzBiMzNmOTU2OTA0YzUxZjgxYjM5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDIyMCBAQAorLyoKKyBDb3B5cmlnaHQgKEMp
IDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29w
eXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2Uu
aCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJDb29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzU3VyZmFjZVRva2VuLmg+CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6
SGFuZGxlKCkKK3sKK30KKwordm9pZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyLmVuY29kZShtX3NpemUpOworICAgIGVuY29kZXIuZW5jb2RlKG1fZmxhZ3MpOworI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQorICAgIGVuY29kZXIuZW5jb2RlKG1fZ3JhcGhpY3NTdXJmYWNl
VG9rZW4pOworICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisgICAgZW5jb2Rlci5lbmNvZGUobV9iaXRtYXBIYW5kbGUpOwor
fQorCitib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShoYW5kbGUubV9zaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2ZsYWdzKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworI2VuZGlmCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1f
Yml0bWFwSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK1Bhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBDb29yZGluYXRlZFN1cmZhY2U6
OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzIGZsYWdzKQoreworICAgIHJldHVybiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZShzaXplLCBmbGFncyk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIFJlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IHN1cmZhY2U7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgc3VyZmFjZSA9
IGNyZWF0ZVdpdGhTdXJmYWNlKHNpemUsIGZsYWdzKTsKKyNlbmRpZgorCisgICAgaWYgKCFzdXJm
YWNlKQorICAgICAgICBzdXJmYWNlID0gY3JlYXRlKHNpemUsIGZsYWdzLCBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCAoZmxhZ3MgJiBTdXBwb3J0c0FscGhhKSA/IFNoYXJl
YWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncykpOwor
CisgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOworfQorCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCitQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRl
ZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQoreworICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3Vy
ZmFjZUZsYWdzID0KKyAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NvZnR3YXJlV3Jp
dGUKKyAgICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzQ29weVRvVGV4dHVyZQorICAg
ICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5nOworCisgICAgaWYgKGZsYWdz
ICYgU3VwcG9ydHNBbHBoYSkKKyAgICAgICAgc3VyZmFjZUZsYWdzIHw9IEdyYXBoaWNzU3VyZmFj
ZTo6U3VwcG9ydHNBbHBoYTsKKworICAgIC8vIFRoaXMgbWlnaHQgcmV0dXJuIG51bGwsIGlmIHRo
ZSBzeXN0ZW0gaXMgdW5hYmxlIHRvIHByb3ZpZGUgYSBuZXcgZ3JhcGhpY3Mgc3VyZmFjZS4KKyAg
ICAvLyBJbiB0aGF0IGNhc2UsIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0dXJuIG51bGwgYW5kIGFs
bG93IGZhbGxpbmcgYmFjayB0byBTaGFyZWFibGVCaXRtYXAuCisgICAgUmVmUHRyPEdyYXBoaWNz
U3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHN1cmZhY2VG
bGFncyk7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VS
VChzdXJmYWNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZShzaXplLCBmbGFncywgc3VyZmFjZS5yZWxlYXNlKCkpKTsKK30KKyNlbmRpZgorCitQYXNzT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKKyAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpKQorICAgICAg
ICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCwgMCAvKiBXcml0ZSB3
aXRob3V0IHJldGFpbmluZyBwaXhlbHMqLyk7CisjZW5kaWYKKworICAgIEFTU0VSVChtX2JpdG1h
cCk7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9iaXRt
YXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChy
ZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkp
OworICAgIHJldHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRy
PFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkNvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncywgYml0bWFwKSk7Cit9CisKK1dlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmIHNp
emUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBiaXRtYXApCisgICAgOiBtX3NpemUoc2l6ZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3Mp
CisgICAgLCBtX2JpdG1hcChiaXRtYXApCit7Cit9CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK1dlYkNvb3JkaW5hdGVkU3VyZmFjZTo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQorICAgIDogbV9zaXpl
KHNpemUpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgICwgbV9ncmFwaGljc1N1cmZhY2Uoc3Vy
ZmFjZSkKK3sKK30KKworUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZs
YWdzLCBzdXJmYWNlKSk7Cit9CisjZW5kaWYKKworV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjp+V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKCkKK3sKK30KKworUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxl
KQoreworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIGlmIChoYW5kbGUuZ3JhcGhpY3NT
dXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFn
cyBzdXJmYWNlRmxhZ3MgPSAwOworICAgICAgICBpZiAoaGFuZGxlLm1fZmxhZ3MgJiBTdXBwb3J0
c0FscGhhKQorICAgICAgICAgICAgc3VyZmFjZUZsYWdzIHw9IEdyYXBoaWNzU3VyZmFjZTo6U3Vw
cG9ydHNBbHBoYTsKKyAgICAgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdy
YXBoaWNzU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZS5tX3NpemUsIHN1cmZhY2VGbGFncywgaGFuZGxl
Lm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOworICAgICAgICBpZiAoc3VyZmFjZSkKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGhhbmRsZS5tX3Np
emUsIGhhbmRsZS5tX2ZsYWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oc3VyZmFjZSkp
KTsKKyAgICB9CisjZW5kaWYKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSk7CisgICAgaWYg
KCFiaXRtYXApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUu
bV9zaXplLCBoYW5kbGUubV9mbGFncywgYml0bWFwLnJlbGVhc2UoKSk7Cit9CisKK2Jvb2wgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCit7CisgICAg
aGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKKyAgICBoYW5kbGUubV9mbGFncyA9IG1fZmxhZ3M7CisK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VU
b2tlbiA9IG1fZ3JhcGhpY3NTdXJmYWNlID8gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2Vu
KCkgOiBHcmFwaGljc1N1cmZhY2VUb2tlbigpOworICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1
cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisgICAg
aWYgKCFtX2JpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCisjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSKQordm9pZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUoUGFz
c1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXNzVGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KQoreworICAgIFJlZlB0cjxC
aXRtYXBUZXh0dXJlPiB0ZXh0dXJlKHBhc3NUZXh0dXJlKTsKKworI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQorICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpIHsKKyAgICAgICAg
UmVmUHRyPEJpdG1hcFRleHR1cmVHTD4gdGV4dHVyZUdMID0gdG9CaXRtYXBUZXh0dXJlR0wodGV4
dHVyZS5nZXQoKSk7CisgICAgICAgIGlmICh0ZXh0dXJlR0wpIHsKKyAgICAgICAgICAgIHVpbnQz
Ml90IHRleHR1cmVJRCA9IHRleHR1cmVHTC0+aWQoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHRl
eHR1cmVUYXJnZXQgPSB0ZXh0dXJlR0wtPnRleHR1cmVUYXJnZXQoKTsKKyAgICAgICAgICAgIG1f
Z3JhcGhpY3NTdXJmYWNlLT5jb3B5VG9HTFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVyZUlE
LCB0YXJnZXQsIHNvdXJjZU9mZnNldCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9ncmFwaGljc1N1cmZhY2UtPmNyZWF0
ZVJlYWRPbmx5SW1hZ2UoSW50UmVjdChzb3VyY2VPZmZzZXQsIHRhcmdldC5zaXplKCkpKTsKKyAg
ICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwgSW50UG9p
bnQ6Onplcm8oKSwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURh
dGEpOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG1fYml0bWFwKTsKKyAgICBSZWZQdHI8
SW1hZ2U+IGltYWdlID0gbV9iaXRtYXAtPmNyZWF0ZUltYWdlKCk7CisgICAgdGV4dHVyZS0+dXBk
YXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwgc291cmNlT2Zmc2V0LCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgcmV0dXJuOworfQor
I2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cisj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRl
ZFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODI4YWFkODE3NDU0MmVkZDM3YjE4ZTM3ZjI2Y2RjOTRh
YjgwOWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8q
CisgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgorCisgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYkNvb3JkaW5hdGVkU3VyZmFjZV9oCisjZGVm
aW5lIFdlYkNvb3JkaW5hdGVkU3VyZmFjZV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTdXJmYWNlLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlICJHcmFwaGlj
c1N1cmZhY2UuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCaXRtYXBU
ZXh0dXJlOworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFj
ZSB7CitwdWJsaWM6CisgICAgY2xhc3MgSGFuZGxlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSGFuZGxlKTsKKyAgICBwdWJsaWM6CisgICAgICAgIEhhbmRsZSgpOworCisgICAgICAg
IHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OworICAgICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgSGFuZGxlJik7CisK
KyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNz
U3VyZmFjZVRva2VuOyB9CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBXZWJDb29yZGluYXRlZFN1cmZhY2U7CisgICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUgbV9iaXRtYXBIYW5kbGU7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9r
ZW47CisjZW5kaWYKKyAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CisgICAgICAgIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgbV9mbGFnczsKKyAgICB9OworCisgICAgLy8gQ3JlYXRl
IGEgbmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFjZSwgYW5kIGFsbG9jYXRlIGVpdGhlciBhIEdyYXBo
aWNzU3VyZmFjZSBvciBhIFNoYXJlYWJsZUJpdG1hcCBhcyBiYWNraW5nLgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmLCBGbGFncyk7CisKKyAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgc3VyZmFjZSBmcm9t
IGEgaGFuZGxlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
Y3JlYXRlKGNvbnN0IEhhbmRsZSYpOworCisgICAgLy8gQ3JlYXRlIGEgaGFuZGxlLgorICAgIGJv
b2wgY3JlYXRlSGFuZGxlKEhhbmRsZSYpOworCisgICAgdmlydHVhbCB+V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBPVkVSUklERTsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICB2aXJ0
dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0
cjxTaGFyZWFibGVCaXRtYXA+KTsKKworICAgIHZpcnR1YWwgRmxhZ3MgZmxhZ3MoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBtX2ZsYWdzOyB9CisKKyAgICAvLyBDcmVhdGUgYSBXZWJDb29yZGlu
YXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU2hhcmVhYmxlQml0bWFwLgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKKwor
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlPik7CisgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBn
cmFwaGljcyBzdXJmYWNlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gY3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzKTsK
KyAgICAvLyBDcmVhdGUgYSBXZWJDb29yZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhp
c3RpbmcgR3JhcGhpY3NTdXJmYWNlLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5h
dGVkU3VyZmFjZT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKKworICAgIGJvb2wgaXNCYWNrZWRCeUdy
YXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9ncmFwaGljc1N1cmZhY2U7IH0KKyNl
bmRpZgorCisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CisgICAgRmxhZ3MgbV9mbGFnczsK
KyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsKKworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQorICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhp
Y3NTdXJmYWNlOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNlbmRpZiAvLyBXZWJDb29yZGluYXRlZFN1
cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZh
Y2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjhmYTEwNjk5MzVjOTY2NzQ1NjYyZjBmMTI3ZmRi
Mjk0N2M2NTg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIxMCArMCwwIEBACi0vKgotIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKLQot
I2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KLQotI2lmIFVTRShURVhU
VVJFX01BUFBFUikKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKLSNlbmRpZgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVNoYXJlYWJsZVN1
cmZhY2U6OkhhbmRsZTo6SGFuZGxlKCkKLXsKLX0KLQotdm9pZCBTaGFyZWFibGVTdXJmYWNlOjpI
YW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zaXplKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2ZsYWdz
KTsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBlbmNvZGVyLmVuY29kZShtX2dyYXBo
aWNzU3VyZmFjZVRva2VuKTsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGVuY29kZXIuZW5jb2RlKG1fYml0bWFw
SGFuZGxlKTsKLX0KLQotYm9vbCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQotewotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX3NpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fZmxhZ3MpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5k
bGUubV9iaXRtYXBIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFn
cywgSGludHMgaGludHMpCi17Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhp
bnRzICYgU3VwcG9ydHNHcmFwaGljc1N1cmZhY2UpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlYWJs
ZVN1cmZhY2U+IHN1cmZhY2UgPSBjcmVhdGVXaXRoU3VyZmFjZShzaXplLCBmbGFncyk7Ci0gICAg
ICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOwot
ICAgIH0KLSNlbmRpZgotICAgIFVOVVNFRF9QQVJBTShoaW50cyk7Ci0KLSAgICByZXR1cm4gY3Jl
YXRlKHNpemUsIGZsYWdzLCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBm
bGFncykpOwotfQotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi1QYXNzUmVmUHRyPFNoYXJl
YWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IElu
dFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MpCi17Ci0gICAgR3JhcGhp
Y3NTdXJmYWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPQotICAgICAgICAgICAgR3JhcGhpY3NTdXJm
YWNlOjpTdXBwb3J0c1NvZnR3YXJlV3JpdGUKLSAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNl
OjpTdXBwb3J0c0NvcHlUb1RleHR1cmUKLSAgICAgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpT
dXBwb3J0c1NoYXJpbmc7Ci0KLSAgICBpZiAoZmxhZ3MgJiBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpCi0gICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1cmZhY2U6OlN1cHBv
cnRzQWxwaGE7Ci0KLSAgICAvLyBUaGlzIG1pZ2h0IHJldHVybiBudWxsLCBpZiB0aGUgc3lzdGVt
IGlzIHVuYWJsZSB0byBwcm92aWRlIGEgbmV3IGdyYXBoaWNzIHN1cmZhY2UuCi0gICAgLy8gSW4g
dGhhdCBjYXNlLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFuZCBhbGxvdyBmYWxs
aW5nIGJhY2sgdG8gU2hhcmVhYmxlQml0bWFwLgotICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+
IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOwot
ICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoc3VyZmFj
ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVTdXJmYWNlKHNpemUsIGZsYWdz
LCBzdXJmYWNlLnJlbGVhc2UoKSkpOwotfQotI2VuZGlmCi0KLVBhc3NPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQo
Y29uc3QgSW50UmVjdCYgcmVjdCkKLXsgICAgCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0g
ICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkKLSAgICAgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NTdXJmYWNlLT5iZWdpblBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5p
bmcgcGl4ZWxzKi8pOwotI2VuZGlmCi0KLSAgICBBU1NFUlQobV9iaXRtYXApOwotICAgIE93blB0
cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICByZXR1cm4g
Z3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJm
YWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgU2hhcmVh
YmxlQml0bWFwOjpGbGFncyBmbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1h
cCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgZmxh
Z3MsIGJpdG1hcCkpOwotfQotCi1TaGFyZWFibGVTdXJmYWNlOjpTaGFyZWFibGVTdXJmYWNlKGNv
bnN0IEludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCi0gICAgOiBtX3NpemUoc2l6ZSkKLSAgICAsIG1f
ZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX2JpdG1hcChiaXRtYXApCi17Ci19Ci0KLSNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKLVNoYXJlYWJsZVN1cmZhY2U6OlNoYXJlYWJsZVN1cmZhY2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncywgUGFz
c1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCi0gICAgOiBtX3NpemUo
c2l6ZSkKLSAgICAsIG1fZmxhZ3MoZmxhZ3MpCi0gICAgLCBtX2dyYXBoaWNzU3VyZmFjZShzdXJm
YWNlKQotewotfQotCi1QYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJsZVN1cmZh
Y2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZs
YWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UpKTsKLX0K
LSNlbmRpZgotCi1TaGFyZWFibGVTdXJmYWNlOjp+U2hhcmVhYmxlU3VyZmFjZSgpCi17Ci19Ci0K
LVBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKGNv
bnN0IEhhbmRsZSYgaGFuZGxlKQotewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlm
IChoYW5kbGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgUmVm
UHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKGhh
bmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tl
bik7Ci0gICAgICAgIGlmIChzdXJmYWNlKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWFibGVTdXJmYWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBQYXNzUmVm
UHRyPEdyYXBoaWNzU3VyZmFjZT4oc3VyZmFjZSkpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhh
bmRsZS5tX2JpdG1hcEhhbmRsZSk7Ci0gICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgcmV0dXJuIGNyZWF0ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgYml0
bWFwLnJlbGVhc2UoKSk7Ci19Ci0KLWJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxl
KEhhbmRsZSYgaGFuZGxlKQotewotICAgIGhhbmRsZS5tX3NpemUgPSBtX3NpemU7Ci0gICAgaGFu
ZGxlLm1fZmxhZ3MgPSBtX2ZsYWdzOwotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAg
aGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3Jh
cGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpIDogR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKLSAg
ICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIGlmICghbV9iaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5k
bGUubV9iaXRtYXBIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgU2hhcmVhYmxlU3VyZmFj
ZTo6Y29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHBhc3NU
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQpCi17Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUocGFzc1RleHR1cmUpOwot
Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1
cmZhY2UoKSkgewotICAgICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZUdMPiB0ZXh0dXJlR0wgPSB0
b0JpdG1hcFRleHR1cmVHTCh0ZXh0dXJlLmdldCgpKTsKLSAgICAgICAgaWYgKHRleHR1cmVHTCkg
ewotICAgICAgICAgICAgdWludDMyX3QgdGV4dHVyZUlEID0gdGV4dHVyZUdMLT5pZCgpOwotICAg
ICAgICAgICAgdWludDMyX3QgdGV4dHVyZVRhcmdldCA9IHRleHR1cmVHTC0+dGV4dHVyZVRhcmdl
dCgpOwotICAgICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UtPmNvcHlUb0dMVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCB0ZXh0dXJlSUQsIHRhcmdldCwgc291cmNlT2Zmc2V0KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2dy
YXBoaWNzU3VyZmFjZS0+Y3JlYXRlUmVhZE9ubHlJbWFnZShJbnRSZWN0KHNvdXJjZU9mZnNldCwg
dGFyZ2V0LnNpemUoKSkpOwotICAgICAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5n
ZXQoKSwgdGFyZ2V0LCBJbnRQb2ludDo6emVybygpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5N
b2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBBU1NFUlQobV9i
aXRtYXApOwotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBtX2JpdG1hcC0+Y3JlYXRlSW1hZ2Uo
KTsKLSAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBzb3Vy
Y2VPZmZzZXQsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRh
KTsKLSAgICByZXR1cm47Ci19Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFy
ZWFibGVTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGU3YTM5ZjI4YTc2NzE1NWE0ZTliZmZk
Y2U5N2ZhNDU5YjdkZjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjEgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgU2hhcmVhYmxlU3VyZmFjZV9oCi0jZGVmaW5lIFNoYXJlYWJsZVN1cmZh
Y2VfaAotCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0KLSNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEJpdG1hcFRleHR1cmU7Ci1jbGFzcyBJbWFnZTsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFNoYXJlYWJsZVN1cmZhY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlU3VyZmFjZT4gewotcHVibGljOgotICAg
IGVudW0gSGludCB7Ci0gICAgICAgIFN1cHBvcnRzR3JhcGhpY3NTdXJmYWNlID0gMHgwMQotICAg
IH07Ci0KLSAgICB0eXBlZGVmIHVuc2lnbmVkIEhpbnRzOwotCi0gICAgY2xhc3MgSGFuZGxlIHsK
LSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIEhhbmRsZSgpOwotCi0gICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICAgICAg
dm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7Ci0gICAgICAgIHN0
YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBIYW5kbGUmKTsKLQot
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NT
dXJmYWNlVG9rZW47IH0KLSNlbmRpZgotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNs
YXNzIFNoYXJlYWJsZVN1cmZhY2U7Ci0gICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgbV9iaXRtYXBIYW5kbGU7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAg
IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47Ci0j
ZW5kaWYKLSAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7Ci0gICAgICAgIFNoYXJlYWJs
ZUJpdG1hcDo6RmxhZ3MgbV9mbGFnczsKLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IFNo
YXJlYWJsZVN1cmZhY2UsIGFuZCBhbGxvY2F0ZSBlaXRoZXIgYSBHcmFwaGljc1N1cmZhY2Ugb3Ig
YSBTaGFyZWFibGVCaXRtYXAgYXMgYmFja2luZy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJp
dG1hcDo6RmxhZ3MsIEhpbnRzKTsKLQotICAgIC8vIENyZWF0ZSBhIHNoYXJlYWJsZSBzdXJmYWNl
IGZyb20gYSBoYW5kbGUuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4g
Y3JlYXRlKGNvbnN0IEhhbmRsZSYpOwotCi0gICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFn
cygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KLQotICAgIC8vIENyZWF0ZSBhIGhhbmRsZS4K
LSAgICBib29sIGNyZWF0ZUhhbmRsZShIYW5kbGUmKTsKLQotICAgIH5TaGFyZWFibGVTdXJmYWNl
KCk7Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBX
ZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KLQotICAgIC8v
IENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRv
IHRoZSBiYWNraW5nIHN0b3JlLgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotCi0j
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRy
PFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpOwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0gICAgU2hhcmVhYmxlU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVh
YmxlQml0bWFwOjpGbGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKLQotICAgIC8v
IENyZWF0ZSBhIFNoYXJlYWJsZVN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU2hhcmVh
YmxlQml0bWFwLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncywgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAg
IFNoYXJlYWJsZVN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7Ci0gICAgLy8g
Q3JlYXRlIGEgc2hhcmVhYmxlIGJpdG1hcCBiYWNrZWQgYnkgYSBncmFwaGljcyBzdXJmYWNlLgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzKTsKLSAgICAv
LyBDcmVhdGUgYSBTaGFyZWFibGVTdXJmYWNlIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIEdyYXBo
aWNzU3VyZmFjZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7Ci0KLSAgICBib29sIGlzQmFja2VkQnlH
cmFwaGljc1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NTdXJmYWNlOyB9Ci0j
ZW5kaWYKLQotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MgbV9mbGFnczsKLSAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2JpdG1hcDsK
LQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGlj
c1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJmYWNlOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFNoYXJlYWJsZVN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXgg
MTI2MGIzYzFhYTQ2YmI1Y2IyNDYzNGFiY2MxYjEyZjRkOTQzMTQ3My4uMjIxYjAzMTQwYTQyZjkx
NGQ4N2E2OTI2NmMyYjNlMDNiYWVkM2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03MSw3ICs3MSw2IEBA
IEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBcCiAgICAgU2hh
cmVkL0FQSUNsaWVudFRyYWl0cy5oIFwKICAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggXAot
ICAgIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmggXAogICAgIFNoYXJlZC9DYWNoZU1vZGVsLmgg
XAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzc1By
b3h5LmggXApAQCAtMTM2LDYgKzEzNSw4IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmggXAogICAgIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmggXAorICAgIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkU3VyZmFjZS5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIFwKICAgICBTaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oIFwKICAgICBTaGFyZWQvUGx1Z2lucy9O
UFJlbW90ZU9iamVjdE1hcC5oIFwKQEAgLTQ0Miw3ICs0NDMsNiBAQCBTT1VSQ0VTICs9IFwKICAg
ICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZU5vbmUuY3BwIFwK
ICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEu
Y3BwIFwKICAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcCBcCi0gICAgU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuY3BwIFwKICAgICBTaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5j
cHAgXAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwIFwKICAgICBTaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5jcHAgXApAQCAtNTA1LDYgKzUwNSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCiAgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcCBcCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllcklu
Zm8uY3BwIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuY3BwIFwKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0
ZXJQcm9ncmFtUHJveHkuY3BwIFwKICAgICBTaGFyZWQvcXQvQXJndW1lbnRDb2RlcnNRdC5jcHAg
XAogICAgIFNoYXJlZC9xdC9MYXllclRyZWVDb250ZXh0UXQuY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA3MGU5Y2UyNWZmM2Q3OWRiNzMy
NGNjMmM1ZThiOTAyMTIwMTQzYTAyLi40YTdiYjEwODZlZTdhODY3YjJkM2ZkNjgwYzVhMzdkYjA1
YjhiN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3Bw
CkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCIK
IAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJDb29yZGluYXRlZFN1
cmZhY2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxl
U3VyZmFjZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0wuaCIKIApAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmVUaWxlOjpzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
CiAKICAgICBBU1NFUlQodGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKS53aWR0aCgpID49
IG1fdGlsZVJlY3Quc2l6ZSgpLndpZHRoKCkgJiYgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNp
emUoKS5oZWlnaHQoKSA+PSBtX3RpbGVSZWN0LnNpemUoKS5oZWlnaHQoKSk7CiAgICAgaWYgKHNo
b3VsZFJlc2V0KQotICAgICAgICB0ZXh0dXJlLT5yZXNldChtX3RpbGVSZWN0LnNpemUoKSwgbV9z
dXJmYWNlLT5mbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhID8gQml0bWFw
VGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IDApOworICAgICAgICB0ZXh0dXJlLT5yZXNldChtX3Rp
bGVSZWN0LnNpemUoKSwgbV9zdXJmYWNlLT5zdXBwb3J0c0FscGhhKCkpOwogCiAgICAgbV9zdXJm
YWNlLT5jb3B5VG9UZXh0dXJlKHRleHR1cmUsIG1fc291cmNlUmVjdCwgbV9zdXJmYWNlT2Zmc2V0
KTsKICAgICBtX3N1cmZhY2UuY2xlYXIoKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYnVmZmVyLCBj
b25zdCBJbnRQb2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6
OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9zb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKICAgICBt
X3RpbGVSZWN0ID0gdGlsZVJlY3Q7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKICAgICAgICAgbV90aWxlc1RvUmVtb3ZlLmFk
ZChpdC0+a2V5KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBkYXRlVGls
ZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
dGlsZVJlY3QsIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gYmFja0J1ZmZlciwgY29uc3Qg
SW50UG9pbnQmIG9mZnNldCkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnVwZGF0ZVRp
bGUodWludDMyX3QgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IHRpbGVSZWN0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gYmFja0J1ZmZlciwgY29u
c3QgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBIYXNoTWFwPHVpbnQzMl90LCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGU+OjppdGVyYXRvciBpdCA9IG1fdGlsZXMuZmluZChpZCk7CiAgICAg
QVNTRVJUKGl0ICE9IG1fdGlsZXMuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QmFja2luZ1N0b3JlLmgKaW5kZXggY2QxNTFmODQ3NmVjZDViZmNiMGMyMjg2YTU0YzEzMzE1M2Y4
NWE5OS4uYWU1YWY4ZDRmYTJmYzllYmQyMTE5NzI3ZmNhZGQ4NTk2MjMzMGY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBTaGFyZWFibGVTdXJmYWNlOworY2xhc3MgQ29v
cmRpbmF0ZWRTdXJmYWNlOwogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGUgOiBw
dWJsaWMgV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGUgewogcHVibGljOgpAQCAtNDQsMTAgKzQ0
LDEwIEBAIHB1YmxpYzoKICAgICBpbmxpbmUgdm9pZCBpbmNyZW1lbnRSZXBhaW50Q291bnQoKSB7
ICsrbV9yZXBhaW50Q291bnQ7IH0KICAgICBpbmxpbmUgaW50IHJlcGFpbnRDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwYWludENvdW50OyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyKik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVT
dXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBzZXRC
YWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gbV9z
dXJmYWNlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IG1fc291cmNlUmVjdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fdGls
ZVJlY3Q7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zdXJmYWNlT2Zmc2V0OwpAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgZmxv
YXQpOwogICAgIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpOwogICAgIHZvaWQgcmVt
b3ZlQWxsVGlsZXMoKTsKLSAgICB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8
U2hhcmVhYmxlU3VyZmFjZT4sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCB1
cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSk7IH0KICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXIqKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRl
eHR1cmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eS5jcHAKaW5kZXggZDM3MDQ0ODY0OGZlODg0ZWE5ZTRlZGZlMTU2ZGM2NzY4MzZkZTczOS4u
NmViMTQ5M2FkMWFhODIwYjY2MTZiNzA0NzY4YTNmNWFlN2JmNDMxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpbmNsdWRlICJDb29yZGluYXRlZExheWVySW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNv
b3JkaW5hdG9yTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMYXllclRyZWVSZW5kZXJlci5oIgotI2lu
Y2x1ZGUgIlVwZGF0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
QEAgLTc5LDEwICs3OCwxMCBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnJlbW92
ZVRpbGVGb3JMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCwgdQogICAgIGRpc3BhdGNo
VXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVUaWxlLCBtX3JlbmRlcmVyLmdl
dCgpLCBsYXllcklELCB0aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFj
ZTo6SGFuZGxlJiBoYW5kbGUpCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0
ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZSYgaGFuZGxlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lE
KSk7Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRl
KGhhbmRsZSkpOworICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZTo6Y3JlYXRlKGhhbmRsZSkpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHk6OnJlbW92ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lEKQpAQCAtMTQ2LDkgKzE0NSw5IEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQgaW1hCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVl
UmVuZGVyZXI6OmNyZWF0ZUltYWdlQmFja2luZywgbV9yZW5kZXJlci5nZXQoKSwgaW1hZ2VJRCkp
OwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZh
Y2U6OkhhbmRsZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQogewotICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjp1cGRhdGVJbWFnZUJhY2tpbmcsIG1fcmVuZGVy
ZXIuZ2V0KCksIGltYWdlSUQsIFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpKSk7Cisg
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnVwZGF0ZUltYWdlQmFj
a2luZywgbV9yZW5kZXJlci5nZXQoKSwgaW1hZ2VJRCwgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
cmVhdGUoaGFuZGxlKSkpOwogfQogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNs
ZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDFl
MDlkZDVmNGE2YTk0ZjU3MTQ0Nzk1OTM0M2U2NTY5ZGM3YmZiNjguLmRkZjYxYjNmZWMxZDQ2ODA0
ZGI2MGM0N2YwZTVjZDcyM2U2NGUyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmgKQEAgLTI3LDggKzI3LDggQEAKICNpbmNsdWRlICJDb29yZGluYXRl
ZExheWVySW5mby5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJS
ZWdpb24uaCIKLSNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiU3VyZmFj
ZVVwZGF0ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oPgpA
QCAtNjksMTAgKzY5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGVGb3JMYXllcihD
b29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlRm9yTGF5
ZXIoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgcmVtb3ZlVGlsZUZv
ckxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKTsKLSAgICB2b2lkIGNy
ZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBTaGFyZWFibGVTdXJmYWNlOjpIYW5k
bGUmKTsKKyAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKGludCBhdGxhc0lELCBjb25zdCBXZWJD
b29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYpOwogICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXMo
aW50IGF0bGFzSUQpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpOworICAgIHZvaWQg
dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFdlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJik7CiAgICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0Nv
bnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUxh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CkBAIC0xMDIsNyArMTAy
LDcgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2xhc3RTZW50VmlzaWJs
ZVJlY3Q7CiAgICAgZmxvYXQgbV9sYXN0U2VudFNjYWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9p
bnQgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3I7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGludCAv
KiBhdGxhc0lEICovLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBTdXJmYWNlTWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnQgLyogYXRsYXNJRCAqLywgUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4gPiBTdXJmYWNlTWFwOwogICAgIFN1cmZhY2VNYXAgbV9zdXJmYWNlczsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGUxNDU4Y2RhYzZmMzI4MWU3ODYwMDU3OGE3YTc1OWRmODRkMjlkZjEuLjE3
ZTE3ZGFmYzhmY2UwZTY4MTVjMmE4MjJiZjUxYzExODYxODVhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MzMsMTAgKzMzLDEwIEBAIG1lc3NhZ2VzIC0+IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkgewog
ICAgIENyZWF0ZVRpbGVGb3JMYXllcih1aW50MzJfdCBsYXllcklELCB1aW50MzJfdCB0aWxlSUQs
IFdlYkNvcmU6OkludFJlY3QgdGlsZVJlY3QsIFdlYktpdDo6U3VyZmFjZVVwZGF0ZUluZm8gdXBk
YXRlSW5mbykKICAgICBVcGRhdGVUaWxlRm9yTGF5ZXIodWludDMyX3QgbGF5ZXJJRCwgdWludDMy
X3QgdGlsZUlELCBXZWJDb3JlOjpJbnRSZWN0IHRpbGVSZWN0LCBXZWJLaXQ6OlN1cmZhY2VVcGRh
dGVJbmZvIHVwZGF0ZUluZm8pCiAgICAgUmVtb3ZlVGlsZUZvckxheWVyKHVpbnQzMl90IGxheWVy
SUQsIHVpbnQzMl90IHRpbGVJRCkKLSAgICBDcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwg
V2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQorICAgIENyZWF0ZVVwZGF0
ZUF0bGFzKGludCBhdGxhc0lELCBXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxl
IGhhbmRsZSkKICAgICBSZW1vdmVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCkKICAgICBDcmVhdGVJ
bWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKLSAgICBVcGRhdGVJbWFnZUJhY2tpbmcodWlu
dDY0X3QgaW1hZ2VJRCwgV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQor
ICAgIFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKICAgICBDbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKHVpbnQ2NF90IGltYWdlSUQpCiAgICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGlt
YWdlSUQpCiAgICAgRGlkUmVuZGVyRnJhbWUoV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUs
IFdlYkNvcmU6OkludFJlY3QgY292ZXJlZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHAKaW5kZXggYzJkNWVjNTE1Y2E1OWIwZmJlODYxYTIwZmRiMGM3OTQ2MTg1ZWY3ZC4u
YjUzOTE2MjljMzQ3NGQ5YzY5Yjk4MzE2ZjBlOGY0YTBhZWM1ZDMyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCiAgICAgbV9pbWFnZUJhY2tpbmdzLmFkZChpbWFnZUlELCBiYWNraW5nU3RvcmUucmVs
ZWFzZSgpKTsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNraW5n
KENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxTaGFyZWFibGVT
dXJmYWNlPiBzdXJmYWNlKQordm9pZCBMYXllclRyZWVSZW5kZXJlcjo6dXBkYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IHN1cmZhY2UpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VCYWNraW5ncy5jb250
YWlucyhpbWFnZUlEKSk7CiAgICAgSW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBpdCA9IG1faW1h
Z2VCYWNraW5ncy5maW5kKGltYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgK
aW5kZXggYTVhZTg3ZGM1NWU3OTZmYmI0NzA4MWMxNWRkMzBlYjg1ZjU2YzMwYy4uYTY3MjI3NDA5
ZTdmMDBmZWNjMDA3MzE3NmUxZmVkMGQ3Yzg1NWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJJ
bmZvLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgIHN0cnVjdCBUaWxlVXBkYXRlIHsK
ICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0OwogICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IHRpbGVSZWN0OwotICAgICAgICBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gc3VyZmFj
ZTsKKyAgICAgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKICAgICAgICAg
V2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0OwotICAgICAgICBUaWxlVXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZSwgUGFzc1Jl
ZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBuZXdTdXJmYWNlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgbmV3T2Zmc2V0KQorICAgICAgICBUaWxlVXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNvdXJjZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGlsZSwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IG5ld1N1cmZhY2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBuZXdPZmZz
ZXQpCiAgICAgICAgICAgICA6IHNvdXJjZVJlY3Qoc291cmNlKQogICAgICAgICAgICAgLCB0aWxl
UmVjdCh0aWxlKQogICAgICAgICAgICAgLCBzdXJmYWNlKG5ld1N1cmZhY2UpCkBAIC0xMDUsNyAr
MTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGlsZShDb29yZGluYXRlZExheWVySUQs
IHVpbnQzMl90IHRpbGVJRCwgY29uc3QgVGlsZVVwZGF0ZSYpOwogICAgIHZvaWQgZmx1c2hMYXll
ckNoYW5nZXMoKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lELCBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+KTsKKyAgICB2b2lkIHVwZGF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4pOwogICAgIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHNldExheWVyQW5pbWF0aW9ucyhDb29y
ZGluYXRlZExheWVySUQsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAppbmRleCBhZjA3OTgzMmQ2Y2Q5OGQ5MjlkYmFjZTJiMDI5NjYyMjQwYjFhMzc3
Li5kMGU5YzZkMzJiNjcxZDdhMTVkNDQ4YjcwMGUxNjQ3YTM4YWUzZmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTc0MCw3ICs3NDAsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSQogICAgIGlmICghbV9j
b29yZGluYXRvcikKICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0PigpOwogCi0gICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0
ZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gMCA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYSwgYXRsYXMsIG9mZnNldCk7CisgICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29u
dGVudFVwZGF0ZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRTdXJmYWNlOjpO
b0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUodWludDMy
X3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgdGlsZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGQ5ZmJlN2VjNGExYTc4NzM1MTZk
OTU3ODE1Njk2YWU4MzAzOTk4OTMuLjQ3M2JhZTMwNjE2ZDNmMzdiZjdjMzE1MTliNDI2NTQ5NjU3
OWY0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
clRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3Jl
LmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtNzUsNyArNzQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4ZWRMYXllcnMoKSA9IDA7Ci0gICAgdmlydHVh
bCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBTaGFyZWFibGVCaXRtYXA6OkZsYWdzLCBpbnQmIGF0
bGFzSUQsIFdlYkNvcmU6OkludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgUGFzc093blB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgaW50JiBhdGxhc0lELCBXZWJD
b3JlOjpJbnRQb2ludCYpID0gMDsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCA1NWNhOWRhN2I1OTRj
YjY5OGY3OGE2YzkwYWIxNDE5NGY5YTFiMWIxLi4xNDY4MTE1OGIwOGE3MWQ4MWI3ZjVhNmVlMTMy
ODQxYjRhYjlkYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB2b2lkIENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9z
dXJmYWNlID0gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKG1faW1hZ2UtPnNpemUoKSwgbV9pbWFn
ZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSA/IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBo
YSA6IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncywgU2hhcmVhYmxlU3VyZmFjZTo6U3VwcG9ydHNH
cmFwaGljc1N1cmZhY2UpOwotICAgIG1faGFuZGxlID0gYWRvcHRQdHIobmV3IFNoYXJlYWJsZVN1
cmZhY2U6OkhhbmRsZSgpKTsKKyAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZhY2U6OmNy
ZWF0ZShtX2ltYWdlLT5zaXplKCksIG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkgPyBD
b29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEgOiBDb29yZGluYXRlZFN1cmZhY2U6Ok5v
RmxhZ3MpOworICAgIG1faGFuZGxlID0gYWRvcHRQdHIobmV3IFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlKCkpOwogCi0gICAgaWYgKCFtX3N1cmZhY2UtPmNyZWF0ZUhhbmRsZSgqbV9oYW5k
bGUpKSB7CisgICAgaWYgKCFzdGF0aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihtX3N1
cmZhY2UuZ2V0KCkpLT5jcmVhdGVIYW5kbGUoKm1faGFuZGxlKSkgewogICAgICAgICByZWxlYXNl
U3VyZmFjZUlmTmVlZGVkKCk7CiAgICAgICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEltYWdlQmFja2luZy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuaAppbmRleCA2NWU4MjQ2NzJiOTM5ZjhhYzg1Y2YwYWU0NjVkYjgyYzM3MzkwNjlh
Li5lZGM2ZTQ0MmIxYjY3YzFiNjc3NmU1NWU4ZjAyNjA4NTk4ODZiZGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTI5
LDggKzI5LDkgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJD
b29yZGluYXRlZExheWVySW5mby5oIgorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgog
I2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgorI2luY2x1
ZGUgIldlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTQyLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGNsYXNzIENvb3JkaW5hdG9yIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6Okhh
bmRsZSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRs
ZSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMo
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICB9OwpA
QCAtODAsOCArODEsOCBAQCBwcml2YXRlOgogICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQg
bV9pZDsKICAgICBWZWN0b3I8SG9zdCo+IG1faG9zdHM7CiAKLSAgICBSZWZQdHI8U2hhcmVhYmxl
U3VyZmFjZT4gbV9zdXJmYWNlOwotICAgIE93blB0cjxTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU+
IG1faGFuZGxlOworICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKKyAg
ICBPd25QdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGU+IG1faGFuZGxlOwogCiAgICAg
V2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IG1fY2xlYXJDb250ZW50c1Rp
bWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5jcHAKaW5kZXggYmY2N2VhZGZkOGM0YjlhYTkzMjJjYTcyZjcxNDE0MDk0Y2Y5OWY5OC4u
M2I3ZTVmMWQxNDViMjVhZDU4OTViMjRkYzBmYjlmNjZkMjRjN2VkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMSw2ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwg
SW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NzEsNyArNTcyLDcgQEAg
dm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Okxh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZUltYWdlQmFja2luZyhpbWFnZUlEKSk7CiB9
CiAKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRs
ZSYgaGFuZGxlKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6dXBkYXRlSW1hZ2VCYWNraW5n
KENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7
CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5
OjpVcGRhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJRCwgaGFuZGxlKSk7CkBAIC02NTksNyArNjYwLDcg
QEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVy
SUQgbGF5ZXJJRCwgdWludDMyX3QgdGlsZUkKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlJlbW92ZVRpbGVGb3JMYXllcihsYXllcklELCB0
aWxlSUQpKTsKIH0KIAotdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRs
YXMoaW50IGF0bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYgaGFuZGxlKQor
dm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6Y3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0bGFzSUQs
IGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpDcmVhdGVV
cGRhdGVBdGxhcyhhdGxhc0lELCBoYW5kbGUpKTsKIH0KQEAgLTc2OSwxMiArNzcwLDEyIEBAIHZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgbV91cGRh
dGVBdGxhc2VzLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0PiBMYXllclRyZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MsIGludCYgYXRs
YXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBMYXllclRyZWVDb29yZGluYXRvcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNp
emUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIGludCYgYXRsYXNJRCwg
SW50UG9pbnQmIG9mZnNldCkKIHsKLSAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiBncmFwaGljc0NvbnRleHQ7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3ND
b250ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2Vz
W2ldLmdldCgpOwotICAgICAgICBpZiAoYXRsYXMtPmZsYWdzKCkgPT0gZmxhZ3MpIHsKKyAgICAg
ICAgaWYgKGF0bGFzLT5zdXBwb3J0c0FscGhhKCkgPT0gKGZsYWdzICYgQ29vcmRpbmF0ZWRTdXJm
YWNlOjpTdXBwb3J0c0FscGhhKSkgewogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiBu
dWxsIGlmIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIgc3BhY2UuCiAgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQgPSBhdGxhcy0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0
bGFzSUQsIHNpemUsIG9mZnNldCk7CiAgICAgICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KQpA
QCAtODA1LDcgKzgwNiw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFj
dGl2ZUF0bGFzZXNUaW1lckZpcmVkKFRpbWVyPExheWVyVHJlZUNvb3JkCiAgICAgICAgIFVwZGF0
ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRlQXRsYXNlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFh
dGxhcy0+aXNJblVzZSgpKQogICAgICAgICAgICAgYXRsYXMtPmFkZFRpbWVJbmFjdGl2ZShSZWxl
YXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCk7Ci0gICAgICAgIGJvb2wgdXNhYmxlRm9y
Tm9uQ29tcG9zaXRlZENvbnRlbnQgPSBhdGxhcy0+ZmxhZ3MoKSA9PSBTaGFyZWFibGVCaXRtYXA6
Ok5vRmxhZ3M7CisgICAgICAgIGJvb2wgdXNhYmxlRm9yTm9uQ29tcG9zaXRlZENvbnRlbnQgPSAh
YXRsYXMtPnN1cHBvcnRzQWxwaGEoKTsKICAgICAgICAgaWYgKGF0bGFzLT5pc0luYWN0aXZlKCkp
IHsKICAgICAgICAgICAgIGlmICghZm91bmRBY3RpdmVBdGxhc0Zvck5vbkNvbXBvc2l0ZWRDb250
ZW50ICYmICFhdGxhc1RvS2VlcEFueXdheSAmJiB1c2FibGVGb3JOb25Db21wb3NpdGVkQ29udGVu
dCkKICAgICAgICAgICAgICAgICBhdGxhc1RvS2VlcEFueXdheSA9IG1fdXBkYXRlQXRsYXNlc1tp
XS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaAppbmRleCA3YmI2OGI4Yzc3M2I4MzIzMTY1YTdhYTE5NDI4OWQxNDY4MWY1YTUx
Li5hNTQ3ZjRlMjNmNDUxNDkwMGFiYjI4NjJiYTM3YTlmMzU5NjJlN2FmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlICJVcGRhdGVBdGxhcy5oIgorI2luY2x1ZGUgIldlYkNvb3JkaW5hdGVkU3VyZmFjZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NMYXllckZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBA
IC0xMDMsMTAgKzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVy
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jRml4ZWRMYXllcnMoKTsKIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
U2hhcmVhYmxlQml0bWFwOjpGbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYp
OworICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2lu
Q29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNl
OjpGbGFncywgaW50JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCiAgICAgLy8gVXBk
YXRlQXRsYXNDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXMoaW50IGF0
bGFzSUQsIGNvbnN0IFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpIYW5kbGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXMoaW50IGF0
bGFzSUQpOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQpAQCAtMTI1LDcg
KzEyNiw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29v
cmRpbmF0b3IKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJh
Y2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6
SGFuZGxlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAppbmRleCA5YTU0MThm
MWVhYWEzNDg3YjRlNDI0YjlhOTU2MjAyMDgzMDk3NTRlLi45OTY1MzE4ZDBmYTU1MmI2NzRlY2Ex
NTBhMTg4ZWEwODE3ZWExNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRs
YXMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgQ29weXJpZ2h0IChDKSAyMDEy
IENvbXBhbnkgMTAwLCBJbmMuCiAKICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMwLDcgKzMxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1VcGRhdGVBdGxhczo6
VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgU2hh
cmVhYmxlQml0bWFwOjpGbGFncyBmbGFncykKK1VwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRh
dGVBdGxhc0NsaWVudCogY2xpZW50LCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzIGZsYWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9mbGFncyhmbGFn
cykKICAgICAsIG1faW5hY3Rpdml0eUluU2Vjb25kcygwKQpAQCAtMzksOSArNDAsOSBAQCBVcGRh
dGVBdGxhczo6VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVu
c2lvbiwgU2hhcmVhYmxlQml0bQogICAgIHN0YXRpYyBpbnQgbmV4dElEID0gMDsKICAgICBtX0lE
ID0gKytuZXh0SUQ7CiAgICAgSW50U2l6ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShk
aW1lbnNpb24sIGRpbWVuc2lvbikpOwotICAgIG1fc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6
OmNyZWF0ZShzaXplLCBmbGFncywgU2hhcmVhYmxlU3VyZmFjZTo6U3VwcG9ydHNHcmFwaGljc1N1
cmZhY2UpOworICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUs
IGZsYWdzKTsKIAotICAgIGlmICghbV9zdXJmYWNlLT5jcmVhdGVIYW5kbGUobV9oYW5kbGUpKSB7
CisgICAgaWYgKCFzdGF0aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihtX3N1cmZhY2Uu
Z2V0KCkpLT5jcmVhdGVIYW5kbGUobV9oYW5kbGUpKSB7CiAgICAgICAgIG1faXNWYWlsZCA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODYsNyArODcsNyBAQCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1
ZmZlcihpbnQmIGF0bAogICAgIG9mZnNldCA9IHJlY3QubG9jYXRpb24oKTsKICAgICBPd25QdHI8
R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX3N1cmZhY2UtPmNyZWF0ZUdyYXBo
aWNzQ29udGV4dChyZWN0KTsKIAotICAgIGlmIChmbGFncygpICYgU2hhcmVhYmxlQml0bWFwOjpT
dXBwb3J0c0FscGhhKSB7CisgICAgaWYgKHN1cHBvcnRzQWxwaGEoKSkgewogICAgICAgICBncmFw
aGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHNp
emUpLCBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5oCmluZGV4IDdjZWZlOWM5Nzk0
MjE1ODYyNzNmNGUwY2QzMDlhMjAyMzRjNzFhZDEuLmQwYjc3OWUwNGI5ZmUzNjhmZWFhNjJjNTMx
M2YyZGU5Yzg1NTRkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55
IDEwMCwgSW5jLgogCiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJB
cmVhQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlNoYXJlYWJs
ZVN1cmZhY2UuaCIKKyNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKIAogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDE0ICsz
NSwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgVXBkYXRlQXRsYXNDbGllbnQgewog
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwg
Y29uc3QgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVVcGRhdGVBdGxhcyhpbnQgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpIYW5kbGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKGludCBh
dGxhc0lEKSA9IDA7CiB9OwogCiBjbGFzcyBVcGRhdGVBdGxhcyB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVXBkYXRlQXRsYXMpOwogcHVibGljOgotICAgIFVwZGF0ZUF0bGFzKFVwZGF0ZUF0
bGFzQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwgU2hhcmVhYmxlQml0bWFwOjpGbGFncyk7CisgICAg
VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqLCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRl
ZFN1cmZhY2U6OkZsYWdzKTsKICAgICB+VXBkYXRlQXRsYXMoKTsKIAogICAgIGlubGluZSBXZWJD
b3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnNpemUoKTsgfQpA
QCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBhIG51bGwgcG9pbnRlciBv
ZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyLgogICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0PiBiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoaW50JiBhdGxh
c0lELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SW50UG9pbnQmIG9mZnNldCk7
CiAgICAgdm9pZCBkaWRTd2FwQnVmZmVycygpOwotICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3Mg
ZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisgICAgYm9vbCBzdXBwb3J0c0FscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zdXBwb3J0c0FscGhhKCk7IH0KIAogICAgIHZv
aWQgYWRkVGltZUluYWN0aXZlKGRvdWJsZSBzZWNvbmRzKQogICAgIHsKQEAgLTcwLDggKzcxLDgg
QEAgcHJpdmF0ZToKICAgICBVcGRhdGVBdGxhc0NsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRy
PEdlbmVyYWxBcmVhQWxsb2NhdG9yPiBtX2FyZWFBbGxvY2F0b3I7CiAgICAgU2hhcmVhYmxlQml0
bWFwOjpGbGFncyBtX2ZsYWdzOwotICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBtX3N1cmZh
Y2U7Ci0gICAgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlIG1faGFuZGxlOworICAgIFJlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+IG1fc3VyZmFjZTsKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6
OkhhbmRsZSBtX2hhbmRsZTsKICAgICBkb3VibGUgbV9pbmFjdGl2aXR5SW5TZWNvbmRzOwogICAg
IGludCBtX0lEOwogICAgIGJvb2wgbV9pc1ZhaWxkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178487</attachid>
            <date>2012-12-10 01:36:03 -0800</date>
            <delta_ts>2012-12-10 02:38:38 -0800</delta_ts>
            <desc>Patch : It is a follow-up patch of r137117.</desc>
            <filename>bug-100819-20121210183311.patch</filename>
            <type>text/plain</type>
            <size>2898</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzFiNjlmMDY0YzI3MmY4
MDIwNzY2ZTM3Njg0YzExNTVjMTA3NjViNy4uOGI2ZDNhMTYyMmE3ZGIyODA5YTNkMmM2YTUyZTIw
MzRhMThjMzc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTEwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb2YgU2hhcmVhYmxlU3VyZmFjZSBm
cm9tIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwODE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSXQgaXMgYSBmb2xsb3ctdXAgcGF0Y2ggb2YgcjEzNzExNy4KKwor
ICAgICAgICBUaGVyZSBhcmUgdHdvIGNoYW5nZXMKKyAgICAgICAgMS4gQWRkIGEgY29uc3QgcXVh
bGlmaWVyIHRvIHN1cHBvcnRzQWxwaGEoKS4KKyAgICAgICAgMi4gVXNlIDw8IGluc3RlYWQgb2Yg
ZW5jb2RlKCkgd2hlbiB1c2luZyBBcmd1bWVudEVuY29kZXIuCisKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpzdXBwb3J0c0FscGhhKToKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKToKKwogMjAxMi0x
Mi0wOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAg
ICBDb29yZGluYXRlZCBHcmFwaGljczogQWRkIENvb3JkaW5hdGVkU3VyZmFjZSB0byByZW1vdmUg
dGhlIGRlcGVuZGVuY3kgb2YgU2hhcmVhYmxlU3VyZmFjZSBmcm9tIENvb3JkaW5hdGVkIEdyYXBo
aWNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaAppbmRleCBkZWY3MWMyYTE5NmVkMTZhN2Iw
YWQ4NjcxMjU3OGJlNTliN2Y2YjBhLi44OGYzMTg4Yzk1MTJjODgyMjMzYTkyYjdmYzY0NGI0MGVk
Njk2M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKSB7IH0KIAotICAgIGJv
b2wgc3VwcG9ydHNBbHBoYSgpIHsgcmV0dXJuIGZsYWdzKCkgJiBTdXBwb3J0c0FscGhhOyB9Cisg
ICAgYm9vbCBzdXBwb3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gZmxhZ3MoKSAmIFN1cHBvcnRz
QWxwaGE7IH0KICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsK
IAogICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBw
YWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKaW5kZXggZjc5MGM3OWZjZTYwYzU4ZTgwNTcwYjMzZjk1NjkwNGM1MWY4MWIzOS4u
MmNiNWJkMzJhNTc0ZjBiYjQ2ZjUwZGZlMmU3MDJjODMzMDRiYmU0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCkBAIC00MSwxNCArNDEsMTMgQEAgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpIYW5kbGU6OkhhbmRsZSgpCiAKIHZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7Ci0gICAgZW5jb2Rlci5lbmNvZGUobV9zaXplKTsKLSAgICBlbmNvZGVyLmVuY29kZShtX2Zs
YWdzKTsKKyAgICBlbmNvZGVyIDw8IG1fc2l6ZSA8PCBtX2ZsYWdzOwogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQotICAgIGVuY29kZXIuZW5jb2RlKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pOwor
ICAgIGVuY29kZXIgPDwgbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsKICAgICBpZiAobV9ncmFwaGlj
c1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGVu
Y29kZXIuZW5jb2RlKG1fYml0bWFwSGFuZGxlKTsKKyAgICBlbmNvZGVyIDw8IG1fYml0bWFwSGFu
ZGxlOwogfQogCiBib29sIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178491</attachid>
            <date>2012-12-10 01:42:01 -0800</date>
            <delta_ts>2012-12-10 02:36:28 -0800</delta_ts>
            <desc>Patch : WebCoordinatedSurface::copyToTexture should return early if the backend is GraphicsSurface.</desc>
            <filename>bug-100819-20121210183909.patch</filename>
            <type>text/plain</type>
            <size>1880</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGI2ZDNhMTYyMmE3ZGIy
ODA5YTNkMmM2YTUyZTIwMzRhMThjMzc0Mi4uNmQ4ZDYzZjVlZjRlN2Y1ZjYzNjUxOGY5ZDIxMWMw
MjkwODdhNjhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDE5IEBACiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
b3B5VG9UZXh0dXJlIHNob3VsZCByZXR1cm4gZWFybHkgaWYgdGhlIGJhY2tlbmQKKyAgICAgICAg
aXMgR3JhcGhpY3NTdXJmYWNlLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKToKKworMjAxMi0xMi0xMCAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGluYXRlZCBHcmFw
aGljczogUmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIFNoYXJlYWJsZVN1cmZhY2UgZnJvbSBDb29y
ZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CiAgICAgICAgIEl0IGlzIGEgZm9sbG93LXVwIHBhdGNoIG9mIHIxMzcxMTcuCiAKICAgICAgICAg
VGhlcmUgYXJlIHR3byBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNw
cAppbmRleCAyY2I1YmQzMmE1NzRmMGJiNDZmNTBkZmUyZTcwMmM4MzMwNGJiZTRlLi42OGY1OGU4
NjgwYjRjYWZjZGQzMGVlNTZhMjhlZjNhODM2Mzc5ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5jcHAKQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVy
ZT4gcGFzCiAKICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fZ3JhcGhpY3NTdXJmYWNl
LT5jcmVhdGVSZWFkT25seUltYWdlKEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXQuc2l6ZSgp
KSk7CiAgICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQs
IEludFBvaW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFs
SW1hZ2VEYXRhKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCiAgICAgQVNTRVJU
KG1fYml0bWFwKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9iaXRtYXAtPmNyZWF0ZUlt
YWdlKCk7CiAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoaW1hZ2UuZ2V0KCksIHRhcmdldCwg
c291cmNlT2Zmc2V0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7Ci0gICAgcmV0dXJuOwogfQogI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>