<?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>108899</bug_id>
          
          <creation_ts>2013-02-04 21:16:56 -0800</creation_ts>
          <short_desc>Coordinated Graphics : Refactor CoordinatedSurface to manage the lifecycle of GraphicsContext</short_desc>
          <delta_ts>2013-06-06 02:43:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>117222</dependson>
          <blocked>102994</blocked>
    
    <blocked>109661</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jae Hyun Park">jaepark</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jesus</cc>
    
    <cc>kalyan.kondapally</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yoon</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825106</commentid>
    <comment_count>0</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-04 21:16:56 -0800</bug_when>
    <thetext>WebKit1 CoordinatedSurface (I don&apos;t have the name for it yet. Any suggestions?) will be implemented using GraphicsSurface and ImageBuffer.

ImageBuffer owns GraphicsContext itself and cannot pass its OwnPtr around. Therefore, CoordinatedSurface should be refactored to pass GraphicsContextHolder and make other classes access GraphicsContext via GraphicsContextHolder. CoordinatedSurface will provide createGraphicsContextHolder method instead of createGraphicsContext method.

Also, methods that will be shared between WebCoordinatedSurface and WebKit1 CoordinatedSurface should be implemented in CoordinatedSurface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825108</commentid>
    <comment_count>1</comment_count>
      <attachid>186539</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-04 21:21:41 -0800</bug_when>
    <thetext>Created attachment 186539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825186</commentid>
    <comment_count>2</comment_count>
      <attachid>186539</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 23:48:41 -0800</bug_when>
    <thetext>Comment on attachment 186539
Patch

Attachment 186539 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16375577</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827081</commentid>
    <comment_count>3</comment_count>
      <attachid>186539</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-06 23:38:46 -0800</bug_when>
    <thetext>Comment on attachment 186539
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        1. It introduces CoordinatedGraphics::GraphicsContextHolder. Other
&gt; +        classes access GraphicsContext via GraphicsContextHolder, instead of
&gt; +        accessing GraphicsContext directly.
&gt; +
&gt; +        WebKit1 CoordinatedSurface will be implemented using GraphicsSurface and
&gt; +        ImageBuffer. ImageBuffer owns GraphicsContext itself and cannot pass its
&gt; +        OwnPtr. Therefore, this patch refactors CoordinatedSurface to pass
&gt; +        GraphicsContextHolder, and make other classes access GraphicsContext via
&gt; +        GraphicsContextHolder.

This part doesn&apos;t make sense to me; Why not, instead, use explicit beginPaint that returns GraphicsContext* and endPaint?
We should find a more readable solution than the &quot;holder&quot; pattern...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828092</commentid>
    <comment_count>4</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-07 18:47:54 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This part doesn&apos;t make sense to me; Why not, instead, use explicit beginPaint that returns GraphicsContext* and endPaint?
&gt; We should find a more readable solution than the &quot;holder&quot; pattern...

Thanks for the review!

In the current implementation, CoordinatedTile::updateBackBuffer() releases the PassOwnPtr&lt;GraphicsContext&gt; after using it.

IMHO, if we want to use beginPaint and endPaint pattern, we need to know CoordinatedSurface in CoordinatedTile, which is not pretty.
If we add a method such as UpdateAtlas::endPaintingOnAvailableBuffer, which will call endPaint in CoordinatedSurface, we still need to pass around UpdateAtlas.

I&apos;m not sure which way is the right way to go. I&apos;d really appreciate your comment noam :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830743</commentid>
    <comment_count>5</comment_count>
      <attachid>187820</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-12 03:04:33 -0800</bug_when>
    <thetext>Created attachment 187820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830746</commentid>
    <comment_count>6</comment_count>
      <attachid>187820</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-12 03:08:36 -0800</bug_when>
    <thetext>Comment on attachment 187820
Patch

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

Please remove const&amp; from uint32_t arguments.
Otherwise, LGTM but you need a sign off from a WK2 owner.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:801
&gt; +void CoordinatedGraphicsLayer::didEndContentUpdate(const uint32_t&amp; atlasID)

no need for const&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830755</commentid>
    <comment_count>7</comment_count>
      <attachid>187823</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-12 03:23:14 -0800</bug_when>
    <thetext>Created attachment 187823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831478</commentid>
    <comment_count>8</comment_count>
      <attachid>187823</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-12 17:43:35 -0800</bug_when>
    <thetext>Comment on attachment 187823
Patch

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

r- because of two very fishy things:
-m_graphicsContext is defined on CoordinatedSurface?
-Why is the context own by the CoordinatedSurface and not by the GraphicsSurface? The asymmetry is not clear to me.

First the first, I think the ChangeLog should explain it if it is correct. For the second, some context here is enough, I just don&apos;t know much about CoordinatedGraphics.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:794
&gt; +GraphicsContext* CoordinatedGraphicsLayer::beginContentUpdate(const IntSize&amp; size, uint32_t&amp; atlas, IntPoint&amp; offset)

atlas being an uint32_t, shouldn&apos;t the argument be named atlasID?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:74
&gt; +    virtual GraphicsContext* beginContentUpdate(const IntSize&amp;, CoordinatedSurface::Flags, uint32_t&amp; atlasID, IntPoint&amp;) = 0;

It is okay to have the IntPoint named here.
We don&apos;t put the attribute names when they are obvious.

Depending on the kind of API you are making, it should not have one output by return and 2 by passing arguments.
I don&apos;t know what are the arguments for so I let you check that.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.h:61
&gt; +    OwnPtr&lt;GraphicsContext&gt; m_graphicsContext;

Why is this protected of CoordinatedSurface?
CoordinatedSurface defines an interface, it should not force the way it is implemented.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:109
&gt; -    if (isBackedByGraphicsSurface())
&gt; -        return m_graphicsSurface-&gt;beginPaint(rect, 0 /* Write without retaining pixels*/);
&gt; +    if (isBackedByGraphicsSurface()) {
&gt; +        m_graphicsContext = m_graphicsSurface-&gt;beginPaint(rect, 0 /* Write without retaining pixels*/);

The 0 + comment are mysterious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831520</commentid>
    <comment_count>9</comment_count>
      <attachid>187989</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-12 18:42:25 -0800</bug_when>
    <thetext>Created attachment 187989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831527</commentid>
    <comment_count>10</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-12 18:47:37 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 187823 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187823&amp;action=review
&gt; 
&gt; r- because of two very fishy things:
&gt; -m_graphicsContext is defined on CoordinatedSurface?
&gt; -Why is the context own by the CoordinatedSurface and not by the GraphicsSurface? The asymmetry is not clear to me.
&gt; 
&gt; First the first, I think the ChangeLog should explain it if it is correct. For the second, some context here is enough, I just don&apos;t know much about CoordinatedGraphics.
&gt; 
GraphicsContext is owned by the CoordinatedSurface because there are two ways to create GraphicsContext in CoordinatedSurface, via GraphicsSurface and ShareableBitmap. Both GraphicsSurface and ShareableBitmap provide PassOwnPtr&lt;GraphicsContext&gt; and CoordinatedSurface manages lifecycle of that GraphicsContext by providing beginPaint and endPaint.

This refactoring is necessary because in Threaded Coordinated Graphics, CoordinatedSurface will provide GraphicsContext using either GraphicsSurface or ImageBuffer. Since ImageBuffer owns GraphicsContext itself, CoordinatedSurface cannot pass PassOwnPtr&lt;GraphicsContext&gt;. Instead, it should pass GraphicsContext* so that CoordinatedImageBacking and UpdateAtlas can use the GraphicsContext.

&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:794
&gt; &gt; +GraphicsContext* CoordinatedGraphicsLayer::beginContentUpdate(const IntSize&amp; size, uint32_t&amp; atlas, IntPoint&amp; offset)
&gt; 
&gt; atlas being an uint32_t, shouldn&apos;t the argument be named atlasID?
&gt; 
Done.

&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:74
&gt; &gt; +    virtual GraphicsContext* beginContentUpdate(const IntSize&amp;, CoordinatedSurface::Flags, uint32_t&amp; atlasID, IntPoint&amp;) = 0;
&gt; 
&gt; It is okay to have the IntPoint named here.
&gt; We don&apos;t put the attribute names when they are obvious.
&gt; 
&gt; Depending on the kind of API you are making, it should not have one output by return and 2 by passing arguments.
&gt; I don&apos;t know what are the arguments for so I let you check that.
&gt; 
Done.

&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.h:61
&gt; &gt; +    OwnPtr&lt;GraphicsContext&gt; m_graphicsContext;
&gt; 
&gt; Why is this protected of CoordinatedSurface?
&gt; CoordinatedSurface defines an interface, it should not force the way it is implemented.
&gt; 
Now that I think about it, it should be in WebCoordinatedSurface.h

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:109
&gt; &gt; -    if (isBackedByGraphicsSurface())
&gt; &gt; -        return m_graphicsSurface-&gt;beginPaint(rect, 0 /* Write without retaining pixels*/);
&gt; &gt; +    if (isBackedByGraphicsSurface()) {
&gt; &gt; +        m_graphicsContext = m_graphicsSurface-&gt;beginPaint(rect, 0 /* Write without retaining pixels*/);
&gt; 
&gt; The 0 + comment are mysterious.

The comments are about lock options. When GraphicsSurface::beginPaint is called, it takes lockOption argument, and calls platformLock(), which will lock the surface with the passed option. 
The comment just describes the lock option.

Thank you for your review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831697</commentid>
    <comment_count>11</comment_count>
      <attachid>187989</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-13 00:12:34 -0800</bug_when>
    <thetext>Comment on attachment 187989
Patch

Wouldn&apos;t it make more sense to refactor ImageBuffer to be able to return PassOwnPtr&lt;GraphicsContext&gt;, rather than work around it here? Benjamin, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832573</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 17:18:46 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 187989 [details])
&gt; Wouldn&apos;t it make more sense to refactor ImageBuffer to be able to return PassOwnPtr&lt;GraphicsContext&gt;, rather than work around it here? Benjamin, what do you think?

I don&apos;t really like the idea. It is easier to maintain correctness with the current design:
-The GraphicsContext cannot outlive ImageBuffer.
-Having multiple GraphicsContext or a ref-counted GraphicsContext would lead to awful situations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832580</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 17:26:23 -0800</bug_when>
    <thetext>&gt; GraphicsContext is owned by the CoordinatedSurface because there are two ways to create GraphicsContext in CoordinatedSurface, via GraphicsSurface and ShareableBitmap. Both GraphicsSurface and ShareableBitmap provide PassOwnPtr&lt;GraphicsContext&gt; and CoordinatedSurface manages lifecycle of that GraphicsContext by providing beginPaint and endPaint.
&gt; 
&gt; This refactoring is necessary because in Threaded Coordinated Graphics, CoordinatedSurface will provide GraphicsContext using either GraphicsSurface or ImageBuffer. Since ImageBuffer owns GraphicsContext itself, CoordinatedSurface cannot pass PassOwnPtr&lt;GraphicsContext&gt;. Instead, it should pass GraphicsContext* so that CoordinatedImageBacking and UpdateAtlas can use the GraphicsContext.

Let&apos;s ask things differently, why doesn&apos;t GraphicsSurface have the responsibility for its GraphicsContext in the first place?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832743</commentid>
    <comment_count>14</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-13 22:46:06 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Let&apos;s ask things differently, why doesn&apos;t GraphicsSurface have the responsibility for its GraphicsContext in the first place?

The idea was that releasing the GraphicsContext would trigger an unlock.
But I don&apos;t mind changing that behavior to have a GraphicsSurface::endPaint() and change beginPaint() to return a raw pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835271</commentid>
    <comment_count>15</comment_count>
      <attachid>188836</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-18 02:45:00 -0800</bug_when>
    <thetext>Created attachment 188836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835308</commentid>
    <comment_count>16</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-18 03:46:37 -0800</bug_when>
    <thetext>(In reply to comment #13)

&gt; Let&apos;s ask things differently, why doesn&apos;t GraphicsSurface have the responsibility for its GraphicsContext in the first place?

I updated the patch trying to make GraphicsSurface and ShareableBitmap have the responsibilities for their own GraphicsContext, but noam thought it was quite messy.

The main purpose of this patch is to make CoordinatedSurface pass GraphicsContext*, and the problem is that ShareableBitmap doesn&apos;t own its GraphicsContext and ImageBuffer does.

// the following is a talk with noam.
[20:14] &lt;noamr&gt; jaepark: the problem is - ShareableBitmap doesn&apos;t own its graphicsContext; ImageBuffer does. We&apos;re trying to use a class that has both backends
[20:15] &lt;noamr&gt; so the solution is either to make ImageBuffer not own its GraphicsContext, or make ShareableBitmap own its GraphicsContext, or work around the issue in the API
[20:15] &lt;jaepark&gt; right.
[20:15] &lt;noamr&gt; I don&apos;t particularly care which one it is, but since benjaminp had some issues with option (3), I&apos;d like to hear his thoughts.

So I provided a way to work around the issue in the API in the second last patch, which noamr thought was reasonable.

I&apos;d really appreciate your comment on this benjamin. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835817</commentid>
    <comment_count>17</comment_count>
      <attachid>188836</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-18 16:20:55 -0800</bug_when>
    <thetext>Comment on attachment 188836
Patch

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

&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurface.cpp:52
&gt; +    m_graphicsContexts.append(createGraphicsContext(rect.size(), bits, stride));

It seems wrong to be able to create more than one GraphicsContext for a given surface. What happens when painting is interleaved from the two contexts?

&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurface.h:88
&gt; +    GraphicsContext* beginPaint(const IntRect&amp;, LockOptions);
&gt; +    void endPaint();

Why not just create a GraphicsContext* when first asked, then keep it around? Forcing clients to call endPaint() is a bit burdensome.

&gt; Source/WebKit2/Shared/ShareableBitmap.h:173
&gt; +    Vector&lt;OwnPtr&lt;WebCore::GraphicsContext&gt; &gt; m_graphicsContexts;

Same comment here. Why allow more than one context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835864</commentid>
    <comment_count>18</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-18 17:53:02 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 188836 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188836&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurface.cpp:52
&gt; &gt; +    m_graphicsContexts.append(createGraphicsContext(rect.size(), bits, stride));
&gt; 
&gt; It seems wrong to be able to create more than one GraphicsContext for a given surface. What happens when painting is interleaved from the two contexts?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurface.h:88
&gt; &gt; +    GraphicsContext* beginPaint(const IntRect&amp;, LockOptions);
&gt; &gt; +    void endPaint();
&gt; 
&gt; Why not just create a GraphicsContext* when first asked, then keep it around? Forcing clients to call endPaint() is a bit burdensome.

Forcing clients to call endPaint() triggers platformUnlock() to be called. Since we platformLock() at beginPaint(), we should call platformUnlock(). So endPaint() must be called each time beginPaint() is called.

&gt; 
&gt; &gt; Source/WebKit2/Shared/ShareableBitmap.h:173
&gt; &gt; +    Vector&lt;OwnPtr&lt;WebCore::GraphicsContext&gt; &gt; m_graphicsContexts;
&gt; 
&gt; Same comment here. Why allow more than one context?

I was also surprised that GraphicsContext is created more than once for a given surface. But in CoordinatedTile::updateBackBuffer, we first call m_client-&gt;beginContentUpdate(), which will create a GraphicsContext, and then m_tiledBackingStore-&gt;client()-&gt;tiledBackingStorePaint() will call CoordinatedTile::updateBackbuffer after a long series of function calls, which will then call another m_client-&gt;beginContentUpdate() that creates another GraphicsContext.

The below is the stack trace for above behavior.

ASSERTION FAILED: m_graphicsContexts.size() == 1
/home/jaepark/workspace/WebKitEfl/Source/WebKit2/Shared/ShareableBitmap.cpp(174) : WebCore::GraphicsContext* WebKit::ShareableBitmap::beginPaint()
1   0x7f6528304b0b WebKit::ShareableBitmap::beginPaint()
2   0x7f652834af92 WebKit::WebCoordinatedSurface::beginPaint(WebCore::IntRect const&amp;)
3   0x7f652416c520 WebCore::UpdateAtlas::beginPaintingOnAvailableBuffer(unsigned int&amp;, WebCore::IntSize const&amp;, WebCore::IntPoint&amp;)
4   0x7f6528527a66 WebKit::CoordinatedLayerTreeHost::beginContentUpdate(WebCore::IntSize const&amp;, unsigned int, unsigned int&amp;, WebCore::IntPoint&amp;)
5   0x7f65241542f7 WebCore::CoordinatedGraphicsLayer::beginContentUpdate(WebCore::IntSize const&amp;, unsigned int&amp;, WebCore::IntPoint&amp;)
6   0x7f652416b835 WebCore::CoordinatedTile::updateBackBuffer()
7   0x7f6524126521 WebCore::TiledBackingStore::updateTileBuffers()
8   0x7f6524127483 WebCore::TiledBackingStore::createTiles()
9   0x7f6524126170 WebCore::TiledBackingStore::coverWithTilesIfNeeded()
10  0x7f6524126aab WebCore::TiledBackingStore::commitScaleChange()
11  0x7f6524126a5a WebCore::TiledBackingStore::setContentsScale(float)
12  0x7f6524153c23 WebCore::CoordinatedGraphicsLayer::createBackingStore()
13  0x7f65241547d6 WebCore::CoordinatedGraphicsLayer::updateContentBuffers()
14  0x7f652415370b WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly()
15  0x7f6524152b1c WebCore::CoordinatedGraphicsLayer::flushCompositingState(WebCore::FloatRect const&amp;)
16  0x7f6524152b5d WebCore::CoordinatedGraphicsLayer::flushCompositingState(WebCore::FloatRect const&amp;)
17  0x7f6524152b5d WebCore::CoordinatedGraphicsLayer::flushCompositingState(WebCore::FloatRect const&amp;)
18  0x7f6524152b5d WebCore::CoordinatedGraphicsLayer::flushCompositingState(WebCore::FloatRect const&amp;)
19  0x7f6524152b5d WebCore::CoordinatedGraphicsLayer::flushCompositingState(WebCore::FloatRect const&amp;)
20  0x7f6524352e2f WebCore::RenderLayerCompositor::flushPendingLayerChanges(bool)
21  0x7f6523fee651 WebCore::FrameView::flushCompositingStateForThisFrame(WebCore::Frame*)
22  0x7f6523ff793a WebCore::FrameView::paintContents(WebCore::GraphicsContext*, WebCore::IntRect const&amp;)
23  0x7f6524094e67 WebCore::ScrollView::paint(WebCore::GraphicsContext*, WebCore::IntRect const&amp;)
24  0x7f652440ef52 WebCore::RenderWidget::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
25  0x7f65243322ad WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext*, WebCore::RenderLayer::LayerPaintingInfo const&amp;, unsigned int)
26  0x7f652434fce6 WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext*, WebCore::IntRect const&amp;, unsigned int, unsigned int)
27  0x7f652435005f WebCore::RenderLayerBacking::paintContents(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, unsigned int, WebCore::IntRect const&amp;)
28  0x7f65241038bd WebCore::GraphicsLayer::paintGraphicsLayerContents(WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;)
29  0x7f6524153c71 WebCore::CoordinatedGraphicsLayer::tiledBackingStorePaint(WebCore::GraphicsContext*, WebCore::IntRect const&amp;)
30  0x7f652416b973 WebCore::CoordinatedTile::updateBackBuffer()
31  0x7f6524126521 WebCore::TiledBackingStore::updateTileBuffers()

I&apos;m still not sure if this is the right direction. IMHO, the second last patch (https://bugs.webkit.org/attachment.cgi?id=187989&amp;action=review) would be more appropriate for this refactoring. How do you feel about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836092</commentid>
    <comment_count>19</comment_count>
      <attachid>188836</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-19 00:50:04 -0800</bug_when>
    <thetext>Comment on attachment 188836
Patch

Attachment 188836 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16619004

New failing tests:
http/tests/inspector/appcache/appcache-manifest-with-non-existing-file.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841479</commentid>
    <comment_count>20</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-25 18:09:05 -0800</bug_when>
    <thetext>I&apos;ve been working on this bug for a while now, and I still don&apos;t see a proper direction.

The purpose of this refactoring is to use ThreadSafeCoordinatedSurface (which will be used in Threaded Coordinated Graphics). I am planning to implement ThreadSafeCoordinatedSurface to use GraphicsSurface and ImageBuffer as a backend (WIP patch https://bugs.webkit.org/show_bug.cgi?id=109661). Since ImageBuffer only provides GraphicsContext* to get GraphicsContext whereas ShareableBitmap and GraphicsSurface provides PassOwnPtr&lt;GraphicsContext&gt;, a refactoring was needed.

Over the past few weeks, the reviewers, noamr, benjaminp, and smfr, have suggested several ways. I have tried them all but each had problems (some were big, some were trivial).

During the refactoring, I found an abnormal behavior in which GraphicsContext is created twice through recursive calls before releasing even one GraphicsContext (this behavior occurs only in iframe cases). The call stack can be found in https://bugs.webkit.org/show_bug.cgi?id=108899#c18. Due to this behavior, the class that manages GraphicsContext, whether it be GraphicsSurface, ShareableBitmap, or even CoordinatedSurface, must hold GraphicsContext in a stack, which is pretty ugly. 

I have tried 3 different approaches in refactoring.
1. GraphicsContextHolder pattern.
-&gt; Rejected by noamr, since &quot;holder&quot; pattern makes the code hard to read.

2. beginPaint &amp; endPaint pattern where CoordinatedSurface manages GraphicsContext.
-&gt; Rejected by benjaminp. CoordinatedSurface managing GraphicsContext is not reasonable.

3. beginPaint &amp; endPaint pattern where GraphicsSurface &amp; ShareableBitmap manages GraphicsContext.
-&gt; Rejected by smfr. GraphicsSurface and ShareableBitmap managing GraphicsContext as a stack is unreasonable. Also, beginPaint and endPaint pattern is burdensome.

More importantly, all three cases must hold GraphicsContext in a stack due to the abnormal behavior I mentioned above.

I have dug further about this behavior, and also discussed with noamr and dshuang about it. Noam thought this can be solved by triggering a flush directly using TBS timer instead of triggering a paint for the particular tile. However, since Coordinated Graphics doesn&apos;t use TBS timer, I think this cannot be a solution. The problem of this is that two different CoordinatedTile can use the same UpdateAtlas. 

I thought about the ways to move this patch forward.

1. Add an API in ImageBuffer that creates a new GraphicsContext and returns as PassOwnPtr&lt;GraphicsContext&gt; (like current behavior in GraphicsSurface).
-&gt; This is the most proper approach that I can think of right now, even though it may not be the best approach.

2. Make CoordinatedTile use separate UpdateAtlas.
-&gt; This is practically impossible since it will dramatically increase the memory usage.

3. Allow GraphicsContext to be managed in Vector form.
-&gt; IMHO, this is unacceptable since it is clearly wrong.

4. Forbid sub-layers to flush when the root layer is performing flush.
-&gt; The GraphicsContext is created 2 times in a row before even releasing one because the root layer flush is calling the sub layers to flush. However, I&apos;m not even sure if this behavior is wrong. As I mentioned above, I think the problem is different CoordinatedTile sharing an UpdateAtlas. 

I could really use some help. Please leave comments/thoughts. 

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841490</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-25 18:20:11 -0800</bug_when>
    <thetext>How about (with fake function names)

class ShareableBitmapClient  {
  virtual drawBuffer(ShareableBitmap*, GraphicsContext*) = 0;
}

ShareableBitmap::drawContents()
{
  OwnPtr&lt;GraphicsContext&gt; context = create.....
  client-&gt;drawBuffer(this, context);
}

And there would be no other way to get the GraphicsContext for a bitmap.

That way there is zero ambiguity about the GraphicsContext ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841724</commentid>
    <comment_count>22</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-26 00:42:31 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; How about (with fake function names)
&gt; 
&gt; class ShareableBitmapClient  {
&gt;   virtual drawBuffer(ShareableBitmap*, GraphicsContext*) = 0;
&gt; }
&gt; 
&gt; ShareableBitmap::drawContents()
&gt; {
&gt;   OwnPtr&lt;GraphicsContext&gt; context = create.....
&gt;   client-&gt;drawBuffer(this, context);
&gt; }
&gt; 
&gt; And there would be no other way to get the GraphicsContext for a bitmap.
&gt; 
&gt; That way there is zero ambiguity about the GraphicsContext ownership.

Thanks for the comment!

However, I am not sure how this pattern solves the current problem.
I don&apos;t see a difference from just passing OwnPtr&lt;GraphicsContext&gt;.

The core of this refactoring is to prepare for implementing ThreadSafeCoordinatedSurface, which has ImageBuffer/GraphicsSurface as a backend.

Are you against the first approach I mentioned?
1. Add an API in ImageBuffer that creates a new GraphicsContext and returns as PassOwnPtr&lt;GraphicsContext&gt; (like current behavior in GraphicsSurface).
-&gt; This is the most proper approach that I can think of right now, even though it may not be the best approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841852</commentid>
    <comment_count>23</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-02-26 03:41:28 -0800</bug_when>
    <thetext>After a discussion with noam, I decided to fix the bug (GraphicsContext created twice through a recursive call) first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867160</commentid>
    <comment_count>24</comment_count>
      <attachid>188836</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-04-01 09:12:01 -0700</bug_when>
    <thetext>Comment on attachment 188836
Patch

Clearing review flags as per comments.
JaeHyun, are you still working on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867530</commentid>
    <comment_count>25</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-04-01 21:25:27 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 188836 [details])
&gt; Clearing review flags as per comments.
&gt; JaeHyun, are you still working on this?

I&apos;m sorry but I can&apos;t work on this for personal reasons. ryumiel will take over this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897227</commentid>
    <comment_count>26</comment_count>
      <attachid>203784</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 03:22:05 -0700</bug_when>
    <thetext>Created attachment 203784
Patch

Rebased to upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897305</commentid>
    <comment_count>27</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 05:22:37 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; After a discussion with noam, I decided to fix the bug (GraphicsContext created twice through a recursive call) first.

This bug was resolved in https://bugs.webkit.org/show_bug.cgi?id=117222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897382</commentid>
    <comment_count>28</comment_count>
      <attachid>203784</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-06-05 06:30:52 -0700</bug_when>
    <thetext>Comment on attachment 203784
Patch

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

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:-196
&gt; -            uint32_t textureTarget = textureGL-&gt;textureTarget();

Why move graphicssurface related things to CoordinateSurface ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897401</commentid>
    <comment_count>29</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 06:49:23 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 203784 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203784&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:-196
&gt; &gt; -            uint32_t textureTarget = textureGL-&gt;textureTarget();
&gt; 
&gt; Why move graphicssurface related things to CoordinateSurface ?

Actually, this part is to prepare for CoordinatedSurface to be used in WebKit1. I will separate this part to another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897404</commentid>
    <comment_count>30</comment_count>
      <attachid>203784</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-06-05 07:01:33 -0700</bug_when>
    <thetext>Comment on attachment 203784
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.cpp:67
&gt; +        GraphicsSurface::SupportsSoftwareWrite

Why not move the graphics surface creation to CoordinatedSurface constructor. Seems unnecessary that we create the GraphicsSurface and than pass it to WebCoordinatedSurface/CoordinatedSurface constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897405</commentid>
    <comment_count>31</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-06-05 07:03:32 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (From update of attachment 203784 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203784&amp;action=review
&gt; &gt; 
&gt; 
&gt; Actually, this part is to prepare for CoordinatedSurface to be used in WebKit1. I will separate this part to another patch.

Interesting, so what is it going to be used for ?? (I mean the usage of GraphicsSurface)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897409</commentid>
    <comment_count>32</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 07:28:56 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; How about (with fake function names)
&gt; 
&gt; class ShareableBitmapClient  {
&gt;   virtual drawBuffer(ShareableBitmap*, GraphicsContext*) = 0;
&gt; }
&gt; 
&gt; ShareableBitmap::drawContents()
&gt; {
&gt;   OwnPtr&lt;GraphicsContext&gt; context = create.....
&gt;   client-&gt;drawBuffer(this, context);
&gt; }
&gt; 
&gt; And there would be no other way to get the GraphicsContext for a bitmap.
&gt; 
&gt; That way there is zero ambiguity about the GraphicsContext ownership.

It is difficult to apply ShareableBitmap client pattern to CoordinatedSurface because when CoordinatedTile requests for GraphicsContext, the GraphicsContext is modified in WebCoordinatedSurface and UpdateAtlas. Then, CoordinatedTile modifies this GraphicsContext (translate and scale), and then passes to TiledBackingStoreClient for actual painting. Therefore, it is really hard to apply this client pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897422</commentid>
    <comment_count>33</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 07:56:21 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; 
&gt; Interesting, so what is it going to be used for ?? (I mean the usage of GraphicsSurface)

CoordinatedSurface for WebKit1 will not need GraphicSurface. So apparently this patch is not valid. CoordinatedSurface for WebKit1 is needed for Threaded Coordinated Graphics (https://bugs.webkit.org/show_bug.cgi?id=100341).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897426</commentid>
    <comment_count>34</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 08:11:14 -0700</bug_when>
    <thetext>(In reply to comment #32)

&gt; 
&gt; It is difficult to apply ShareableBitmap client pattern to CoordinatedSurface because when CoordinatedTile requests for GraphicsContext, the GraphicsContext is modified in WebCoordinatedSurface and UpdateAtlas. Then, CoordinatedTile modifies this GraphicsContext (translate and scale), and then passes to TiledBackingStoreClient for actual painting. Therefore, it is really hard to apply this client pattern.

After a discussion with noam, I will try this client pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897657</commentid>
    <comment_count>35</comment_count>
      <attachid>203908</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-05 23:58:42 -0700</bug_when>
    <thetext>Created attachment 203908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897661</commentid>
    <comment_count>36</comment_count>
      <attachid>203908</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-06 00:04:29 -0700</bug_when>
    <thetext>Comment on attachment 203908
Patch

Attachment 203908 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/747872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897671</commentid>
    <comment_count>37</comment_count>
      <attachid>203911</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-06 01:11:44 -0700</bug_when>
    <thetext>Created attachment 203911
Patch

Fixed EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897672</commentid>
    <comment_count>38</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-06-06 01:16:52 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Created an attachment (id=203911) [details]
&gt; Patch
&gt; 
&gt; Fixed EFL build

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

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.h:57
&gt;      // Create a graphics context that can be used to paint into the backing store.

This comment is going to be invalid.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:98
&gt;      // No available buffer was found, returning null.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897673</commentid>
    <comment_count>39</comment_count>
      <attachid>203911</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-06-06 01:23:02 -0700</bug_when>
    <thetext>Comment on attachment 203911
Patch

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

LGTM with nitpicks

&gt; Source/WebCore/ChangeLog:12
&gt; +        CoordinatedImageBacking and UpdateAtlas does not asks for the ownership

does not asks -&gt; do not ask

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h:81
&gt; +    virtual bool paintToSurface(const IntSize&amp;, uint32_t&amp; /* atlasID */, IntPoint&amp;, CoordinatedSurface::Client*) = 0;

No need to comment atlasID

&gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:57
&gt; +

Remove new line

&gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.h:49
&gt; +    bool paintOnAvailableBuffer(const IntSize&amp;, uint32_t&amp; /* atlasID */, IntPoint&amp; /* offset */, CoordinatedSurface::Client*);

No need to comment out parameter names

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:190
&gt; +    if (!client)
&gt; +        return;
&gt; +

We should actually assert for the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897681</commentid>
    <comment_count>40</comment_count>
      <attachid>203913</attachid>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-06 01:46:30 -0700</bug_when>
    <thetext>Created attachment 203913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897685</commentid>
    <comment_count>41</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-06 01:49:33 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; Created an attachment (id=203911) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Fixed EFL build
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203911&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedSurface.h:57
&gt; &gt;      // Create a graphics context that can be used to paint into the backing store.
&gt; 
&gt; This comment is going to be invalid.

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:98
&gt; &gt;      // No available buffer was found, returning null.
&gt; 
&gt; Ditto.

Fixed.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897686</commentid>
    <comment_count>42</comment_count>
    <who name="Jae Hyun Park">jaepark</who>
    <bug_when>2013-06-06 01:51:18 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (From update of attachment 203911 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203911&amp;action=review
&gt; 
&gt; LGTM with nitpicks
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        CoordinatedImageBacking and UpdateAtlas does not asks for the ownership
&gt; 
&gt; does not asks -&gt; do not ask
Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h:81
&gt; &gt; +    virtual bool paintToSurface(const IntSize&amp;, uint32_t&amp; /* atlasID */, IntPoint&amp;, CoordinatedSurface::Client*) = 0;
&gt; 
&gt; No need to comment atlasID
Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:57
&gt; &gt; +
&gt; 
&gt; Remove new line
Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.h:49
&gt; &gt; +    bool paintOnAvailableBuffer(const IntSize&amp;, uint32_t&amp; /* atlasID */, IntPoint&amp; /* offset */, CoordinatedSurface::Client*);
&gt; 
&gt; No need to comment out parameter names
Fixed.

&gt; 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:190
&gt; &gt; +    if (!client)
&gt; &gt; +        return;
&gt; &gt; +
&gt; 
&gt; We should actually assert for the client.
Fixed.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897700</commentid>
    <comment_count>43</comment_count>
      <attachid>203913</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-06 02:43:19 -0700</bug_when>
    <thetext>Comment on attachment 203913
Patch

Clearing flags on attachment: 203913

Committed r151262: &lt;http://trac.webkit.org/changeset/151262&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897701</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-06 02:43:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186539</attachid>
            <date>2013-02-04 21:21:41 -0800</date>
            <delta_ts>2013-02-12 03:04:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130204211925.patch</filename>
            <type>text/plain</type>
            <size>31692</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzllMWIyZjg2OThmNzNk
MTM1ZjQ1MTgxZWEwY2M4YjZkYjdmNzgwMC4uNGNlYmY4OWUyMzAzMjE1MTJjNjYzYTNlN2Q4Mzcy
NWRkYWMzNGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTAyLTA0ICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gcHJlcGFyZSBmb3Ig
V2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODg5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgVGhyZWFk
ZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWZhY3RvcnMg
Q29vcmRpbmF0ZWRTdXJmYWNlIGluIDIgYXJlYXMuCisKKyAgICAgICAgMS4gSXQgaW50cm9kdWNl
cyBDb29yZGluYXRlZEdyYXBoaWNzOjpHcmFwaGljc0NvbnRleHRIb2xkZXIuIE90aGVyCisgICAg
ICAgIGNsYXNzZXMgYWNjZXNzIEdyYXBoaWNzQ29udGV4dCB2aWEgR3JhcGhpY3NDb250ZXh0SG9s
ZGVyLCBpbnN0ZWFkIG9mCisgICAgICAgIGFjY2Vzc2luZyBHcmFwaGljc0NvbnRleHQgZGlyZWN0
bHkuCisKKyAgICAgICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBiZSBpbXBsZW1l
bnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVmZmVyLiBJbWFn
ZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYgYW5kIGNhbm5vdCBwYXNzIGl0cwor
ICAgICAgICBPd25QdHIuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCByZWZhY3RvcnMgQ29vcmRpbmF0
ZWRTdXJmYWNlIHRvIHBhc3MKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0SG9sZGVyLCBhbmQgbWFr
ZSBvdGhlciBjbGFzc2VzIGFjY2VzcyBHcmFwaGljc0NvbnRleHQgdmlhCisgICAgICAgIEdyYXBo
aWNzQ29udGV4dEhvbGRlci4KKworICAgICAgICAyLiBJdCBtb3ZlcyBDb29yZGluYXRlZFN1cmZh
Y2UgaW1wbGVtZW50YXRpb24gdGhhdCB3aWxsIGJlIHNoYXJlZCB3aXRoCisgICAgICAgIFdlYktp
dDEgQ29vcmRpbmF0ZWRTdXJmYWNlIGZyb20gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHRvCisgICAg
ICAgIENvb3JkaW5hdGVkU3VyZmFjZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAg
ICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q29vcmRpbmF0ZWRT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGVHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlVXNpbmdHcmFwaGljc1N1cmZhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNz
Q29udGV4dEhvbGRlcjo6R3JhcGhpY3NDb250ZXh0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkU3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyOjp+R3JhcGhpY3NDb250
ZXh0SG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6R3JhcGhp
Y3NDb250ZXh0SG9sZGVyOjpncmFwaGljc0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAg
KENvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChHcmFwaGljc0NvbnRleHRIb2xkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpzaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6ZmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRTdXJmYWNlOjppc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
VGlsZS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRUaWxlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0
bGFzLmg6CisgICAgICAgIChVcGRhdGVBdGxhcyk6CisKIDIwMTMtMDItMDQgIFdlaSBKYW1lcyAg
PGphbWVzLndlaUBpbnRlbC5jb20+CiAKICAgICAgICAgSGVhcC1idWZmZXItb3ZlcmZsb3cgaW4g
V2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWRj
NTI5Nzg5MGJhODU2NTg4ZjE4OTM3NGJhYjQwOWJjOTQwNDMwMi4uYTQyYjI1OWE5MjhjMTExNWVi
NzNlNWNjZDM0ZDM4NWJhZTZmMmI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEz
LTAyLTA0ICBKYWUgSHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAg
ICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8g
cHJlcGFyZSBmb3IgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODg5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBwcmVwYXJhdGlvbiBwYXRj
aCBmb3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgVGhpcyBwYXRj
aCByZWZhY3RvcnMgQ29vcmRpbmF0ZWRTdXJmYWNlIGluIDIgYXJlYXMuCisKKyAgICAgICAgMS4g
SXQgaW50cm9kdWNlcyBDb29yZGluYXRlZEdyYXBoaWNzOjpHcmFwaGljc0NvbnRleHRIb2xkZXIu
IE90aGVyCisgICAgICAgIGNsYXNzZXMgYWNjZXNzIEdyYXBoaWNzQ29udGV4dCB2aWEgR3JhcGhp
Y3NDb250ZXh0SG9sZGVyLCBpbnN0ZWFkIG9mCisgICAgICAgIGFjY2Vzc2luZyBHcmFwaGljc0Nv
bnRleHQgZGlyZWN0bHkuCisKKyAgICAgICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2Ugd2ls
bCBiZSBpbXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdl
QnVmZmVyLiBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYgYW5kIGNhbm5v
dCBwYXNzIGl0cworICAgICAgICBPd25QdHIuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCByZWZhY3Rv
cnMgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIHBhc3MKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0SG9s
ZGVyLCBhbmQgbWFrZSBvdGhlciBjbGFzc2VzIGFjY2VzcyBHcmFwaGljc0NvbnRleHQgdmlhCisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dEhvbGRlci4KKworICAgICAgICAyLiBJdCBtb3ZlcyBDb29y
ZGluYXRlZFN1cmZhY2UgaW1wbGVtZW50YXRpb24gdGhhdCB3aWxsIGJlIHNoYXJlZCB3aXRoCisg
ICAgICAgIFdlYktpdDEgQ29vcmRpbmF0ZWRTdXJmYWNlIGZyb20gV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlIHRvCisgICAgICAgIENvb3JkaW5hdGVkU3VyZmFjZS4KKworICAgICAgICAqIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEhv
bGRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OmdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6ZW5kUGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6Y29weVRvVGV4dHVyZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaDoKKwogMjAxMy0wMi0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBLaWxsIHN1c3BlbmRBbmltYXRpb24oKSwgcmVzdW1lQW5pbWF0aW9u
KCkgYW5kIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGZyb20gRFJUL1dUUjsgdXNlIEludGVy
bmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAppbmRleCAzNzM2ZjI2MDRjMGMxMDQzOTk5NTdiOThhMjUyNWVlN2RiY2RkOWJi
Li5kNGM4M2U4MzY5MDEzYjk4MWRlNDBiZjZiYzllZGI4NTY3YjMzMTE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAt
Nzg0LDcgKzc4NCw3IEBAIENvbG9yIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNr
aW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgIHJldHVybiBjb250ZW50c09wYXF1
ZSgpID8gQ29sb3I6OndoaXRlIDogQ29sb3I6OnRyYW5zcGFyZW50OwogfQogCi1QYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRV
cGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zm
c2V0KQorUGFzc093blB0cjxDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNzQ29udGV4dEhvbGRl
cj4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIEFT
U0VSVChtX2Nvb3JkaW5hdG9yKTsKICAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGlu
Z0xheWVyQ2hhbmdlcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBhNTUxZDM1MTFhZGE2NDRlYmY3MzJiZWY2MmU4NmFk
OWQ4N2YxYTIwLi4zNzAzMTJkM2YwMTIwNDk0OWM4MjFjM2RhOTIyYTdlNThkZjNjNTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXll
cihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNG
aXhlZExheWVycygpID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8Q29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI+IGJlZ2lu
Q29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywg
dWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgPSAwOwogfTsKIAogY2xhc3MgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXIKQEAgLTE1NCw3ICsxNTQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBj
b25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRh
dGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCB1aW50
MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI+IGJlZ2luQ29udGVu
dFVwZGF0ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmNwcAppbmRleCAxMjhiYWJlMjk4ZjY2Y2JjMjc2OWNmNmZmOGVhOTgyMjlk
NTE1NTc3Li4zOGNlMjMzNmMxY2NlN2ZlYjFhZGNkM2NlYTIwNWZlZTU1NGVkZDM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAK
QEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUo
KQogICAgIH0KIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBtX2ltYWdlLT5z
aXplKCkpOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX3N1cmZhY2Ut
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9p
bWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgcmVjdCk7CisgICAgT3duUHRy
PENvb3JkaW5hdGVkU3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyPiBncmFwaGljc0NvbnRl
eHRIb2xkZXIgPSBtX3N1cmZhY2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dEhvbGRlcihyZWN0KTsK
KyAgICBncmFwaGljc0NvbnRleHRIb2xkZXItPmdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2Uo
bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgcmVjdCk7CiAKICAgICBt
X25hdGl2ZUltYWdlUHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRl
eCBmOWE5NDIzNzI3NDM1YTQ1ODRkNzViZDAwMzhhYjM2ZDcxZjBhMzZmLi5kYmNkMmEyOWYwZDU1
ZjEyMmY4MzVlNzRkMTI3OWY0MWZmZTc1NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMjgsNiArMjgsMTAgQEAKIAogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyR0wuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENv
b3JkaW5hdGVkU3VyZmFjZTo6RmFjdG9yeSogQ29vcmRpbmF0ZWRTdXJmYWNlOjpzX2ZhY3Rvcnkg
PSAwOwpAQCAtNDMsNiArNDcsNzYgQEAgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IENv
b3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEYKICAgICByZXR1
cm4gc19mYWN0b3J5KHNpemUsIGZsYWdzKTsKIH0KIAorQ29vcmRpbmF0ZWRTdXJmYWNlOjpDb29y
ZGluYXRlZFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MpCisgICAgOiBt
X3NpemUoc2l6ZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7Cit9CisKKyNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKK0Nvb3JkaW5hdGVkU3VyZmFjZTo6Q29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0
IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwgbV9mbGFncyhmbGFncykKKyAgICAs
IG1fZ3JhcGhpY3NTdXJmYWNlKHN1cmZhY2UpCit7Cit9CisKK1Bhc3NSZWZQdHI8R3JhcGhpY3NT
dXJmYWNlPiBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzU3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplLCBGbGFncyBmbGFncykKK3sKKyAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdz
IHN1cmZhY2VGbGFncyA9CisgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2Fy
ZVdyaXRlCisgICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0NvcHlUb1RleHR1cmUK
KyAgICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKKworICAgIGlmIChm
bGFncyAmIFN1cHBvcnRzQWxwaGEpCisgICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1
cmZhY2U6OlN1cHBvcnRzQWxwaGE7CisKKyAgICByZXR1cm4gR3JhcGhpY3NTdXJmYWNlOjpjcmVh
dGUoc2l6ZSwgc3VyZmFjZUZsYWdzKTsKK30KKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKK2Jv
b2wgQ29vcmRpbmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlVXNpbmdHcmFwaGljc1N1cmZhY2Uo
Qml0bWFwVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgc291cmNlT2Zmc2V0KQoreworICAgIGlmICghaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFj
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZUdM
PiB0ZXh0dXJlR0wgPSB0b0JpdG1hcFRleHR1cmVHTCh0ZXh0dXJlKTsKKyAgICBpZiAodGV4dHVy
ZUdMKSB7CisgICAgICAgIHVpbnQzMl90IHRleHR1cmVJRCA9IHRleHR1cmVHTC0+aWQoKTsKKyAg
ICAgICAgdWludDMyX3QgdGV4dHVyZVRhcmdldCA9IHRleHR1cmVHTC0+dGV4dHVyZVRhcmdldCgp
OworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJlKHRleHR1cmVUYXJn
ZXQsIHRleHR1cmVJRCwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gbV9ncmFwaGljc1N1cmZhY2Ut
PmNyZWF0ZVJlYWRPbmx5SW1hZ2UoSW50UmVjdChzb3VyY2VPZmZzZXQsIHRhcmdldC5zaXplKCkp
KTsKKyAgICB0ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5nZXQoKSwgdGFyZ2V0LCBJbnRQ
b2ludDo6emVybygpLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDYW5Nb2RpZnlPcmlnaW5hbEltYWdl
RGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVS
KQorI2VuZGlmIC8vIFVTRShHUkFQSElDU19TVVJGQUNFKQorCitQYXNzT3duUHRyPENvb3JkaW5h
dGVkU3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyPiBDb29yZGluYXRlZFN1cmZhY2U6Okdy
YXBoaWNzQ29udGV4dEhvbGRlcjo6Y3JlYXRlKENvb3JkaW5hdGVkU3VyZmFjZSogc3VyZmFjZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvb3JkaW5hdGVkU3VyZmFjZTo6R3JhcGhpY3ND
b250ZXh0SG9sZGVyKHN1cmZhY2UpKTsKK30KKworQ29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGlj
c0NvbnRleHRIb2xkZXI6OkdyYXBoaWNzQ29udGV4dEhvbGRlcihDb29yZGluYXRlZFN1cmZhY2Uq
IHN1cmZhY2UpCisgICAgOiBtX3N1cmZhY2Uoc3VyZmFjZSkKK3sKK30KKworQ29vcmRpbmF0ZWRT
dXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI6On5HcmFwaGljc0NvbnRleHRIb2xkZXIoKQor
eworICAgIEFTU0VSVChtX3N1cmZhY2UpOworICAgIG1fc3VyZmFjZS0+ZW5kUGFpbnQoKTsKK30K
KworR3JhcGhpY3NDb250ZXh0KiBDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNzQ29udGV4dEhv
bGRlcjo6Z3JhcGhpY3NDb250ZXh0KCkKK3sKKyAgICBBU1NFUlQobV9zdXJmYWNlKTsKKyAgICBy
ZXR1cm4gbV9zdXJmYWNlLT5ncmFwaGljc0NvbnRleHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDMwNzdjM2MwOWM0YWIw
NjdmZmI5ODY2NmI0MGY2MDc1OTc4NWU1ZDYuLjljNzY0YjY3NDVmNzA0YzQ3MTM4MGI5Y2I3MjBl
MjFmMzhmODZkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJm
YWNlLmgKQEAgLTI3LDEyICsyNywyOCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKKyNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKKyNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBUZXh0dXJlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogCiBjbGFzcyBDb29yZGluYXRlZFN1cmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q29vcmRpbmF0ZWRTdXJmYWNlPiB7CiBwdWJsaWM6CisKKyAgICBjbGFzcyBHcmFwaGljc0Nv
bnRleHRIb2xkZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0SG9sZGVyPiBjcmVhdGUoQ29vcmRpbmF0ZWRTdXJmYWNlKik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KCk7CisgICAgICAgIH5HcmFwaGljc0Nv
bnRleHRIb2xkZXIoKTsKKyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBHcmFwaGljc0Nv
bnRleHRIb2xkZXIoQ29vcmRpbmF0ZWRTdXJmYWNlKik7CisgICAgICAgIENvb3JkaW5hdGVkU3Vy
ZmFjZSogbV9zdXJmYWNlOworICAgICAgICBmcmllbmQgY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNl
OworICAgIH07CisKICAgICBlbnVtIEZsYWcgewogICAgICAgICBOb0ZsYWdzID0gMCwKICAgICAg
ICAgU3VwcG9ydHNBbHBoYSA9IDEgPDwgMCwKQEAgLTQ2LDIwICs2Miw0MiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRTdXJmYWNlKCkgeyB9CiAKICAgICBib29sIHN1cHBvcnRz
QWxwaGEoKSBjb25zdCB7IHJldHVybiBmbGFncygpICYgU3VwcG9ydHNBbHBoYTsgfQotICAgIHZp
cnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogCiAgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29udGV4dCB0
aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgdmly
dHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNv
bnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dEhvbGRlcj4gY3JlYXRlR3JhcGhpY3NDb250ZXh0SG9sZGVyKGNvbnN0IEludFJlY3QmKSA9IDA7
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1
cmUoUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25z
dCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CisgICAgQ29vcmRpbmF0ZWRTdXJmYWNl
KGNvbnN0IEludFNpemUmLCBGbGFncyk7CisKKyAgICBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fZmxhZ3M7IH0KKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIENvb3JkaW5h
dGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiwgRmxhZ3MsIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJm
YWNlPik7CisgICAgYm9vbCBpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gISFtX2dyYXBoaWNzU3VyZmFjZTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNz
U3VyZmFjZT4gY3JlYXRlR3JhcGhpY3NTdXJmYWNlKGNvbnN0IEludFNpemUmLCBGbGFncyk7Cisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGJvb2wgY29weVRvVGV4dHVyZVVzaW5nR3JhcGhp
Y3NTdXJmYWNlKEJpdG1hcFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IElu
dFBvaW50JiBzb3VyY2VPZmZzZXQpOworI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKKyNl
bmRpZiAvLyBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKworICAgIEludFNpemUgbV9zaXplOworICAg
IEZsYWdzIG1fZmxhZ3M7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgUmVmUHRyPEdy
YXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGYWN0b3J5KiBzX2ZhY3Rvcnk7CisKKyAgICB2
aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBlbmRQYWludCgpID0gMDsKKworICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRl
eHRIb2xkZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDlmOWQzNGU2MDViMGUyYjI1MjY4YmFh
NjZjNDgwNWRiZWZhMjA5MzEuLjUwMDk1MTEwMzcxMTFjMGZhYzAwODk1YjExODA1NDQ1NmNmYmE4
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCkBAIC03
MywxNyArNzMsMTcgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFj
a0J1ZmZlcigpCiAgICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKIAogICAgIFN1cmZh
Y2VVcGRhdGVJbmZvIHVwZGF0ZUluZm87Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0ID0gbV9jbGllbnQtPmJlZ2luQ29udGVudFVwZGF0ZShtX2RpcnR5UmVjdC5z
aXplKCksIHVwZGF0ZUluZm8uYXRsYXNJRCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKLSAg
ICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKKyAgICBPd25QdHI8Q29vcmRpbmF0ZWRTdXJmYWNlOjpH
cmFwaGljc0NvbnRleHRIb2xkZXI+IGdyYXBoaWNzQ29udGV4dEhvbGRlciA9IG1fY2xpZW50LT5i
ZWdpbkNvbnRlbnRVcGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQs
IHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHRIb2xk
ZXIpCiAgICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPnRyYW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250
ZW50c1NjYWxlKCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSkpOwotICAg
IG1fdGlsZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZVBhaW50KGdy
YXBoaWNzQ29udGV4dC5nZXQoKSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyht
X2RpcnR5UmVjdCkpOworICAgIGdyYXBoaWNzQ29udGV4dEhvbGRlci0+Z3JhcGhpY3NDb250ZXh0
KCktPnRyYW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKKyAgICBn
cmFwaGljc0NvbnRleHRIb2xkZXItPmdyYXBoaWNzQ29udGV4dCgpLT5zY2FsZShGbG9hdFNpemUo
bV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgpLCBtX3RpbGVkQmFja2luZ1N0b3Jl
LT5jb250ZW50c1NjYWxlKCkpKTsKKyAgICBtX3RpbGVkQmFja2luZ1N0b3JlLT5jbGllbnQoKS0+
dGlsZWRCYWNraW5nU3RvcmVQYWludChncmFwaGljc0NvbnRleHRIb2xkZXItPmdyYXBoaWNzQ29u
dGV4dCgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRzKG1fZGlydHlSZWN0KSk7
CiAKICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3QgPSBtX2RpcnR5UmVjdDsKICAgICB1cGRhdGVJ
bmZvLnVwZGF0ZVJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwogICAgIHVwZGF0
ZUluZm8uc2NhbGVGYWN0b3IgPSBtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCk7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKKyAgICBncmFwaGljc0NvbnRleHRIb2xk
ZXIucmVsZWFzZSgpOwogCiAgICAgc3RhdGljIHVpbnQzMl90IGlkID0gMTsKICAgICBpZiAobV9J
RCA9PSBJbnZhbGlkQ29vcmRpbmF0ZWRUaWxlSUQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZFRpbGUuaAppbmRleCBiZTk5YmZkYWZlZjQ5MWRhZDNhMzZmZmM1YjIzZjQ0NDdk
YmVlNDVmLi4zZjg5OTJiNjU2NjAzZWIxZDg5ZTQyZGViOTY5MWIxNjdiOTcyN2M5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRUaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU3Vy
ZmFjZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJUaWxlLmgiCiAjaW5jbHVk
ZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTc1LDcgKzc2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxl
KHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgPSAw
OwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVw
ZGF0ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgPSAwOwor
ICAgIHZpcnR1YWwgUGFzc093blB0cjxDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNzQ29udGV4
dEhvbGRlcj4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRs
YXNJRCwgSW50UG9pbnQmKSA9IDA7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZFRpbGVCYWNrZW5k
IDogcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1VwZGF0ZUF0bGFzLmNwcAppbmRleCAzNjRmMDY4NzEwODJiNThmY2JkODNhMGVmMzE0NTBiZTQ4
MDA4NDhiLi4xZDE1MjM5OTVmMTBjMTI2YjUyYzAwYjZiZmRmZTA1ODczYTI3YTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBV
cGRhdGVBdGxhczo6ZGlkU3dhcEJ1ZmZlcnMoKQogICAgIG1fYXJlYUFsbG9jYXRvci5jbGVhcigp
OwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFp
bnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgSW50UG9pbnQmIG9mZnNldCkKK1Bhc3NPd25QdHI8Q29vcmRpbmF0ZWRTdXJmYWNlOjpH
cmFwaGljc0NvbnRleHRIb2xkZXI+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFi
bGVCdWZmZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IEludFNpemUmIHNpemUsIEludFBvaW50
JiBvZmZzZXQpCiB7CiAgICAgbV9pbmFjdGl2aXR5SW5TZWNvbmRzID0gMDsKICAgICBidWlsZExh
eW91dElmTmVlZGVkKCk7CkBAIC03MCwyNCArNzAsMjQgQEAgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMy
X3QKIAogICAgIC8vIE5vIGF2YWlsYWJsZSBidWZmZXIgd2FzIGZvdW5kLCByZXR1cm5pbmcgbnVs
bC4KICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI+KCk7CiAKICAgICBpZiAoIW1fc3VyZmFjZSkK
LSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PigpOworICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNzQ29udGV4dEhvbGRl
cj4oKTsKIAogICAgIGF0bGFzSUQgPSBtX0lEOwogCiAgICAgLy8gRklYTUU6IFVzZSB0cmktc3Rh
dGUgYnVmZmVycywgdG8gYWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5s
b2NhdGlvbigpOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9
IG1fc3VyZmFjZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOworICAgIE93blB0cjxDb29y
ZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNzQ29udGV4dEhvbGRlcj4gZ3JhcGhpY3NDb250ZXh0SG9s
ZGVyID0gbV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHRIb2xkZXIocmVjdCk7CiAKICAg
ICBpZiAoc3VwcG9ydHNBbHBoYSgpKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQt
PmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgc2l6ZSksIENvbG9yOjp0cmFuc3Bh
cmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICBncmFwaGlj
c0NvbnRleHRIb2xkZXItPmdyYXBoaWNzQ29udGV4dCgpLT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlQ29weSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dEhvbGRlci0+Z3JhcGhpY3ND
b250ZXh0KCktPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgc2l6ZSksIENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dEhvbGRlci0+Z3JhcGhpY3NDb250ZXh0KCktPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVTb3VyY2VPdmVyKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0LnJl
bGVhc2UoKTsKKyAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0SG9sZGVyLnJlbGVhc2UoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMu
aAppbmRleCA0OGE2YmY4NDRhNDkwZjdmZDJjMzlhMDQyNGUzMzBmZGRiMTZkNzhiLi5mYjhmNmU5
ZGEzYzE3Y2U4MDc5YzcyNjlkNDg2NjQ4N2FhMjFlMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VXBkYXRlQXRsYXMuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CiAKICAgICAvLyBS
ZXR1cm5zIGEgbnVsbCBwb2ludGVyIG9mIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIuCi0g
ICAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1
ZmZlcih1aW50MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYsIEludFBvaW50JiBvZmZzZXQp
OworICAgIFBhc3NPd25QdHI8Q29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xk
ZXI+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50MzJfdCYgYXRsYXNJRCwgY29u
c3QgSW50U2l6ZSYsIEludFBvaW50JiBvZmZzZXQpOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMo
KTsKICAgICBib29sIHN1cHBvcnRzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnN1
cHBvcnRzQWxwaGEoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcApp
bmRleCA1MmI3ZjZkMmMxNDQzYTQ3OTc5MmU2ODA1OTNlYjY4YzBlMDRlNjk1Li5mZTZmN2IwYWFh
ZGY3NjJkZjhkMTU3YjZiZGExNWFiNjc3YzMyNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5h
dGVkU3VyZmFjZS5jcHAKQEAgLTg0LDE3ICs4NCw5IEBAIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0
ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBz
CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogewotICAgIEdyYXBo
aWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KLSAgICAgICAgR3JhcGhpY3NTdXJmYWNl
OjpTdXBwb3J0c1NvZnR3YXJlV3JpdGUKLSAgICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBv
cnRzQ29weVRvVGV4dHVyZQotICAgICAgICB8IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFy
aW5nOwotCi0gICAgaWYgKGZsYWdzICYgU3VwcG9ydHNBbHBoYSkKLSAgICAgICAgc3VyZmFjZUZs
YWdzIHw9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNBbHBoYTsKLQogICAgIC8vIFRoaXMgbWln
aHQgcmV0dXJuIG51bGwsIGlmIHRoZSBzeXN0ZW0gaXMgdW5hYmxlIHRvIHByb3ZpZGUgYSBuZXcg
Z3JhcGhpY3Mgc3VyZmFjZS4KICAgICAvLyBJbiB0aGF0IGNhc2UsIHRoaXMgZnVuY3Rpb24gd291
bGQgcmV0dXJuIG51bGwgYW5kIGFsbG93IGZhbGxpbmcgYmFjayB0byBTaGFyZWFibGVCaXRtYXAu
Ci0gICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6
Y3JlYXRlKHNpemUsIHN1cmZhY2VGbGFncyk7CisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4g
c3VyZmFjZSA9IGNyZWF0ZUdyYXBoaWNzU3VyZmFjZShzaXplLCBmbGFncyk7CiAgICAgaWYgKCFz
dXJmYWNlKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTAzLDE4ICs5NSw0OSBAQCBQYXNzUmVm
UHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZShjb25zdAogfQogI2VuZGlmCiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChj
b25zdCBJbnRSZWN0JiByZWN0KQorUGFzc093blB0cjxDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBo
aWNzQ29udGV4dEhvbGRlcj4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRIb2xkZXIoY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKLSAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpKQotICAgICAgICByZXR1
cm4gbV9ncmFwaGljc1N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCwgMCAvKiBXcml0ZSB3aXRob3V0
IHJldGFpbmluZyBwaXhlbHMqLyk7CisgICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2Uo
KSkgeworICAgICAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1fZ3JhcGhpY3NTdXJmYWNlLT5iZWdp
blBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5pbmcgcGl4ZWxzKi8pOworICAg
ICAgICByZXR1cm4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI6OmNy
ZWF0ZSh0aGlzKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIEFTU0VSVChtX2JpdG1hcCk7Ci0gICAg
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9iaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChyZWN0KTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOwotICAgIHJl
dHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworICAgIGlmICghbV9ncmFwaGljc0NvbnRl
eHQpIHsKKyAgICAgICAgQVNTRVJUKG1fYml0bWFwKTsKKyAgICAgICAgbV9ncmFwaGljc0NvbnRl
eHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgfQorCisgICAgT3du
UHRyPENvb3JkaW5hdGVkU3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyPiBncmFwaGljc0Nv
bnRleHRIb2xkZXIgPSBDb29yZGluYXRlZFN1cmZhY2U6OkdyYXBoaWNzQ29udGV4dEhvbGRlcjo6
Y3JlYXRlKHRoaXMpOworCisgICAgZ3JhcGhpY3NDb250ZXh0SG9sZGVyLT5ncmFwaGljc0NvbnRl
eHQoKS0+c2F2ZSgpOworICAgIGdyYXBoaWNzQ29udGV4dEhvbGRlci0+Z3JhcGhpY3NDb250ZXh0
KCktPmNsaXAocmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0SG9sZGVyLT5ncmFwaGljc0NvbnRl
eHQoKS0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgcmV0dXJuIGdyYXBoaWNz
Q29udGV4dEhvbGRlci5yZWxlYXNlKCk7Cit9CisKK0dyYXBoaWNzQ29udGV4dCogV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpncmFwaGljc0NvbnRleHQoKQoreworICAgIGlmICghbV9ncmFwaGljc0Nv
bnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0
LmdldCgpOworfQorCit2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6ZW5kUGFpbnQoKQorewor
ICAgIGlmICghbV9ncmFwaGljc0NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQorICAgIGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpIHsK
KyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgbV9ncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAogUGFz
c1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3Ms
IFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCkBAIC0xMjMsMTcgKzE0NiwxNCBA
QCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgcwogfQogCiBXZWJDb29yZGluYXRlZFN1cmZhY2U6Oldl
YkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZh
Y2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQotICAg
IDogbV9zaXplKHNpemUpCi0gICAgLCBtX2ZsYWdzKGZsYWdzKQorICAgIDogQ29vcmRpbmF0ZWRT
dXJmYWNlKHNpemUsIGZsYWdzKQogICAgICwgbV9iaXRtYXAoYml0bWFwKQogewogfQogCiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5h
dGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZh
Y2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gc3Vy
ZmFjZSkKLSAgICA6IG1fc2l6ZShzaXplKQotICAgICwgbV9mbGFncyhmbGFncykKLSAgICAsIG1f
Z3JhcGhpY3NTdXJmYWNlKHN1cmZhY2UpCisgICAgOiBDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwg
ZmxhZ3MsIHN1cmZhY2UpCiB7CiB9CiAKQEAgLTE4OSwxOSArMjA5LDggQEAgdm9pZCBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBU
ZXh0dXJlPiBwYXMKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZShwYXNzVGV4dHVy
ZSk7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBpZiAoaXNCYWNrZWRCeUdyYXBo
aWNzU3VyZmFjZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVH
TCA9IHRvQml0bWFwVGV4dHVyZUdMKHRleHR1cmUuZ2V0KCkpOwotICAgICAgICBpZiAodGV4dHVy
ZUdMKSB7Ci0gICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7
Ci0gICAgICAgICAgICB1aW50MzJfdCB0ZXh0dXJlVGFyZ2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJl
VGFyZ2V0KCk7Ci0gICAgICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIHRleHR1cmVJRCwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IG1fZ3JhcGhpY3NTdXJmYWNlLT5jcmVhdGVSZWFkT25seUltYWdlKEludFJlY3Qoc291cmNlT2Zm
c2V0LCB0YXJnZXQuc2l6ZSgpKSk7Ci0gICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGlt
YWdlLmdldCgpLCB0YXJnZXQsIEludFBvaW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0
ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICBpZiAoY29weVRvVGV4dHVyZVVzaW5n
R3JhcGhpY3NTdXJmYWNlKHRleHR1cmUuZ2V0KCksIHRhcmdldCwgc291cmNlT2Zmc2V0KSkKICAg
ICAgICAgcmV0dXJuOwotICAgIH0KICNlbmRpZgogCiAgICAgQVNTRVJUKG1fYml0bWFwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNv
b3JkaW5hdGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggNTM4NmE5MTdlNTI2ZWI0YTNkNThk
NzgyMmI5MWNlMDA5ZWIyNTEzYS4uYmJjYTEzZTZhZTI1NjBkOGJlMjRkNWIzZjU4NjE4ZmM1NzM1
NmYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgKQEAgLTI1LDE1ICsyNSw2
IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29y
ZGluYXRlZFN1cmZhY2UuaD4KIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotI2luY2x1ZGUg
IkdyYXBoaWNzU3VyZmFjZS5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IEJpdG1hcFRleHR1cmU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci19Ci0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJDb29yZGluYXRlZFN1cmZhY2UgOiBwdWJsaWMgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlIHsKQEAgLTcxLDkgKzYyLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKCk7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFNpemUgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgdmly
dHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3ND
b250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8Q29vcmRpbmF0ZWRTdXJmYWNlOjpHcmFwaGljc0NvbnRleHRIb2xkZXI+IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dEhvbGRlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1
cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSBPVkVS
UklERTsKQEAgLTgyLDggKzcxLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb29yZGlu
YXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4pOwogCi0gICAgdmlydHVhbCBGbGFncyBmbGFncygpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fZmxhZ3M7IH0KLQogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTaGFyZWFibGVCaXRtYXAuCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOwogCkBAIC05
MywxNyArODAsMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb29yZGlu
YXRlZFN1cmZhY2U+IGNyZWF0ZVdpdGhTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncyk7CiAgICAgLy8gQ3JlYXRlIGEgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIHJlZmVyZW5jaW5n
IGFuIGV4aXN0aW5nIEdyYXBoaWNzU3VyZmFjZS4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
b29yZGluYXRlZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3Ms
IFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7Ci0KLSAgICBib29sIGlzQmFj
a2VkQnlHcmFwaGljc1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiAhIW1fZ3JhcGhpY3NTdXJmYWNl
OyB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwotICAgIEZsYWdzIG1f
ZmxhZ3M7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludCgpIE9WRVJSSURFOwor
CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9iaXRtYXA7CiAKLSNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBo
aWNzU3VyZmFjZTsKLSNlbmRpZgorICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IG1fZ3JhcGhpY3NDb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cAppbmRleCA2ZTVmYjU3MjMxYzliODk1ZjJmMDZlYTQxNTEzMDE2OTg4MTBhNDVjLi45N2IxYTk4
MzdiY2M1YzE5NGRkNGI0ZGZjNzIyOTBmMzg3MDQ0YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg0MSwx
NiArODQxLDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdT
dG9yZXMoKQogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRh
dGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywg
dWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCitQYXNzT3duUHRyPENvb3JkaW5h
dGVkU3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyPiBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzIGZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkK
IHsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CisgICAgT3du
UHRyPENvb3JkaW5hdGVkU3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyPiBncmFwaGljc0Nv
bnRleHRIb2xkZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNl
cy5zaXplKCk7ICsraSkgewogICAgICAgICBVcGRhdGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0
bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IChm
bGFncyAmIENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSkpIHsKICAgICAgICAgICAg
IC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVy
IHNwYWNlLgotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRp
bmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwotICAgICAgICAgICAg
aWYgKGdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3JhcGhpY3NDb250
ZXh0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dEhvbGRlciA9IGF0bGFz
LT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0KTsK
KyAgICAgICAgICAgIGlmIChncmFwaGljc0NvbnRleHRIb2xkZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGdyYXBoaWNzQ29udGV4dEhvbGRlci5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmgKaW5kZXggNzI5N2VlZDgxZTA1YTJlZTBmMDA1ZWVhM2RmODE4ODVmZWMzZjJiNS4u
ZDViMTdhNzllNTBiZWYzZGM4ZjAwOTlhYTcwNzM1ZmMyYmQwMDg5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4
ZWRMYXllcnMoKTsKIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0bGFzSUQsIFdlYkNvcmU6
OkludFBvaW50Jik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVk
U3VyZmFjZTo6R3JhcGhpY3NDb250ZXh0SG9sZGVyPiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVp
bnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCiAgICAgLy8gVXBkYXRlQXRs
YXNDbGllbnQKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRs
YXNJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187820</attachid>
            <date>2013-02-12 03:04:33 -0800</date>
            <delta_ts>2013-02-12 03:23:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130212030138.patch</filename>
            <type>text/plain</type>
            <size>22210</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxOWZhMTBlY2I2MTQx
ZTQyMTA4OGQwNmI0YTk5NzBlZGY2NDliYi4uZjAwNTQ5MWVjOTZjYjQ0NDllYzNiOGQyZTUyZDVj
NDRmZjU3OWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAyLTEyICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gcHJlcGFyZSBmb3Ig
V2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODg5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgVGhyZWFk
ZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZWZhY3RvcnMg
cmVuYW1lcyBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCB0bworICAg
ICAgICBDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQgYW5kIHBhc3NlcyBHcmFwaGljc0Nv
bnRleHQqIGluc3RlYWQgb2YKKyAgICAgICAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+LiBN
b3Jlb3ZlciwgaXQgYWRkcyBDb29yZGluYXRlZFN1cmZhY2U6OmVuZFBhaW50IHNvCisgICAgICAg
IHRoYXQgVXBkYXRlQXRsYXMgYW5kIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nIGNhbGxzIGJlZ2lu
UGFpbnQgYW5kIGVuZFBhaW50CisgICAgICAgIGV4cGxpY2l0bHkuCisKKyAgICAgICAgV2ViS2l0
MSBDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBiZSBpbXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1
cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVmZmVyLiBTaW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdy
YXBoaWNzQ29udGV4dCBpdHNlbGYsIGl0IGNhbm5vdCBwYXNzCisgICAgICAgIE93blB0ciBvZiBH
cmFwaGljc0NvbnRleHQuIFRoZXJlZm9yZSwgdGhpcyByZWZhY3RvcmluZyBpcyBuZWNlc3Nhcnkg
Zm9yCisgICAgICAgIGltcGxlbWVudGluZyBDb29yZGluYXRlZCBTdXJmYWNlIG9mIFdlYktpdDEu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6ZGlkRW5kQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQp
OgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
U3VyZmFjZS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGls
ZS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRUaWxlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZUF0bGFzOjplbmRQYWlu
dGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Vw
ZGF0ZUF0bGFzLmg6CisgICAgICAgIChVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJDb3JlOjpV
cGRhdGVBdGxhczo6aWQpOgorCiAyMDEzLTAyLTExICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxh
QGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiByZW1vdmUg
dGhlIERpZENoYW5nZVNjcm9sbFBvc2l0aW9uIG1lc3NhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWIzMTcx
NGVkNzc4MzczNTBiMjY0NWVhYWExN2FkODczZTRjMWNkMi4uMGQ0NTgwMTUxZTFiNjMwMDI4NWM2
NWEzNGNkNmIzMmY4NDYxOGYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAy
LTEyICBKYWUgSHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAg
Q29vcmRpbmF0ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gcHJl
cGFyZSBmb3IgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODg5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBm
b3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgVGhpcyBwYXRjaCBy
ZWZhY3RvcnMgcmVuYW1lcyBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCB0bworICAgICAgICBDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQgYW5kIHBhc3NlcyBH
cmFwaGljc0NvbnRleHQqIGluc3RlYWQgb2YKKyAgICAgICAgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+LiBNb3Jlb3ZlciwgaXQgYWRkcyBDb29yZGluYXRlZFN1cmZhY2U6OmVuZFBhaW50IHNv
CisgICAgICAgIHRoYXQgVXBkYXRlQXRsYXMgYW5kIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nIGNh
bGxzIGJlZ2luUGFpbnQgYW5kIGVuZFBhaW50CisgICAgICAgIGV4cGxpY2l0bHkuCisKKyAgICAg
ICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBiZSBpbXBsZW1lbnRlZCB1c2luZyBH
cmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVmZmVyLiBTaW5jZSBJbWFnZUJ1ZmZl
ciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYsIGl0IGNhbm5vdCBwYXNzCisgICAgICAgIE93
blB0ciBvZiBHcmFwaGljc0NvbnRleHQuIFRoZXJlZm9yZSwgdGhpcyByZWZhY3RvcmluZyBpcyBu
ZWNlc3NhcnkgZm9yCisgICAgICAgIGltcGxlbWVudGluZyBDb29yZGluYXRlZCBTdXJmYWNlIG9m
IFdlYktpdDEuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29y
ZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmJlZ2luUGFpbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjplbmRQYWludCk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRl
bnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRp
ZEVuZENvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aDoKKwogMjAxMy0wMi0xMSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5l
dD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogcmVtb3ZlIHRoZSBEaWRDaGFuZ2VT
Y3JvbGxQb3NpdGlvbiBtZXNzYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAwZWU5N2NkYzAwYmFlNTllZTg0ZGVi
Njk2NDRlNDViYjM3MTIxM2IyLi42ZDU2OGQwM2ZhMmM1NjM0MWJkODc5NjYzMGFlYmNmMWQxNDU5
MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtNzkxLDEzICs3OTEsMjAgQEAgQ29sb3IgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAg
cmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkgPyBDb2xvcjo6d2hpdGUgOiBDb2xvcjo6dHJhbnNwYXJl
bnQ7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYg
YXRsYXMsIEludFBvaW50JiBvZmZzZXQpCitHcmFwaGljc0NvbnRleHQqIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQz
Ml90JiBhdGxhcywgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQobV9jb29yZGluYXRv
cik7CiAgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSk7
CiAgICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBjb250
ZW50c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRTdXJmYWNlOjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRT
dXJmYWNlOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0KTsKIH0KIAordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmRpZEVuZENvbnRlbnRVcGRhdGUoY29uc3QgdWludDMyX3QmIGF0
bGFzSUQpCit7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3IpOworICAgIEFTU0VSVChtX2Nvb3Jk
aW5hdG9yLT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkpOworICAgIHJldHVybiBtX2Nvb3JkaW5h
dG9yLT5kaWRFbmRDb250ZW50VXBkYXRlKGF0bGFzSUQpOworfQorCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VV
cGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKIHsKICAgICBB
U1NFUlQobV9jb29yZGluYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggYTNmMGEwOGZkOTgyMTVkMTAxNmQyNzg1OWY1
Mjc1ODMzNDAyMGZhMi4uYjI1OWNmZWRhY2VhMmEwNTdiYWRjZTI4OWViYTJhNDMwMjQ1OTJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkg
Y29uc3QgPSAwOwogCi0gICAgLy8gQ29vcmRpbmF0ZWRUaWxlQ2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0
IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3Qg
U3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKSA9IDA7CkBA
IC03Miw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRp
b25zKENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKikgPSAwOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2lu
Q29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywg
dWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3ND
b250ZXh0KiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kQ29udGVudFVwZGF0ZShjb25zdCB1aW50MzJfdCYgYXRsYXNJRCkgPSAw
OwogfTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIDogcHVibGljIEdyYXBoaWNz
TGF5ZXIKQEAgLTE1Myw3ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0
aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBk
YXRlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0
IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5kQ29udGVudFVwZGF0ZShjb25zdCB1aW50MzJfdCYgYXRsYXNJRCkg
T1ZFUlJJREU7CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCAxMjhiYWJlMjk4ZjY2Y2JjMjc2OWNmNmZmOGVhOTgy
MjlkNTE1NTc3Li5hOTFkODA0YjhlMDI5ZGQ2NDdjYWFhZmQ5ODFmOTM3MWIwZGQ0YjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5j
cHAKQEAgLTEwOCw4ICsxMDgsOSBAQCB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRh
dGUoKQogICAgIH0KIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBtX2ltYWdl
LT5zaXplKCkpOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX3N1cmZh
Y2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQgPSBtX3N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCk7CiAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOworICAg
IG1fc3VyZmFjZS0+ZW5kUGFpbnQoKTsKIAogICAgIG1fbmF0aXZlSW1hZ2VQdHIgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggMzA3N2MzYzA5YzRhYjA2N2ZmYjk4NjY2YjQw
ZjYwNzU5Nzg1ZTVkNi4uNTBiNmJmYmFkNjhlMGIyN2RiYzI1NzcxMWUxNGJmY2U1YWZlZjM1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMjIs
MTQgKzIyLDE0IEBACiAjZGVmaW5lIENvb3JkaW5hdGVkU3VyZmFjZV9oCiAKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1h
cFRleHR1cmU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIGNsYXNzIENvb3JkaW5hdGVkU3Vy
ZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+IHsK
IHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50U2l6ZSBz
aXplKCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29udGV4dCB0aGF0
IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgdmlydHVh
bCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0
IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGJlZ2luUGFpbnQo
Y29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnQoKSA9IDA7CiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUo
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJ
bnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CisgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGljc0NvbnRleHQ7CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIENvb3JkaW5hdGVkU3VyZmFjZTo6RmFjdG9yeSogc19mYWN0b3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAppbmRleCA5ZjlkMzRlNjA1YjBlMmIy
NTI2OGJhYTY2YzQ4MDVkYmVmYTIwOTMxLi4xMzZiZjYwMjk4NjM3MmVhYjc2MTc2Y2JlNDg0Y2Q3
MWVhN2VkZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNw
cApAQCAtNzMsMTcgKzczLDE5IEBAIFZlY3RvcjxJbnRSZWN0PiBDb29yZGluYXRlZFRpbGU6OnVw
ZGF0ZUJhY2tCdWZmZXIoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CiAKICAg
ICBTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5iZWdpbkNvbnRlbnRVcGRhdGUobV9kaXJ0
eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNl
dCk7CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5i
ZWdpbkNvbnRlbnRVcGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQs
IHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCk7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAg
ICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKICAgICBncmFwaGljc0NvbnRleHQtPnRy
YW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1Nj
YWxlKCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSkpOwotICAgIG1fdGls
ZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZVBhaW50KGdyYXBoaWNz
Q29udGV4dC5nZXQoKSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2RpcnR5
UmVjdCkpOworICAgIG1fdGlsZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdT
dG9yZVBhaW50KGdyYXBoaWNzQ29udGV4dCwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250
ZW50cyhtX2RpcnR5UmVjdCkpOwogCiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0ID0gbV9kaXJ0
eVJlY3Q7CiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3Jl
Y3QueSgpKTsKICAgICB1cGRhdGVJbmZvLnNjYWxlRmFjdG9yID0gbV90aWxlZEJhY2tpbmdTdG9y
ZS0+Y29udGVudHNTY2FsZSgpOwotICAgIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisKKyAg
ICBtX2NsaWVudC0+ZGlkRW5kQ29udGVudFVwZGF0ZSh1cGRhdGVJbmZvLmF0bGFzSUQpOwogCiAg
ICAgc3RhdGljIHVpbnQzMl90IGlkID0gMTsKICAgICBpZiAobV9JRCA9PSBJbnZhbGlkQ29vcmRp
bmF0ZWRUaWxlSUQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaApp
bmRleCBiZTk5YmZkYWZlZjQ5MWRhZDNhMzZmZmM1YjIzZjQ0NDdkYmVlNDVmLi4yYTVmOTA0YTM1
NzA2NzFhM2U2ZmI4ZTJiZDdhZWRmMzZhYTRmMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkVGlsZS5oCkBAIC03NSw3ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
JiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZSh1aW50
MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpID0gMDsKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUo
Y29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2
aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUm
LCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEVuZENvbnRlbnRVcGRhdGUoY29uc3QgdWludDMyX3QmIGF0bGFzSUQpID0gMDsKIH07CiAKIGNs
YXNzIENvb3JkaW5hdGVkVGlsZUJhY2tlbmQgOiBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVCYWNr
ZW5kIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDM2NGYwNjg3
MTA4MmI1OGZjYmQ4M2EwZWYzMTQ1MGJlNDgwMDg0OGIuLjJjNmU3YzBjZTJlYjBjMDMwMmM4N2Uz
MDQzZWYzMTQ1MzRmNTdiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNw
cApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFVwZGF0ZUF0bGFzOjpkaWRTd2FwQnVmZmVycygpCiAg
ICAgbV9hcmVhQWxsb2NhdG9yLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90
JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiBzaXplLCBJbnRQb2ludCYgb2Zmc2V0KQorR3JhcGhp
Y3NDb250ZXh0KiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVp
bnQzMl90JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiBzaXplLCBJbnRQb2ludCYgb2Zmc2V0KQog
ewogICAgIG1faW5hY3Rpdml0eUluU2Vjb25kcyA9IDA7CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRl
ZCgpOwpAQCAtNzAsMTYgKzcwLDE2IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRh
dGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90CiAKICAgICAv
LyBObyBhdmFpbGFibGUgYnVmZmVyIHdhcyBmb3VuZCwgcmV0dXJuaW5nIG51bGwuCiAgICAgaWYg
KHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRl
eHQ+KCk7CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3N1cmZhY2UpCi0gICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBhdGxhc0lEID0gbV9JRDsKIAogICAgIC8vIEZJWE1FOiBVc2UgdHJpLXN0YXRlIGJ1
ZmZlcnMsIHRvIGFsbG93IGZhc3RlciB1cGRhdGVzLgogICAgIG9mZnNldCA9IHJlY3QubG9jYXRp
b24oKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX3N1
cmZhY2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+YmVnaW5QYWludChyZWN0KTsKIAogICAgIGlm
IChzdXBwb3J0c0FscGhhKCkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3Np
dGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CkBAIC04Nyw3ICs4NywxMiBAQCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1
ZmZlcih1aW50MzJfdAogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ3JhcGhpY3ND
b250ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0OworfQorCit2b2lk
IFVwZGF0ZUF0bGFzOjplbmRQYWludGluZygpCit7CisgICAgbV9zdXJmYWNlLT5lbmRQYWludCgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVB
dGxhcy5oCmluZGV4IDQ4YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0ZTMzMGZkZGIxNmQ3OGIuLjlm
NDgxNzM5NGU5NjRkNDk1NGU4OTg5OWRjOWU0YWNmM2FhOTkxODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9VcGRhdGVBdGxhcy5oCkBAIC00Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAgICBpbmxpbmUg
SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7IH0KIAogICAg
IC8vIFJldHVybnMgYSBudWxsIHBvaW50ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZl
ci4KLSAgICBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxh
YmxlQnVmZmVyKHVpbnQzMl90JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiwgSW50UG9pbnQmIG9m
ZnNldCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZm
ZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IEludFNpemUmLCBJbnRQb2ludCYgb2Zmc2V0KTsK
KyAgICB2b2lkIGVuZFBhaW50aW5nKCk7CisKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzKCk7CiAg
ICAgYm9vbCBzdXBwb3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zdXBwb3J0
c0FscGhhKCk7IH0KIApAQCAtNjIsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJvb2wg
aXNJblVzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlYUFsbG9jYXRvcjsgfQogCisgICAgdWludDMy
X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX0lEOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBidWls
ZExheW91dElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3Bw
CmluZGV4IDUyYjdmNmQyYzE0NDNhNDc5NzkyZTY4MDU5M2ViNjhjMGUwNGU2OTUuLmUxMTUyYmQ3
OGE5ZWZmNGQ0YmMwNjZkNzZhMzc5ZDcyYTNhZWE3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlLmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KIApA
QCAtMTAzLDE4ICsxMDIsMjYgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QKIH0KICNlbmRpZgog
Ci1QYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK0dyYXBoaWNz
Q29udGV4dCogV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpiZWdpblBhaW50KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlzQmFja2VkQnlH
cmFwaGljc1N1cmZhY2UoKSkKLSAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5iZWdp
blBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5pbmcgcGl4ZWxzKi8pOworICAg
IGlmIChpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpIHsKKyAgICAgICAgbV9ncmFwaGljc0Nv
bnRleHQgPSBtX2dyYXBoaWNzU3VyZmFjZS0+YmVnaW5QYWludChyZWN0LCAwIC8qIFdyaXRlIHdp
dGhvdXQgcmV0YWluaW5nIHBpeGVscyovKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250
ZXh0LmdldCgpOworICAgIH0KICNlbmRpZgogCiAgICAgQVNTRVJUKG1fYml0bWFwKTsKLSAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJlY3QpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgcmV0
dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBt
X2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgbV9ncmFwaGljc0NvbnRleHQt
PmNsaXAocmVjdCk7CisgICAgbV9ncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwg
cmVjdC55KCkpOworICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dC5nZXQoKTsKK30KKwordm9p
ZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmVuZFBhaW50KCkKK3sKKyAgICBBU1NFUlQobV9ncmFw
aGljc0NvbnRleHQpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0LmNsZWFyKCk7CiB9CiAKIFBhc3NS
ZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRl
ZFN1cmZhY2UuaAppbmRleCA1Mzg2YTkxN2U1MjZlYjRhM2Q1OGQ3ODIyYjkxY2UwMDllYjI1MTNh
Li43OGUyYjY4N2MxNzZlYzA1ZjFmMWEyNzI4NTE4NzE4MDVkM2JiOTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtNzMsNyArNzMsOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
c2l6ZTsgfQogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWludChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50
KCkgT1ZFUlJJREU7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lk
IGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNl
T2Zmc2V0KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDU5ZTgzOWIyYzUzMjE2MWMzMDg0ZWYz
Y2Y1MTQxYWFhMGQ4OWU0MzIuLjNmNDg5MDg1YmIxYWVkNmM0Y2YxYmVjZDAxN2NiMzA3OGQ2Yjdj
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcApAQCAtNzg1LDE2ICs3ODUsMTYgQEAgdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgbV91cGRhdGVBdGxhc2VzLmNs
ZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9m
ZnNldCkKK0dyYXBoaWNzQ29udGV4dCogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFn
cyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCiB7Ci0gICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0
ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91
cGRhdGVBdGxhc2VzW2ldLmdldCgpOwogICAgICAgICBpZiAoYXRsYXMtPnN1cHBvcnRzQWxwaGEo
KSA9PSAoZmxhZ3MgJiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEpKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxl
IGJ1ZmZlciBzcGFjZS4KICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dCA9IGF0bGFzLT5iZWdp
blBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0KTsKICAgICAg
ICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdyYXBo
aWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdyYXBoaWNzQ29u
dGV4dDsKICAgICAgICAgfQogICAgIH0KIApAQCAtODA0LDYgKzgwNCwxNiBAQCBQYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRV
cGRhdGUoY29uc3QgSQogICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMubGFzdCgpLT5iZWdpblBh
aW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0KTsKIH0KIAordm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZEVuZENvbnRlbnRVcGRhdGUoY29uc3QgdWlu
dDMyX3QmIGF0bGFzSUQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXBkYXRl
QXRsYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV91cGRhdGVBdGxhc2VzW2ldLT5p
ZCgpID09IGF0bGFzSUQpIHsKKyAgICAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZW5kUGFp
bnRpbmcoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogY29u
c3QgZG91YmxlIFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsID0gMC41OwogCiB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxh
c2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKaW5kZXggN2UxZDFiYWUwNDNlZTdiMTBkNGJlYWY4N2JhMWQyYWVlODg5M2Q3
NS4uOTI4NmIwY2IwNjk2MjI2MmZlYzEyYzM2ZmJhNzZmNzBmMzY4ZjU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAg
LTEwNiw3ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyUmVwYWlu
dENvdW50KFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Kik7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3Jk
aW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2lu
dCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiBiZWdpbkNvbnRlbnRV
cGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb250ZW50VXBkYXRlKGNvbnN0IHVpbnQzMl90JiBh
dGxhc0lEKSBPVkVSUklERTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xpZW50CiAgICAgdmlydHVh
bCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187823</attachid>
            <date>2013-02-12 03:23:14 -0800</date>
            <delta_ts>2013-02-12 18:42:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130212032020.patch</filename>
            <type>text/plain</type>
            <size>22132</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjkxOWZhMTBlY2I2MTQx
ZTQyMTA4OGQwNmI0YTk5NzBlZGY2NDliYi4uNWI4Yzk2YjMwYTZiMGE0MTJmMTI2NWYwMmJiYThi
YzEzNTgzMzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAyLTEyICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gcHJvdmlkZSBiZWdp
blBhaW50IGFuZCBlbmRQYWludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29y
ZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQgdG8KKyAgICAgICAgQ29vcmRpbmF0ZWRT
dXJmYWNlOjpiZWdpblBhaW50IGFuZCBwYXNzZXMgR3JhcGhpY3NDb250ZXh0KiBpbnN0ZWFkIG9m
CisgICAgICAgIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0Pi4gTW9yZW92ZXIsIGl0IGFkZHMg
Q29vcmRpbmF0ZWRTdXJmYWNlOjplbmRQYWludCBzbworICAgICAgICB0aGF0IFVwZGF0ZUF0bGFz
IGFuZCBDb29yZGluYXRlZEltYWdlQmFja2luZyBjYWxsIGJlZ2luUGFpbnQgYW5kIGVuZFBhaW50
CisgICAgICAgIGV4cGxpY2l0bHkuCisKKyAgICAgICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZh
Y2Ugd2lsbCBiZSBpbXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAg
IEltYWdlQnVmZmVyLiBTaW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNl
bGYsIGl0IGNhbm5vdCBwYXNzCisgICAgICAgIE93blB0ciBvZiBHcmFwaGljc0NvbnRleHQuIFRo
ZXJlZm9yZSwgdGhpcyByZWZhY3RvcmluZyBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgIGltcGxl
bWVudGluZyBDb29yZGluYXRlZCBTdXJmYWNlIG9mIFdlYktpdDEuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGlkRW5k
Q29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOgorICAgICAg
ICAoQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oOgorICAgICAgICAoQ29v
cmRpbmF0ZWRUaWxlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRs
YXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZUF0bGFzOjplbmRQYWludGluZyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmg6CisgICAg
ICAgIChVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVBdGxhczo6aWQpOgor
CiAyMDEzLTAyLTExICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiByZW1vdmUgdGhlIERpZENoYW5nZVNjcm9s
bFBvc2l0aW9uIG1lc3NhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWIzMTcxNGVkNzc4MzczNTBiMjY0NWVh
YWExN2FkODczZTRjMWNkMi4uZDcwZjc5YjA2YzVkNmFjMjIyYjgyYTEwZTJiYjM5NTdkMmYyZjQz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTEyICBKYWUgSHl1biBQYXJr
ICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gcHJvdmlkZSBiZWdpblBhaW50IGFu
ZCBlbmRQYWludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA4ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBpcyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBH
cmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgQ29vcmRpbmF0ZWRTdXJmYWNl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHQgdG8KKyAgICAgICAgQ29vcmRpbmF0ZWRTdXJmYWNlOjpi
ZWdpblBhaW50IGFuZCBwYXNzZXMgR3JhcGhpY3NDb250ZXh0KiBpbnN0ZWFkIG9mCisgICAgICAg
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0Pi4gTW9yZW92ZXIsIGl0IGFkZHMgQ29vcmRpbmF0
ZWRTdXJmYWNlOjplbmRQYWludCBzbworICAgICAgICB0aGF0IFVwZGF0ZUF0bGFzIGFuZCBDb29y
ZGluYXRlZEltYWdlQmFja2luZyBjYWxsIGJlZ2luUGFpbnQgYW5kIGVuZFBhaW50CisgICAgICAg
IGV4cGxpY2l0bHkuCisKKyAgICAgICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBi
ZSBpbXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVyLiBTaW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYsIGl0IGNh
bm5vdCBwYXNzCisgICAgICAgIE93blB0ciBvZiBHcmFwaGljc0NvbnRleHQuIFRoZXJlZm9yZSwg
dGhpcyByZWZhY3RvcmluZyBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgIGltcGxlbWVudGluZyBD
b29yZGluYXRlZCBTdXJmYWNlIG9mIFdlYktpdDEuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjplbmRQYWludCk6CisgICAg
ICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRpZEVuZENvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKwogMjAxMy0wMi0xMSAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczog
cmVtb3ZlIHRoZSBEaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbiBtZXNzYWdlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAw
ZWU5N2NkYzAwYmFlNTllZTg0ZGViNjk2NDRlNDViYjM3MTIxM2IyLi5lYjRjNmE4MjI5YjcxZDIz
NjcyMWU5NGU1NTBjMTE4MjMwNmE4NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtNzkxLDEzICs3OTEsMjAgQEAg
Q29sb3IgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91
bmRDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkgPyBDb2xvcjo6d2hp
dGUgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQpCitHcmFwaGljc0Nv
bnRleHQqIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhcywgSW50UG9pbnQmIG9mZnNldCkKIHsKICAg
ICBBU1NFUlQobV9jb29yZGluYXRvcik7CiAgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1
c2hpbmdMYXllckNoYW5nZXMoKSk7CiAgICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29u
dGVudFVwZGF0ZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRTdXJmYWNlOjpO
b0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0
KTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRpZEVuZENvbnRlbnRVcGRh
dGUodWludDMyX3QgYXRsYXNJRCkKK3sKKyAgICBBU1NFUlQobV9jb29yZGluYXRvcik7CisgICAg
QVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSk7CisgICAgcmV0
dXJuIG1fY29vcmRpbmF0b3ItPmRpZEVuZENvbnRlbnRVcGRhdGUoYXRsYXNJRCk7Cit9CisKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwg
Y29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBhM2YwYTA4ZmQ5ODIx
NWQxMDE2ZDI3ODU5ZjUyNzU4MzM0MDIwZmEyLi4zMTc5NDI1YWU1NDBkNGJiMTg3NTRmZjA1MWU4
YzBjYTk1ZDJjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oCkBAIC00OSw3ICs0OSw2IEBAIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRmx1c2hpbmdM
YXllckNoYW5nZXMoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBDb29yZGluYXRlZFRpbGVDbGllbnQK
ICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90
IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3Qg
dGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0
aWxlSUQpID0gMDsKQEAgLTcyLDcgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllckFuaW1hdGlvbnMoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBHcmFwaGljc0xheWVy
QW5pbWF0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIqKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNz
Q29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCBDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSA9IDA7CisgICAgdmly
dHVhbCBHcmFwaGljc0NvbnRleHQqIGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50Jikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb250ZW50VXBkYXRlKHVpbnQzMl90IGF0bGFz
SUQpID0gMDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciA6IHB1YmxpYyBH
cmFwaGljc0xheWVyCkBAIC0xNTMsNyArMTUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBj
b25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWlu
dDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29u
dGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZEVuZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkg
T1ZFUlJJREU7CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcAppbmRleCAxMjhiYWJlMjk4ZjY2Y2JjMjc2OWNmNmZmOGVhOTgy
MjlkNTE1NTc3Li5hOTFkODA0YjhlMDI5ZGQ2NDdjYWFhZmQ5ODFmOTM3MWIwZGQ0YjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5j
cHAKQEAgLTEwOCw4ICsxMDgsOSBAQCB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRh
dGUoKQogICAgIH0KIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBtX2ltYWdl
LT5zaXplKCkpOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX3N1cmZh
Y2UtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQgPSBtX3N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCk7CiAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOworICAg
IG1fc3VyZmFjZS0+ZW5kUGFpbnQoKTsKIAogICAgIG1fbmF0aXZlSW1hZ2VQdHIgPSBtX2ltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggMzA3N2MzYzA5YzRhYjA2N2ZmYjk4NjY2YjQw
ZjYwNzU5Nzg1ZTVkNi4uNTBiNmJmYmFkNjhlMGIyN2RiYzI1NzcxMWUxNGJmY2U1YWZlZjM1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMjIs
MTQgKzIyLDE0IEBACiAjZGVmaW5lIENvb3JkaW5hdGVkU3VyZmFjZV9oCiAKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1h
cFRleHR1cmU7Ci1jbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKIGNsYXNzIENvb3JkaW5hdGVkU3Vy
ZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZFN1cmZhY2U+IHsK
IHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50U2l6ZSBz
aXplKCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29udGV4dCB0aGF0
IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCi0gICAgdmlydHVh
bCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0
IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGJlZ2luUGFpbnQo
Y29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnQoKSA9IDA7CiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUo
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJ
bnRQb2ludCYgc291cmNlT2Zmc2V0KSA9IDA7CkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRmxhZ3MgZmxhZ3MoKSBjb25zdCA9IDA7CisgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGljc0NvbnRleHQ7CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIENvb3JkaW5hdGVkU3VyZmFjZTo6RmFjdG9yeSogc19mYWN0b3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAppbmRleCA5ZjlkMzRlNjA1YjBlMmIy
NTI2OGJhYTY2YzQ4MDVkYmVmYTIwOTMxLi4xMzZiZjYwMjk4NjM3MmVhYjc2MTc2Y2JlNDg0Y2Q3
MWVhN2VkZjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNw
cApAQCAtNzMsMTcgKzczLDE5IEBAIFZlY3RvcjxJbnRSZWN0PiBDb29yZGluYXRlZFRpbGU6OnVw
ZGF0ZUJhY2tCdWZmZXIoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CiAKICAg
ICBTdXJmYWNlVXBkYXRlSW5mbyB1cGRhdGVJbmZvOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRl
eHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5iZWdpbkNvbnRlbnRVcGRhdGUobV9kaXJ0
eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNl
dCk7CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5i
ZWdpbkNvbnRlbnRVcGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQs
IHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCk7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAg
ICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKICAgICBncmFwaGljc0NvbnRleHQtPnRy
YW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1Nj
YWxlKCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSkpOwotICAgIG1fdGls
ZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZVBhaW50KGdyYXBoaWNz
Q29udGV4dC5nZXQoKSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2RpcnR5
UmVjdCkpOworICAgIG1fdGlsZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdT
dG9yZVBhaW50KGdyYXBoaWNzQ29udGV4dCwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250
ZW50cyhtX2RpcnR5UmVjdCkpOwogCiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0ID0gbV9kaXJ0
eVJlY3Q7CiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3Jl
Y3QueSgpKTsKICAgICB1cGRhdGVJbmZvLnNjYWxlRmFjdG9yID0gbV90aWxlZEJhY2tpbmdTdG9y
ZS0+Y29udGVudHNTY2FsZSgpOwotICAgIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisKKyAg
ICBtX2NsaWVudC0+ZGlkRW5kQ29udGVudFVwZGF0ZSh1cGRhdGVJbmZvLmF0bGFzSUQpOwogCiAg
ICAgc3RhdGljIHVpbnQzMl90IGlkID0gMTsKICAgICBpZiAobV9JRCA9PSBJbnZhbGlkQ29vcmRp
bmF0ZWRUaWxlSUQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaApp
bmRleCBiZTk5YmZkYWZlZjQ5MWRhZDNhMzZmZmM1YjIzZjQ0NDdkYmVlNDVmLi5iMTE2M2JlY2Mw
ODU5ZDU2ZDk3NjZmYWViMDFiMGZmYzBmZDlkZWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkVGlsZS5oCkBAIC03NSw3ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
JiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZSh1aW50
MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpID0gMDsKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUo
Y29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2
aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUm
LCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEVuZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgQ29v
cmRpbmF0ZWRUaWxlQmFja2VuZCA6IHB1YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL1VwZGF0ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKaW5kZXggMzY0ZjA2ODcxMDgyYjU4
ZmNiZDgzYTBlZjMxNDUwYmU0ODAwODQ4Yi4uMmM2ZTdjMGNlMmViMGMwMzAyYzg3ZTMwNDNlZjMx
NDUzNGY1N2I3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHZvaWQgVXBkYXRlQXRsYXM6OmRpZFN3YXBCdWZmZXJzKCkKICAgICBtX2Fy
ZWFBbGxvY2F0b3IuY2xlYXIoKTsKIH0KIAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVw
ZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3QmIGF0bGFz
SUQsIGNvbnN0IEludFNpemUmIHNpemUsIEludFBvaW50JiBvZmZzZXQpCitHcmFwaGljc0NvbnRl
eHQqIFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3Qm
IGF0bGFzSUQsIGNvbnN0IEludFNpemUmIHNpemUsIEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAg
bV9pbmFjdGl2aXR5SW5TZWNvbmRzID0gMDsKICAgICBidWlsZExheW91dElmTmVlZGVkKCk7CkBA
IC03MCwxNiArNzAsMTYgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFz
OjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3QKIAogICAgIC8vIE5vIGF2
YWlsYWJsZSBidWZmZXIgd2FzIGZvdW5kLCByZXR1cm5pbmcgbnVsbC4KICAgICBpZiAocmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsK
KyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fc3VyZmFjZSkKLSAgICAgICAgcmV0dXJu
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PigpOworICAgICAgICByZXR1cm4gMDsKIAogICAg
IGF0bGFzSUQgPSBtX0lEOwogCiAgICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywg
dG8gYWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0ID0gbV9zdXJmYWNlLT5iZWdpblBhaW50KHJlY3QpOwogCiAgICAgaWYgKHN1cHBv
cnRzQWxwaGEoKSkgewogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVDb3B5KTsKQEAgLTg3LDcgKzg3LDEyIEBAIFBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVp
bnQzMl90CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIH0KIAotICAgIHJldHVybiBncmFwaGljc0NvbnRleHQu
cmVsZWFzZSgpOworICAgIHJldHVybiBncmFwaGljc0NvbnRleHQ7Cit9CisKK3ZvaWQgVXBkYXRl
QXRsYXM6OmVuZFBhaW50aW5nKCkKK3sKKyAgICBtX3N1cmZhY2UtPmVuZFBhaW50KCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgK
aW5kZXggNDhhNmJmODQ0YTQ5MGY3ZmQyYzM5YTA0MjRlMzMwZmRkYjE2ZDc4Yi4uOWY0ODE3Mzk0
ZTk2NGQ0OTU0ZTg5ODk5ZGM5ZTRhY2YzYWE5OTE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Vw
ZGF0ZUF0bGFzLmgKQEAgLTQ2LDcgKzQ2LDkgQEAgcHVibGljOgogICAgIGlubGluZSBJbnRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnNpemUoKTsgfQogCiAgICAgLy8gUmV0
dXJucyBhIG51bGwgcG9pbnRlciBvZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyLgotICAg
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZm
ZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IEludFNpemUmLCBJbnRQb2ludCYgb2Zmc2V0KTsK
KyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50
MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYsIEludFBvaW50JiBvZmZzZXQpOworICAgIHZv
aWQgZW5kUGFpbnRpbmcoKTsKKwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKICAgICBib29s
IHN1cHBvcnRzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnN1cHBvcnRzQWxwaGEo
KTsgfQogCkBAIC02Miw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgYm9vbCBpc0luVXNl
KCkgY29uc3QgeyByZXR1cm4gbV9hcmVhQWxsb2NhdG9yOyB9CiAKKyAgICB1aW50MzJfdCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fSUQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkTGF5b3V0
SWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKaW5kZXgg
NTJiN2Y2ZDJjMTQ0M2E0Nzk3OTJlNjgwNTkzZWI2OGMwZTA0ZTY5NS4uZTExNTJiZDc4YTllZmY0
ZDRiYzA2NmQ3NmEzNzlkNzJhM2FlYTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1
cmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2VUb2tlbi5oPgogCkBAIC0xMDMs
MTggKzEwMiwyNiBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdAogfQogI2VuZGlmCiAKLVBhc3NP
d25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRSZWN0JiByZWN0KQorR3JhcGhpY3NDb250ZXh0
KiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNz
U3VyZmFjZSgpKQotICAgICAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPmJlZ2luUGFpbnQo
cmVjdCwgMCAvKiBXcml0ZSB3aXRob3V0IHJldGFpbmluZyBwaXhlbHMqLyk7CisgICAgaWYgKGlz
QmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkgeworICAgICAgICBtX2dyYXBoaWNzQ29udGV4dCA9
IG1fZ3JhcGhpY3NTdXJmYWNlLT5iZWdpblBhaW50KHJlY3QsIDAgLyogV3JpdGUgd2l0aG91dCBy
ZXRhaW5pbmcgcGl4ZWxzKi8pOworICAgICAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRleHQuZ2V0
KCk7CisgICAgfQogI2VuZGlmCiAKICAgICBBU1NFUlQobV9iaXRtYXApOwotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFwLT5jcmVhdGVHcmFwaGlj
c0NvbnRleHQoKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICByZXR1cm4gZ3Jh
cGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dCA9IG1fYml0bWFw
LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dC0+Y2xpcChy
ZWN0KTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0Lnko
KSk7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0LmdldCgpOworfQorCit2b2lkIFdlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6ZW5kUGFpbnQoKQoreworICAgIEFTU0VSVChtX2dyYXBoaWNzQ29u
dGV4dCk7CisgICAgbV9ncmFwaGljc0NvbnRleHQuY2xlYXIoKTsKIH0KIAogUGFzc1JlZlB0cjxX
ZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0
IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5oCmluZGV4IDUzODZhOTE3ZTUyNmViNGEzZDU4ZDc4MjJiOTFjZTAwOWViMjUxM2EuLjc4ZTJi
Njg3YzE3NmVjMDVmMWYxYTI3Mjg1MTg3MTgwNWQzYmI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5oCkBAIC03Myw3ICs3Myw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zaXplOyB9
CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVh
dGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiBiZWdpblBhaW50KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnQoKSBPVkVS
UklERTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgY29weVRv
VGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQp
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNTllODM5YjJjNTMyMTYxYzMwODRlZjNjZjUxNDFh
YWEwZDg5ZTQzMi4uYTJlOTc2NTJiZDFmYTU3NjkwOTQwNWViYmE2N2FjNzhlZDgyMmUzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCkBAIC03ODUsMTYgKzc4NSwxNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIoKTsK
IH0KIAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MgZmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0KQor
R3JhcGhpY3NDb250ZXh0KiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmJlZ2luQ29udGVudFVw
ZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdz
LCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkKIHsKLSAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNl
cy5zaXplKCk7ICsraSkgewogICAgICAgICBVcGRhdGVBdGxhcyogYXRsYXMgPSBtX3VwZGF0ZUF0
bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChhdGxhcy0+c3VwcG9ydHNBbHBoYSgpID09IChm
bGFncyAmIENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSkpIHsKICAgICAgICAgICAg
IC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVy
IHNwYWNlLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMtPmJlZ2luUGFpbnRp
bmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwogICAgICAgICAgICAg
aWYgKGdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZ3JhcGhpY3NDb250
ZXh0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0Owog
ICAgICAgICB9CiAgICAgfQogCkBAIC04MDQsNiArODA0LDE2IEBAIFBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmJlZ2luQ29udGVudFVwZGF0ZShj
b25zdCBJCiAgICAgcmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPmJlZ2luUGFpbnRpbmdP
bkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwogfQogCit2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlkRW5kQ29udGVudFVwZGF0ZSh1aW50MzJfdCBhdGxhc0lE
KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKG1fdXBkYXRlQXRsYXNlc1tpXS0+aWQoKSA9PSBhdGxhc0lE
KSB7CisgICAgICAgICAgICBtX3VwZGF0ZUF0bGFzZXNbaV0tPmVuZFBhaW50aW5nKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKIGNvbnN0IGRvdWJsZSBSZWxl
YXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCA9IDAuNTsKIAogdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRsYXNlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IDdlMWQxYmFlMDQzZWU3YjEwZDRiZWFmODdiYTFkMmFlZTg4OTNkNzUuLmY3M2NmM2M5NmMw
OThjNmM3Mzg4MTFiMTlmZTUzZTQ0ZGYyYWY0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMDYsNyArMTA2LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudChXZWJDb3Jl
OjpDb29yZGluYXRlZExheWVySUQsIGludCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRl
dGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogCi0gICAgdmly
dHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBk
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50
MzJfdCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRW5kQ29udGVudFVwZGF0ZSh1aW50MzJfdCBhdGxhc0lEKSBPVkVSUklERTsKIAog
ICAgIC8vIFVwZGF0ZUF0bGFzQ2xpZW50CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0
bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPikgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187989</attachid>
            <date>2013-02-12 18:42:25 -0800</date>
            <delta_ts>2013-02-18 02:44:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130212183933.patch</filename>
            <type>text/plain</type>
            <size>22854</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQwMjViZTNlNWM2NzE2
ZTRjMmE0OTEzZDZjYzljYTQyNDg3NDQ3My4uMWJkNGI3YzRlMDhjOGJlNzhhYjI1NzkyZmFhZmRh
YWM0OWQyYTZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAyLTEyICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gcHJvdmlkZSBiZWdp
blBhaW50IGFuZCBlbmRQYWludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29y
ZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbmFtZXMgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQgdG8KKyAgICAgICAgQ29vcmRpbmF0ZWRT
dXJmYWNlOjpiZWdpblBhaW50IGFuZCBwYXNzZXMgR3JhcGhpY3NDb250ZXh0KiBpbnN0ZWFkIG9m
CisgICAgICAgIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0Pi4gTW9yZW92ZXIsIGl0IGFkZHMg
Q29vcmRpbmF0ZWRTdXJmYWNlOjplbmRQYWludCBzbworICAgICAgICB0aGF0IFVwZGF0ZUF0bGFz
IGFuZCBDb29yZGluYXRlZEltYWdlQmFja2luZyBjYWxsIGJlZ2luUGFpbnQgYW5kIGVuZFBhaW50
CisgICAgICAgIGV4cGxpY2l0bHkuCisKKyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQgaXMgZGVm
aW5lZCBvbiBDb29yZGluYXRlZFN1cmZhY2UgdG8gbWFuYWdlIGxpZmVjeWNsZQorICAgICAgICBv
ZiBHcmFwaGljc0NvbnRleHQgY3JlYXRlZCBieSBlaXRoZXIgR3JhcGhpY3NTdXJmYWNlIG9yIFNo
YXJlYWJsZUJpdG1hcC4KKyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQgaXMgYXNzaWduZWQgd2hl
biBiZWdpblBhaW50IGlzIGNhbGxlZCwgYW5kIGNsZWFyZWQKKyAgICAgICAgd2hlbiBlbmRQYWlu
dCBpcyBjYWxsZWQuCisKKyAgICAgICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBi
ZSBpbXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVm
ZmVyLiBTaW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYsIGl0IGNh
bm5vdCBwYXNzCisgICAgICAgIE93blB0ciBvZiBHcmFwaGljc0NvbnRleHQuIFRoZXJlZm9yZSwg
dGhpcyByZWZhY3RvcmluZyBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgIGltcGxlbWVudGluZyBD
b29yZGluYXRlZCBTdXJmYWNlIG9mIFdlYktpdDEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpkaWRFbmRDb250ZW50VXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oOgorICAgICAgICAoQ29vcmRp
bmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
VGlsZTo6dXBkYXRlQmFja0J1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRU
aWxlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXM6OmJlZ2lu
UGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlVwZGF0ZUF0bGFzOjplbmRQYWludGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmg6CisgICAgICAgIChVcGRh
dGVBdGxhcyk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVBdGxhczo6aWQpOgorCiAyMDEzLTAy
LTEyICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2xhc3Mg
bmFtZSBmb3Igc25hcHNob3R0ZWQgcGx1Z2luIGJhc2VkIG9uIGRpbWVuc2lvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAzYjYyYjEzZmFhODgyZTczMmU2MDkwNTQ2ODZhZTAxZTQ5ZjQyNDhjLi5hY2U2NjlhNzNh
NGIyNzkwODE2YTYwODExNWJhMjI5YWViMTE3NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTMtMDItMTIgIEphZSBIeXVuIFBhcmsgIDxqYWUucGFya0Bjb21wYW55MTAwLm5ldD4K
KworICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljcyA6IFJlZmFjdG9yIENvb3JkaW5hdGVkU3Vy
ZmFjZSB0byBwcm92aWRlIGJlZ2luUGFpbnQgYW5kIGVuZFBhaW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgcHJlcGFyYXRpb24gcGF0
Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggcmVuYW1lcyBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCB0bwor
ICAgICAgICBDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQgYW5kIHBhc3NlcyBHcmFwaGlj
c0NvbnRleHQqIGluc3RlYWQgb2YKKyAgICAgICAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+
LiBNb3Jlb3ZlciwgaXQgYWRkcyBDb29yZGluYXRlZFN1cmZhY2U6OmVuZFBhaW50IHNvCisgICAg
ICAgIHRoYXQgVXBkYXRlQXRsYXMgYW5kIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nIGNhbGwgYmVn
aW5QYWludCBhbmQgZW5kUGFpbnQKKyAgICAgICAgZXhwbGljaXRseS4KKworICAgICAgICBtX2dy
YXBoaWNzQ29udGV4dCBpcyBkZWZpbmVkIG9uIENvb3JkaW5hdGVkU3VyZmFjZSB0byBtYW5hZ2Ug
bGlmZWN5Y2xlCisgICAgICAgIG9mIEdyYXBoaWNzQ29udGV4dCBjcmVhdGVkIGJ5IGVpdGhlciBH
cmFwaGljc1N1cmZhY2Ugb3IgU2hhcmVhYmxlQml0bWFwLgorICAgICAgICBtX2dyYXBoaWNzQ29u
dGV4dCBpcyBhc3NpZ25lZCB3aGVuIGJlZ2luUGFpbnQgaXMgY2FsbGVkLCBhbmQgY2xlYXJlZAor
ICAgICAgICB3aGVuIGVuZFBhaW50IGlzIGNhbGxlZC4KKworICAgICAgICBXZWJLaXQxIENvb3Jk
aW5hdGVkU3VyZmFjZSB3aWxsIGJlIGltcGxlbWVudGVkIHVzaW5nIEdyYXBoaWNzU3VyZmFjZSBh
bmQKKyAgICAgICAgSW1hZ2VCdWZmZXIuIFNpbmNlIEltYWdlQnVmZmVyIG93bnMgR3JhcGhpY3ND
b250ZXh0IGl0c2VsZiwgaXQgY2Fubm90IHBhc3MKKyAgICAgICAgT3duUHRyIG9mIEdyYXBoaWNz
Q29udGV4dC4gVGhlcmVmb3JlLCB0aGlzIHJlZmFjdG9yaW5nIGlzIG5lY2Vzc2FyeSBmb3IKKyAg
ICAgICAgaW1wbGVtZW50aW5nIENvb3JkaW5hdGVkIFN1cmZhY2Ugb2YgV2ViS2l0MS4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6YmVnaW5QYWludCk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmVuZFBhaW50KToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJD
b29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvb3JkaW5hdGVkU3VyZmFjZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmRpZEVuZENvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaDoKKwogMjAxMy0wMi0xMiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
LmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBSZWVuYWJsZSBl
d2tfYXV0aF9yZXF1ZXN0IEFQSSB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAwZWU5N2NkYzAwYmFlNTllZTg0
ZGViNjk2NDRlNDViYjM3MTIxM2IyLi5mOTJhZDg3YmYwYzgwOTA5OTQyZjU4NmY5ZDhkYzgwMTA3
ODQ1MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApAQCAtNzkxLDExICs3OTEsMTggQEAgQ29sb3IgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkgPyBDb2xvcjo6d2hpdGUgOiBDb2xvcjo6dHJhbnNw
YXJlbnQ7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJf
dCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQpCitHcmFwaGljc0NvbnRleHQqIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIHVp
bnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIEFTU0VSVChtX2Nvb3Jk
aW5hdG9yKTsKICAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdl
cygpKTsKLSAgICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUs
IGNvbnRlbnRzT3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGlu
YXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBt
X2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29udGVudHNPcGFxdWUoKSA/
IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyA6IENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9y
dHNBbHBoYSwgYXRsYXNJRCwgb2Zmc2V0KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmRpZEVuZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkKK3sKKyAgICBBU1NF
UlQobV9jb29yZGluYXRvcik7CisgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdM
YXllckNoYW5nZXMoKSk7CisgICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmRpZEVuZENvbnRlbnRV
cGRhdGUoYXRsYXNJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVh
dGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mIHVwZGF0ZUlu
Zm8sIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGEzZjBhMDhmZDk4MjE1ZDEwMTZk
Mjc4NTlmNTI3NTgzMzQwMjBmYTIuLjBmMzNjNjlkNzMxMjFhYTE5OTY0NWEyZjdmM2Q4OWU1NTg5
ZjNkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKQEAgLTQ5LDcgKzQ5LDYgQEAgY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hh
bmdlcygpIGNvbnN0ID0gMDsKIAotICAgIC8vIENvb3JkaW5hdGVkVGlsZUNsaWVudAogICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlE
LCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQs
IGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCkg
PSAwOwpAQCAtNzIsNyArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
QW5pbWF0aW9ucyhDb29yZGluYXRlZExheWVySUQsIGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRp
b25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIEdy
YXBoaWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb250ZW50VXBkYXRlKHVpbnQzMl90IGF0bGFz
SUQpID0gMDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciA6IHB1YmxpYyBH
cmFwaGljc0xheWVyCkBAIC0xNTMsNyArMTUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBj
b25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWlu
dDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29u
dGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb250ZW50VXBkYXRlKHVpbnQzMl90IGF0
bGFzSUQpIE9WRVJSSURFOwogCiAgICAgdm9pZCBzZXRDb29yZGluYXRvcihDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJDbGllbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5kZXggMTI4YmFiZTI5OGY2NmNiYzI3NjljZjZm
ZjhlYTk4MjI5ZDUxNTU3Ny4uYTkxZDgwNGI4ZTAyOWRkNjQ3Y2FhYWZkOTgxZjkzNzFiMGRkNGIw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwCkBAIC0xMDgsOCArMTA4LDkgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2lu
Zzo6dXBkYXRlKCkKICAgICB9CiAKICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
bV9pbWFnZS0+c2l6ZSgpKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0g
bV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7CisgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gbV9zdXJmYWNlLT5iZWdpblBhaW50KHJlY3QpOwogICAgIGNvbnRleHQt
PmRyYXdJbWFnZShtX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCByZWN0LCByZWN0
KTsKKyAgICBtX3N1cmZhY2UtPmVuZFBhaW50KCk7CiAKICAgICBtX25hdGl2ZUltYWdlUHRyID0g
bV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDMwNzdjM2MwOWM0YWIwNjdmZmI5
ODY2NmI0MGY2MDc1OTc4NWU1ZDYuLmVkYjFkY2JhNzMzYThiMjEwOWU0ZDdkOWZkM2FjMWNiZGEy
YzViMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmgK
QEAgLTIyLDE0ICsyMiwxNCBAQAogI2RlZmluZSBDb29yZGluYXRlZFN1cmZhY2VfaAogCiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCaXRtYXBUZXh0dXJlOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBDb29yZGlu
YXRlZFN1cmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRTdXJm
YWNlPiB7CiBwdWJsaWM6CkBAIC00OSw3ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhIGdyYXBoaWNzIGNvbnRl
eHQgdGhhdCBjYW4gYmUgdXNlZCB0byBwYWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgotICAg
IHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBiZWdp
blBhaW50KGNvbnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50KCkg
PSAwOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9U
ZXh0dXJlKFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4sIGNvbnN0IEludFJlY3QmIHRhcmdldCwg
Y29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAppbmRleCA5ZjlkMzRlNjA1YjBlMmIyNTI2OGJhYTY2YzQ4
MDVkYmVmYTIwOTMxLi4xMzZiZjYwMjk4NjM3MmVhYjc2MTc2Y2JlNDg0Y2Q3MWVhN2VkZjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcApAQCAtNzMsMTcg
KzczLDE5IEBAIFZlY3RvcjxJbnRSZWN0PiBDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZm
ZXIoKQogICAgICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CiAKICAgICBTdXJmYWNlVXBk
YXRlSW5mbyB1cGRhdGVJbmZvOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNz
Q29udGV4dCA9IG1fY2xpZW50LT5iZWdpbkNvbnRlbnRVcGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgp
LCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCk7CisKKyAgICBH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fY2xpZW50LT5iZWdpbkNvbnRlbnRV
cGRhdGUobV9kaXJ0eVJlY3Quc2l6ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVwZGF0ZUluZm8u
c3VyZmFjZU9mZnNldCk7CiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVy
biBWZWN0b3I8SW50UmVjdD4oKTsKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtbV9k
aXJ0eVJlY3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZShtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCksIG1fdGls
ZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSkpOwotICAgIG1fdGlsZWRCYWNraW5nU3Rv
cmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZVBhaW50KGdyYXBoaWNzQ29udGV4dC5nZXQo
KSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2RpcnR5UmVjdCkpOworICAg
IG1fdGlsZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZVBhaW50KGdy
YXBoaWNzQ29udGV4dCwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2RpcnR5
UmVjdCkpOwogCiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0ID0gbV9kaXJ0eVJlY3Q7CiAgICAg
dXBkYXRlSW5mby51cGRhdGVSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKICAg
ICB1cGRhdGVJbmZvLnNjYWxlRmFjdG9yID0gbV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNT
Y2FsZSgpOwotICAgIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisKKyAgICBtX2NsaWVudC0+
ZGlkRW5kQ29udGVudFVwZGF0ZSh1cGRhdGVJbmZvLmF0bGFzSUQpOwogCiAgICAgc3RhdGljIHVp
bnQzMl90IGlkID0gMTsKICAgICBpZiAobV9JRCA9PSBJbnZhbGlkQ29vcmRpbmF0ZWRUaWxlSUQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaAppbmRleCBiZTk5YmZk
YWZlZjQ5MWRhZDNhMzZmZmM1YjIzZjQ0NDdkYmVlNDVmLi44YmY0MzQ5NTc1OGJkOTE2OTdmYzgy
MjZlZTkwNTY5MDM5ZWYxMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
VGlsZS5oCkBAIC03NSw3ICs3NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
VGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50
UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQs
IGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpID0gMDsKLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6
ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYg
YXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRD
b250ZW50VXBkYXRlKHVpbnQzMl90IGF0bGFzSUQpID0gMDsKIH07CiAKIGNsYXNzIENvb3JkaW5h
dGVkVGlsZUJhY2tlbmQgOiBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDM2NGYwNjg3MTA4MmI1OGZjYmQ4
M2EwZWYzMTQ1MGJlNDgwMDg0OGIuLjJjNmU3YzBjZTJlYjBjMDMwMmM4N2UzMDQzZWYzMTQ1MzRm
NTdiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCB2b2lkIFVwZGF0ZUF0bGFzOjpkaWRTd2FwQnVmZmVycygpCiAgICAgbV9hcmVhQWxs
b2NhdG9yLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVB
dGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90JiBhdGxhc0lELCBj
b25zdCBJbnRTaXplJiBzaXplLCBJbnRQb2ludCYgb2Zmc2V0KQorR3JhcGhpY3NDb250ZXh0KiBV
cGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90JiBhdGxh
c0lELCBjb25zdCBJbnRTaXplJiBzaXplLCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIG1faW5h
Y3Rpdml0eUluU2Vjb25kcyA9IDA7CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwpAQCAtNzAs
MTYgKzcwLDE2IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVn
aW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90CiAKICAgICAvLyBObyBhdmFpbGFi
bGUgYnVmZmVyIHdhcyBmb3VuZCwgcmV0dXJuaW5nIG51bGwuCiAgICAgaWYgKHJlY3QuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CisgICAg
ICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3N1cmZhY2UpCi0gICAgICAgIHJldHVybiBQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBhdGxh
c0lEID0gbV9JRDsKIAogICAgIC8vIEZJWE1FOiBVc2UgdHJpLXN0YXRlIGJ1ZmZlcnMsIHRvIGFs
bG93IGZhc3RlciB1cGRhdGVzLgogICAgIG9mZnNldCA9IHJlY3QubG9jYXRpb24oKTsKLSAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX3N1cmZhY2UtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCA9IG1fc3VyZmFjZS0+YmVnaW5QYWludChyZWN0KTsKIAogICAgIGlmIChzdXBwb3J0c0Fs
cGhhKCkpIHsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlQ29weSk7CkBAIC04Nyw3ICs4NywxMiBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50MzJf
dAogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVTb3VyY2VPdmVyKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0LnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gZ3JhcGhpY3NDb250ZXh0OworfQorCit2b2lkIFVwZGF0ZUF0bGFz
OjplbmRQYWludGluZygpCit7CisgICAgbV9zdXJmYWNlLT5lbmRQYWludCgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCmluZGV4
IDQ4YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0ZTMzMGZkZGIxNmQ3OGIuLjlmNDgxNzM5NGU5NjRk
NDk1NGU4OTg5OWRjOWU0YWNmM2FhOTkxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVB
dGxhcy5oCkBAIC00Niw3ICs0Niw5IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgSW50U2l6ZSBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7IH0KIAogICAgIC8vIFJldHVybnMg
YSBudWxsIHBvaW50ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KLSAgICBQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVp
bnQzMl90JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiwgSW50UG9pbnQmIG9mZnNldCk7CisgICAg
R3JhcGhpY3NDb250ZXh0KiBiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3Qm
IGF0bGFzSUQsIGNvbnN0IEludFNpemUmLCBJbnRQb2ludCYgb2Zmc2V0KTsKKyAgICB2b2lkIGVu
ZFBhaW50aW5nKCk7CisKICAgICB2b2lkIGRpZFN3YXBCdWZmZXJzKCk7CiAgICAgYm9vbCBzdXBw
b3J0c0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlLT5zdXBwb3J0c0FscGhhKCk7IH0K
IApAQCAtNjIsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJvb2wgaXNJblVzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXJlYUFsbG9jYXRvcjsgfQogCisgICAgdWludDMyX3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX0lEOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZExheW91dElmTmVl
ZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCmluZGV4IDUyYjdm
NmQyYzE0NDNhNDc5NzkyZTY4MDU5M2ViNjhjMGUwNGU2OTUuLmUxMTUyYmQ3OGE5ZWZmNGQ0YmMw
NjZkNzZhMzc5ZDcyYTNhZWE3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNl
LmNwcApAQCAtMjMsNyArMjMsNiBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
I2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KIApAQCAtMTAzLDE4ICsx
MDIsMjYgQEAgUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QKIH0KICNlbmRpZgogCi1QYXNzT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVH
cmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYgcmVjdCkKK0dyYXBoaWNzQ29udGV4dCogV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpiZWdpblBhaW50KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZh
Y2UoKSkKLSAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5iZWdpblBhaW50KHJlY3Qs
IDAgLyogV3JpdGUgd2l0aG91dCByZXRhaW5pbmcgcGl4ZWxzKi8pOworICAgIGlmIChpc0JhY2tl
ZEJ5R3JhcGhpY3NTdXJmYWNlKCkpIHsKKyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtX2dy
YXBoaWNzU3VyZmFjZS0+YmVnaW5QYWludChyZWN0LCAwIC8qIFdyaXRlIHdpdGhvdXQgcmV0YWlu
aW5nIHBpeGVscyovKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0LmdldCgpOwor
ICAgIH0KICNlbmRpZgogCiAgICAgQVNTRVJUKG1fYml0bWFwKTsKLSAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJlY3QpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgcmV0dXJuIGdyYXBoaWNz
Q29udGV4dC5yZWxlYXNlKCk7CisgICAgbV9ncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgbV9ncmFwaGljc0NvbnRleHQtPmNsaXAocmVjdCk7
CisgICAgbV9ncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOwor
ICAgIHJldHVybiBtX2dyYXBoaWNzQ29udGV4dC5nZXQoKTsKK30KKwordm9pZCBXZWJDb29yZGlu
YXRlZFN1cmZhY2U6OmVuZFBhaW50KCkKK3sKKyAgICBBU1NFUlQobV9ncmFwaGljc0NvbnRleHQp
OworICAgIG1fZ3JhcGhpY3NDb250ZXh0LmNsZWFyKCk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlPiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRT
aXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApp
bmRleCA1Mzg2YTkxN2U1MjZlYjRhM2Q1OGQ3ODIyYjkxY2UwMDllYjI1MTNhLi4wNzU4YWVhY2Jk
NDU0Mzk5ZjYzODcwNDJiMzhmNTYzZTZiZTBhMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRl
ZFN1cmZhY2UuaApAQCAtNzMsNyArNzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkludFNpemUgc2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2l6ZTsgfQogCi0g
ICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWludChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50KCkgT1ZFUlJJREU7
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1
cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSBPVkVS
UklERTsKQEAgLTEwNCw2ICsxMDUsNyBAQCBwcml2YXRlOgogI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJm
YWNlOwogI2VuZGlmCisgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gbV9ncmFw
aGljc0NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDU5ZTgzOWIyYzUzMjE2MWMzMDg0ZWYzY2Y1MTQxYWFhMGQ4OWU0MzIuLmEyZTk3NjUyYmQxZmE1
NzY5MDk0MDVlYmJhNjdhYzc4ZWQ4MjJlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNzg1LDE2ICs3ODUs
MTYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcygp
CiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmJlZ2luQ29udGVudFVwZGF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCB1aW50MzJf
dCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkKK0dyYXBoaWNzQ29udGV4dCogQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBv
aW50JiBvZmZzZXQpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250
ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0OwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
VXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOwogICAgICAgICBp
ZiAoYXRsYXMtPnN1cHBvcnRzQWxwaGEoKSA9PSAoZmxhZ3MgJiBDb29yZGluYXRlZFN1cmZhY2U6
OlN1cHBvcnRzQWxwaGEpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIG51bGwg
aWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlciBzcGFjZS4KICAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dCA9IGF0bGFzLT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJ
RCwgc2l6ZSwgb2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dDsKICAgICAgICAgfQogICAgIH0KIApAQCAtODA0
LDYgKzgwNCwxNiBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSQogICAgIHJldHVybiBtX3VwZGF0
ZUF0bGFzZXMubGFzdCgpLT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwg
c2l6ZSwgb2Zmc2V0KTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpZEVu
ZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV91cGRhdGVBdGxhc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3Vw
ZGF0ZUF0bGFzZXNbaV0tPmlkKCkgPT0gYXRsYXNJRCkgeworICAgICAgICAgICAgbV91cGRhdGVB
dGxhc2VzW2ldLT5lbmRQYWludGluZygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorfQorCiBjb25zdCBkb3VibGUgUmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50
ZXJ2YWwgPSAwLjU7CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY2hlZHVsZVJl
bGVhc2VJbmFjdGl2ZUF0bGFzZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA3ZTFkMWJhZTA0M2VlN2IxMGQ0YmVh
Zjg3YmExZDJhZWU4ODkzZDc1Li4zMDUxNTUxOWNkZDkyMTM1ZTdhZjEyZWVhMTNmZWU0YWQzYmFl
NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuaApAQCAtMTA2LDcgKzEwNiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJSZXBhaW50Q291bnQoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBpbnQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIqKTsKIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0bGFzSUQs
IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQqIGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0bGFzSUQsIFdlYkNvcmU6Oklu
dFBvaW50JiBvZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb250ZW50
VXBkYXRlKHVpbnQzMl90IGF0bGFzSUQpIE9WRVJSSURFOwogCiAgICAgLy8gVXBkYXRlQXRsYXND
bGllbnQKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJ
RCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188836</attachid>
            <date>2013-02-18 02:45:00 -0800</date>
            <delta_ts>2013-06-05 03:22:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130218024229.patch</filename>
            <type>text/plain</type>
            <size>49335</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc1N2RjOTA3ZmIxMjFk
ZWYzYjQ3NjljOGM1ZmU0YmFiNTFkZGNjOS4uYTg2ZGM5ZDFhOTBjMTIxNTZmOTk4MWFjYzc0NTI3
NTczODlkZWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAyLTE4ICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBHcmFwaGljc1N1cmZhY2UgYW5kIFNoYXJlYWJsZUJpdG1h
cCB0byBiZSByZXNwb25zaWJsZSBmb3IgdGhlaXIgR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgcHJlcGFyYXRp
b24gcGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVmYWN0b3JzIEdyYXBoaWNzU3VyZmFjZSBhbmQgU2hhcmVhYmxlQml0bWFwIHRv
IGJlCisgICAgICAgIHJlc3BvbnNpYmxlIGZvciB0aGVpciBHcmFwaGljc0NvbnRleHQuCisKKyAg
ICAgICAgQ3VycmVudGx5LCB0aGUgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29udGV4dCBpcyBtYW5h
Z2VkIGltcGxpY2l0bHkgYnkKKyAgICAgICAgcGFzc2luZyBhcm91bmQgT3duUHRyPEdyYXBoaWNz
Q29udGV4dD4uIEFzIEdyYXBoaWNzU3VyZmFjZSBhbmQKKyAgICAgICAgU2hhcmVhYmxlQml0bWFw
IHByb3ZpZGVzIEdyYXBoaWNzQ29udGV4dCwgdGhleSBzaG91bGQgZXhwbGljaXRseSBtYW5hZ2UK
KyAgICAgICAgdGhlIGxpZmVjeWNsZSBvZiBHcmFwaGljc0NvbnRleHQuIEJ5IHVzaW5nIGJlZ2lu
UGFpbnQgYW5kIGVuZFBhaW50CisgICAgICAgIHBhdHRlcm4sIEdyYXBoaWNzQ29udGV4dCBpcyBt
YW5hZ2VkIGV4cGxpY2l0bHkgYnkgR3JhcGhpY3NTdXJmYWNlIGFuZAorICAgICAgICBTaGFyZWFi
bGVCaXRtYXAuCisKKyAgICAgICAgV2ViS2l0MSBDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBiZSBp
bXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVmZmVy
LiBTaW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYsIGl0IGNhbm5v
dCBwYXNzCisgICAgICAgIE93blB0ciBvZiBHcmFwaGljc0NvbnRleHQuIFRoZXJlZm9yZSwgdGhp
cyByZWZhY3RvcmluZyBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgIGltcGxlbWVudGluZyBDb29y
ZGluYXRlZCBTdXJmYWNlIG9mIFdlYktpdDEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZTo6YmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZTo6ZW5kUGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oOgorICAgICAgICAoR3JhcGhpY3NTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNl
R0xYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFw
aGljc1N1cmZhY2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6ZW5kQ29udGVudFVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nOjp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaDoKKyAgICAgICAgKENvb3JkaW5hdGVk
U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFRpbGU6
OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkVGlsZUNs
aWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Vw
ZGF0ZUF0bGFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZUF0bGFzOjpiZWdpblBhaW50
aW5nT25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpVcGRhdGVBdGxhczo6ZW5kUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgorICAgICAgICAoVXBkYXRlQXRs
YXMpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXM6OmlkKToKKwogMjAxMy0wMi0xNyAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFN0b3Ag
cGFzc2luZyBhcm91bmQgU2VsZWN0b3JDaGVja2VyIGluIFNlbGVjdG9yUXVlcnksIG5vdyB0aGF0
IGl0J3Mgc3RhY2stYWxsb2NhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDg0NGFlYTM2ODFmODk0OWVkZTg4
ZDZiMTljODM5ZjI1OGE0ZGZkMDYuLjE2ZjQ0ZThjZTU1OTc3MTA4ODM2ZjBmMWYxMDU5YTI4MDYx
NTY1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAxMy0wMi0xOCAgSmFlIEh5dW4g
UGFyayAgPGphZS5wYXJrQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdy
YXBoaWNzIDogUmVmYWN0b3IgR3JhcGhpY3NTdXJmYWNlIGFuZCBTaGFyZWFibGVCaXRtYXAgdG8g
YmUgcmVzcG9uc2libGUgZm9yIHRoZWlyIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4ODk5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIHByZXBhcmF0aW9uIHBh
dGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGljcy4KKworICAgICAgICBUaGlzIHBh
dGNoIHJlZmFjdG9ycyBHcmFwaGljc1N1cmZhY2UgYW5kIFNoYXJlYWJsZUJpdG1hcCB0byBiZQor
ICAgICAgICByZXNwb25zaWJsZSBmb3IgdGhlaXIgR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAg
IEN1cnJlbnRseSwgdGhlIGxpZmVjeWNsZSBvZiBHcmFwaGljc0NvbnRleHQgaXMgbWFuYWdlZCBp
bXBsaWNpdGx5IGJ5CisgICAgICAgIHBhc3NpbmcgYXJvdW5kIE93blB0cjxHcmFwaGljc0NvbnRl
eHQ+LiBBcyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCBwcm92
aWRlcyBHcmFwaGljc0NvbnRleHQsIHRoZXkgc2hvdWxkIGV4cGxpY2l0bHkgbWFuYWdlCisgICAg
ICAgIHRoZSBsaWZlY3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0LiBCeSB1c2luZyBiZWdpblBhaW50
IGFuZCBlbmRQYWludAorICAgICAgICBwYXR0ZXJuLCBHcmFwaGljc0NvbnRleHQgaXMgbWFuYWdl
ZCBleHBsaWNpdGx5IGJ5IEdyYXBoaWNzU3VyZmFjZSBhbmQKKyAgICAgICAgU2hhcmVhYmxlQml0
bWFwLgorCisgICAgICAgIFdlYktpdDEgQ29vcmRpbmF0ZWRTdXJmYWNlIHdpbGwgYmUgaW1wbGVt
ZW50ZWQgdXNpbmcgR3JhcGhpY3NTdXJmYWNlIGFuZAorICAgICAgICBJbWFnZUJ1ZmZlci4gU2lu
Y2UgSW1hZ2VCdWZmZXIgb3ducyBHcmFwaGljc0NvbnRleHQgaXRzZWxmLCBpdCBjYW5ub3QgcGFz
cworICAgICAgICBPd25QdHIgb2YgR3JhcGhpY3NDb250ZXh0LiBUaGVyZWZvcmUsIHRoaXMgcmVm
YWN0b3JpbmcgaXMgbmVjZXNzYXJ5IGZvcgorICAgICAgICBpbXBsZW1lbnRpbmcgQ29vcmRpbmF0
ZWQgU3VyZmFjZSBvZiBXZWJLaXQxLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJv
eHk6OnBhaW50KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNw
cDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9t
Q0dJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHA6CisgICAg
ICAgIChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpiZWdpblBhaW50KToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6ZW5kUGFpbnQpOgorICAgICAg
ICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OmJlZ2luUGFpbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjplbmRQYWludCk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAoU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmVuY29k
ZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSk6CisgICAgICAg
ICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChDb3JlSVBDOjpl
bmNvZGVJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnBh
aW50KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnVwZGF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydEltYWdlVG9CaXRtYXApOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Y29udmVydFFQaXhtYXBUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNv
bnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmVuZENvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5k
Q29udHJvbGxlcjo6Z2V0RmluZEluZGljYXRvckJpdG1hcEFuZFJlY3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2NhbGVkU25hcHNob3RXaXRoT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRy
YXdSZWN0VG9JbWFnZSk6CisKIDIwMTMtMDItMTcgIEphZSBIeXVuIFBhcmsgIDxqYWUucGFya0Bj
b21wYW55MTAwLm5ldD4KIAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgcHVibGljIG1ldGhv
ZCBEcmF3aW5nQXJlYUltcGw6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NT
dXJmYWNlLmNwcAppbmRleCBiYWVmYThhMTkwODQxYWVhYjJiNDBhMmNkMDY0NzcyMGYxNjMzNTlj
Li44NTIyZjkzYzZlOGZiZDYwYjk4MmY5N2FjMDQ2N2IwZWFjMjUyNDEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5jcHAKQEAgLTQ1LDEyICs0NSwxNyBAQCB1aW50MzJfdCBHcmFwaGljc1N1cmZh
Y2U6OmdldFRleHR1cmVJRCgpCiAgICAgcmV0dXJuIHBsYXRmb3JtR2V0VGV4dHVyZUlEKCk7CiB9
CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBHcmFwaGljc1N1cmZhY2U6OmJlZ2luUGFp
bnQoY29uc3QgSW50UmVjdCYgcmVjdCwgTG9ja09wdGlvbnMgbG9ja09wdGlvbnMpCitHcmFwaGlj
c0NvbnRleHQqIEdyYXBoaWNzU3VyZmFjZTo6YmVnaW5QYWludChjb25zdCBJbnRSZWN0JiByZWN0
LCBMb2NrT3B0aW9ucyBsb2NrT3B0aW9ucykKIHsKICAgICBpbnQgc3RyaWRlID0gMDsKICAgICBj
aGFyKiBiaXRzID0gcGxhdGZvcm1Mb2NrKHJlY3QsICZzdHJpZGUsIGxvY2tPcHRpb25zKTsKLSAg
ICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBwbGF0Zm9ybUJlZ2lu
UGFpbnQocmVjdC5zaXplKCksIGJpdHMsIHN0cmlkZSk7Ci0gICAgcmV0dXJuIGdyYXBoaWNzQ29u
dGV4dC5yZWxlYXNlKCk7CisgICAgbV9ncmFwaGljc0NvbnRleHRzLmFwcGVuZChjcmVhdGVHcmFw
aGljc0NvbnRleHQocmVjdC5zaXplKCksIGJpdHMsIHN0cmlkZSkpOworICAgIHJldHVybiBtX2dy
YXBoaWNzQ29udGV4dHMubGFzdCgpLmdldCgpOworfQorCit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6
ZW5kUGFpbnQoKQoreworICAgIG1fZ3JhcGhpY3NDb250ZXh0cy5yZW1vdmVMYXN0KCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpjb3B5VG9HTFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1
aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2lu
dCYgb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAppbmRleCBkYTQ5MzY5OThjNWQwZGQ3OTI4
NTk1ZTIyMWM4ZmE5MjY5MWEzODc4Li5hMjNmMTk0NzYwYTA3ZWM1YjVmOTNiZTlmYTE4NjkxN2Jh
MmZkNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApAQCAtODQsNyArODQsOCBAQCBwdWJsaWM6
CiAgICAgdWludDMyX3Qgc3dhcEJ1ZmZlcnMoKTsKICAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBl
eHBvcnRUb2tlbigpOwogICAgIHVpbnQzMl90IGdldFRleHR1cmVJRCgpOwotICAgIFBhc3NPd25Q
dHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpblBhaW50KGNvbnN0IEludFJlY3QmLCBMb2NrT3B0aW9u
cyk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblBhaW50KGNvbnN0IEludFJlY3QmLCBMb2Nr
T3B0aW9ucyk7CisgICAgdm9pZCBlbmRQYWludCgpOwogICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGNy
ZWF0ZVJlYWRPbmx5SW1hZ2UoY29uc3QgSW50UmVjdCYpOwogICAgIH5HcmFwaGljc1N1cmZhY2Uo
KTsKIApAQCAtMTA0LDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKICAgICB1aW50MzJfdCBwbGF0Zm9y
bVN3YXBCdWZmZXJzKCk7CiAgICAgSW50U2l6ZSBwbGF0Zm9ybVNpemUoKSBjb25zdDsKIAotICAg
IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50
U2l6ZSYsIGNoYXIqIGJpdHMsIGludCBzdHJpZGUpOworICAgIFBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50U2l6ZSYsIGNoYXIqIGJpdHMs
IGludCBzdHJpZGUpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTG9ja09wdGlvbnMgbV9sb2NrT3B0aW9u
czsKQEAgLTEyMCw2ICsxMjEsOCBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICB1aW50MzJfdCBt
X2ZibzsKICAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKiBtX3ByaXZhdGU7CisKKyAgICBWZWN0
b3I8T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gPiBtX2dyYXBoaWNzQ29udGV4dHM7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDY4Njc4Y2ExZmZm
MzkzM2RkZTEzZWFhMjFkNTcwZmUyZTIzOTlhNjQuLjBjYmQ4MjBmOTAwMTZmNDlkNzQ0MGVlMzc2
NWM3NGRiODQ0NTg4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3Bw
CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJv
eSgpCiB9CiAKICNpZiAhUExBVEZPUk0oUVQpCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4g
R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYsIGNoYXIq
LCBpbnQpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gR3JhcGhpY3NTdXJmYWNlOjpjcmVh
dGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50U2l6ZSYsIGNoYXIqLCBpbnQpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZVF0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNz
U3VyZmFjZVF0LmNwcAppbmRleCA3MzRhMDkzYWVhNTUwZmUyODg2NjIyZjM4ODllYjhiMzcxMDRm
MWRiLi5jNzA4MWMyNjllYjJlZDMyZmRjNGJjZGY4YjE1NTFiYWM3YjBmNDdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1
cmZhY2VRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvcXQvR3JhcGhpY3NTdXJmYWNlUXQuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHZvaWQgR3JhcGhp
Y3NTdXJmYWNlOjpkaWRSZWxlYXNlSW1hZ2Uodm9pZCogZGF0YSkKICAgICBzdXJmYWNlLT5wbGF0
Zm9ybVVubG9jaygpOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gR3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY2hhciogYml0
cywgaW50IHN0cmlkZSkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBHcmFwaGljc1N1cmZh
Y2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRTaXplJiBzaXplLCBjaGFyKiBiaXRz
LCBpbnQgc3RyaWRlKQogewogICAgIFFJbWFnZTo6Rm9ybWF0IGZvcm1hdCA9IChmbGFncygpICYg
U3VwcG9ydHNBbHBoYSkgPyBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCA6IFFJ
bWFnZTo6Rm9ybWF0X1JHQjMyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDRjNDNhYTdlMjM4ZGY1ZjI4ZmJlZTM5
OTMwYjNhMGM1MTliYjY5YWEuLmIwNTI2ZTEwZTNmM2VlMzM0MzE0NDZiMGYxYWE1NDJjODgzZTg2
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCkBAIC04MDAsMTEgKzgwMCwxOCBAQCBDb2xvciBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICBy
ZXR1cm4gY29udGVudHNPcGFxdWUoKSA/IENvbG9yOjp3aGl0ZSA6IENvbG9yOjp0cmFuc3BhcmVu
dDsKIH0KIAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBh
dGxhcywgSW50UG9pbnQmIG9mZnNldCkKK0dyYXBoaWNzQ29udGV4dCogQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMy
X3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgQVNTRVJUKG1fY29vcmRpbmF0
b3IpOwogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yLT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkp
OwotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5iZWdpbkNvbnRlbnRVcGRhdGUoc2l6ZSwgY29u
dGVudHNPcGFxdWUoKSA/IENvb3JkaW5hdGVkU3VyZmFjZTo6Tm9GbGFncyA6IENvb3JkaW5hdGVk
U3VyZmFjZTo6U3VwcG9ydHNBbHBoYSwgYXRsYXMsIG9mZnNldCk7CisgICAgcmV0dXJuIG1fY29v
cmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29v
cmRpbmF0ZWRTdXJmYWNlOjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0Fs
cGhhLCBhdGxhc0lELCBvZmZzZXQpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6ZW5kQ29udGVudFVwZGF0ZSh1aW50MzJfdCBhdGxhc0lEKQoreworICAgIEFTU0VSVChtX2Nv
b3JkaW5hdG9yKTsKKyAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hh
bmdlcygpKTsKKyAgICByZXR1cm4gbV9jb29yZGluYXRvci0+ZW5kQ29udGVudFVwZGF0ZShhdGxh
c0lEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZVRpbGUodWlu
dDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYgdXBkYXRlSW5mbywgY29uc3Qg
SW50UmVjdCYgdGlsZVJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZTVhYTQ3YWZjYzA4MDIwZTIyNTkyOTEwNWE5YWMw
YThlNTlkZDMyNy4uNWNmNmVkODBkOWRkNjZkN2Y0ZGExYWYxODI4YTM4NzkzYzgyYmExYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgY29u
c3QgPSAwOwogCi0gICAgLy8gQ29vcmRpbmF0ZWRUaWxlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVRpbGUoQ29vcmRpbmF0ZWRMYXllcklELCB1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1
cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVGlsZShDb29yZGluYXRlZExheWVySUQsIHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3Vy
ZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVUaWxlKENvb3JkaW5hdGVkTGF5ZXJJRCwgdWludDMyX3QgdGlsZUlEKSA9IDA7CkBAIC03
Miw3ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25z
KENvb3JkaW5hdGVkTGF5ZXJJRCwgY29uc3QgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KikgPSAwOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29u
dGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWlu
dDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250
ZXh0KiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGVuZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkgPSAwOwogfTsK
IAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXIK
QEAgLTE1Myw3ICsxNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUo
dWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3Qm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQs
IGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNv
bnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNp
emUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGVuZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkgT1ZFUlJJREU7
CiAKICAgICB2b2lkIHNldENvb3JkaW5hdG9yKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVu
dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmNwcAppbmRleCAxMjhiYWJlMjk4ZjY2Y2JjMjc2OWNmNmZmOGVhOTgyMjlkNTE1NTc3
Li5hOTFkODA0YjhlMDI5ZGQ2NDdjYWFhZmQ5ODFmOTM3MWIwZGQ0YjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTEw
OCw4ICsxMDgsOSBAQCB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjp1cGRhdGUoKQogICAg
IH0KIAogICAgIEludFJlY3QgcmVjdChJbnRQb2ludDo6emVybygpLCBtX2ltYWdlLT5zaXplKCkp
OwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBtX3N1cmZhY2UtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dChyZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBt
X3N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCk7CiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1faW1h
Z2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOworICAgIG1fc3VyZmFj
ZS0+ZW5kUGFpbnQoKTsKIAogICAgIG1fbmF0aXZlSW1hZ2VQdHIgPSBtX2ltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRTdXJmYWNlLmgKaW5kZXggMzA3N2MzYzA5YzRhYjA2N2ZmYjk4NjY2YjQwZjYwNzU5Nzg1
ZTVkNi4uNmYxOGM4OTEwYzgzOWJhNmRlOGIyYjEyNzU1MDgyNzg4MzQwNDRlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaApAQCAtMjIsMTQgKzIyLDEz
IEBACiAjZGVmaW5lIENvb3JkaW5hdGVkU3VyZmFjZV9oCiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVj
dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQml0bWFwVGV4dHVyZTsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IAogY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PENvb3JkaW5hdGVkU3VyZmFjZT4gewogcHVibGljOgpAQCAtNDksNyArNDgsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUg
YSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFj
a2luZyBzdG9yZS4KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVh
dGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dCogYmVnaW5QYWludChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBlbmRQYWludCgpID0gMDsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0
dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+LCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZFRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHAKaW5kZXggOWY5ZDM0ZTYwNWIw
ZTJiMjUyNjhiYWE2NmM0ODA1ZGJlZmEyMDkzMS4uMGM2NWZkYmVkMWRjMmU2ODc3NzQ1MGU2Zjlh
NmMzODllMGVkMTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGls
ZS5jcHAKQEAgLTczLDE3ICs3MywxOSBAQCBWZWN0b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxl
Ojp1cGRhdGVCYWNrQnVmZmVyKCkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwog
CiAgICAgU3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRlSW5mbzsKLSAgICBPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2NsaWVudC0+YmVnaW5Db250ZW50VXBkYXRlKG1f
ZGlydHlSZWN0LnNpemUoKSwgdXBkYXRlSW5mby5hdGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VP
ZmZzZXQpOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBtX2NsaWVu
dC0+YmVnaW5Db250ZW50VXBkYXRlKG1fZGlydHlSZWN0LnNpemUoKSwgdXBkYXRlSW5mby5hdGxh
c0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpOwogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0
KQogICAgICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0
LT50cmFuc2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlSZWN0LnkoKSk7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUobV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVu
dHNTY2FsZSgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkpKTsKLSAgICBt
X3RpbGVkQmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNraW5nU3RvcmVQYWludChncmFw
aGljc0NvbnRleHQuZ2V0KCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPm1hcFRvQ29udGVudHMobV9k
aXJ0eVJlY3QpKTsKKyAgICBtX3RpbGVkQmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNr
aW5nU3RvcmVQYWludChncmFwaGljc0NvbnRleHQsIG1fdGlsZWRCYWNraW5nU3RvcmUtPm1hcFRv
Q29udGVudHMobV9kaXJ0eVJlY3QpKTsKIAogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdCA9IG1f
ZGlydHlSZWN0OwogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAt
bV9yZWN0LnkoKSk7CiAgICAgdXBkYXRlSW5mby5zY2FsZUZhY3RvciA9IG1fdGlsZWRCYWNraW5n
U3RvcmUtPmNvbnRlbnRzU2NhbGUoKTsKLSAgICBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOwor
CisgICAgbV9jbGllbnQtPmVuZENvbnRlbnRVcGRhdGUodXBkYXRlSW5mby5hdGxhc0lEKTsKIAog
ICAgIHN0YXRpYyB1aW50MzJfdCBpZCA9IDE7CiAgICAgaWYgKG1fSUQgPT0gSW52YWxpZENvb3Jk
aW5hdGVkVGlsZUlEKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgK
aW5kZXggYmU5OWJmZGFmZWY0OTFkYWQzYTM2ZmZjNWIyM2Y0NDQ3ZGJlZTQ1Zi4uZTFkZWVkMWMz
YTNhZmM1ODUzMWRlOTIzMTE3NTQ3YzAxZWI0NDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZFRpbGUuaApAQCAtNzUsNyArNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5m
byYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWlu
dDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSA9IDA7Ci0g
ICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRl
KGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmKSA9IDA7CisgICAg
dmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXpl
JiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5kQ29udGVudFVwZGF0ZSh1aW50MzJfdCBhdGxhc0lEKSA9IDA7CiB9OwogCiBjbGFz
cyBDb29yZGluYXRlZFRpbGVCYWNrZW5kIDogcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQmFja2Vu
ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCAzNjRmMDY4NzEw
ODJiNThmY2JkODNhMGVmMzE0NTBiZTQ4MDA4NDhiLi4yYzZlN2MwY2UyZWIwYzAzMDJjODdlMzA0
M2VmMzE0NTM0ZjU3YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBVcGRhdGVBdGxhczo6ZGlkU3dhcEJ1ZmZlcnMoKQogICAg
IG1fYXJlYUFsbG9jYXRvci5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dD4gVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50MzJfdCYg
YXRsYXNJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW50UG9pbnQmIG9mZnNldCkKK0dyYXBoaWNz
Q29udGV4dCogVXBkYXRlQXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50
MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW50UG9pbnQmIG9mZnNldCkKIHsK
ICAgICBtX2luYWN0aXZpdHlJblNlY29uZHMgPSAwOwogICAgIGJ1aWxkTGF5b3V0SWZOZWVkZWQo
KTsKQEAgLTcwLDE2ICs3MCwxNiBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gVXBkYXRl
QXRsYXM6OmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50MzJfdAogCiAgICAgLy8g
Tm8gYXZhaWxhYmxlIGJ1ZmZlciB3YXMgZm91bmQsIHJldHVybmluZyBudWxsLgogICAgIGlmIChy
ZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PigpOworICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV9zdXJmYWNlKQotICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CisgICAgICAgIHJldHVybiAwOwog
CiAgICAgYXRsYXNJRCA9IG1fSUQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHRyaS1zdGF0ZSBidWZm
ZXJzLCB0byBhbGxvdyBmYXN0ZXIgdXBkYXRlcy4KICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9u
KCk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJm
YWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQgPSBtX3N1cmZhY2UtPmJlZ2luUGFpbnQocmVjdCk7CiAKICAgICBpZiAo
c3VwcG9ydHNBbHBoYSgpKSB7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwpAQCAtODcsNyArODcsMTIgQEAgUGFzc093blB0cjxH
cmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZm
ZXIodWludDMyX3QKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdyYXBoaWNzQ29u
dGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dDsKK30KKwordm9pZCBV
cGRhdGVBdGxhczo6ZW5kUGFpbnRpbmcoKQoreworICAgIG1fc3VyZmFjZS0+ZW5kUGFpbnQoKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRs
YXMuaAppbmRleCA0OGE2YmY4NDRhNDkwZjdmZDJjMzlhMDQyNGUzMzBmZGRiMTZkNzhiLi45ZjQ4
MTczOTRlOTY0ZDQ5NTRlODk4OTlkYzllNGFjZjNhYTk5MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVXBkYXRlQXRsYXMuaApAQCAtNDYsNyArNDYsOSBAQCBwdWJsaWM6CiAgICAgaW5saW5lIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CiAKICAgICAv
LyBSZXR1cm5zIGEgbnVsbCBwb2ludGVyIG9mIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIu
Ci0gICAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJs
ZUJ1ZmZlcih1aW50MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYsIEludFBvaW50JiBvZmZz
ZXQpOworICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVy
KHVpbnQzMl90JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiwgSW50UG9pbnQmIG9mZnNldCk7Cisg
ICAgdm9pZCBlbmRQYWludGluZygpOworCiAgICAgdm9pZCBkaWRTd2FwQnVmZmVycygpOwogICAg
IGJvb2wgc3VwcG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c3VwcG9ydHNB
bHBoYSgpOyB9CiAKQEAgLTYyLDYgKzY0LDggQEAgcHVibGljOgogICAgIH0KICAgICBib29sIGlz
SW5Vc2UoKSBjb25zdCB7IHJldHVybiBtX2FyZWFBbGxvY2F0b3I7IH0KIAorICAgIHVpbnQzMl90
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9JRDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRM
YXlvdXRJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggY2VmM2Q0MGE0NDdkMDliNTFlMDEw
NzQ2Njk3YzIwZjE3MmM4MjhkZS4uNzIyZDI2YzBkMWYzOWQ3NDgyYjVkNWM2Yjc2Mjk5YTMzNTkw
YmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUGx1Z2luQ29udHJv
bGxlclByb3h5OjpwYWludCgpCiAgICAgQVNTRVJUKG1fcGx1Z2luKTsKIAogICAgIC8vIENyZWF0
ZSBhIGdyYXBoaWNzIGNvbnRleHQuCi0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhp
Y3NDb250ZXh0ID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5nU3RvcmUtPmJlZ2lu
UGFpbnQoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
YWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRo
YXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQpAQCAtMTkzLDcgKzE5Myw5IEBAIHZvaWQgUGx1
Z2luQ29udHJvbGxlclByb3h5OjpwYWludCgpCiAgICAgaWYgKG1fcGx1Z2luLT5pc1RyYW5zcGFy
ZW50KCkpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAK
LSAgICBtX3BsdWdpbi0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBkaXJ0eVJlY3QpOwor
ICAgIG1fcGx1Z2luLT5wYWludChncmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7CisKKyAgICBt
X2JhY2tpbmdTdG9yZS0+ZW5kUGFpbnQoKTsKIAogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6VXBkYXRlKGRpcnR5UmVjdCksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
YWlyby9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDcwM2Q4NjkwMTkyYWI3MDQ2MTY3ZmFlODRjNjhh
MjZjMGU3NTc2ZmIuLmE5ZGY0N2I5MWQ2MTBmOWNkNTg4MDRkODhjODhkYmMzYzkxMjQyOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8u
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1
cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBXS0ltYWdlT3B0aW9uCiB7CiAgICAgSW50
U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7CiAgICAgUmVmUHRyPFdlYklt
YWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9u
cyhvcHRpb25zKSk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0
ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+YmVnaW5Q
YWludCgpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwg
MCwgMCk7CkBAIC01NCw1ICs1NCw3IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DYWly
b1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBXS0ltYWdlT3B0aW9uCiAgICAgY2Fp
cm9fcmVjdGFuZ2xlKGNyLCAwLCAwLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKTsKICAgICBjYWlyb19maWxsKGNyKTsKIAorICAgIHdlYkltYWdlLT5iaXRtYXAoKS0+ZW5k
UGFpbnQoKTsKKwogICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdl
Q0cuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKaW5k
ZXggMTA3MWVmNTkyYjg2NjVmZmI4MDYyZmRiZDhmODJlMDI5OWUwN2U3NS4uNDM0MzIyZWUwMGUy
OWE0NDdmMWI3YWQ4N2E5NDY3MzBiNTlhNDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAKQEAgLTU0LDkgKzU0LDEwIEBAIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DR0ltYWdlKENHSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLSW1hZ2VPcHRpb25z
IG9wdGlvbnMpCiAgICAgaWYgKCF3ZWJJbWFnZS0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1h
Z2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+YmVnaW5QYWludCgpOwog
ICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9pbnQoMCwgMCksIGltYWdlU2l6ZSk7CiAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGVhclJlY3QocmVjdCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2VSZWYsIGltYWdlU2l6ZSwgV2ViQ29yZTo6Q29sb3JTcGFjZURldmlj
ZVJHQiwgcmVjdCwgcmVjdCk7CisgICAgd2ViSW1hZ2UtPmJpdG1hcCgpLT5lbmRQYWludCgpOwog
ICAgIHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHAKaW5kZXggNjAzODhmNGZh
MjdlMWZjMzIzYWIyNWI2N2U1ODgxYTE1YzI0NTY5MS4uYmEzODMxNzlkM2U4NzY0Y2JhMzEzNTEz
MjI2ZmM1NjczMzE3YmMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L3F0L1dLSW1hZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dL
SW1hZ2VRdC5jcHAKQEAgLTQ3LDggKzQ3LDkgQEAgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJv
bVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKQogICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1h
Z2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGltYWdlLnNpemUoKSwgc3RhdGljX2Nhc3Q8SW1hZ2VPcHRp
b25zPigwKSk7CiAgICAgaWYgKCF3ZWJJbWFnZS0+Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAw
OwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdl
LT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCktPmJlZ2luUGFpbnQoKTsKICAg
ICBRUGFpbnRlciogcGFpbnRlciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludCgwLCAwKSwgaW1hZ2UpOworICAgIHdlYklt
YWdlLT5iaXRtYXAoKS0+ZW5kUGFpbnQoKTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNw
cAppbmRleCA1MmI3ZjZkMmMxNDQzYTQ3OTc5MmU2ODA1OTNlYjY4YzBlMDRlNjk1Li40MDcxMWE5
MDMzYWM0ODQyYmM3MTI3N2Y0NWFmNWZiODI1NTAzMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3Jk
aW5hdGVkU3VyZmFjZS5jcHAKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMu
aCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CiAK
QEAgLTEwMyw3ICsxMDIsNyBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25zdAogfQogI2VuZGlmCiAK
LVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRSZWN0JiByZWN0KQorR3JhcGhpY3ND
b250ZXh0KiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBpZiAoaXNCYWNrZWRCeUdy
YXBoaWNzU3VyZmFjZSgpKQpAQCAtMTExLDEwICsxMTAsMjMgQEAgUGFzc093blB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3ND
b250ZXgKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fYml0bWFwKTsKLSAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250
ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+
YmVnaW5QYWludCgpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChyZWN0KTsKICAgICBncmFw
aGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOwotICAgIHJldHVybiBn
cmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBncmFwaGljc0NvbnRleHQ7Cit9
CisKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjplbmRQYWludCgpCit7CisjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSkgewor
ICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+ZW5kUGFpbnQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG1fYml0bWFwKTsKKyAgICBtX2JpdG1hcC0+ZW5k
UGFpbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJD
b29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDUzODZhOTE3ZTUyNmViNGEzZDU4
ZDc4MjJiOTFjZTAwOWViMjUxM2EuLjc4ZTJiNjg3YzE3NmVjMDVmMWYxYTI3Mjg1MTg3MTgwNWQz
YmI5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC03Myw3ICs3Myw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KiBiZWdpblBhaW50KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5kUGFpbnQoKSBPVkVSUklERTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBF
UikKICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJp
dG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAppbmRleCAwZjA2Yzg2NzY4M2I5MjRmNmZiYTYwNDA4ODI1
YWExM2M3ZTQxOTY0Li5mOTI0NDdjNWQ3MWU5M2U3ZjRjZTAyOGZlOGI4ODU0YTA4Y2NjOWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcApAQCAtMTYzLDQgKzE2
MywxNSBAQCB2b2lkKiBTaGFyZWFibGVCaXRtYXA6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBt
X2RhdGE7CiB9CiAKK1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogU2hhcmVhYmxlQml0bWFwOjpi
ZWdpblBhaW50KCkKK3sKKyAgICBtX2dyYXBoaWNzQ29udGV4dHMuYXBwZW5kKGNyZWF0ZUdyYXBo
aWNzQ29udGV4dCgpKTsKKyAgICByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRzLmxhc3QoKS5nZXQo
KTsKK30KKwordm9pZCBTaGFyZWFibGVCaXRtYXA6OmVuZFBhaW50KCkKK3sKKyAgICBtX2dyYXBo
aWNzQ29udGV4dHMucmVtb3ZlTGFzdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAppbmRleCAwYTAxYjhlMDJjZTI4ZWU2
YjM5NTgwNzVhMjY2MDFjYmQzNTQ4NTc2Li5lYzhmNmFkNGY5Y2M3ODRhOTAxOTU5Y2ZlMjMyMDU4
OGZmZDc4YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0x
MDcsNiArMTA3LDggQEAgcHVibGljOgogCiAgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3MgY29udGV4
dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAg
UGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpOworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWludCgpOworICAgIHZv
aWQgZW5kUGFpbnQoKTsKIAogICAgIC8vIFBhaW50IHRoZSBiYWNraW5nIHN0b3JlIGludG8gdGhl
IGdpdmVuIGNvbnRleHQuCiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNvdXJjZSk7CkBAIC0xNjcsNiArMTY5LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIElm
IHRoZSBzaGFyZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBmYXN0TWFsbG9jZWQgbWVtb3J5LCB0
aGlzIHBvaW50cyB0byB0aGUgZGF0YS4KICAgICB2b2lkKiBtX2RhdGE7CisKKyAgICBWZWN0b3I8
T3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gPiBtX2dyYXBoaWNzQ29udGV4dHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNGY2MGM0NTViMTk0MzRjZTQ4N2EyZWI0Zjk5
ZjA4YmUwMzU2ODEwZi4uNGNlM2VhZWUwNWIwMzIyYTIzNzllOTk3OGViOTVjODk4NjY3ODA3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTI4Niw3ICsyODYsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q3JlZGVudGlhbD46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIENyZWRlbnRpYWwmIGNyZQogc3RhdGljIHZvaWQg
ZW5jb2RlSW1hZ2UoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBJbWFnZSogaW1hZ2UpCiB7CiAg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVTaGFyZWFibGUoaW1hZ2UtPnNpemUoKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhh
KTsKLSAgICBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOwor
ICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKIAogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhh
bmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKaW5kZXggYTM4ZmE0NThlNTNlYmFi
NWVmYjgzYWZmNzk2MWU0Nzg5YjMzYmE4Yy4uZDkyMzRjYzA4NDQwODY2ODkyNmQ2YTI1NWFhZTNm
NDU2NzkxZTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0
bWFwQ0cuY3BwCkBAIC03NCw4ICs3NCw5IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yCiAKIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlQ29weSgpCiB7
Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBi
ZWdpblBhaW50KCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0Q0YsIENH
Qml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCkpKTsKKyAgICBlbmRQYWludCgpOwogICAgIHJldHVybiBpbWFnZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAzOTY5ZTBj
ODY1ZWRlMDIyYmVhNTlhMTZiYjYyODZlMDFhYTg0OWZlLi4xNjhkOGZlNDY5MzU1ZTZhNjdlMzRh
NTg4YzgwZDFmMWFhN2VmN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcApAQCAtNDUsMTIgKzQ1LDE0IEBAIHN0YXRpYyB2b2lkIGVuY29k
ZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgR2RrUGl4YnVmKiBwaXhidWYp
CiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUoZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgocGl4YnVmKSwg
Z2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KHBpeGJ1ZikpOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50
KCk7CiAKICAgICBjYWlyb190KiBjciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAgICAgZ2RrX2NhaXJvX3NldF9zb3VyY2VfcGl4YnVmKGNyLCBwaXhidWYsIDAs
IDApOwogICAgIGNhaXJvX3BhaW50KGNyKTsKIAorICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKKwog
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhh
bmRsZShoYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAzMWNiZTFhZTE3
ZjBlYjBjYjQ0OTdlOThkZDZjNjc3YjQ0ZmRmNGQyLi42M2EzYTJmM2FmZDUzOGQ4M2ZmMjk3NDk3
N2IyYjdiZjg4ODBlNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTcwMiwxMyAr
NzAyLDE0IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25h
cHNob3QoKQogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUoY29udGVudHNTY2FsZUZhY3Rvcigp
KTsKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3Vw
cG9ydHNBbHBoYSk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IGJpdG1h
cC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxs
eSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVhZCBvZiBzY2FsZSwgYnV0IHRoYXQg
ZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQogICAgIC8vIHdoaWNoIHdlIGN1cnJlbnRseSBkb24n
dCBoYXZlIGluaXRpYXRlZCBpbiB0aGUgcGx1Zy1pbiBwcm9jZXNzLgogICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yKCksIGNvbnRlbnRzU2NhbGVGYWN0b3Io
KSkpOwogCi0gICAgcGxhdGZvcm1QYWludChjb250ZXh0LmdldCgpLCBJbnRSZWN0KEludFBvaW50
KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOworICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dCwgSW50
UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVlKTsKKyAgICBiaXRtYXAtPmVuZFBh
aW50KCk7CiAKICAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNWMxZTU5
YjcyYmQ1M2MwNzI4NmQ2ODdkMTA1MzRlMDNkYWIyOGZkOC4uMjNlOTEyMWNmYTUzMzlkZWE3OTBj
ZjdmNzdjNjg4ZmQwNGVhYWRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTM5MiwxMyArMzkyLDE1IEBAIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAgICBiYWNraW5nU3Rv
cmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCiAgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoYmFja2lu
Z1N0b3JlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBPd25QdHI8
R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBiaXRtYXAtPmJlZ2luUGFpbnQoKTsK
IAogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yLCAtY29u
dGVudHNTY2FsZUZhY3RvcikpOwogICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZSgpLmhl
aWdodCgpKTsKIAogICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBzbmFwc2hvdEluQ29u
dGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKV07CiAKKyAgICBiaXRtYXAtPmVuZFBhaW50
KCk7CisKICAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggNjYzM2Q4MjQ3
MjYyZTU3NjFjYTBjY2UzODY5ZjFlZDY4ZDViMDEyNy4uOTc1YzQzNTE2MDZkMDllZmVlN2I1OTcx
OWUwYzZmOWI0NjE5NzcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIFBsdWdpblBy
b3h5OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGlydHlSZQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UGFpbnRFbnRpcmVQbHVnaW4oKSwgTWVz
c2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UGFpbnRFbnRpcmVQbHVnaW46OlJlcGx5KCks
IG1fcGx1Z2luSW5zdGFuY2VJRCk7CiAgICAgCiAgICAgICAgIC8vIEJsaXQgdGhlIHBsdWctaW4g
YmFja2luZyBzdG9yZSBpbnRvIG91ciBvd24gYmFja2luZyBzdG9yZS4KLSAgICAgICAgT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5nU3Rv
cmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblBhaW50KCk7CiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihjb250ZW50c1Nj
YWxlRmFjdG9yKCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVDb3B5KTsKIAogICAgICAgICBtX3BsdWdpbkJhY2tpbmdTdG9yZS0+cGFp
bnQoKmdyYXBoaWNzQ29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBJbnRQb2ludCgpLCBw
bHVnaW5Cb3VuZHMoKSk7Ci0KKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmVuZFBhaW50KCk7CiAg
ICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEgPSB0cnVlOwogICAg
IH0KIApAQCAtNjU1LDEwICs2NTUsMTEgQEAgdm9pZCBQbHVnaW5Qcm94eTo6dXBkYXRlKGNvbnN0
IEludFJlY3QmIHBhaW50ZWRSZWN0KQogCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7CiAgICAg
ICAgIC8vIEJsaXQgdGhlIHBsdWctaW4gYmFja2luZyBzdG9yZSBpbnRvIG91ciBvd24gYmFja2lu
ZyBzdG9yZS4KLSAgICAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0
ID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblBhaW50
KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihjb250
ZW50c1NjYWxlRmFjdG9yKCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0
ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3RvcmUt
PnBhaW50KCpncmFwaGljc0NvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgcGFpbnRlZFJl
Y3QubG9jYXRpb24oKSwgcGFpbnRlZFJlY3QpOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZW5k
UGFpbnQoKTsKICAgICB9CiAKICAgICAvLyBBc2sgdGhlIGNvbnRyb2xsZXIgdG8gaW52YWxpZGF0
ZSB0aGUgcmVjdCBmb3IgdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4
IGQ4MDhlZDQ0YmZhMTY4YWY1OGM4MTU3NTE3ZGE3Yjk4ZDIzMDBkMjguLjkxYzZkOGFhZWJiZTIx
ODFlODVmYTk0MzNkODJjNzlhNTNjYzMzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRH
dGsuY3BwCkBAIC00Niw5ICs0NiwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdQogCiAgICAg
SW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSks
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7CiAgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
aW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIE93blB0cjxH
cmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAt
PmJlZ2luUGFpbnQoKTsKKworICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VT
aXplKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBncmFwaGljc0NvbnRleHQpOwor
ICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VTaXplKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBncmFwaGljc0Nv
bnRleHQuZ2V0KCkpOwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCAzNGYxMzkwY2VmNmE1ZjI3OTU1MDgxNDcwYWYz
YmNiZmQ4ODRjNjY5Li5hY2RhZjk2ZTU2MGZhOTdmNmMxY2I1YzY3ZjU4OGFhYjY3MjQwZTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJ
bWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAg
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
U2hhcmVhYmxlKHNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IGJp
dG1hcC0+YmVnaW5QYWludCgpOwogCiAgICAgUmV0YWluUHRyPE5TR3JhcGhpY3NDb250ZXh0PiBz
YXZlZENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogCkBAIC03
MCw2ICs3MCw4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydElt
YWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEluCiAKICAgICBbTlNHcmFwaGljc0Nv
bnRleHQgc2V0Q3VycmVudENvbnRleHQ6c2F2ZWRDb250ZXh0LmdldCgpXTsKIAorICAgIGJpdG1h
cC0+ZW5kUGFpbnQoKTsKKwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRy
YWdDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3F0L1dlYkRyYWdDbGllbnRRdC5jcHAKaW5kZXggYmJkYjYzNWIzNzMxZTgwZjJlZTBlMmEwYTdm
NTIyZmEzZjIzOTkyZC4uM2QyY2UwNzI5Mjk1YTFiZTBlMmVmZDE0MTMyYTliMTdkY2RhMTQwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9X
ZWJEcmFnQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvcXQvV2ViRHJhZ0NsaWVudFF0LmNwcApAQCAtNDQsOSArNDQsMTEgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0UVBpeG1hcFRvU2hhcmVhYmxlQml0
bWFwKFFQaXhtYXAqIHBpeG0KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRT
aXplKHBpeG1hcC0+c2l6ZSgpKSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAg
ICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CiAKICAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5kcmF3UGl4bWFwKDAsIDAsICpwaXhtYXApOworICAgIGJpdG1hcC0+ZW5kUGFp
bnQoKTsKKwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRl
eCBiN2Q2YzAxOGIyNDI1OWU1MDI0N2I2MThmMTJhMWQ0ODUzYTU1OTBlLi42ZDVlM2JlOGUyN2Zj
OTY2Y2VjZjNjZWZjYzkwNDZiOWI2NTRiNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTc4NSwxNiArNzg1
LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMo
KQogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNz
Q29udGV4dD4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgdWludDMy
X3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCitHcmFwaGljc0NvbnRleHQqIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmIHNpemUs
IENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQ
b2ludCYgb2Zmc2V0KQogewotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29u
dGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dDsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV91cGRhdGVBdGxhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRlQXRsYXNlc1tpXS5nZXQoKTsKICAgICAgICAg
aWYgKGF0bGFzLT5zdXBwb3J0c0FscGhhKCkgPT0gKGZsYWdzICYgQ29vcmRpbmF0ZWRTdXJmYWNl
OjpTdXBwb3J0c0FscGhhKSkgewogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiBudWxs
IGlmIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIgc3BhY2UuCiAgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQgPSBhdGxhcy0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0bGFz
SUQsIHNpemUsIG9mZnNldCk7CiAgICAgICAgICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworICAgICAgICAg
ICAgICAgIHJldHVybiBncmFwaGljc0NvbnRleHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgw
NCw2ICs4MDQsMTYgQEAgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6YmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEkKICAgICByZXR1cm4gbV91cGRh
dGVBdGxhc2VzLmxhc3QoKS0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0bGFzSUQs
IHNpemUsIG9mZnNldCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjplbmRD
b250ZW50VXBkYXRlKHVpbnQzMl90IGF0bGFzSUQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV91cGRh
dGVBdGxhc2VzW2ldLT5pZCgpID09IGF0bGFzSUQpIHsKKyAgICAgICAgICAgIG1fdXBkYXRlQXRs
YXNlc1tpXS0+ZW5kUGFpbnRpbmcoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KK30KKwogY29uc3QgZG91YmxlIFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVy
dmFsID0gMC41OwogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2NoZWR1bGVSZWxl
YXNlSW5hY3RpdmVBdGxhc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggODM3OTEwMTE1Y2E4YTg3NTI1OWVkYmYx
ZmRjMmQ1ZWVkZmYxNDUwMy4uN2ZkZmNiNTQ4YjZkODZiMDBlNTg4ODQ5YmQxYTVkOTc5Yjg0NjI1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKQEAgLTEwNiw3ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldExheWVyUmVwYWludENvdW50KFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgaW50KSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKik7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBX
ZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
KiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQ
b2ludCYgb2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ29udGVudFVwZGF0
ZSh1aW50MzJfdCBhdGxhc0lEKSBPVkVSUklERTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xpZW50
CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
CmluZGV4IDYzZmQ3MTg2NGI5OWFiMjU2NjZiZDY3ODg3YTBmZWFkZjMwZTZmOGMuLjU2YTJjMjNm
YWU1YzgwNjJiZmFiOWNhMmUwNDFjY2IxN2M2Mzg5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC03MDIsNyAr
NzAyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRl
SW5mbykKICAgICBtX3Njcm9sbFJlY3QgPSBJbnRSZWN0KCk7CiAgICAgbV9zY3JvbGxPZmZzZXQg
PSBJbnRTaXplKCk7CiAKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRl
eHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CiAgICAgZ3JhcGhpY3ND
b250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAK
ICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMgPSBib3VuZHM7CkBAIC03MTYsNiArNzE2
LDggQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5m
bykKICAgICAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0cy5hcHBlbmQocmVjdHNbaV0pOwogICAg
IH0KIAorICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKKwogICAgIC8vIExheW91dCBjYW4gdHJpZ2dl
ciBtb3JlIGNhbGxzIHRvIHNldE5lZWRzRGlzcGxheSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBwcm9j
ZXNzIHRoZW0KICAgICAvLyB1bnRpbCB0aGUgVUkgcHJvY2VzcyBoYXMgcGFpbnRlZCB0aGUgdXBk
YXRlLCBzbyB3ZSBzdG9wIHRoZSB0aW1lciBoZXJlLgogICAgIG1fZGlzcGxheVRpbWVyLnN0b3Ao
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwCmluZGV4IDcwNDE4M2RiZDhiZGE4ZjVjM2E4MGMwYjY4YTU4NzhlZTgwMTY4ZjQu
LjkyZWQxZjI0MTc3ODA3YzU5N2QzNDI0NTllNTc4NzIwZmNmZDcxYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAt
MjI0LDcgKzIyNCw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OmdldEZpbmRJbmRpY2F0b3JCaXRt
YXBBbmRSZWN0KEZyYW1lKiBmcmFtZSwgU2hhcmVhYmxlQml0bWFwCiAgICAgaWYgKCFmaW5kSW5k
aWNhdG9yVGV4dEJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gZmluZEluZGljYXRvclRleHRC
YWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0ID0gZmluZEluZGljYXRvclRleHRCYWNraW5nU3RvcmUtPmJlZ2lu
UGFpbnQoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3dlYlBhZ2Ut
PmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBzZWxlY3Rp
b25SZWN0OwpAQCAtMjM1LDggKzIzNSw5IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OmdldEZpbmRJ
bmRpY2F0b3JCaXRtYXBBbmRSZWN0KEZyYW1lKiBmcmFtZSwgU2hhcmVhYmxlQml0bWFwCiAgICAg
ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25s
eSB8IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29t
cG9zaXRpbmdMYXllcnMpOwogICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
IAotICAgIGZyYW1lLT52aWV3KCktPnBhaW50KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcGFpbnRS
ZWN0KTsKKyAgICBmcmFtZS0+dmlldygpLT5wYWludChncmFwaGljc0NvbnRleHQsIHBhaW50UmVj
dCk7CiAgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yTm9y
bWFsKTsKKyAgICBmaW5kSW5kaWNhdG9yVGV4dEJhY2tpbmdTdG9yZS0+ZW5kUGFpbnQoKTsKIAog
ICAgIGlmICghZmluZEluZGljYXRvclRleHRCYWNraW5nU3RvcmUtPmNyZWF0ZUhhbmRsZShoYW5k
bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA3OGFiZDVjNGQ1NTQxNDZlMTlhODhiY2EzNTE4
MGU0YWVjMDgzNC4uMGUwYjBkNTEzMmFmMWEzYjRjOTgzNzk3NmY1YWIyNWFmZGFjYmJkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQx
Niw3ICsxNDE2LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c2NhbGVkU25hcHNo
b3RXaXRoT3B0aW9ucyhjb25zdCBJbnRSZWN0JiByZWN0LCBkb3UKICAgICBpZiAoIXNuYXBzaG90
LT5iaXRtYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+Yml0bWFwKCktPmNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLT5iZWdpblBhaW50KCk7CiAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGNvbWJpbmVkU2NhbGVGYWN0b3IpOwog
ICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKIApA
QCAtMTQyOCwxMyArMTQyOCwxNCBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzY2Fs
ZWRTbmFwc2hvdFdpdGhPcHRpb25zKGNvbnN0IEludFJlY3QmIHJlY3QsIGRvdQogICAgIGlmIChv
cHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMpCiAgICAgICAgIGNvb3Jk
aW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOwogCi0gICAgZnJhbWVWaWV3
LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBz
aG91bGRQYWludFNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKKyAgICBmcmFtZVZpZXctPnBh
aW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQsIHJlY3QsIHNob3VsZFBhaW50
U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOwogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2Vs
ZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zZWxlY3Rpb24oKS0+
Ym91bmRzKCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnN0cm9rZVJlY3Qoc2VsZWN0aW9uUmVjdGFuZ2xlLCAxKTsKICAgICB9CisgICAgc25hcHNo
b3QtPmJpdG1hcCgpLT5lbmRQYWludCgpOwogCiAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2Uo
KTsKIH0KQEAgLTMzMzYsNyArMzMzNyw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAjZW5k
aWYKIAogICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9y
dHNBbHBoYSk7Ci0gICAgICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4
dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CiAKICAgICAgICAg
ZmxvYXQgcHJpbnRpbmdTY2FsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihpbWFnZVNpemUud2lkdGgo
KSkgLyByZWN0LndpZHRoKCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKHByaW50aW5nU2NhbGUsIHByaW50aW5nU2NhbGUpKTsKQEAgLTMzNTMsNiArMzM1NCw4IEBA
IHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAgICAgICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bv
b2xSZWN0KCpncmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgICAgICB9CiAKKyAgICAgICAgYml0
bWFwLT5lbmRQYWludCgpOworCiAgICAgICAgIGltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShiaXRt
YXAucmVsZWFzZSgpKTsKICAgICB9CiAjZW5kaWYK
</data>
<flag name="commit-queue"
          id="209061"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203784</attachid>
            <date>2013-06-05 03:22:05 -0700</date>
            <delta_ts>2013-06-05 23:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Coordinated-Graphics-Manage-the-lifecycle-of-Graphic.patch</filename>
            <type>text/plain</type>
            <size>58822</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">RnJvbSBiZWE1ZDU5OGZmZDY4ZjIxM2Q0MjkwNzYzZTNkNzczMWYzYjA1MzZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWUgSHl1biBQYXJrIDxqYWUucGFya0Bjb21wYW55MTAwLm5l
dD4KRGF0ZTogVGh1LCA3IEZlYiAyMDEzIDE4OjQ1OjAyIC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
W0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBNYW5hZ2UgdGhlIGxpZmVjeWNsZSBvZgogR3JhcGhpY3ND
b250ZXh0IGV4cGxpY2l0bHkuCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA4ODk5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgYSBwcmVwYXJh
dGlvbiBwYXRjaCBmb3IgVGhyZWFkZWQgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCgpUaGlzIHBhdGNo
IHJlZmFjdG9ycyBHcmFwaGljc1N1cmZhY2UgYW5kIFNoYXJlYWJsZUJpdG1hcCB0byBiZQpyZXNw
b25zaWJsZSBmb3IgdGhlaXIgR3JhcGhpY3NDb250ZXh0LgoKQ3VycmVudGx5LCB0aGUgbGlmZWN5
Y2xlIG9mIEdyYXBoaWNzQ29udGV4dCBpcyBtYW5hZ2VkIGltcGxpY2l0bHkgYnkKcGFzc2luZyBh
cm91bmQgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4uIEFzIEdyYXBoaWNzU3VyZmFjZSBhbmQKU2hh
cmVhYmxlQml0bWFwIHByb3ZpZGVzIEdyYXBoaWNzQ29udGV4dCwgdGhleSBzaG91bGQgZXhwbGlj
aXRseSBtYW5hZ2UKdGhlIGxpZmVjeWNsZSBvZiBHcmFwaGljc0NvbnRleHQuIEJ5IHVzaW5nIGJl
Z2luUGFpbnQgYW5kIGVuZFBhaW50CnBhdHRlcm4sIEdyYXBoaWNzQ29udGV4dCBpcyBtYW5hZ2Vk
IGV4cGxpY2l0bHkgYnkgR3JhcGhpY3NTdXJmYWNlIGFuZApTaGFyZWFibGVCaXRtYXAuCgpUaHJl
YWRlZENvb3JkaW5hdGVkU3VyZmFjZSB3aWxsIGJlIGltcGxlbWVudGVkIHVzaW5nIEdyYXBoaWNz
U3VyZmFjZSBhbmQKSW1hZ2VCdWZmZXIuIFNpbmNlIEltYWdlQnVmZmVyIG93bnMgR3JhcGhpY3ND
b250ZXh0IGl0c2VsZiwgaXQgY2Fubm90IHBhc3MKT3duUHRyIG9mIEdyYXBoaWNzQ29udGV4dC4g
VGhlcmVmb3JlLCB0aGlzIHJlZmFjdG9yaW5nIGlzIG5lY2Vzc2FyeSBmb3IKaW1wbGVtZW50aW5n
IFRocmVhZGVkIENvb3JkaW5hdGVkIFN1cmZhY2UuCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDU3ICsrKysrKysrKysrKysrKwogLi4u
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAgfCAgIDEzICsr
Ky0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaCAgIHwg
ICAgNyArLQogLi4uL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VDb21tb24uY3BwICAgICAg
ICAgfCAgICAyICstCiAuLi4vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdM
WC5jcHAgICB8ICAgIDIgKy0KIC4uLi9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZh
Y2VRdC5jcHAgICAgIHwgICAgMiArLQogLi4uL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAgICAgICAgfCAgIDExICsrLQogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCAgfCAgICA3ICstCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCB8ICAgIDMgKy0KIC4uLi90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCAgICAgIHwgICA1MiArKysrKysrKysrKysrKwog
Li4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaCAgICAgICAgfCAgIDMx
ICsrKysrKy0tCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHAgICAg
ICAgICB8ICAgIDggKystCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkVGlsZS5oICB8ICAgIDMgKy0KIC4uLi9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwICAgIHwgICAxNSArKy0tCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1VwZGF0ZUF0bGFzLmggICAgICB8ICAgIDYgKy0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3NCArKysrKysrKysrKysrKysrKysrKwog
Li4uL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCAgICAgICAgfCAgICA2
ICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCB8
ICAgIDQgKy0KIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwICAg
ICAgIHwgICAgMyArLQogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5j
cHAgICAgICAgfCAgICAzICstCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRl
ZFN1cmZhY2UuY3BwICB8ICAgNTAgKysrKysrLS0tLS0tLQogLi4uL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmggICAgfCAgIDIzICstLS0tLQogU291cmNlL1dlYktp
dDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgICAgICAgICAgfCAgIDEzICsrKysKIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaCAgICAgICAgICAgIHwgICAgNCArKwog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgICAgfCAgICA0
ICstCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwICAgICB8
ICAgIDEgKwogU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAg
ICAgfCAgICA0ICstCiAuLi4vV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcCB8ICAgIDUgKy0KIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIHwgICAgNCArLQogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcCAgfCAgICA3ICstCiAuLi4vV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRy
YWdDbGllbnRHdGsuY3BwICAgICAgICB8ICAgIDYgKy0KIC4uLi9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbSAgICAgICAgIHwgICAgNCArLQogLi4uL1dlYkNvcmVTdXBwb3J0
L3F0L1dlYkRyYWdDbGllbnRRdC5jcHAgICAgICAgICAgfCAgICA0ICstCiAuLi4vQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKy0KIC4uLi9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIHwgICAgNCArLQog
Li4uL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgfCAgICA0
ICstCiAuLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwICB8
ICAgIDUgKy0KIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAg
ICAgIHwgICAxMSArLS0KIDM4IGZpbGVzIGNoYW5nZWQsIDM2OSBpbnNlcnRpb25zKCspLCAxMDkg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc5YzRhMzEuLjZhMDllMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw2MCBAQAorMjAxMy0wNi0wNCAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNv
bXBhbnkxMDAubmV0PgorCisgICAgICAgIFtDb29yZGluYXRlZCBHcmFwaGljc10gTWFuYWdlIHRo
ZSBsaWZlY3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0IGV4cGxpY2l0bHkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgcHJlcGFyYXRpb24g
cGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVmYWN0b3JzIEdyYXBoaWNzU3VyZmFjZSBhbmQgU2hhcmVhYmxlQml0bWFwIHRvIGJl
CisgICAgICAgIHJlc3BvbnNpYmxlIGZvciB0aGVpciBHcmFwaGljc0NvbnRleHQuCisKKyAgICAg
ICAgQ3VycmVudGx5LCB0aGUgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29udGV4dCBpcyBtYW5hZ2Vk
IGltcGxpY2l0bHkgYnkKKyAgICAgICAgcGFzc2luZyBhcm91bmQgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4uIEFzIEdyYXBoaWNzU3VyZmFjZSBhbmQKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwIHBy
b3ZpZGVzIEdyYXBoaWNzQ29udGV4dCwgdGhleSBzaG91bGQgZXhwbGljaXRseSBtYW5hZ2UKKyAg
ICAgICAgdGhlIGxpZmVjeWNsZSBvZiBHcmFwaGljc0NvbnRleHQuIEJ5IHVzaW5nIGJlZ2luUGFp
bnQgYW5kIGVuZFBhaW50CisgICAgICAgIHBhdHRlcm4sIEdyYXBoaWNzQ29udGV4dCBpcyBtYW5h
Z2VkIGV4cGxpY2l0bHkgYnkgR3JhcGhpY3NTdXJmYWNlIGFuZAorICAgICAgICBTaGFyZWFibGVC
aXRtYXAuCisKKyAgICAgICAgVGhyZWFkZWRDb29yZGluYXRlZFN1cmZhY2Ugd2lsbCBiZSBpbXBs
ZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2UgYW5kCisgICAgICAgIEltYWdlQnVmZmVyLiBT
aW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNzQ29udGV4dCBpdHNlbGYsIGl0IGNhbm5vdCBw
YXNzCisgICAgICAgIE93blB0ciBvZiBHcmFwaGljc0NvbnRleHQuIFRoZXJlZm9yZSwgdGhpcyBy
ZWZhY3RvcmluZyBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgIGltcGxlbWVudGluZyBUaHJlYWRl
ZCBDb29yZGluYXRlZCBTdXJmYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZTo6YmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmVu
ZFBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhp
Y3NTdXJmYWNlQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJl
Z2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmVuZENvbnRlbnRVcGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6
OkNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U6OmNyZWF0ZVdpdGhHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpjb3B5VG9UZXh0dXJlVXNpbmdHcmFwaGljc1N1cmZhY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZh
Y2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OmZsYWdzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6aXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZFRpbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXM6OmJl
Z2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVB
dGxhczo6ZW5kUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXM6
OmlkKToKKwogMjAxMy0wNi0wNCAgR3dhbmcgWW9vbiBId2FuZyAgPHJ5dW1pZWxAY29tcGFueTEw
MC5uZXQ+CiAKICAgICAgICAgW0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBQcmV2ZW50IGEgcmVjdXJz
aXZlIHBhaW50aW5nIGluIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3Vy
ZmFjZS5jcHAKaW5kZXggMmE3YTRiMi4uNzE1NmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
Y3BwCkBAIC00NSwxMiArNDUsMTkgQEAgdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpnZXRUZXh0
dXJlSUQoKQogICAgIHJldHVybiBwbGF0Zm9ybUdldFRleHR1cmVJRCgpOwogfQogCi1QYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gR3JhcGhpY3NTdXJmYWNlOjpiZWdpblBhaW50KGNvbnN0IElu
dFJlY3QmIHJlY3QsIExvY2tPcHRpb25zIGxvY2tPcHRpb25zKQorR3JhcGhpY3NDb250ZXh0KiBH
cmFwaGljc1N1cmZhY2U6OmJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCwgTG9ja09wdGlv
bnMgbG9ja09wdGlvbnMpCiB7CisgICAgQVNTRVJUKCFtX2dyYXBoaWNzQ29udGV4dCk7CisKICAg
ICBpbnQgc3RyaWRlID0gMDsKICAgICBjaGFyKiBiaXRzID0gcGxhdGZvcm1Mb2NrKHJlY3QsICZz
dHJpZGUsIGxvY2tPcHRpb25zKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQgPSBwbGF0Zm9ybUJlZ2luUGFpbnQocmVjdC5zaXplKCksIGJpdHMsIHN0cmlkZSk7
Ci0gICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgbV9ncmFwaGljc0Nv
bnRleHQgPSBjcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdC5zaXplKCksIGJpdHMsIHN0cmlkZSk7
CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0LmdldCgpOworfQorCit2b2lkIEdyYXBoaWNz
U3VyZmFjZTo6ZW5kUGFpbnQoKQoreworICAgIG1fZ3JhcGhpY3NDb250ZXh0LmNsZWFyKCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpjb3B5VG9HTFRleHR1cmUodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQ
b2ludCYgb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaAppbmRleCA3MzFhZjJiLi40MjIwOWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9H
cmFwaGljc1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaApAQCAtODQsNyArODQsOCBAQCBwdWJsaWM6CiAgICAg
dWludDMyX3Qgc3dhcEJ1ZmZlcnMoKTsKICAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBleHBvcnRU
b2tlbigpOwogICAgIHVpbnQzMl90IGdldFRleHR1cmVJRCgpOwotICAgIFBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBiZWdpblBhaW50KGNvbnN0IEludFJlY3QmLCBMb2NrT3B0aW9ucyk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpblBhaW50KGNvbnN0IEludFJlY3QmLCBMb2NrT3B0aW9u
cyk7CisgICAgdm9pZCBlbmRQYWludCgpOwogICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZVJl
YWRPbmx5SW1hZ2UoY29uc3QgSW50UmVjdCYpOwogICAgIH5HcmFwaGljc1N1cmZhY2UoKTsKIApA
QCAtMTA0LDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKICAgICB1aW50MzJfdCBwbGF0Zm9ybVN3YXBC
dWZmZXJzKCk7CiAgICAgSW50U2l6ZSBwbGF0Zm9ybVNpemUoKSBjb25zdDsKIAotICAgIFBhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYs
IGNoYXIqIGJpdHMsIGludCBzdHJpZGUpOworICAgIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50U2l6ZSYsIGNoYXIqIGJpdHMsIGludCBz
dHJpZGUpOwogCiBwcm90ZWN0ZWQ6CiAgICAgTG9ja09wdGlvbnMgbV9sb2NrT3B0aW9uczsKQEAg
LTEyMCw2ICsxMjEsOCBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICB1aW50MzJfdCBtX2ZibzsK
ICAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKiBtX3ByaXZhdGU7CisKKyAgICBPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBtX2dyYXBoaWNzQ29udGV4dDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZh
Y2VDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWZsL0dyYXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAKaW5kZXggNDJlZDA1OS4uNTgyMjQ1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dy
YXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAKQEAgLTI1Myw3ICsy
NTMsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1EZXN0cm95KCkKICAgICBtX3By
aXZhdGUgPSAwOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gR3JhcGhpY3NTdXJm
YWNlOjpwbGF0Zm9ybUJlZ2luUGFpbnQoY29uc3QgSW50U2l6ZSYsIGNoYXIqLCBpbnQpCitQYXNz
T3duUHRyPEdyYXBoaWNzQ29udGV4dD4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHQoY29uc3QgSW50U2l6ZSYsIGNoYXIqLCBpbnQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdM
WC5jcHAKaW5kZXggMjNmOGFmYi4uYjIyMzhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNz
U3VyZmFjZUdMWC5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1EZXN0cm95KCkKIH0KIAogI2lmICFQTEFURk9STShRVCkKLVBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQmVnaW5QYWludChjb25zdCBJ
bnRTaXplJiwgY2hhciosIGludCkKK1Bhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBHcmFwaGlj
c1N1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRTaXplJiwgY2hhciosIGlu
dCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhp
Y3NTdXJmYWNlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvcXQvR3JhcGhpY3NTdXJmYWNlUXQuY3BwCmluZGV4IDczNGEwOTMuLmM3MDgxYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBo
aWNzU3VyZmFjZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VRdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdm9pZCBH
cmFwaGljc1N1cmZhY2U6OmRpZFJlbGVhc2VJbWFnZSh2b2lkKiBkYXRhKQogICAgIHN1cmZhY2Ut
PnBsYXRmb3JtVW5sb2NrKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtQmVnaW5QYWludChjb25zdCBJbnRTaXplJiBzaXplLCBjaGFy
KiBiaXRzLCBpbnQgc3RyaWRlKQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IEdyYXBoaWNz
U3VyZmFjZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IEludFNpemUmIHNpemUsIGNoYXIq
IGJpdHMsIGludCBzdHJpZGUpCiB7CiAgICAgUUltYWdlOjpGb3JtYXQgZm9ybWF0ID0gKGZsYWdz
KCkgJiBTdXBwb3J0c0FscGhhKSA/IFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVk
IDogUUltYWdlOjpGb3JtYXRfUkdCMzI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZDAxNmQwMi4uZjhmMjg2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKQEAgLTk1OSwxMSArOTU5LDE4IEBAIENvbG9yIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogICAgIHJldHVy
biBjb250ZW50c09wYXF1ZSgpID8gQ29sb3I6OndoaXRlIDogQ29sb3I6OnRyYW5zcGFyZW50Owog
fQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFz
LCBJbnRQb2ludCYgb2Zmc2V0KQorR3JhcGhpY3NDb250ZXh0KiBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYg
YXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBBU1NFUlQobV9jb29yZGluYXRvcik7
CiAgICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNoYW5nZXMoKSk7Ci0g
ICAgcmV0dXJuIG1fY29vcmRpbmF0b3ItPmJlZ2luQ29udGVudFVwZGF0ZShzaXplLCBjb250ZW50
c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRTdXJmYWNlOjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJm
YWNlOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zmc2V0KTsKKyAgICByZXR1cm4gbV9jb29yZGlu
YXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkgPyBDb29yZGlu
YXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEs
IGF0bGFzSUQsIG9mZnNldCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpl
bmRDb250ZW50VXBkYXRlKHVpbnQzMl90IGF0bGFzSUQpCit7CisgICAgQVNTRVJUKG1fY29vcmRp
bmF0b3IpOworICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yLT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2Vz
KCkpOworICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5lbmRDb250ZW50VXBkYXRlKGF0bGFzSUQp
OwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlVGlsZSh1aW50MzJf
dCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZvLCBjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBlNTIyY2JmLi45MWIyODAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC01Miw4ICs1
Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFj
a2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2UqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopID0gMDsKLSAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29u
c3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lE
LCBJbnRQb2ludCYpID0gMDsKLQorICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVp
bnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGVuZENvbnRlbnRVcGRhdGUodWludDMyX3QgYXRsYXNJRCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllclN0YXRlJikgPSAwOwogfTsKIApAQCAtMTQyLDcgKzE0Miw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRh
dGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJ
bnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3Qg
dGlsZUlEKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJ
bnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0KiBiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYg
b2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ29udGVudFVwZGF0ZSh1aW50
MzJfdCBhdGxhc0lEKSBPVkVSUklERTsKIAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCmluZGV4IDFhOWY1MGYuLmE1YmZlOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nLmNwcApAQCAtMTA5LDggKzEwOSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6
OnVwZGF0ZSgpCiAgICAgfQogCiAgICAgSW50UmVjdCByZWN0KEludFBvaW50Ojp6ZXJvKCksIG1f
aW1hZ2UtPnNpemUoKSk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1f
c3VyZmFjZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCA9IG1fc3VyZmFjZS0+YmVnaW5QYWludChyZWN0KTsKICAgICBjb250ZXh0LT5k
cmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgcmVjdCwgcmVjdCk7
CisgICAgbV9zdXJmYWNlLT5lbmRQYWludCgpOwogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1f
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKaW5kZXggZjlhOTQyMy4uYTYzN2M1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAg
LTI4LDYgKzI4LDEwIEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKKyNpZiBV
U0UoVEVYVFVSRV9NQVBQRVIpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDb29yZGluYXRlZFN1cmZhY2U6OkZhY3RvcnkqIENv
b3JkaW5hdGVkU3VyZmFjZTo6c19mYWN0b3J5ID0gMDsKQEAgLTQzLDYgKzQ3LDU0IEBAIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBGCiAgICAgcmV0dXJuIHNfZmFjdG9yeShzaXplLCBmbGFncyk7CiB9
CiAKK0Nvb3JkaW5hdGVkU3VyZmFjZTo6Q29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IEludFNpemUm
IHNpemUsIEZsYWdzIGZsYWdzKQorICAgIDogbV9zaXplKHNpemUpCisgICAgLCBtX2ZsYWdzKGZs
YWdzKQoreworfQorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCitDb29yZGluYXRlZFN1cmZh
Y2U6OkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywg
UGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCisgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgLCBtX2dyYXBoaWNzU3VyZmFjZShzdXJmYWNlKQor
eworfQorCitQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
cmVhdGVXaXRoR3JhcGhpY3NTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdz
KQoreworICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0KKyAgICAgICAg
R3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NvZnR3YXJlV3JpdGUKKyAgICAgICAgfCBHcmFwaGlj
c1N1cmZhY2U6OlN1cHBvcnRzQ29weVRvVGV4dHVyZQorICAgICAgICB8IEdyYXBoaWNzU3VyZmFj
ZTo6U3VwcG9ydHNTaGFyaW5nOworCisgICAgaWYgKGZsYWdzICYgU3VwcG9ydHNBbHBoYSkKKyAg
ICAgICAgc3VyZmFjZUZsYWdzIHw9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNBbHBoYTsKKwor
ICAgIHJldHVybiBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJmYWNlRmxhZ3MpOwor
fQorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorYm9vbCBDb29yZGluYXRlZFN1cmZhY2U6OmNv
cHlUb1RleHR1cmVVc2luZ0dyYXBoaWNzU3VyZmFjZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCit7Cisg
ICAgaWYgKCFpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVHTCA9IHRvQml0bWFwVGV4
dHVyZUdMKHRleHR1cmUpOworICAgIGlmICh0ZXh0dXJlR0wpIHsKKyAgICAgICAgdWludDMyX3Qg
dGV4dHVyZUlEID0gdGV4dHVyZUdMLT5pZCgpOworICAgICAgICB1aW50MzJfdCB0ZXh0dXJlVGFy
Z2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJlVGFyZ2V0KCk7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJm
YWNlLT5jb3B5VG9HTFRleHR1cmUodGV4dHVyZVRhcmdldCwgdGV4dHVyZUlELCB0YXJnZXQsIHNv
dXJjZU9mZnNldCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBtX2dyYXBoaWNzU3VyZmFjZS0+Y3JlYXRlUmVhZE9ubHlJbWFnZShJbnRS
ZWN0KHNvdXJjZU9mZnNldCwgdGFyZ2V0LnNpemUoKSkpOworICAgIHRleHR1cmUtPnVwZGF0ZUNv
bnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIEludFBvaW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIpCisjZW5kaWYgLy8gVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1
cmZhY2UuaAppbmRleCAzMDc3YzNjLi4yZjEyNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0yMiwxNCArMjIsMTcgQEAKICNkZWZpbmUgQ29v
cmRpbmF0ZWRTdXJmYWNlX2gKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQml0bWFwVGV4dHVyZTsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogY2xh
c3MgQ29vcmRpbmF0ZWRTdXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3Jk
aW5hdGVkU3VyZmFjZT4gewogcHVibGljOgpAQCAtNDYsMTcgKzQ5LDM1IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Db29yZGluYXRlZFN1cmZhY2UoKSB7IH0KIAogICAgIGJvb2wgc3VwcG9ydHNB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBTdXBwb3J0c0FscGhhOyB9Ci0gICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zaXplOyB9CiAKICAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRo
YXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29u
c3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWlu
dChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludCgpID0gMDsK
IAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVy
ZShQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+LCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0
IEludFBvaW50JiBzb3VyY2VPZmZzZXQpID0gMDsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBGbGFncyBmbGFncygpIGNvbnN0ID0gMDsKKyAgICBDb29yZGluYXRlZFN1cmZhY2Uo
Y29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKKworICAgIEZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFnczsgfQorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgQ29vcmRpbmF0
ZWRTdXJmYWNlKGNvbnN0IEludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZh
Y2U+KTsKKyAgICBib29sIGlzQmFja2VkQnlHcmFwaGljc1N1cmZhY2UoKSBjb25zdCB7IHJldHVy
biAhIW1fZ3JhcGhpY3NTdXJmYWNlOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NT
dXJmYWNlPiBjcmVhdGVXaXRoR3JhcGhpY3NTdXJmYWNlKGNvbnN0IEludFNpemUmLCBGbGFncyk7
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGJvb2wgY29weVRvVGV4dHVyZVVzaW5nR3Jh
cGhpY3NTdXJmYWNlKEJpdG1hcFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0
IEludFBvaW50JiBzb3VyY2VPZmZzZXQpOworI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikK
KyNlbmRpZiAvLyBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKworICAgIEludFNpemUgbV9zaXplOwor
ICAgIEZsYWdzIG1fZmxhZ3M7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgUmVmUHRy
PEdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CisjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICBzdGF0aWMgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGYWN0b3J5KiBzX2ZhY3Rvcnk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCmluZGV4IDlmOWQzNGUuLjBj
NjVmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCkBA
IC03MywxNyArNzMsMTkgQEAgVmVjdG9yPEludFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRl
QmFja0J1ZmZlcigpCiAgICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKIAogICAgIFN1
cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm87Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4g
Z3JhcGhpY3NDb250ZXh0ID0gbV9jbGllbnQtPmJlZ2luQ29udGVudFVwZGF0ZShtX2RpcnR5UmVj
dC5zaXplKCksIHVwZGF0ZUluZm8uYXRsYXNJRCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsK
KworICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gbV9jbGllbnQtPmJlZ2lu
Q29udGVudFVwZGF0ZShtX2RpcnR5UmVjdC5zaXplKCksIHVwZGF0ZUluZm8uYXRsYXNJRCwgdXBk
YXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNs
YXRlKC1tX2RpcnR5UmVjdC54KCksIC1tX2RpcnR5UmVjdC55KCkpOwogICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUo
KSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgpKSk7Ci0gICAgbV90aWxlZEJh
Y2tpbmdTdG9yZS0+Y2xpZW50KCktPnRpbGVkQmFja2luZ1N0b3JlUGFpbnQoZ3JhcGhpY3NDb250
ZXh0LmdldCgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRzKG1fZGlydHlSZWN0
KSk7CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZS0+Y2xpZW50KCktPnRpbGVkQmFja2luZ1N0b3Jl
UGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBtX3RpbGVkQmFja2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRz
KG1fZGlydHlSZWN0KSk7CiAKICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3QgPSBtX2RpcnR5UmVj
dDsKICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55
KCkpOwogICAgIHVwZGF0ZUluZm8uc2NhbGVGYWN0b3IgPSBtX3RpbGVkQmFja2luZ1N0b3JlLT5j
b250ZW50c1NjYWxlKCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKKworICAgIG1f
Y2xpZW50LT5lbmRDb250ZW50VXBkYXRlKHVwZGF0ZUluZm8uYXRsYXNJRCk7CiAKICAgICBzdGF0
aWMgdWludDMyX3QgaWQgPSAxOwogICAgIGlmIChtX0lEID09IEludmFsaWRDb29yZGluYXRlZFRp
bGVJRCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oCmluZGV4IGJl
OTliZmQuLmUxZGVlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxl
LmgKQEAgLTc1LDcgKzc1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxl
KHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29u
c3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwg
dWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgR3JhcGhpY3ND
b250ZXh0KiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxh
c0lELCBJbnRQb2ludCYgb2Zmc2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZENvbnRlbnRV
cGRhdGUodWludDMyX3QgYXRsYXNJRCkgPSAwOwogfTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRUaWxl
QmFja2VuZCA6IHB1YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUJhY2tlbmQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0
ZUF0bGFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKaW5kZXggYmUxOGE2NC4uZGFjZGFhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1Vw
ZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgVXBk
YXRlQXRsYXM6OmRpZFN3YXBCdWZmZXJzKCkKICAgICBtX2FyZWFBbGxvY2F0b3IuY2xlYXIoKTsK
IH0KIAotUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50
aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IEludFNpemUmIHNp
emUsIEludFBvaW50JiBvZmZzZXQpCitHcmFwaGljc0NvbnRleHQqIFVwZGF0ZUF0bGFzOjpiZWdp
blBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IEludFNp
emUmIHNpemUsIEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9pbmFjdGl2aXR5SW5TZWNvbmRz
ID0gMDsKICAgICBidWlsZExheW91dElmTmVlZGVkKCk7CkBAIC02OSwxNiArNjksMTYgQEAgUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25BdmFp
bGFibGVCdWZmZXIodWludDMyX3QKIAogICAgIC8vIE5vIGF2YWlsYWJsZSBidWZmZXIgd2FzIGZv
dW5kLCByZXR1cm5pbmcgbnVsbC4KICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBpZiAoIW1fc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0PigpOworICAgICAgICByZXR1cm4gMDsKIAogICAgIGF0bGFzSUQgPSBtX0lEOwogCiAg
ICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywgdG8gYWxsb3cgZmFzdGVyIHVwZGF0
ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwotICAgIE93blB0cjxHcmFwaGljc0Nv
bnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNl
LT5iZWdpblBhaW50KHJlY3QpOwogCiAgICAgaWYgKHN1cHBvcnRzQWxwaGEoKSkgewogICAgICAg
ICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsK
QEAgLTg2LDcgKzg2LDEyIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxh
czo6YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90CiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIpOwog
ICAgIH0KIAotICAgIHJldHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVy
biBncmFwaGljc0NvbnRleHQ7Cit9CisKK3ZvaWQgVXBkYXRlQXRsYXM6OmVuZFBhaW50aW5nKCkK
K3sKKyAgICBtX3N1cmZhY2UtPmVuZFBhaW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKaW5kZXggNDFlYjM4ZS4uOTllZTA5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKQEAgLTQ2LDcgKzQ2LDkgQEAg
cHVibGljOgogICAgIGlubGluZSBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N1cmZh
Y2UtPnNpemUoKTsgfQogCiAgICAgLy8gUmV0dXJucyBhIG51bGwgcG9pbnRlciBvZiB0aGVyZSBp
cyBubyBhdmFpbGFibGUgYnVmZmVyLgotICAgIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBi
ZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IElu
dFNpemUmLCBJbnRQb2ludCYgb2Zmc2V0KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luUGFp
bnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYs
IEludFBvaW50JiBvZmZzZXQpOworICAgIHZvaWQgZW5kUGFpbnRpbmcoKTsKKwogICAgIHZvaWQg
ZGlkU3dhcEJ1ZmZlcnMoKTsKICAgICBib29sIHN1cHBvcnRzQWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3N1cmZhY2UtPnN1cHBvcnRzQWxwaGEoKTsgfQogCkBAIC02Miw2ICs2NCw4IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgYm9vbCBpc0luVXNlKCkgY29uc3QgeyByZXR1cm4gbV9hcmVhQWxsb2Nh
dG9yOyB9CiAKKyAgICB1aW50MzJfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fSUQ7IH0KKwogcHJp
dmF0ZToKICAgICB2b2lkIGJ1aWxkTGF5b3V0SWZOZWVkZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDZl
ZjVlNzIuLmVkZWI5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAxMy0wNi0wNCAg
SmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtDb29y
ZGluYXRlZCBHcmFwaGljc10gTWFuYWdlIHRoZSBsaWZlY3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0
IGV4cGxpY2l0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDg4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVhZGVkIENvb3JkaW5hdGVk
IEdyYXBoaWNzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIEdyYXBoaWNzU3VyZmFj
ZSBhbmQgU2hhcmVhYmxlQml0bWFwIHRvIGJlCisgICAgICAgIHJlc3BvbnNpYmxlIGZvciB0aGVp
ciBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgbGlmZWN5Y2xlIG9m
IEdyYXBoaWNzQ29udGV4dCBpcyBtYW5hZ2VkIGltcGxpY2l0bHkgYnkKKyAgICAgICAgcGFzc2lu
ZyBhcm91bmQgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4uIEFzIEdyYXBoaWNzU3VyZmFjZSBhbmQK
KyAgICAgICAgU2hhcmVhYmxlQml0bWFwIHByb3ZpZGVzIEdyYXBoaWNzQ29udGV4dCwgdGhleSBz
aG91bGQgZXhwbGljaXRseSBtYW5hZ2UKKyAgICAgICAgdGhlIGxpZmVjeWNsZSBvZiBHcmFwaGlj
c0NvbnRleHQuIEJ5IHVzaW5nIGJlZ2luUGFpbnQgYW5kIGVuZFBhaW50CisgICAgICAgIHBhdHRl
cm4sIEdyYXBoaWNzQ29udGV4dCBpcyBtYW5hZ2VkIGV4cGxpY2l0bHkgYnkgR3JhcGhpY3NTdXJm
YWNlIGFuZAorICAgICAgICBTaGFyZWFibGVCaXRtYXAuCisKKyAgICAgICAgVGhyZWFkZWRDb29y
ZGluYXRlZFN1cmZhY2Ugd2lsbCBiZSBpbXBsZW1lbnRlZCB1c2luZyBHcmFwaGljc1N1cmZhY2Ug
YW5kCisgICAgICAgIEltYWdlQnVmZmVyLiBTaW5jZSBJbWFnZUJ1ZmZlciBvd25zIEdyYXBoaWNz
Q29udGV4dCBpdHNlbGYsIGl0IGNhbm5vdCBwYXNzCisgICAgICAgIE93blB0ciBvZiBHcmFwaGlj
c0NvbnRleHQuIFRoZXJlZm9yZSwgdGhpcyByZWZhY3RvcmluZyBpcyBuZWNlc3NhcnkgZm9yCisg
ICAgICAgIGltcGxlbWVudGluZyBUaHJlYWRlZCBDb29yZGluYXRlZCBTdXJmYWNlLgorCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBhaW50KToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9t
Q2Fpcm9TdXJmYWNlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0FQ
SS9jL3F0L1dLSW1hZ2VRdC5jcHA6CisgICAgICAgIChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVX
aXRoU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6YmVn
aW5QYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6ZW5kUGFp
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5h
dGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y29w
eVRvVGV4dHVyZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6YmVnaW5QYWludCk6CisgICAgICAg
IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6ZW5kUGFpbnQpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmVuY29kZUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRt
YXA6Om1ha2VDR0ltYWdlQ29weSk6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHA6CisgICAgICAgIChDb3JlSVBDOjplbmNvZGVJbWFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzbmFw
c2hvdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJveHk6OnVwZGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRDYWlyb1N1
cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydElt
YWdlVG9CaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2Vi
RHJhZ0NsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFFQaXhtYXBUb1NoYXJl
YWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmVuZENvbnRlbnRVcGRhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUlt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpnZXRGaW5kSW5kaWNhdG9yQml0bWFwQW5kUmVjdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdFdpdGhPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKToKKwogMjAxMy0wNi0wNCAgR3dhbmcgWW9vbiBId2Fu
ZyAgPHJ5dW1pZWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW0Nvb3JkaW5hdGVkIEdyYXBo
aWNzXSBQcmV2ZW50IGEgcmVjdXJzaXZlIHBhaW50aW5nIGluIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwCmluZGV4IGYzMTJiMDEuLmEwMDU1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTE4Miw3ICsxODIsNyBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQoKQogICAg
IEFTU0VSVChtX3BsdWdpbik7CiAKICAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0Lgot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fYmFja2luZ1N0
b3JlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblBhaW50KCk7CiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkgY2FsbCBhcHBseURldmljZVNj
YWxlRmFjdG9yIGluc3RlYWQgb2Ygc2NhbGUsIGJ1dCB0aGF0IGVuZHMgdXAgY2FsbGluZyBpbnRv
IFdLU0kKQEAgLTE5Myw3ICsxOTMsOSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFp
bnQoKQogICAgIGlmIChtX3BsdWdpbi0+aXNUcmFuc3BhcmVudCgpKQogICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmNsZWFyUmVjdChkaXJ0eVJlY3QpOwogCi0gICAgbV9wbHVnaW4tPnBhaW50KGdy
YXBoaWNzQ29udGV4dC5nZXQoKSwgZGlydHlSZWN0KTsKKyAgICBtX3BsdWdpbi0+cGFpbnQoZ3Jh
cGhpY3NDb250ZXh0LCBkaXJ0eVJlY3QpOworCisgICAgbV9iYWNraW5nU3RvcmUtPmVuZFBhaW50
KCk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1
Z2luUHJveHk6OlVwZGF0ZShkaXJ0eVJlY3QpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcApp
bmRleCA3MDNkODY5Li5hOWRmNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcApAQCAtNDYsNyArNDYsNyBAQCBXS0ltYWdlUmVm
IFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
V0tJbWFnZU9wdGlvbgogewogICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3Vy
ZmFjZSkpOwogICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRl
KGltYWdlU2l6ZSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwotICAgIE93blB0cjxHcmFwaGlj
c0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlR3Jh
cGhpY3NDb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSB3
ZWJJbWFnZS0+Yml0bWFwKCktPmJlZ2luUGFpbnQoKTsKIAogICAgIGNhaXJvX3QqIGNyID0gZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zZXRfc291
cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwpAQCAtNTQsNSArNTQsNyBAQCBXS0ltYWdl
UmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSwgV0tJbWFnZU9wdGlvbgogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKKyAg
ICB3ZWJJbWFnZS0+Yml0bWFwKCktPmVuZFBhaW50KCk7CisKICAgICByZXR1cm4gdG9BUEkod2Vi
SW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9jZy9XS0ltYWdlQ0cuY3BwCmluZGV4IDEwNzFlZjUuLjQzNDMyMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCkBAIC01NCw5ICs1NCwxMCBA
QCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ0dJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVm
LCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogICAgIGlmICghd2ViSW1hZ2UtPmJpdG1hcCgpKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNz
Q29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkt
PmJlZ2luUGFpbnQoKTsKICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KDAsIDApLCBpbWFn
ZVNpemUpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KHJlY3QpOwogICAgIGdyYXBo
aWNzQ29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlUmVmLCBpbWFnZVNpemUsIFdlYkNvcmU6
OkNvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOworICAgIHdlYkltYWdlLT5iaXRtYXAo
KS0+ZW5kUGFpbnQoKTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJ
bWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3Bw
CmluZGV4IDYwMzg4ZjQuLmJhMzgzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9xdC9XS0ltYWdlUXQuY3BwCkBAIC00Nyw4ICs0Nyw5IEBAIFdLSW1hZ2VSZWYgV0tJbWFnZUNy
ZWF0ZUZyb21RSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSkKICAgICBSZWZQdHI8V2ViSW1hZ2U+
IHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZS5zaXplKCksIHN0YXRpY19jYXN0PElt
YWdlT3B0aW9ucz4oMCkpOwogICAgIGlmICghd2ViSW1hZ2UtPmJpdG1hcCgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSB3
ZWJJbWFnZS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5iZWdpblBhaW50
KCk7CiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoMCwgMCksIGltYWdlKTsKKyAg
ICB3ZWJJbWFnZS0+Yml0bWFwKCktPmVuZFBhaW50KCk7CiAgICAgcmV0dXJuIHRvQVBJKHdlYklt
YWdlLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5jcHAKaW5kZXggNTJiN2Y2ZC4uYTg3MmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2VUb2tlbi5oPgogCkBA
IC04NCwxNyArODMsOSBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4gV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgcwogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1cmZhY2U+IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6Y3JlYXRlV2l0aFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKIHsKLSAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdz
IHN1cmZhY2VGbGFncyA9Ci0gICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTb2Z0d2Fy
ZVdyaXRlCi0gICAgICAgIHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c0NvcHlUb1RleHR1cmUK
LSAgICAgICAgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKLQotICAgIGlmIChm
bGFncyAmIFN1cHBvcnRzQWxwaGEpCi0gICAgICAgIHN1cmZhY2VGbGFncyB8PSBHcmFwaGljc1N1
cmZhY2U6OlN1cHBvcnRzQWxwaGE7Ci0KICAgICAvLyBUaGlzIG1pZ2h0IHJldHVybiBudWxsLCBp
ZiB0aGUgc3lzdGVtIGlzIHVuYWJsZSB0byBwcm92aWRlIGEgbmV3IGdyYXBoaWNzIHN1cmZhY2Uu
CiAgICAgLy8gSW4gdGhhdCBjYXNlLCB0aGlzIGZ1bmN0aW9uIHdvdWxkIHJldHVybiBudWxsIGFu
ZCBhbGxvdyBmYWxsaW5nIGJhY2sgdG8gU2hhcmVhYmxlQml0bWFwLgotICAgIFJlZlB0cjxHcmFw
aGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzdXJm
YWNlRmxhZ3MpOworICAgIFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBjcmVhdGVX
aXRoR3JhcGhpY3NTdXJmYWNlKHNpemUsIGZsYWdzKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0xMDMsNyArOTQsNyBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5h
dGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGVXaXRoU3VyZmFjZShjb25z
dAogfQogI2VuZGlmCiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBXZWJD
b29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBJbnRSZWN0JiBy
ZWN0KQorR3JhcGhpY3NDb250ZXh0KiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmJlZ2luUGFpbnQo
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBp
ZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpKQpAQCAtMTExLDEwICsxMDIsMjMgQEAgUGFz
c093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlR3JhcGhpY3NDb250ZXgKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fYml0bWFwKTsKLSAg
ICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2JpdG1hcC0+Y3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQgPSBtX2JpdG1hcC0+YmVnaW5QYWludCgpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChy
ZWN0KTsKICAgICBncmFwaGljc0NvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkp
OwotICAgIHJldHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworICAgIHJldHVybiBncmFw
aGljc0NvbnRleHQ7Cit9CisKK3ZvaWQgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjplbmRQYWludCgp
Cit7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgaWYgKGlzQmFja2VkQnlHcmFwaGlj
c1N1cmZhY2UoKSkgeworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+ZW5kUGFpbnQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgQVNTRVJUKG1fYml0bWFwKTsKKyAg
ICBtX2JpdG1hcC0+ZW5kUGFpbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJDb29yZGluYXRlZFN1
cmZhY2U+IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUs
IENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBiaXRtYXApCkBAIC0xMjMsMTcgKzEyNywxNCBAQCBQYXNzUmVmUHRyPFdlYkNvb3JkaW5h
dGVkU3VyZmFjZT4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYg
cwogfQogCiBXZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwKQotICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBt
X2ZsYWdzKGZsYWdzKQorICAgIDogQ29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzKQogICAg
ICwgbV9iaXRtYXAoYml0bWFwKQogewogfQogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OldlYkNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKLSAgICA6IG1fc2l6ZShzaXpl
KQotICAgICwgbV9mbGFncyhmbGFncykKLSAgICAsIG1fZ3JhcGhpY3NTdXJmYWNlKHN1cmZhY2Up
CisgICAgOiBDb29yZGluYXRlZFN1cmZhY2Uoc2l6ZSwgZmxhZ3MsIHN1cmZhY2UpCiB7CiB9CiAK
QEAgLTE4OSwxOSArMTkwLDggQEAgdm9pZCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNvcHlUb1Rl
eHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiBwYXMKICAgICBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gdGV4dHVyZShwYXNzVGV4dHVyZSk7CiAKICNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKLSAgICBpZiAoaXNCYWNrZWRCeUdyYXBoaWNzU3VyZmFjZSgpKSB7Ci0gICAgICAg
IFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IHRleHR1cmVHTCA9IHRvQml0bWFwVGV4dHVyZUdMKHRl
eHR1cmUuZ2V0KCkpOwotICAgICAgICBpZiAodGV4dHVyZUdMKSB7Ci0gICAgICAgICAgICB1aW50
MzJfdCB0ZXh0dXJlSUQgPSB0ZXh0dXJlR0wtPmlkKCk7Ci0gICAgICAgICAgICB1aW50MzJfdCB0
ZXh0dXJlVGFyZ2V0ID0gdGV4dHVyZUdMLT50ZXh0dXJlVGFyZ2V0KCk7Ci0gICAgICAgICAgICBt
X2dyYXBoaWNzU3VyZmFjZS0+Y29weVRvR0xUZXh0dXJlKHRleHR1cmVUYXJnZXQsIHRleHR1cmVJ
RCwgdGFyZ2V0LCBzb3VyY2VPZmZzZXQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IG1fZ3JhcGhpY3NTdXJmYWNlLT5jcmVh
dGVSZWFkT25seUltYWdlKEludFJlY3Qoc291cmNlT2Zmc2V0LCB0YXJnZXQuc2l6ZSgpKSk7Ci0g
ICAgICAgIHRleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLmdldCgpLCB0YXJnZXQsIEludFBv
aW50Ojp6ZXJvKCksIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VE
YXRhKTsKKyAgICBpZiAoY29weVRvVGV4dHVyZVVzaW5nR3JhcGhpY3NTdXJmYWNlKHRleHR1cmUu
Z2V0KCksIHRhcmdldCwgc291cmNlT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICNl
bmRpZgogCiAgICAgQVNTRVJUKG1fYml0bWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmgKaW5kZXggNTM4NmE5MS4uNTEwYjFlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oCkBAIC0yNSwxNSArMjUsNiBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRTdXJmYWNlLmg+CiAKLSNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKLSNlbmRpZgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBCaXRtYXBUZXh0dXJlOwotY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlIDogcHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZSB7CkBAIC03MSw5ICs2
Miw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkNvb3JkaW5hdGVkU3VyZmFjZSgpOwog
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX3NpemU7IH0KLQotICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIGJlZ2luUGFp
bnQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBl
bmRQYWludCgpIE9WRVJSSURFOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZpcnR1
YWwgdm9pZCBjb3B5VG9UZXh0dXJlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4s
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHNvdXJjZU9mZnNldCkgT1ZFUlJJREU7CkBAIC04Miw4ICs3Miw2IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBG
bGFncywgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+KTsKIAotICAgIHZpcnR1YWwgRmxhZ3Mg
ZmxhZ3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZsYWdzOyB9Ci0KICAgICAvLyBDcmVh
dGUgYSBXZWJDb29yZGluYXRlZFN1cmZhY2UgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU2hhcmVh
YmxlQml0bWFwLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvb3JkaW5hdGVkU3VyZmFjZT4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+KTsKIApAQCAtOTMsMTcgKzgxLDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVXaXRoU3VyZmFjZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgRmxhZ3MpOwogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBHcmFwaGljc1N1cmZhY2UuCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4p
OwotCi0gICAgYm9vbCBpc0JhY2tlZEJ5R3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4g
ISFtX2dyYXBoaWNzU3VyZmFjZTsgfQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZTsKLSAgICBGbGFncyBtX2ZsYWdzOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1f
Yml0bWFwOwogCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgUmVmUHRyPFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7Ci0jZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAppbmRleCAwZjA2Yzg2Li40N2JkZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVh
YmxlQml0bWFwLmNwcApAQCAtMTYzLDQgKzE2MywxNyBAQCB2b2lkKiBTaGFyZWFibGVCaXRtYXA6
OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGE7CiB9CiAKK1dlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCogU2hhcmVhYmxlQml0bWFwOjpiZWdpblBhaW50KCkKK3sKKyAgICBBU1NFUlQoIW1f
Z3JhcGhpY3NDb250ZXh0KTsKKworICAgIG1fZ3JhcGhpY3NDb250ZXh0ID0gY3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0LmdldCgpOworfQorCit2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6ZW5kUGFpbnQoKQoreworICAgIG1fZ3JhcGhpY3NDb250ZXh0
LmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1NoYXJlYWJsZUJpdG1hcC5oCmluZGV4IDBhMDFiOGUuLjA3MTI3YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDcmVhdGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFp
bnQgaW50byB0aGUgYmFja2luZyBzdG9yZS4KICAgICBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0KiBiZWdpblBhaW50KCk7CisgICAgdm9pZCBlbmRQYWludCgpOwogCiAgICAgLy8g
UGFpbnQgdGhlIGJhY2tpbmcgc3RvcmUgaW50byB0aGUgZ2l2ZW4gY29udGV4dC4KICAgICB2b2lk
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc291cmNlKTsKQEAgLTE2Nyw2
ICsxNjksOCBAQCBwcml2YXRlOgogCiAgICAgLy8gSWYgdGhlIHNoYXJlYWJsZSBiaXRtYXAgaXMg
YmFja2VkIGJ5IGZhc3RNYWxsb2NlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBkYXRhLgog
ICAgIHZvaWQqIG1fZGF0YTsKKworICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+
IG1fZ3JhcGhpY3NDb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDdlZmYz
ZDUuLmQzMzJlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0yODksNyArMjg5LDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPENyZWRl
bnRpYWw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDcmVkZW50aWFsJiBjcmUK
IHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgSW1hZ2Uq
IGltYWdlKQogewogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlLT5zaXplKCksIFNoYXJlYWJsZUJpdG1hcDo6
U3VwcG9ydHNBbHBoYSk7Ci0gICAgYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKS0+ZHJh
d0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICBHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+YmVnaW5QYWludCgpOworICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJ
bnRQb2ludCgpKTsKKyAgICBiaXRtYXAtPmVuZFBhaW50KCk7CiAKICAgICBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBoYW5kbGU7CiAgICAgYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IDU1
ODA0YmIyLi41YWUzMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNo
YXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2VDb3B5KCkKIHsKICAgICBPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBjcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZUltYWdlKGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICBlbmRQYWlu
dCgpOwogICAgIHJldHVybiBpbWFnZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCBmN2U3NmU3Li4yZmEyNDliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtNDUs
MTIgKzQ1LDE0IEBAIHN0YXRpYyB2b2lkIGVuY29kZUltYWdlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgR2RrUGl4YnVmKiBwaXhidWYpCiB7CiAgICAgSW50U2l6ZSBpbWFnZVNpemUo
Z2RrX3BpeGJ1Zl9nZXRfd2lkdGgocGl4YnVmKSwgZ2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KHBpeGJ1
ZikpOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0Fs
cGhhKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBiaXRt
YXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CiAKICAgICBjYWlyb190KiBjciA9IGdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgZ2RrX2NhaXJvX3Nl
dF9zb3VyY2VfcGl4YnVmKGNyLCBwaXhidWYsIDAsIDApOwogICAgIGNhaXJvX3BhaW50KGNyKTsK
IAorICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKKwogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
IGhhbmRsZTsKICAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAppbmRleCBlZmNmMTkzLi4xM2UyMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKQEAgLTcwMiwxMyArNzAyLDE0IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogICAgIGJhY2tpbmdTdG9yZVNpemUuc2NhbGUo
Y29udGVudHNTY2FsZUZhY3RvcigpKTsKIAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGJhY2tpbmdTdG9yZVNpemUs
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4gY29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7CiAKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlYWxseSBjYWxsIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IgaW5zdGVh
ZCBvZiBzY2FsZSwgYnV0IHRoYXQgZW5kcyB1cCBjYWxsaW5nIGludG8gV0tTSQogICAgIC8vIHdo
aWNoIHdlIGN1cnJlbnRseSBkb24ndCBoYXZlIGluaXRpYXRlZCBpbiB0aGUgcGx1Zy1pbiBwcm9j
ZXNzLgogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yKCks
IGNvbnRlbnRzU2NhbGVGYWN0b3IoKSkpOwogCi0gICAgcGxhdGZvcm1QYWludChjb250ZXh0Lmdl
dCgpLCBJbnRSZWN0KEludFBvaW50KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOworICAgIHBsYXRm
b3JtUGFpbnQoY29udGV4dCwgSW50UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVl
KTsKKyAgICBiaXRtYXAtPmVuZFBhaW50KCk7CiAKICAgICByZXR1cm4gYml0bWFwLnJlbGVhc2Uo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggYWM5YmQ3Yy4uZTcxNWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTYwNiwxMyArNjA2LDE1
IEBAIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKICAg
ICBiYWNraW5nU3RvcmVTaXplLnNjYWxlKGNvbnRlbnRzU2NhbGVGYWN0b3IpOwogCiAgICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoYmFja2luZ1N0b3JlU2l6ZSwgU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsK
LSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBiaXRtYXAtPmJl
Z2luUGFpbnQoKTsKIAogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxl
RmFjdG9yLCAtY29udGVudHNTY2FsZUZhY3RvcikpOwogICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgw
LCAtc2l6ZSgpLmhlaWdodCgpKTsKIAogICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBz
bmFwc2hvdEluQ29udGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKV07CiAKKyAgICBiaXRt
YXAtPmVuZFBhaW50KCk7CisKICAgICByZXR1cm4gYml0bWFwLnJlbGVhc2UoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5k
ZXggNDEwZmExMy4uMzEyOTZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yMTEsMTIgKzIxMSwxMiBAQCB2b2lkIFBsdWdp
blByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UGFpbnRFbnRpcmVQbHVnaW4oKSwg
TWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UGFpbnRFbnRpcmVQbHVnaW46OlJlcGx5
KCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiAgICAgCiAgICAgICAgIC8vIEJsaXQgdGhlIHBsdWct
aW4gYmFja2luZyBzdG9yZSBpbnRvIG91ciBvd24gYmFja2luZyBzdG9yZS4KLSAgICAgICAgT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9iYWNraW5n
U3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblBhaW50KCk7
CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihjb250ZW50
c1NjYWxlRmFjdG9yKCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKIAogICAgICAgICBtX3BsdWdpbkJhY2tpbmdTdG9yZS0+
cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBJbnRQb2ludCgp
LCBwbHVnaW5Cb3VuZHMoKSk7Ci0KKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmVuZFBhaW50KCk7
CiAgICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEgPSB0cnVlOwog
ICAgIH0KIApAQCAtNjkyLDEwICs2OTIsMTEgQEAgdm9pZCBQbHVnaW5Qcm94eTo6dXBkYXRlKGNv
bnN0IEludFJlY3QmIHBhaW50ZWRSZWN0KQogCiAgICAgaWYgKG1fYmFja2luZ1N0b3JlKSB7CiAg
ICAgICAgIC8vIEJsaXQgdGhlIHBsdWctaW4gYmFja2luZyBzdG9yZSBpbnRvIG91ciBvd24gYmFj
a2luZyBzdG9yZS4KLSAgICAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250
ZXh0ID0gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IG1fYmFja2luZ1N0b3JlLT5iZWdpblBh
aW50KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihj
b250ZW50c1NjYWxlRmFjdG9yKCkpOwogICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKICAgICAgICAgbV9wbHVnaW5CYWNraW5nU3Rv
cmUtPnBhaW50KCpncmFwaGljc0NvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgcGFpbnRl
ZFJlY3QubG9jYXRpb24oKSwgcGFpbnRlZFJlY3QpOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+
ZW5kUGFpbnQoKTsKICAgICB9CiAKICAgICAvLyBBc2sgdGhlIGNvbnRyb2xsZXIgdG8gaW52YWxp
ZGF0ZSB0aGUgcmVjdCBmb3IgdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmlu
ZGV4IDQwNmYwZWEuLmU2Yjk0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
CkBAIC00OCw5ICs0OCwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNv
bnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdQogCiAgICAgSW50U2l6
ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7CiAgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VT
aXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIE93blB0cjxHcmFwaGlj
c0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmJlZ2lu
UGFpbnQoKTsKKworICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdT
dXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBncmFwaGljc0NvbnRleHQpOworICAgIGJp
dG1hcC0+ZW5kUGFpbnQoKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1h
Z2VTaXplKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBncmFwaGljc0NvbnRleHQu
Z2V0KCkpOwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQppbmRleCAzNGYxMzkwLi5hY2RhZjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5T
SW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
KyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IGJpdG1hcC0+YmVnaW5QYWlu
dCgpOwogCiAgICAgUmV0YWluUHRyPE5TR3JhcGhpY3NDb250ZXh0PiBzYXZlZENvbnRleHQgPSBb
TlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogCkBAIC03MCw2ICs3MCw4IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAoTlNJ
bWFnZSAqaW1hZ2UsIGNvbnN0IEluCiAKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVu
dENvbnRleHQ6c2F2ZWRDb250ZXh0LmdldCgpXTsKIAorICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsK
KwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGllbnRRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYkRyYWdDbGll
bnRRdC5jcHAKaW5kZXggMjBmN2U5NS4uNjI4NDA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJEcmFnQ2xpZW50UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRHJhZ0NsaWVu
dFF0LmNwcApAQCAtNDUsOSArNDUsMTEgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjb252ZXJ0UVBpeG1hcFRvU2hhcmVhYmxlQml0bWFwKFFQaXhtYXAqIHBpeG0KICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKHBpeG1hcC0+c2l6ZSgpKSwgU2hh
cmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7
CiAKICAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3UGl4bWFwKDAs
IDAsICpwaXhtYXApOworICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKKwogICAgIHJldHVybiBiaXRt
YXAucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCBmMDJhNTNmLi5kNjJjMmNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTY3MCwxNiArNjcwLDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwog
fQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCitH
cmFwaGljc0NvbnRleHQqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db250ZW50VXBk
YXRlKGNvbnN0IEludFNpemUmIHNpemUsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3Ms
IHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRhdGVBdGxhc2Vz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRlQXRs
YXNlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKGF0bGFzLT5zdXBwb3J0c0FscGhhKCkgPT0gKGZs
YWdzICYgQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhKSkgewogICAgICAgICAgICAg
Ly8gVGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIg
c3BhY2UuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQgPSBhdGxhcy0+YmVnaW5QYWludGlu
Z09uQXZhaWxhYmxlQnVmZmVyKGF0bGFzSUQsIHNpemUsIG9mZnNldCk7CiAgICAgICAgICAgICBp
ZiAoZ3JhcGhpY3NDb250ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBncmFwaGljc0NvbnRl
eHQucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBncmFwaGljc0NvbnRleHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTY4OSw2ICs2ODksMTYgQEAgUGFzc093blB0cjxHcmFwaGlj
c0NvbnRleHQ+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6YmVnaW5Db250ZW50VXBkYXRlKGNv
bnN0IEkKICAgICByZXR1cm4gbV91cGRhdGVBdGxhc2VzLmxhc3QoKS0+YmVnaW5QYWludGluZ09u
QXZhaWxhYmxlQnVmZmVyKGF0bGFzSUQsIHNpemUsIG9mZnNldCk7CiB9CiAKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjplbmRDb250ZW50VXBkYXRlKHVpbnQzMl90IGF0bGFzSUQpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAobV91cGRhdGVBdGxhc2VzW2ldLT5pZCgpID09IGF0bGFzSUQpIHsK
KyAgICAgICAgICAgIG1fdXBkYXRlQXRsYXNlc1tpXS0+ZW5kUGFpbnRpbmcoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogY29uc3QgZG91YmxlIFJlbGVhc2VJ
bmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsID0gMC41OwogCiB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXgg
YTE1N2VlZC4uNmI4ZmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTkxLDYgKzkxLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0
b3J5KCkgT1ZFUlJJREU7CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBt
YWluQ29udGVudHNMYXllcigpOwogCisgICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQqIGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIGF0bGFzSUQsIFdlYkNvcmU6Oklu
dFBvaW50JiBvZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRDb250ZW50VXBk
YXRlKHVpbnQzMl90IGF0bGFzSUQpIE9WRVJSSURFOworCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIE9WRVJS
SURFOwogI2VuZGlmCkBAIC0xMjQsNyArMTI3LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFn
ZUJhY2tpbmdJZk5lZWRlZChXZWJDb3JlOjpJbWFnZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKLSAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRl
bnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQs
IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAKICAgICAvLyBVcGRh
dGVBdGxhczo6Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDZlZTNhZjUuLjRjZWJhZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwCkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBk
YXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBtX3Njcm9sbFJlY3QgPSBJbnRSZWN0KCk7CiAgICAg
bV9zY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiAKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0
PiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5iZWdpblBhaW50KCk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxl
RmFjdG9yKTsKICAgICAKICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMgPSBib3VuZHM7
CkBAIC03NDEsNiArNzQxLDggQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRl
SW5mbyYgdXBkYXRlSW5mbykKICAgICAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0cy5hcHBlbmQo
cmVjdHNbaV0pOwogICAgIH0KIAorICAgIGJpdG1hcC0+ZW5kUGFpbnQoKTsKKwogICAgIC8vIExh
eW91dCBjYW4gdHJpZ2dlciBtb3JlIGNhbGxzIHRvIHNldE5lZWRzRGlzcGxheSBhbmQgd2UgZG9u
J3Qgd2FudCB0byBwcm9jZXNzIHRoZW0KICAgICAvLyB1bnRpbCB0aGUgVUkgcHJvY2VzcyBoYXMg
cGFpbnRlZCB0aGUgdXBkYXRlLCBzbyB3ZSBzdG9wIHRoZSB0aW1lciBoZXJlLgogICAgIG1fZGlz
cGxheVRpbWVyLnN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDk3NzNjZWUuLjljZTBjMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OmdldEZpbmRJbmRpY2F0
b3JCaXRtYXBBbmRSZWN0KEZyYW1lKiBmcmFtZSwgU2hhcmVhYmxlQml0bWFwCiAgICAgaWYgKCFm
aW5kSW5kaWNhdG9yVGV4dEJhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gZmluZEluZGljYXRv
clRleHRCYWNraW5nU3RvcmUtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gZmluZEluZGljYXRvclRleHRCYWNraW5nU3RvcmUt
PmJlZ2luUGFpbnQoKTsKICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3dl
YlBhZ2UtPmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBz
ZWxlY3Rpb25SZWN0OwpAQCAtMjI2LDggKzIyNiw5IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6Omdl
dEZpbmRJbmRpY2F0b3JCaXRtYXBBbmRSZWN0KEZyYW1lKiBmcmFtZSwgU2hhcmVhYmxlQml0bWFw
CiAgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0
aW9uT25seSB8IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCB8IFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlv
dXQoKTsKIAotICAgIGZyYW1lLT52aWV3KCktPnBhaW50KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwg
cGFpbnRSZWN0KTsKKyAgICBmcmFtZS0+dmlldygpLT5wYWludChncmFwaGljc0NvbnRleHQsIHBh
aW50UmVjdCk7CiAgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2
aW9yTm9ybWFsKTsKKyAgICBmaW5kSW5kaWNhdG9yVGV4dEJhY2tpbmdTdG9yZS0+ZW5kUGFpbnQo
KTsKIAogICAgIGlmICghZmluZEluZGljYXRvclRleHRCYWNraW5nU3RvcmUtPmNyZWF0ZUhhbmRs
ZShoYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDJhNjQwNy4uY2YwM2MzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTUwNiwx
MCArMTUwNiw4IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNjYWxlZFNuYXBzaG90
V2l0aE9wdGlvbnMoY29uc3QgSW50UmVjdCYgcmVjdCwgZG91CiAgICAgaWYgKCFzbmFwc2hvdC0+
Yml0bWFwKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgT3duUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLT5jcmVhdGVH
cmFwaGljc0NvbnRleHQoKTsKLQorICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1hcCgpLT5iZWdpblBhaW50KCk7CiAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGVhclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBiaXRtYXBTaXplKSk7Ci0K
ICAgICBncmFwaGljc0NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoY29tYmluZWRTY2Fs
ZUZhY3Rvcik7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVj
dC55KCkpOwogCkBAIC0xNTIxLDEzICsxNTE5LDE0IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdl
YlBhZ2U6OnNjYWxlZFNuYXBzaG90V2l0aE9wdGlvbnMoY29uc3QgSW50UmVjdCYgcmVjdCwgZG91
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKICAg
ICAgICAgY29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CiAKLSAg
ICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0
KCksIHJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOworICAgIGZy
YW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dCwgcmVjdCwg
c2hvdWxkUGFpbnRTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlKSB7CiAgICAgICAgIEZs
b2F0UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNl
bGVjdGlvbigpLT5ib3VuZHMoKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigweEZGLCAwLCAwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+c3Ryb2tlUmVjdChzZWxlY3Rpb25SZWN0YW5nbGUsIDEpOwogICAgIH0K
KyAgICBzbmFwc2hvdC0+Yml0bWFwKCktPmVuZFBhaW50KCk7CiAKICAgICByZXR1cm4gc25hcHNo
b3QucmVsZWFzZSgpOwogfQpAQCAtMzQ4Miw3ICszNDgxLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IGNvbnMKICNlbmRpZgogCiAgICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGltYWdlU2l6ZSwgU2hhcmVhYmxlQml0
bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBiaXRtYXAtPmJlZ2luUGFpbnQoKTsK
IAogICAgICAgICBmbG9hdCBwcmludGluZ1NjYWxlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGltYWdl
U2l6ZS53aWR0aCgpKSAvIHJlY3Qud2lkdGgoKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUocHJpbnRpbmdTY2FsZSwgcHJpbnRpbmdTY2FsZSkpOwpAQCAtMzQ5OSw2
ICszNDk4LDggQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnMKICAgICAgICAgICAgIG1fcHJpbnRD
b250ZXh0LT5zcG9vbFJlY3QoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiAgICAgICAgIH0KIAor
ICAgICAgICBiaXRtYXAtPmVuZFBhaW50KCk7CisKICAgICAgICAgaW1hZ2UgPSBXZWJJbWFnZTo6
Y3JlYXRlKGJpdG1hcC5yZWxlYXNlKCkpOwogICAgIH0KICNlbmRpZgotLSAKMS43LjEwLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203908</attachid>
            <date>2013-06-05 23:58:42 -0700</date>
            <delta_ts>2013-06-06 01:11:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130606155710.patch</filename>
            <type>text/plain</type>
            <size>23210</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwYTMyYjU0YWRlMzYx
Zjk5M2E0NGJiOGI1MmIxNGI0MDIyOGI1Mi4uMzNlMTg3Yjc4ODkyMzA1ZDIwZTBjYjU5Yjk3ZDVh
NGZmYjk0YzA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA2LTA1ICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gbWFuYWdlIHRoZSBs
aWZlY3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVh
ZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBD
b29yZGluYXRlZFN1cmZhY2UgdG8gYmUgcmVzcG9uc2libGUgZm9yIHRoZQorICAgICAgICBsaWZl
Y3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0IHVzZWQgaW4gQ29vcmRpbmF0ZWQgR3JhcGhpY3MgU3lz
dGVtLgorICAgICAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyBhbmQgVXBkYXRlQXRsYXMgZG9l
cyBub3QgYXNrcyBmb3IgdGhlIG93bmVyc2hpcAorICAgICAgICBvZiBHcmFwaGljc0NvbnRleHQg
YW55bW9yZS4gSW5zdGVhZCwgdGhvc2UgY2xhc3NlcyB1c2UgY2xpZW50IHBhdHRlcm4gdG8KKyAg
ICAgICAgYXNrIHRoZSBDb29yZGlhbnRlZFN1cmZhY2UgdG8gcGFpbnQgdG8gdGhlIEdyYXBoaWNz
Q29udGV4dC4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIG5lZWRlZCB0byBpbXBsZW1l
bnQgQ29vcmRpbmF0ZWRTdXJmYWNlIGZvciBUaHJlYWRlZAorICAgICAgICBDb29yZGluYXRlZCBH
cmFwaGljcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVu
dDo6SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRUaWxlOjpwYWludFRvU3VyZmFjZUNvbnRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRp
bGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50
OjpVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRs
YXM6OnBhaW50T25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgorCiAyMDEzLTA2LTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCB0aGUgc2Vjb25kIGhh
bGYgb2YgcjE1MTI1Ny4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUgY2FuIHJldHVybiBu
dWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGY0NGNkZDA3NDdmYmI3YWZjMDdkNjNlNThlMjNlMGFjZjVkNjcz
YjUuLjNiZjI3MTg4NjYyNTdlMGUyOWVjYzdhZTE4MmEwODY3ZWM2ZTk0YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAxMy0wNi0wNSAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNv
bXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIDogUmVmYWN0b3Ig
Q29vcmRpbmF0ZWRTdXJmYWNlIHRvIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29u
dGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGlj
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIGJl
IHJlc3BvbnNpYmxlIGZvciB0aGUKKyAgICAgICAgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29udGV4
dCB1c2VkIGluIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbS4KKyAgICAgICAgQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcgYW5kIFVwZGF0ZUF0bGFzIGRvZXMgbm90IGFza3MgZm9yIHRoZSBvd25l
cnNoaXAKKyAgICAgICAgb2YgR3JhcGhpY3NDb250ZXh0IGFueW1vcmUuIEluc3RlYWQsIHRob3Nl
IGNsYXNzZXMgdXNlIGNsaWVudCBwYXR0ZXJuIHRvCisgICAgICAgIGFzayB0aGUgQ29vcmRpYW50
ZWRTdXJmYWNlIHRvIHBhaW50IHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgVGhp
cyByZWZhY3RvcmluZyBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IENvb3JkaW5hdGVkU3VyZmFjZSBm
b3IgVGhyZWFkZWQKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgKiBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnBhaW50VG9TdXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKwogMjAx
My0wNi0wNSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bV0syXSBGaXggdGVzdF9ld2syX3ZpZXcgdW5pdCB0ZXN0IHRpbWVkIG91dCBpc3N1ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAppbmRleCA3MzVhM2Y2NWU4YTM0NDdiOGIxZmJjNGYxZjM4YTk3YzA1MGI2MzQ3Li5kMWMx
YzVkYzk5MDQyYzhlZmZjNTJlNjQ5N2M0YTlmNDRjN2IzN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTU5LDEx
ICs5NTksMTEgQEAgQ29sb3IgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdT
dG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkg
PyBDb2xvcjo6d2hpdGUgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiB9CiAKLVBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQp
Citib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsK
ICAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKLSAg
ICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRz
T3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZh
Y2U6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5h
dG9yLT5wYWludFRvU3VyZmFjZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRT
dXJmYWNlOjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhLCBhdGxh
cywgb2Zmc2V0LCBjbGllbnQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRh
dGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2N2I4NDI0MzM5NzVjMTQx
MDIzMDI3NDUzYjg0NGU1NTdhYTU0ZDFjLi4wZWE2OTcwMjFlM2RiNTk2MWY0NjhiYzI3ZDE3OTM4
YmUwYTFhNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoSW1hZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllciopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKENvb3JkaW5h
dGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKSA9IDA7CiB9OwpAQCAt
MTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZSh1aW50
MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29u
c3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3Qg
SW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0
bGFzSUQgKi8sIEludFBvaW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklE
RTsKIAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xp
ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwCmluZGV4IDFhOWY1MGZiYjZmM2NlOWUzNjhiZmVlNzQ4OTVmMmVlOWU4MmRk
Y2YuLjVjYTQzMGI0NzRmMTljYjI0ZTJmMWYxMDQ0NTk1NTM4NzY2OGNiYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAt
MzMsNiArMzMsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbWFnZUJhY2tp
bmdTdXJmYWNlQ2xpZW50IDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKK3B1
YmxpYzoKKyAgICBJbWFnZUJhY2tpbmdTdXJmYWNlQ2xpZW50KEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICAgICAsIG1fcmVj
dChyZWN0KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VD
b250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtX3JlY3Qs
IG1fcmVjdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEltYWdlKiBtX2ltYWdlOworICAgIElu
dFJlY3QgbV9yZWN0OworfTsKKwogQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChJbWFnZSogaW1hZ2Up
CiB7CiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcga2VlcHMgYSBSZWZQdHI8SW1hZ2U+
IG1lbWJlciwgc28gdGhlIHNhbWUgSW1hZ2UgcG9pbnRlciBjYW4gbm90IHJlZmVyIHR3byBkaWZm
ZXJlbnQgaW5zdGFuY2VzIHVudGlsIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nIHJlbGVhc2VzIHRo
ZSBtZW1iZXIuCkBAIC0xMDksOCArMTI3LDkgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2lu
Zzo6dXBkYXRlKCkKICAgICB9CiAKICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
bV9pbWFnZS0+c2l6ZSgpKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0g
bV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7Ci0gICAgY29udGV4dC0+ZHJh
d0ltYWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOwor
CisgICAgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xpZW50KG1faW1hZ2UuZ2V0
KCksIHJlY3QpOworICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZhY2VD
bGllbnQpOwogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1
cmZhY2UuaAppbmRleCAzMDc3YzNjMDljNGFiMDY3ZmZiOTg2NjZiNDBmNjA3NTk3ODVlNWQ2Li44
NDc5MTMxMmZjYTg1MDljZjg0NTYzMWViZDQwZGUxOGM0NDBkMzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0zOSw2ICszOSwxMiBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwogCisgICAgY2xhc3MgQ2xp
ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCopID0g
MDsKKyAgICB9OworCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
RmFjdG9yeShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOwogICAgIHN0YXRpYyB2b2lkIHNldEZhY3Rv
cnkoRmFjdG9yeSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKQEAgLTQ5LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGEg
Z3JhcGhpY3MgY29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tp
bmcgc3RvcmUuCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGNvbnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmLCBDbGllbnQqKSA9IDA7CiAKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291
cmNlT2Zmc2V0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUu
Y3BwCmluZGV4IDlmOWQzNGU2MDViMGUyYjI1MjY4YmFhNjZjNDgwNWRiZWZhMjA5MzEuLmIyNGY0
OGQyMzYxOTE3OTEwM2NjZmI0N2RlNmMwZWZiY2Q0MWRmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRp
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCkBAIC03MywxNyArNzMsMTMgQEAgVmVjdG9yPElu
dFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgICAgIHJldHVy
biBWZWN0b3I8SW50UmVjdD4oKTsKIAogICAgIFN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm87
Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9jbGllbnQt
PmJlZ2luQ29udGVudFVwZGF0ZShtX2RpcnR5UmVjdC5zaXplKCksIHVwZGF0ZUluZm8uYXRsYXNJ
RCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkK
KworICAgIGlmICghbV9jbGllbnQtPnBhaW50VG9TdXJmYWNlKG1fZGlydHlSZWN0LnNpemUoKSwg
dXBkYXRlSW5mby5hdGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQsIHRoaXMpKQogICAg
ICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFu
c2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlSZWN0LnkoKSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zY2FsZShGbG9hdFNpemUobV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2Fs
ZSgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkpKTsKLSAgICBtX3RpbGVk
QmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNraW5nU3RvcmVQYWludChncmFwaGljc0Nv
bnRleHQuZ2V0KCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPm1hcFRvQ29udGVudHMobV9kaXJ0eVJl
Y3QpKTsKIAogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdCA9IG1fZGlydHlSZWN0OwogICAgIHVw
ZGF0ZUluZm8udXBkYXRlUmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CiAgICAg
dXBkYXRlSW5mby5zY2FsZUZhY3RvciA9IG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2Nh
bGUoKTsKLSAgICBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOwogCiAgICAgc3RhdGljIHVpbnQz
Ml90IGlkID0gMTsKICAgICBpZiAobV9JRCA9PSBJbnZhbGlkQ29vcmRpbmF0ZWRUaWxlSUQpIHsK
QEAgLTEwMSw2ICs5NywxMyBAQCBWZWN0b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRh
dGVCYWNrQnVmZmVyKCkKICAgICByZXR1cm4gdXBkYXRlZFJlY3RzOwogfQogCit2b2lkIENvb3Jk
aW5hdGVkVGlsZTo6cGFpbnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlS
ZWN0LnkoKSk7CisgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKG1fdGlsZWRCYWNraW5nU3Rv
cmUtPmNvbnRlbnRzU2NhbGUoKSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgp
KSk7CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZS0+Y2xpZW50KCktPnRpbGVkQmFja2luZ1N0b3Jl
UGFpbnQoY29udGV4dCwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2RpcnR5
UmVjdCkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250
KCkKIHsKICAgICAvLyBIYW5kbGVkIGJ5IHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgKaW5kZXggYmU5OWJmZGFmZWY0OTFk
YWQzYTM2ZmZjNWIyM2Y0NDQ3ZGJlZTQ1Zi4uOTJmNzk4ZjVhNWU2MzIyYTg3OWVhOTAzNGM2Y2Q1
YzY2MDcwMmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAKKyNpbmNs
dWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiVGlsZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC0zOSw3ICs0MCw3
IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgU3VyZmFjZVVwZGF0ZUluZm87CiBjbGFzcyBU
aWxlZEJhY2tpbmdTdG9yZTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRUaWxlIDogcHVibGljIFRpbGUg
eworY2xhc3MgQ29vcmRpbmF0ZWRUaWxlIDogcHVibGljIFRpbGUsIHB1YmxpYyBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGlsZT4g
Y3JlYXRlKENvb3JkaW5hdGVkVGlsZUNsaWVudCogY2xpZW50LCBUaWxlZEJhY2tpbmdTdG9yZSog
dGlsZWRCYWNraW5nU3RvcmUsIGNvbnN0IENvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRUaWxlKGNsaWVudCwgdGlsZWRCYWNraW5nU3Rv
cmUsIHRpbGVDb29yZGluYXRlKSk7IH0KICAgICB+Q29vcmRpbmF0ZWRUaWxlKCk7CkBAIC01NSw2
ICs1Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmly
dHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQqKSBPVkVSUklE
RTsKKwogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZFRpbGUoQ29vcmRpbmF0ZWRUaWxlQ2xpZW50
KiwgVGlsZWRCYWNraW5nU3RvcmUqLCBjb25zdCBDb29yZGluYXRlJik7CiAKQEAgLTc1LDcgKzc4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJ
RCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxl
KHVpbnQzMl90IHRpbGVJRCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFz
SUQsIEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25z
dCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIEludFBvaW50JiwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpDbGllbnQqKSA9IDA7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZFRpbGVCYWNr
ZW5kIDogcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRs
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBiZTE4YTY0MTE3MDA1ZDE5MmMzMjA1NzZkYmU5ZjNj
MGJmOWZkYjYzLi45YzE3ZjA1MWFjNDMwY2QxOTI2ZWY5MmMwZmM4YjI0OTlkMjU1ZDYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTMwLDYgKzMwLDMzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IDog
cHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBVcGRhdGVB
dGxhc1N1cmZhY2VDbGllbnQoQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIGNsaWVudCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBzdXBwb3J0c0FscGhhKQorICAgICAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX3N1cHBvcnRzQWxw
aGEoc3VwcG9ydHNBbHBoYSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCisgICAg
eworICAgICAgICBpZiAobV9zdXBwb3J0c0FscGhhKSB7CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSksIENvbG9yOjp0cmFu
c3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIH0KKworICAg
ICAgICBtX2NsaWVudC0+cGFpbnRUb1N1cmZhY2VDb250ZXh0KGNvbnRleHQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogbV9jbGllbnQ7CisgICAg
SW50U2l6ZSBtX3NpemU7CisgICAgYm9vbCBtX3N1cHBvcnRzQWxwaGE7CisKK307CisKIFVwZGF0
ZUF0bGFzOjpVcGRhdGVBdGxhcyhDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1faW5hY3Rpdml0eUluU2Vjb25kcygwKQpAQCAtNjEsNyArODgsOCBAQCB2b2lkIFVwZGF0ZUF0
bGFzOjpkaWRTd2FwQnVmZmVycygpCiAgICAgbV9hcmVhQWxsb2NhdG9yLmNsZWFyKCk7CiB9CiAK
LVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09u
QXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiBzaXplLCBJ
bnRQb2ludCYgb2Zmc2V0KQorCitib29sIFVwZGF0ZUF0bGFzOjpwYWludE9uQXZhaWxhYmxlQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zm
c2V0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQogewogICAgIG1faW5hY3Rp
dml0eUluU2Vjb25kcyA9IDA7CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwpAQCAtNjksMjQg
Kzk3LDIwIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5Q
YWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90CiAKICAgICAvLyBObyBhdmFpbGFibGUg
YnVmZmVyIHdhcyBmb3VuZCwgcmV0dXJuaW5nIG51bGwuCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9zdXJmYWNlKQotICAgICAgICByZXR1cm4gUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGF0bGFzSUQgPSBtX0lEOwogCiAgICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywg
dG8gYWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOwogCi0gICAgaWYgKHN1cHBvcnRzQWxwaGEoKSkg
ewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHNpemUpLCBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVTb3VyY2VPdmVyKTsKLSAgICB9CisgICAgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IHN1
cmZhY2VDbGllbnQoY2xpZW50LCBzaXplLCBzdXBwb3J0c0FscGhhKCkpOworICAgIG1fc3VyZmFj
ZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZhY2VDbGllbnQpOwogCi0gICAgcmV0dXJuIGdy
YXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKaW5kZXggNDFl
YjM4ZTM5MmFiMzE3NmIxNmViZGU0ZWUyMGMzNjNkZGYwMTNjZS4uMTg4ZjQwN2JjYmI1MThhY2Iw
YWFjOWM5Y2E1OGRlZGEyZWM1MzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFz
LmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgaW5saW5lIEludFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CiAKLSAgICAvLyBSZXR1cm5zIGEg
bnVsbCBwb2ludGVyIG9mIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIuCi0gICAgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50
MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYsIEludFBvaW50JiBvZmZzZXQpOworICAgIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KKyAgICBib29s
IHBhaW50T25BdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiAvKiBhdGxh
c0lEICovLCBJbnRQb2ludCYgLyogb2Zmc2V0ICovLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVu
dCopOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKICAgICBib29sIHN1cHBvcnRzQWxwaGEo
KSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnN1cHBvcnRzQWxwaGEoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA1MmI3ZjZkMmMxNDQzYTQ3OTc5MmU2
ODA1OTNlYjY4YzBlMDRlNjk1Li4zZTEzOWM2MWE0NGYxZjJmNzhjZTQyMTczOGFhYTM2MDc0OGUx
ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTE4Myw2ICsx
ODMsMTUgQEAgYm9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUm
IGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBjcmVhdGVHcmFwaGljc0Nv
bnRleHQocmVjdCk7CisgICAgY2xpZW50LT5wYWludFRvU3VyZmFjZUNvbnRleHQoY29udGV4dC5n
ZXQoKSk7Cit9CisKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB2b2lkIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+
IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3Vy
Y2VPZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDUzODZh
OTE3ZTUyNmViNGEzZDU4ZDc4MjJiOTFjZTAwOWViMjUxM2EuLjI3ZWMwYmE3Mzc2ZWRjZDVjMWMx
ZWExYmU1MDEzNmQ3YTlhZjlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5o
CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6
ZSBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRl
eHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklERTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikK
ICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1h
cFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOwpAQCAtODcsNiArODcsNyBAQCBwcml2
YXRlOgogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTaGFyZWFibGVCaXRtYXAuCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOwogCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmKSBPVkVSUklERTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBX
ZWJDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4pOwogICAgIC8vIENyZWF0ZSBhIHNoYXJl
YWJsZSBiaXRtYXAgYmFja2VkIGJ5IGEgZ3JhcGhpY3Mgc3VyZmFjZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDA2NDdkYjdhMGFiZjc3ODkzMDZkZTM0YzlhNGIzNTUzN2Y1YWE2ZGQuLjAzNWZjN2Y1MmI5OWFm
ZWE2MDM3ZDI4NGQ4NjJkY2Q2ZDA0YTM4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNjcwLDIzICs2NzAs
MjEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcygp
CiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmJlZ2luQ29udGVudFVwZGF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCB1aW50MzJf
dCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCkKK2Jvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZh
Y2U6OkZsYWdzIGZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCwgQ29v
cmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIGNsaWVudCkKIHsKLSAgICBPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBncmFwaGljc0NvbnRleHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBVcGRhdGVBdGxhcyogYXRsYXMg
PSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChhdGxhcy0+c3VwcG9ydHNB
bHBoYSgpID09IChmbGFncyAmIENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSkpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gbnVsbCBpZiB0aGVyZSBpcyBubyBhdmFp
bGFibGUgYnVmZmVyIHNwYWNlLgotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0ID0gYXRsYXMt
PmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQpOwot
ICAgICAgICAgICAgaWYgKGdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Z3JhcGhpY3NDb250ZXh0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBmYWxz
ZSBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyIHNwYWNlLgorICAgICAgICAgICAgaWYg
KGF0bGFzLT5wYWludE9uQXZhaWxhYmxlQnVmZmVyKHNpemUsIGF0bGFzSUQsIG9mZnNldCwgY2xp
ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIHN0YXRpYyBjb25zdCBpbnQgU2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiA9IDEwMjQ7IC8vIFNo
b3VsZCBiZSBhIHBvd2VyIG9mIHR3by4KICAgICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKGFkb3B0
UHRyKG5ldyBVcGRhdGVBdGxhcyh0aGlzLCBTY3JhdGNoQnVmZmVyRGltZW5zaW9uLCBmbGFncykp
KTsKICAgICBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXMoKTsKLSAgICByZXR1cm4gbV91
cGRhdGVBdGxhc2VzLmxhc3QoKS0+YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGF0bGFz
SUQsIHNpemUsIG9mZnNldCk7CisgICAgcmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPnBh
aW50T25BdmFpbGFibGVCdWZmZXIoc2l6ZSwgYXRsYXNJRCwgb2Zmc2V0LCBjbGllbnQpOwogfQog
CiBjb25zdCBkb3VibGUgUmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVySW50ZXJ2YWwgPSAwLjU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IGExNTdlZWRmZTVjMGUwYzYxMTBiYmJiODQwMjM3YjQyYzcwMDJiMzMuLjE0
MTRmNDNlOGZiNjc1MmFhNzllOTBkZDM0MmZmYjEyY2M3ZjNmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMjQs
NyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNp
YmxlQ29udGVudHNSZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBjcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZChXZWJD
b3JlOjpJbWFnZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90
JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludFRv
U3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncywgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIFdlYkNvcmU6OkludFBvaW50Jiwg
V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogCiAgICAgLy8gVXBkYXRlQXRs
YXM6OkNsaWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203911</attachid>
            <date>2013-06-06 01:11:44 -0700</date>
            <delta_ts>2013-06-06 02:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130606171011.patch</filename>
            <type>text/plain</type>
            <size>23193</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwYTMyYjU0YWRlMzYx
Zjk5M2E0NGJiOGI1MmIxNGI0MDIyOGI1Mi4uMzNlMTg3Yjc4ODkyMzA1ZDIwZTBjYjU5Yjk3ZDVh
NGZmYjk0YzA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA2LTA1ICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gbWFuYWdlIHRoZSBs
aWZlY3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVh
ZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBD
b29yZGluYXRlZFN1cmZhY2UgdG8gYmUgcmVzcG9uc2libGUgZm9yIHRoZQorICAgICAgICBsaWZl
Y3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0IHVzZWQgaW4gQ29vcmRpbmF0ZWQgR3JhcGhpY3MgU3lz
dGVtLgorICAgICAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyBhbmQgVXBkYXRlQXRsYXMgZG9l
cyBub3QgYXNrcyBmb3IgdGhlIG93bmVyc2hpcAorICAgICAgICBvZiBHcmFwaGljc0NvbnRleHQg
YW55bW9yZS4gSW5zdGVhZCwgdGhvc2UgY2xhc3NlcyB1c2UgY2xpZW50IHBhdHRlcm4gdG8KKyAg
ICAgICAgYXNrIHRoZSBDb29yZGlhbnRlZFN1cmZhY2UgdG8gcGFpbnQgdG8gdGhlIEdyYXBoaWNz
Q29udGV4dC4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIG5lZWRlZCB0byBpbXBsZW1l
bnQgQ29vcmRpbmF0ZWRTdXJmYWNlIGZvciBUaHJlYWRlZAorICAgICAgICBDb29yZGluYXRlZCBH
cmFwaGljcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVu
dDo6SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEltYWdlQmFja2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRUaWxlOjpwYWludFRvU3VyZmFjZUNvbnRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRp
bGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50
OjpVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRs
YXM6OnBhaW50T25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgorCiAyMDEzLTA2LTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCB0aGUgc2Vjb25kIGhh
bGYgb2YgcjE1MTI1Ny4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUgY2FuIHJldHVybiBu
dWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGY0NGNkZDA3NDdmYmI3YWZjMDdkNjNlNThlMjNlMGFjZjVkNjcz
YjUuLjNiZjI3MTg4NjYyNTdlMGUyOWVjYzdhZTE4MmEwODY3ZWM2ZTk0YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAxMy0wNi0wNSAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNv
bXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIDogUmVmYWN0b3Ig
Q29vcmRpbmF0ZWRTdXJmYWNlIHRvIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29u
dGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4
ODk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGlj
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIGJl
IHJlc3BvbnNpYmxlIGZvciB0aGUKKyAgICAgICAgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29udGV4
dCB1c2VkIGluIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbS4KKyAgICAgICAgQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmcgYW5kIFVwZGF0ZUF0bGFzIGRvZXMgbm90IGFza3MgZm9yIHRoZSBvd25l
cnNoaXAKKyAgICAgICAgb2YgR3JhcGhpY3NDb250ZXh0IGFueW1vcmUuIEluc3RlYWQsIHRob3Nl
IGNsYXNzZXMgdXNlIGNsaWVudCBwYXR0ZXJuIHRvCisgICAgICAgIGFzayB0aGUgQ29vcmRpYW50
ZWRTdXJmYWNlIHRvIHBhaW50IHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgVGhp
cyByZWZhY3RvcmluZyBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IENvb3JkaW5hdGVkU3VyZmFjZSBm
b3IgVGhyZWFkZWQKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgKiBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnBhaW50VG9TdXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKwogMjAx
My0wNi0wNSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0VGTF1bV0syXSBGaXggdGVzdF9ld2syX3ZpZXcgdW5pdCB0ZXN0IHRpbWVkIG91dCBpc3N1ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAppbmRleCA3MzVhM2Y2NWU4YTM0NDdiOGIxZmJjNGYxZjM4YTk3YzA1MGI2MzQ3Li5kMWMx
YzVkYzk5MDQyYzhlZmZjNTJlNjQ5N2M0YTlmNDRjN2IzN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTU5LDEx
ICs5NTksMTEgQEAgQ29sb3IgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdT
dG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkg
PyBDb2xvcjo6d2hpdGUgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiB9CiAKLVBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQp
Citib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50
U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsK
ICAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKLSAg
ICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRz
T3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZh
Y2U6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5h
dG9yLT5wYWludFRvU3VyZmFjZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRT
dXJmYWNlOjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhLCBhdGxh
cywgb2Zmc2V0LCBjbGllbnQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRh
dGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2N2I4NDI0MzM5NzVjMTQx
MDIzMDI3NDUzYjg0NGU1NTdhYTU0ZDFjLi4wZWE2OTcwMjFlM2RiNTk2MWY0NjhiYzI3ZDE3OTM4
YmUwYTFhNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZs
b2F0UmVjdCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVk
ZWQoSW1hZ2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllciopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250
ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKENvb3JkaW5h
dGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKSA9IDA7CiB9OwpAQCAt
MTQyLDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZSh1aW50
MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29u
c3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3Qg
SW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0
bGFzSUQgKi8sIEludFBvaW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklE
RTsKIAogICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xp
ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwCmluZGV4IDFhOWY1MGZiYjZmM2NlOWUzNjhiZmVlNzQ4OTVmMmVlOWU4MmRk
Y2YuLjVjYTQzMGI0NzRmMTljYjI0ZTJmMWYxMDQ0NTk1NTM4NzY2OGNiYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAt
MzMsNiArMzMsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbWFnZUJhY2tp
bmdTdXJmYWNlQ2xpZW50IDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKK3B1
YmxpYzoKKyAgICBJbWFnZUJhY2tpbmdTdXJmYWNlQ2xpZW50KEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICAgICAsIG1fcmVj
dChyZWN0KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VD
b250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtX3JlY3Qs
IG1fcmVjdCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEltYWdlKiBtX2ltYWdlOworICAgIElu
dFJlY3QgbV9yZWN0OworfTsKKwogQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChJbWFnZSogaW1hZ2Up
CiB7CiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcga2VlcHMgYSBSZWZQdHI8SW1hZ2U+
IG1lbWJlciwgc28gdGhlIHNhbWUgSW1hZ2UgcG9pbnRlciBjYW4gbm90IHJlZmVyIHR3byBkaWZm
ZXJlbnQgaW5zdGFuY2VzIHVudGlsIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nIHJlbGVhc2VzIHRo
ZSBtZW1iZXIuCkBAIC0xMDksOCArMTI3LDkgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2lu
Zzo6dXBkYXRlKCkKICAgICB9CiAKICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
bV9pbWFnZS0+c2l6ZSgpKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0g
bV9zdXJmYWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7Ci0gICAgY29udGV4dC0+ZHJh
d0ltYWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOwor
CisgICAgSW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xpZW50KG1faW1hZ2UuZ2V0
KCksIHJlY3QpOworICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZhY2VD
bGllbnQpOwogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1
cmZhY2UuaAppbmRleCAzMDc3YzNjMDljNGFiMDY3ZmZiOTg2NjZiNDBmNjA3NTk3ODVlNWQ2Li44
NDc5MTMxMmZjYTg1MDljZjg0NTYzMWViZDQwZGUxOGM0NDBkMzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0zOSw2ICszOSwxMiBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwogCisgICAgY2xhc3MgQ2xp
ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCopID0g
MDsKKyAgICB9OworCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
RmFjdG9yeShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOwogICAgIHN0YXRpYyB2b2lkIHNldEZhY3Rv
cnkoRmFjdG9yeSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBj
cmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKQEAgLTQ5LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGEg
Z3JhcGhpY3MgY29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tp
bmcgc3RvcmUuCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGNvbnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmLCBDbGllbnQqKSA9IDA7CiAKICNpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291
cmNlT2Zmc2V0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUu
Y3BwCmluZGV4IDlmOWQzNGU2MDViMGUyYjI1MjY4YmFhNjZjNDgwNWRiZWZhMjA5MzEuLmIyNGY0
OGQyMzYxOTE3OTEwM2NjZmI0N2RlNmMwZWZiY2Q0MWRmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRp
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwCkBAIC03MywxNyArNzMsMTMgQEAgVmVjdG9yPElu
dFJlY3Q+IENvb3JkaW5hdGVkVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgICAgIHJldHVy
biBWZWN0b3I8SW50UmVjdD4oKTsKIAogICAgIFN1cmZhY2VVcGRhdGVJbmZvIHVwZGF0ZUluZm87
Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9jbGllbnQt
PmJlZ2luQ29udGVudFVwZGF0ZShtX2RpcnR5UmVjdC5zaXplKCksIHVwZGF0ZUluZm8uYXRsYXNJ
RCwgdXBkYXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkK
KworICAgIGlmICghbV9jbGllbnQtPnBhaW50VG9TdXJmYWNlKG1fZGlydHlSZWN0LnNpemUoKSwg
dXBkYXRlSW5mby5hdGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQsIHRoaXMpKQogICAg
ICAgICByZXR1cm4gVmVjdG9yPEludFJlY3Q+KCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT50cmFu
c2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlSZWN0LnkoKSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zY2FsZShGbG9hdFNpemUobV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2Fs
ZSgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1NjYWxlKCkpKTsKLSAgICBtX3RpbGVk
QmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNraW5nU3RvcmVQYWludChncmFwaGljc0Nv
bnRleHQuZ2V0KCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPm1hcFRvQ29udGVudHMobV9kaXJ0eVJl
Y3QpKTsKIAogICAgIHVwZGF0ZUluZm8udXBkYXRlUmVjdCA9IG1fZGlydHlSZWN0OwogICAgIHVw
ZGF0ZUluZm8udXBkYXRlUmVjdC5tb3ZlKC1tX3JlY3QueCgpLCAtbV9yZWN0LnkoKSk7CiAgICAg
dXBkYXRlSW5mby5zY2FsZUZhY3RvciA9IG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2Nh
bGUoKTsKLSAgICBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOwogCiAgICAgc3RhdGljIHVpbnQz
Ml90IGlkID0gMTsKICAgICBpZiAobV9JRCA9PSBJbnZhbGlkQ29vcmRpbmF0ZWRUaWxlSUQpIHsK
QEAgLTEwMSw2ICs5NywxMyBAQCBWZWN0b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRh
dGVCYWNrQnVmZmVyKCkKICAgICByZXR1cm4gdXBkYXRlZFJlY3RzOwogfQogCit2b2lkIENvb3Jk
aW5hdGVkVGlsZTo6cGFpbnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK3sKKyAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fZGlydHlSZWN0LngoKSwgLW1fZGlydHlS
ZWN0LnkoKSk7CisgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKG1fdGlsZWRCYWNraW5nU3Rv
cmUtPmNvbnRlbnRzU2NhbGUoKSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVudHNTY2FsZSgp
KSk7CisgICAgbV90aWxlZEJhY2tpbmdTdG9yZS0+Y2xpZW50KCktPnRpbGVkQmFja2luZ1N0b3Jl
UGFpbnQoY29udGV4dCwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2RpcnR5
UmVjdCkpOworfQorCiB2b2lkIENvb3JkaW5hdGVkVGlsZTo6c3dhcEJhY2tCdWZmZXJUb0Zyb250
KCkKIHsKICAgICAvLyBIYW5kbGVkIGJ5IHRpbGVkQmFja2luZ1N0b3JlUGFpbnRFbmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgKaW5kZXggYmU5OWJmZGFmZWY0OTFk
YWQzYTM2ZmZjNWIyM2Y0NDQ3ZGJlZTQ1Zi4uOTJmNzk4ZjVhNWU2MzIyYTg3OWVhOTAzNGM2Y2Q1
YzY2MDcwMmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAKKyNpbmNs
dWRlICJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiVGlsZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC0zOSw3ICs0MCw3
IEBAIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgU3VyZmFjZVVwZGF0ZUluZm87CiBjbGFzcyBU
aWxlZEJhY2tpbmdTdG9yZTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRUaWxlIDogcHVibGljIFRpbGUg
eworY2xhc3MgQ29vcmRpbmF0ZWRUaWxlIDogcHVibGljIFRpbGUsIHB1YmxpYyBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGlsZT4g
Y3JlYXRlKENvb3JkaW5hdGVkVGlsZUNsaWVudCogY2xpZW50LCBUaWxlZEJhY2tpbmdTdG9yZSog
dGlsZWRCYWNraW5nU3RvcmUsIGNvbnN0IENvb3JkaW5hdGUmIHRpbGVDb29yZGluYXRlKSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRUaWxlKGNsaWVudCwgdGlsZWRCYWNraW5nU3Rv
cmUsIHRpbGVDb29yZGluYXRlKSk7IH0KICAgICB+Q29vcmRpbmF0ZWRUaWxlKCk7CkBAIC01NSw2
ICs1Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9CiAgICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6ZSYpOwogCisgICAgdmly
dHVhbCB2b2lkIHBhaW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQqKSBPVkVSUklE
RTsKKwogcHJpdmF0ZToKICAgICBDb29yZGluYXRlZFRpbGUoQ29vcmRpbmF0ZWRUaWxlQ2xpZW50
KiwgVGlsZWRCYWNraW5nU3RvcmUqLCBjb25zdCBDb29yZGluYXRlJik7CiAKQEAgLTc1LDcgKzc4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJ
RCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0
ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUaWxl
KHVpbnQzMl90IHRpbGVJRCkgPSAwOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IGJlZ2luQ29udGVudFVwZGF0ZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFz
SUQsIEludFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25z
dCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIEludFBvaW50JiwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpDbGllbnQqKSA9IDA7CiB9OwogCiBjbGFzcyBDb29yZGluYXRlZFRpbGVCYWNr
ZW5kIDogcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQmFja2VuZCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRs
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBiZTE4YTY0MTE3MDA1ZDE5MmMzMjA1NzZkYmU5ZjNj
MGJmOWZkYjYzLi45YzE3ZjA1MWFjNDMwY2QxOTI2ZWY5MmMwZmM4YjI0OTlkMjU1ZDYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTMwLDYgKzMwLDMzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IDog
cHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBVcGRhdGVB
dGxhc1N1cmZhY2VDbGllbnQoQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIGNsaWVudCwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBzdXBwb3J0c0FscGhhKQorICAgICAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAgICAgLCBtX3N1cHBvcnRzQWxw
aGEoc3VwcG9ydHNBbHBoYSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50
VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIE9WRVJSSURFCisgICAg
eworICAgICAgICBpZiAobV9zdXBwb3J0c0FscGhhKSB7CisgICAgICAgICAgICBjb250ZXh0LT5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fc2l6ZSksIENvbG9yOjp0cmFu
c3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgICAgIH0KKworICAg
ICAgICBtX2NsaWVudC0+cGFpbnRUb1N1cmZhY2VDb250ZXh0KGNvbnRleHQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogbV9jbGllbnQ7CisgICAg
SW50U2l6ZSBtX3NpemU7CisgICAgYm9vbCBtX3N1cHBvcnRzQWxwaGE7CisKK307CisKIFVwZGF0
ZUF0bGFzOjpVcGRhdGVBdGxhcyhDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1faW5hY3Rpdml0eUluU2Vjb25kcygwKQpAQCAtNjEsNyArODgsOCBAQCB2b2lkIFVwZGF0ZUF0
bGFzOjpkaWRTd2FwQnVmZmVycygpCiAgICAgbV9hcmVhQWxsb2NhdG9yLmNsZWFyKCk7CiB9CiAK
LVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5QYWludGluZ09u
QXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90JiBhdGxhc0lELCBjb25zdCBJbnRTaXplJiBzaXplLCBJ
bnRQb2ludCYgb2Zmc2V0KQorCitib29sIFVwZGF0ZUF0bGFzOjpwYWludE9uQXZhaWxhYmxlQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYgb2Zm
c2V0LCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogY2xpZW50KQogewogICAgIG1faW5hY3Rp
dml0eUluU2Vjb25kcyA9IDA7CiAgICAgYnVpbGRMYXlvdXRJZk5lZWRlZCgpOwpAQCAtNjksMjQg
Kzk3LDIwIEBAIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBVcGRhdGVBdGxhczo6YmVnaW5Q
YWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90CiAKICAgICAvLyBObyBhdmFpbGFibGUg
YnVmZmVyIHdhcyBmb3VuZCwgcmV0dXJuaW5nIG51bGwuCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9zdXJmYWNlKQotICAgICAgICByZXR1cm4gUGFz
c093blB0cjxHcmFwaGljc0NvbnRleHQ+KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGF0bGFzSUQgPSBtX0lEOwogCiAgICAgLy8gRklYTUU6IFVzZSB0cmktc3RhdGUgYnVmZmVycywg
dG8gYWxsb3cgZmFzdGVyIHVwZGF0ZXMuCiAgICAgb2Zmc2V0ID0gcmVjdC5sb2NhdGlvbigpOwot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IG1fc3VyZmFjZS0+
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KHJlY3QpOwogCi0gICAgaWYgKHN1cHBvcnRzQWxwaGEoKSkg
ewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHNpemUpLCBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVTb3VyY2VPdmVyKTsKLSAgICB9CisgICAgVXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50IHN1
cmZhY2VDbGllbnQoY2xpZW50LCBzaXplLCBzdXBwb3J0c0FscGhhKCkpOworICAgIG1fc3VyZmFj
ZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZhY2VDbGllbnQpOwogCi0gICAgcmV0dXJuIGdy
YXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKaW5kZXggNDFl
YjM4ZTM5MmFiMzE3NmIxNmViZGU0ZWUyMGMzNjNkZGYwMTNjZS4uMTg4ZjQwN2JjYmI1MThhY2Iw
YWFjOWM5Y2E1OGRlZGEyZWM1MzViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFz
LmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogCiAgICAgaW5saW5lIEludFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CiAKLSAgICAvLyBSZXR1cm5zIGEg
bnVsbCBwb2ludGVyIG9mIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIuCi0gICAgUGFzc093
blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcih1aW50
MzJfdCYgYXRsYXNJRCwgY29uc3QgSW50U2l6ZSYsIEludFBvaW50JiBvZmZzZXQpOworICAgIC8v
IFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KKyAgICBib29s
IHBhaW50T25BdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiAvKiBhdGxh
c0lEICovLCBJbnRQb2ludCYgLyogb2Zmc2V0ICovLCBDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVu
dCopOwogICAgIHZvaWQgZGlkU3dhcEJ1ZmZlcnMoKTsKICAgICBib29sIHN1cHBvcnRzQWxwaGEo
KSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UtPnN1cHBvcnRzQWxwaGEoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAppbmRleCA1MmI3ZjZkMmMxNDQzYTQ3OTc5MmU2
ODA1OTNlYjY4YzBlMDRlNjk1Li4zZTEzOWM2MWE0NGYxZjJmNzhjZTQyMTczOGFhYTM2MDc0OGUx
ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAKQEAgLTE4Myw2ICsx
ODMsMTUgQEAgYm9vbCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUm
IGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OnBhaW50VG9TdXJmYWNlKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVkU3VyZmFj
ZTo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQgPSBjcmVhdGVHcmFwaGljc0Nv
bnRleHQocmVjdCk7CisgICAgY2xpZW50LT5wYWludFRvU3VyZmFjZUNvbnRleHQoY29udGV4dC5n
ZXQoKSk7Cit9CisKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB2b2lkIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6Y29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+
IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3Vy
Y2VPZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCmluZGV4IDUzODZh
OTE3ZTUyNmViNGEzZDU4ZDc4MjJiOTFjZTAwOWViMjUxM2EuLmJlOTgxZTBiMmVmODIxNjY0Njk1
Yjc2ZTQ3MjU0MTcyZjE0MzM1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5o
CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6
ZSBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVHcmFwaGljc0NvbnRl
eHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklERTsKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikK
ICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1h
cFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOwpAQCAtODcsNiArODcsNyBAQCBwcml2
YXRlOgogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTaGFyZWFibGVCaXRtYXAuCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIEZsYWdzLCBQ
YXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOwogCisgICAgUGFzc093blB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dChjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywgUGFzc1JlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2U+KTsKICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIGJhY2tl
ZCBieSBhIGdyYXBoaWNzIHN1cmZhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCAwNjQ3ZGI3YTBhYmY3Nzg5
MzA2ZGUzNGM5YTRiMzU1MzdmNWFhNmRkLi4wMzVmYzdmNTJiOTlhZmVhNjAzN2QyODRkODYyZGNk
NmQwNGEzOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTY3MCwyMyArNjcwLDIxIEBAIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAgIG1fdXBkYXRlQXRs
YXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBv
aW50JiBvZmZzZXQpCitib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFpbnRUb1N1cmZh
Y2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywg
dWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3ND
b250ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2Vz
W2ldLmdldCgpOwogICAgICAgICBpZiAoYXRsYXMtPnN1cHBvcnRzQWxwaGEoKSA9PSAoZmxhZ3Mg
JiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEpKSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlciBzcGFj
ZS4KLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dCA9IGF0bGFzLT5iZWdpblBhaW50aW5nT25B
dmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChn
cmFwaGljc0NvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdyYXBoaWNzQ29udGV4dC5y
ZWxlYXNlKCk7CisgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZmFsc2UgaWYgdGhlcmUgaXMgbm8g
YXZhaWxhYmxlIGJ1ZmZlciBzcGFjZS4KKyAgICAgICAgICAgIGlmIChhdGxhcy0+cGFpbnRPbkF2
YWlsYWJsZUJ1ZmZlcihzaXplLCBhdGxhc0lELCBvZmZzZXQsIGNsaWVudCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBzdGF0aWMgY29uc3Qg
aW50IFNjcmF0Y2hCdWZmZXJEaW1lbnNpb24gPSAxMDI0OyAvLyBTaG91bGQgYmUgYSBwb3dlciBv
ZiB0d28uCiAgICAgbV91cGRhdGVBdGxhc2VzLmFwcGVuZChhZG9wdFB0cihuZXcgVXBkYXRlQXRs
YXModGhpcywgU2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiwgZmxhZ3MpKSk7CiAgICAgc2NoZWR1bGVS
ZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCk7Ci0gICAgcmV0dXJuIG1fdXBkYXRlQXRsYXNlcy5sYXN0
KCktPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihhdGxhc0lELCBzaXplLCBvZmZzZXQp
OworICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMubGFzdCgpLT5wYWludE9uQXZhaWxhYmxlQnVm
ZmVyKHNpemUsIGF0bGFzSUQsIG9mZnNldCwgY2xpZW50KTsKIH0KIAogY29uc3QgZG91YmxlIFJl
bGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsID0gMC41OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBhMTU3
ZWVkZmU1YzBlMGM2MTEwYmJiYjg0MDIzN2I0MmM3MDAyYjMzLi4xNDE0ZjQzZThmYjY3NTJhYTc5
ZTkwZGQzNDJmZmIxMmNjN2YzZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdl
QmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoV2ViQ29yZTo6SW1hZ2UqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50MzJfdCYgYXRsYXNJRCwgV2ViQ29y
ZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQz
Ml90JiAvKiBhdGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZTo6Q2xpZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXll
clN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzOjpDbGllbnQK
</data>
<flag name="review"
          id="225376"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="225377"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203913</attachid>
            <date>2013-06-06 01:46:30 -0700</date>
            <delta_ts>2013-06-06 02:43:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108899-20130606174457.patch</filename>
            <type>text/plain</type>
            <size>23214</size>
            <attacher name="Jae Hyun Park">jaepark</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQwYTMyYjU0YWRlMzYx
Zjk5M2E0NGJiOGI1MmIxNGI0MDIyOGI1Mi4uNDExYjU2MzU1MGEwMzJhYWEwNTc0NzEyNGIyODFk
NWU0YzVmMjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA2LTA1ICBKYWUg
SHl1biBQYXJrICA8amFlLnBhcmtAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0
ZWQgR3JhcGhpY3MgOiBSZWZhY3RvciBDb29yZGluYXRlZFN1cmZhY2UgdG8gbWFuYWdlIHRoZSBs
aWZlY3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJv
c2VudGhhbC4KKworICAgICAgICBUaGlzIGlzIGEgcHJlcGFyYXRpb24gcGF0Y2ggZm9yIFRocmVh
ZGVkIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBD
b29yZGluYXRlZFN1cmZhY2UgdG8gYmUgcmVzcG9uc2libGUgZm9yIHRoZQorICAgICAgICBsaWZl
Y3ljbGUgb2YgR3JhcGhpY3NDb250ZXh0IHVzZWQgaW4gQ29vcmRpbmF0ZWQgR3JhcGhpY3MgU3lz
dGVtLgorICAgICAgICBDb29yZGluYXRlZEltYWdlQmFja2luZyBhbmQgVXBkYXRlQXRsYXMgZG8g
bm90IGFzayBmb3IgdGhlIG93bmVyc2hpcAorICAgICAgICBvZiBHcmFwaGljc0NvbnRleHQgYW55
bW9yZS4gSW5zdGVhZCwgdGhvc2UgY2xhc3NlcyB1c2UgY2xpZW50IHBhdHRlcm4gdG8KKyAgICAg
ICAgYXNrIHRoZSBDb29yZGlhbnRlZFN1cmZhY2UgdG8gcGFpbnQgdG8gdGhlIEdyYXBoaWNzQ29u
dGV4dC4KKworICAgICAgICBUaGlzIHJlZmFjdG9yaW5nIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQg
Q29vcmRpbmF0ZWRTdXJmYWNlIGZvciBUaHJlYWRlZAorICAgICAgICBDb29yZGluYXRlZCBHcmFw
aGljcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudDo6
SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZFN1cmZhY2U6OkNsaWVudDo6fkNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZFRpbGU6OnVwZGF0ZUJhY2tCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRUaWxlOjpwYWludFRvU3VyZmFjZUNvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRl
QXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXNTdXJmYWNlQ2xpZW50OjpV
cGRhdGVBdGxhc1N1cmZhY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRsYXM6
OnBhaW50T25BdmFpbGFibGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgorCiAyMDEzLTA2LTA1ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCB0aGUgc2Vjb25kIGhhbGYg
b2YgcjE1MTI1Ny4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUgY2FuIHJldHVybiBudWxs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGY0NGNkZDA3NDdmYmI3YWZjMDdkNjNlNThlMjNlMGFjZjVkNjczYjUu
LjQ3OGZmNzg1OWI3ZmMxZjc3YWU5OWI2YjRjZDQzYjA2N2M4ZjM5MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMy0wNi0wNSAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNvbXBh
bnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIDogUmVmYWN0b3IgQ29v
cmRpbmF0ZWRTdXJmYWNlIHRvIG1hbmFnZSB0aGUgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4ODk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCisKKyAgICAgICAgVGhpcyBp
cyBhIHByZXBhcmF0aW9uIHBhdGNoIGZvciBUaHJlYWRlZCBDb29yZGluYXRlZCBHcmFwaGljcy4K
KworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgQ29vcmRpbmF0ZWRTdXJmYWNlIHRvIGJlIHJl
c3BvbnNpYmxlIGZvciB0aGUKKyAgICAgICAgbGlmZWN5Y2xlIG9mIEdyYXBoaWNzQ29udGV4dCB1
c2VkIGluIENvb3JkaW5hdGVkIEdyYXBoaWNzIFN5c3RlbS4KKyAgICAgICAgQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcgYW5kIFVwZGF0ZUF0bGFzIGRvIG5vdCBhc2sgZm9yIHRoZSBvd25lcnNoaXAK
KyAgICAgICAgb2YgR3JhcGhpY3NDb250ZXh0IGFueW1vcmUuIEluc3RlYWQsIHRob3NlIGNsYXNz
ZXMgdXNlIGNsaWVudCBwYXR0ZXJuIHRvCisgICAgICAgIGFzayB0aGUgQ29vcmRpYW50ZWRTdXJm
YWNlIHRvIHBhaW50IHRvIHRoZSBHcmFwaGljc0NvbnRleHQuCisKKyAgICAgICAgVGhpcyByZWZh
Y3RvcmluZyBpcyBuZWVkZWQgdG8gaW1wbGVtZW50IENvb3JkaW5hdGVkU3VyZmFjZSBmb3IgVGhy
ZWFkZWQKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgKiBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OnBhaW50VG9TdXJmYWNlKToKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OnBhaW50VG9TdXJmYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKwogMjAxMy0wNi0w
NSAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1b
V0syXSBGaXggdGVzdF9ld2syX3ZpZXcgdW5pdCB0ZXN0IHRpbWVkIG91dCBpc3N1ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApp
bmRleCA3MzVhM2Y2NWU4YTM0NDdiOGIxZmJjNGYxZjM4YTk3YzA1MGI2MzQ3Li5kMWMxYzVkYzk5
MDQyYzhlZmZjNTJlNjQ5N2M0YTlmNDRjN2IzN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtOTU5LDExICs5NTks
MTEgQEAgQ29sb3IgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZUJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRlbnRzT3BhcXVlKCkgPyBDb2xv
cjo6d2hpdGUgOiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiB9CiAKLVBhc3NPd25QdHI8R3JhcGhpY3ND
b250ZXh0PiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmJlZ2luQ29udGVudFVwZGF0ZShjb25z
dCBJbnRTaXplJiBzaXplLCB1aW50MzJfdCYgYXRsYXMsIEludFBvaW50JiBvZmZzZXQpCitib29s
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgdWludDMyX3QmIGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0LCBDb29yZGluYXRlZFN1cmZh
Y2U6OkNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsKICAgICBB
U1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKLSAgICByZXR1
cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVl
KCkgPyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6OlN1
cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOworICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLT5w
YWludFRvU3VyZmFjZShzaXplLCBjb250ZW50c09wYXF1ZSgpID8gQ29vcmRpbmF0ZWRTdXJmYWNl
OjpOb0ZsYWdzIDogQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhLCBhdGxhcywgb2Zm
c2V0LCBjbGllbnQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRl
VGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiB1cGRhdGVJbmZv
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA2N2I4NDI0MzM5NzVjMTQxMDIzMDI3
NDUzYjg0NGU1NTdhYTU0ZDFjLi4wZWE2OTcwMjFlM2RiNTk2MWY0NjhiYzI3ZDE3OTM4YmUwYTFh
NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1h
Z2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciopID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBi
ZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3Ms
IHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50
KikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5
ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKSA9IDA7CiB9OwpAQCAtMTQyLDcg
KzE0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGlsZSh1aW50MzJfdCB0
aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3Vy
ZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6
ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0bGFzSUQg
Ki8sIEludFBvaW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklERTsKIAog
ICAgIHZvaWQgc2V0Q29vcmRpbmF0b3IoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcuY3BwCmluZGV4IDFhOWY1MGZiYjZmM2NlOWUzNjhiZmVlNzQ4OTVmMmVlOWU4MmRkY2YuLjVj
YTQzMGI0NzRmMTljYjI0ZTJmMWYxMDQ0NTk1NTM4NzY2OGNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcApAQCAtMzMsNiAr
MzMsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbWFnZUJhY2tpbmdTdXJm
YWNlQ2xpZW50IDogcHVibGljIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKK3B1YmxpYzoK
KyAgICBJbWFnZUJhY2tpbmdTdXJmYWNlQ2xpZW50KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQorICAgICAgICAsIG1fcmVjdChyZWN0
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VDb250ZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShtX2ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtX3JlY3QsIG1fcmVj
dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEltYWdlKiBtX2ltYWdlOworICAgIEludFJlY3Qg
bV9yZWN0OworfTsKKwogQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBDb29yZGluYXRlZEltYWdl
QmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChJbWFnZSogaW1hZ2UpCiB7CiAg
ICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcga2VlcHMgYSBSZWZQdHI8SW1hZ2U+IG1lbWJl
ciwgc28gdGhlIHNhbWUgSW1hZ2UgcG9pbnRlciBjYW4gbm90IHJlZmVyIHR3byBkaWZmZXJlbnQg
aW5zdGFuY2VzIHVudGlsIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nIHJlbGVhc2VzIHRoZSBtZW1i
ZXIuCkBAIC0xMDksOCArMTI3LDkgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBk
YXRlKCkKICAgICB9CiAKICAgICBJbnRSZWN0IHJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9pbWFn
ZS0+c2l6ZSgpKTsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9zdXJm
YWNlLT5jcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdl
KG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJlY3QsIHJlY3QpOworCisgICAg
SW1hZ2VCYWNraW5nU3VyZmFjZUNsaWVudCBzdXJmYWNlQ2xpZW50KG1faW1hZ2UuZ2V0KCksIHJl
Y3QpOworICAgIG1fc3VyZmFjZS0+cGFpbnRUb1N1cmZhY2UocmVjdCwgJnN1cmZhY2VDbGllbnQp
OwogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1faW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFN1cmZhY2Uu
aAppbmRleCAzMDc3YzNjMDljNGFiMDY3ZmZiOTg2NjZiNDBmNjA3NTk3ODVlNWQ2Li5kYjFjMjdl
YTg1MmMyNTUxOTQzMGJmZjY3MzBmMDcyMjBlZDk1YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTdXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0zOSw2ICszOSwxMiBAQCBwdWJsaWM6CiAg
ICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVkIEZsYWdzOwogCisgICAgY2xhc3MgQ2xpZW50IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCopID0gMDsKKyAg
ICB9OworCiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gRmFjdG9y
eShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOwogICAgIHN0YXRpYyB2b2lkIHNldEZhY3RvcnkoRmFj
dG9yeSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUo
Y29uc3QgSW50U2l6ZSYsIEZsYWdzKTsKQEAgLTQ4LDggKzU0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc3VwcG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIGZsYWdzKCkgJiBTdXBwb3J0c0FscGhh
OyB9CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CiAKLSAgICAvLyBDcmVh
dGUgYSBncmFwaGljcyBjb250ZXh0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcGFpbnQgaW50byB0aGUg
YmFja2luZyBzdG9yZS4KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBj
cmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50UmVjdCYsIENsaWVudCopID0gMDsKIAogI2lmIFVT
RShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNzUmVm
UHRyPEJpdG1hcFRleHR1cmU+LCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50
JiBzb3VyY2VPZmZzZXQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
VGlsZS5jcHAKaW5kZXggOWY5ZDM0ZTYwNWIwZTJiMjUyNjhiYWE2NmM0ODA1ZGJlZmEyMDkzMS4u
YjI0ZjQ4ZDIzNjE5MTc5MTAzY2NmYjQ3ZGU2YzBlZmJjZDQxZGY4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGlsZS5jcHAKQEAgLTczLDE3ICs3MywxMyBAQCBWZWN0
b3I8SW50UmVjdD4gQ29vcmRpbmF0ZWRUaWxlOjp1cGRhdGVCYWNrQnVmZmVyKCkKICAgICAgICAg
cmV0dXJuIFZlY3RvcjxJbnRSZWN0PigpOwogCiAgICAgU3VyZmFjZVVwZGF0ZUluZm8gdXBkYXRl
SW5mbzsKLSAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBtX2Ns
aWVudC0+YmVnaW5Db250ZW50VXBkYXRlKG1fZGlydHlSZWN0LnNpemUoKSwgdXBkYXRlSW5mby5h
dGxhc0lELCB1cGRhdGVJbmZvLnN1cmZhY2VPZmZzZXQpOwotICAgIGlmICghZ3JhcGhpY3NDb250
ZXh0KQorCisgICAgaWYgKCFtX2NsaWVudC0+cGFpbnRUb1N1cmZhY2UobV9kaXJ0eVJlY3Quc2l6
ZSgpLCB1cGRhdGVJbmZvLmF0bGFzSUQsIHVwZGF0ZUluZm8uc3VyZmFjZU9mZnNldCwgdGhpcykp
CiAgICAgICAgIHJldHVybiBWZWN0b3I8SW50UmVjdD4oKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PnRyYW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgpLCAtbV9kaXJ0eVJlY3QueSgpKTsKLSAgICBncmFw
aGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50
c1NjYWxlKCksIG1fdGlsZWRCYWNraW5nU3RvcmUtPmNvbnRlbnRzU2NhbGUoKSkpOwotICAgIG1f
dGlsZWRCYWNraW5nU3RvcmUtPmNsaWVudCgpLT50aWxlZEJhY2tpbmdTdG9yZVBhaW50KGdyYXBo
aWNzQ29udGV4dC5nZXQoKSwgbV90aWxlZEJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX2Rp
cnR5UmVjdCkpOwogCiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0ID0gbV9kaXJ0eVJlY3Q7CiAg
ICAgdXBkYXRlSW5mby51cGRhdGVSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsK
ICAgICB1cGRhdGVJbmZvLnNjYWxlRmFjdG9yID0gbV90aWxlZEJhY2tpbmdTdG9yZS0+Y29udGVu
dHNTY2FsZSgpOwotICAgIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CiAKICAgICBzdGF0aWMg
dWludDMyX3QgaWQgPSAxOwogICAgIGlmIChtX0lEID09IEludmFsaWRDb29yZGluYXRlZFRpbGVJ
RCkgewpAQCAtMTAxLDYgKzk3LDEzIEBAIFZlY3RvcjxJbnRSZWN0PiBDb29yZGluYXRlZFRpbGU6
OnVwZGF0ZUJhY2tCdWZmZXIoKQogICAgIHJldHVybiB1cGRhdGVkUmVjdHM7CiB9CiAKK3ZvaWQg
Q29vcmRpbmF0ZWRUaWxlOjpwYWludFRvU3VyZmFjZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQoreworICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgpLCAtbV9k
aXJ0eVJlY3QueSgpKTsKKyAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUobV90aWxlZEJhY2tp
bmdTdG9yZS0+Y29udGVudHNTY2FsZSgpLCBtX3RpbGVkQmFja2luZ1N0b3JlLT5jb250ZW50c1Nj
YWxlKCkpKTsKKyAgICBtX3RpbGVkQmFja2luZ1N0b3JlLT5jbGllbnQoKS0+dGlsZWRCYWNraW5n
U3RvcmVQYWludChjb250ZXh0LCBtX3RpbGVkQmFja2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRzKG1f
ZGlydHlSZWN0KSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRUaWxlOjpzd2FwQmFja0J1ZmZlclRv
RnJvbnQoKQogewogICAgIC8vIEhhbmRsZWQgYnkgdGlsZWRCYWNraW5nU3RvcmVQYWludEVuZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZFRpbGUuaAppbmRleCBiZTk5YmZkYWZl
ZjQ5MWRhZDNhMzZmZmM1YjIzZjQ0NDdkYmVlNDVmLi5jYWI1MjZlMmJlNWY4M2U1ZjRhMTFmMjI0
YzczMGY3ODlkNzM1NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRUaWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkVGls
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIAor
I2luY2x1ZGUgIkNvb3JkaW5hdGVkU3VyZmFjZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJUaWxlLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTM5LDcg
KzQwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBTdXJmYWNlVXBkYXRlSW5mbzsKIGNs
YXNzIFRpbGVkQmFja2luZ1N0b3JlOwogCi1jbGFzcyBDb29yZGluYXRlZFRpbGUgOiBwdWJsaWMg
VGlsZSB7CitjbGFzcyBDb29yZGluYXRlZFRpbGUgOiBwdWJsaWMgVGlsZSwgcHVibGljIENvb3Jk
aW5hdGVkU3VyZmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
aWxlPiBjcmVhdGUoQ29vcmRpbmF0ZWRUaWxlQ2xpZW50KiBjbGllbnQsIFRpbGVkQmFja2luZ1N0
b3JlKiB0aWxlZEJhY2tpbmdTdG9yZSwgY29uc3QgQ29vcmRpbmF0ZSYgdGlsZUNvb3JkaW5hdGUp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZFRpbGUoY2xpZW50LCB0aWxlZEJhY2tp
bmdTdG9yZSwgdGlsZUNvb3JkaW5hdGUpKTsgfQogICAgIH5Db29yZGluYXRlZFRpbGUoKTsKQEAg
LTU1LDYgKzU2LDggQEAgcHVibGljOgogICAgIGNvbnN0IEludFJlY3QmIHJlY3QoKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KICAgICB2b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJik7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCopIE9W
RVJSSURFOworCiBwcml2YXRlOgogICAgIENvb3JkaW5hdGVkVGlsZShDb29yZGluYXRlZFRpbGVD
bGllbnQqLCBUaWxlZEJhY2tpbmdTdG9yZSosIGNvbnN0IENvb3JkaW5hdGUmKTsKIApAQCAtNzUs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3Qg
dGlsZUlELCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBTdXJmYWNl
VXBkYXRlSW5mbyYsIGNvbnN0IEludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZVRpbGUodWludDMyX3QgdGlsZUlEKSA9IDA7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYg
YXRsYXNJRCwgSW50UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBhaW50VG9TdXJmYWNl
KGNvbnN0IEludFNpemUmLCB1aW50MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmLCBDb29yZGluYXRl
ZFN1cmZhY2U6OkNsaWVudCopID0gMDsKIH07CiAKIGNsYXNzIENvb3JkaW5hdGVkVGlsZUJhY2tl
bmQgOiBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVCYWNrZW5kIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IGJlMThhNjQxMTcwMDVkMTkyYzMyMDU3NmRiZTlmM2Mw
YmY5ZmRiNjMuLjMxOWU5YjhlNDI2Y2ViZDA1ZTFkYjg2MWNjMzEzOGRmY2UxNDQwYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcApAQCAtMzAsNiArMzAsMzIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQgOiBw
dWJsaWMgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQgeworcHVibGljOgorICAgIFVwZGF0ZUF0
bGFzU3VyZmFjZUNsaWVudChDb29yZGluYXRlZFN1cmZhY2U6OkNsaWVudCogY2xpZW50LCBjb25z
dCBJbnRTaXplJiBzaXplLCBib29sIHN1cHBvcnRzQWxwaGEpCisgICAgICAgIDogbV9jbGllbnQo
Y2xpZW50KQorICAgICAgICAsIG1fc2l6ZShzaXplKQorICAgICAgICAsIG1fc3VwcG9ydHNBbHBo
YShzdXBwb3J0c0FscGhhKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1N1cmZhY2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgT1ZFUlJJREUKKyAgICB7
CisgICAgICAgIGlmIChtX3N1cHBvcnRzQWxwaGEpIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9zaXplKSwgQ29sb3I6OnRyYW5z
cGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgfQorCisgICAg
ICAgIG1fY2xpZW50LT5wYWludFRvU3VyZmFjZUNvbnRleHQoY29udGV4dCk7CisgICAgfQorCitw
cml2YXRlOgorICAgIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBtX2NsaWVudDsKKyAgICBJ
bnRTaXplIG1fc2l6ZTsKKyAgICBib29sIG1fc3VwcG9ydHNBbHBoYTsKK307CisKIFVwZGF0ZUF0
bGFzOjpVcGRhdGVBdGxhcyhDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1f
aW5hY3Rpdml0eUluU2Vjb25kcygwKQpAQCAtNjEsMzIgKzg3LDI5IEBAIHZvaWQgVXBkYXRlQXRs
YXM6OmRpZFN3YXBCdWZmZXJzKCkKICAgICBtX2FyZWFBbGxvY2F0b3IuY2xlYXIoKTsKIH0KIAot
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFVwZGF0ZUF0bGFzOjpiZWdpblBhaW50aW5nT25B
dmFpbGFibGVCdWZmZXIodWludDMyX3QmIGF0bGFzSUQsIGNvbnN0IEludFNpemUmIHNpemUsIElu
dFBvaW50JiBvZmZzZXQpCisKK2Jvb2wgVXBkYXRlQXRsYXM6OnBhaW50T25BdmFpbGFibGVCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZz
ZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGllbnQpCiB7CiAgICAgbV9pbmFjdGl2
aXR5SW5TZWNvbmRzID0gMDsKICAgICBidWlsZExheW91dElmTmVlZGVkKCk7CiAgICAgSW50UmVj
dCByZWN0ID0gbV9hcmVhQWxsb2NhdG9yLT5hbGxvY2F0ZShzaXplKTsKIAotICAgIC8vIE5vIGF2
YWlsYWJsZSBidWZmZXIgd2FzIGZvdW5kLCByZXR1cm5pbmcgbnVsbC4KKyAgICAvLyBObyBhdmFp
bGFibGUgYnVmZmVyIHdhcyBmb3VuZC4KICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFtX3N1cmZhY2UpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPEdy
YXBoaWNzQ29udGV4dD4oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXRsYXNJRCA9
IG1fSUQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHRyaS1zdGF0ZSBidWZmZXJzLCB0byBhbGxvdyBm
YXN0ZXIgdXBkYXRlcy4KICAgICBvZmZzZXQgPSByZWN0LmxvY2F0aW9uKCk7Ci0gICAgT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gbV9zdXJmYWNlLT5jcmVhdGVHcmFw
aGljc0NvbnRleHQocmVjdCk7CiAKLSAgICBpZiAoc3VwcG9ydHNBbHBoYSgpKSB7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgc2l6ZSksIENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOwotICAgIH0KKyAgICBVcGRhdGVBdGxhc1N1cmZhY2VDbGllbnQgc3VyZmFjZUNsaWVu
dChjbGllbnQsIHNpemUsIHN1cHBvcnRzQWxwaGEoKSk7CisgICAgbV9zdXJmYWNlLT5wYWludFRv
U3VyZmFjZShyZWN0LCAmc3VyZmFjZUNsaWVudCk7CiAKLSAgICByZXR1cm4gZ3JhcGhpY3NDb250
ZXh0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaAppbmRleCA0MWViMzhlMzkyYWIz
MTc2YjE2ZWJkZTRlZTIwYzM2M2RkZjAxM2NlLi4yZWI0NWY3YzdmMTU1NjVkNTBkYzdmNTgzYTJh
M2FiMTg4YWRjNjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaApAQCAtNDUs
OCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgSW50U2l6ZSBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7IH0KIAotICAgIC8vIFJldHVybnMgYSBudWxsIHBvaW50
ZXIgb2YgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlci4KLSAgICBQYXNzT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gYmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKHVpbnQzMl90JiBhdGxh
c0lELCBjb25zdCBJbnRTaXplJiwgSW50UG9pbnQmIG9mZnNldCk7CisgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUgYnVmZmVyLgorICAgIGJvb2wgcGFpbnRPbkF2
YWlsYWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50
JiBvZmZzZXQsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Kik7CiAgICAgdm9pZCBkaWRTd2Fw
QnVmZmVycygpOwogICAgIGJvb2wgc3VwcG9ydHNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vy
ZmFjZS0+c3VwcG9ydHNBbHBoYSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZh
Y2UuY3BwCmluZGV4IDUyYjdmNmQyYzE0NDNhNDc5NzkyZTY4MDU5M2ViNjhjMGUwNGU2OTUuLmJh
YmJiZjk2OWJkNWM2NDZkNWZhYTZmODgwNzJmMTAyYjc0MTJkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3VyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtMTgzLDYgKzE4MywxNCBAQCBib29sIFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6cGFpbnRUb1N1cmZhY2UoY29u
c3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqIGNsaWVudCkKK3sK
KyAgICBBU1NFUlQoY2xpZW50KTsKKworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRl
eHQgPSBjcmVhdGVHcmFwaGljc0NvbnRleHQocmVjdCk7CisgICAgY2xpZW50LT5wYWludFRvU3Vy
ZmFjZUNvbnRleHQoY29udGV4dC5nZXQoKSk7Cit9CisKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CiB2b2lkIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y29weVRvVGV4dHVyZShQYXNzUmVmUHRyPFdl
YkNvcmU6OkJpdG1hcFRleHR1cmU+IHBhc3NUZXh0dXJlLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQs
IGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oCmluZGV4IDUzODZhOTE3ZTUyNmViNGEzZDU4ZDc4MjJiOTFjZTAwOWViMjUxM2Eu
LmJlOTgxZTBiMmVmODIxNjY0Njk1Yjc2ZTQ3MjU0MTcyZjE0MzM1ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkNvb3JkaW5hdGVkU3Vy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YkNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9z
aXplOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiBjcmVhdGVHcmFwaGljc0NvbnRleHQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklERTsKIAogI2lm
IFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgY29weVRvVGV4dHVyZShQYXNz
UmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0
YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIE9WRVJSSURFOwpA
QCAtODcsNiArODcsNyBAQCBwcml2YXRlOgogICAgIC8vIENyZWF0ZSBhIFdlYkNvb3JkaW5hdGVk
U3VyZmFjZSByZWZlcmVuY2luZyBhbiBleGlzdGluZyBTaGFyZWFibGVCaXRtYXAuCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIEZsYWdzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4pOwogCisgICAg
UGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAg
ICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBGbGFncywg
UGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+KTsKICAgICAvLyBDcmVhdGUgYSBz
aGFyZWFibGUgYml0bWFwIGJhY2tlZCBieSBhIGdyYXBoaWNzIHN1cmZhY2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApp
bmRleCAwNjQ3ZGI3YTBhYmY3Nzg5MzA2ZGUzNGM5YTRiMzU1MzdmNWFhNmRkLi4wMzVmYzdmNTJi
OTlhZmVhNjAzN2QyODRkODYyZGNkNmQwNGEzOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTY3MCwyMyAr
NjcwLDIxIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9y
ZXMoKQogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwogfQogCi1QYXNzT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpiZWdpbkNvbnRlbnRVcGRhdGUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgdWlu
dDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQpCitib29sIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6cGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRT
dXJmYWNlOjpGbGFncyBmbGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQs
IENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KiBjbGllbnQpCiB7Ci0gICAgT3duUHRyPEdyYXBo
aWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVXBkYXRlQXRsYXMqIGF0
bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOwogICAgICAgICBpZiAoYXRsYXMtPnN1cHBv
cnRzQWxwaGEoKSA9PSAoZmxhZ3MgJiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBvcnRzQWxwaGEp
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm8g
YXZhaWxhYmxlIGJ1ZmZlciBzcGFjZS4KLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dCA9IGF0
bGFzLT5iZWdpblBhaW50aW5nT25BdmFpbGFibGVCdWZmZXIoYXRsYXNJRCwgc2l6ZSwgb2Zmc2V0
KTsKLSAgICAgICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGdyYXBoaWNzQ29udGV4dC5yZWxlYXNlKCk7CisgICAgICAgICAgICAvLyBUaGlzIHdpbGwg
ZmFsc2UgaWYgdGhlcmUgaXMgbm8gYXZhaWxhYmxlIGJ1ZmZlciBzcGFjZS4KKyAgICAgICAgICAg
IGlmIChhdGxhcy0+cGFpbnRPbkF2YWlsYWJsZUJ1ZmZlcihzaXplLCBhdGxhc0lELCBvZmZzZXQs
IGNsaWVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBzdGF0aWMgY29uc3QgaW50IFNjcmF0Y2hCdWZmZXJEaW1lbnNpb24gPSAxMDI0OyAv
LyBTaG91bGQgYmUgYSBwb3dlciBvZiB0d28uCiAgICAgbV91cGRhdGVBdGxhc2VzLmFwcGVuZChh
ZG9wdFB0cihuZXcgVXBkYXRlQXRsYXModGhpcywgU2NyYXRjaEJ1ZmZlckRpbWVuc2lvbiwgZmxh
Z3MpKSk7CiAgICAgc2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxhc2VzKCk7Ci0gICAgcmV0dXJu
IG1fdXBkYXRlQXRsYXNlcy5sYXN0KCktPmJlZ2luUGFpbnRpbmdPbkF2YWlsYWJsZUJ1ZmZlcihh
dGxhc0lELCBzaXplLCBvZmZzZXQpOworICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMubGFzdCgp
LT5wYWludE9uQXZhaWxhYmxlQnVmZmVyKHNpemUsIGF0bGFzSUQsIG9mZnNldCwgY2xpZW50KTsK
IH0KIAogY29uc3QgZG91YmxlIFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsID0g
MC41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuaAppbmRleCBhMTU3ZWVkZmU1YzBlMGM2MTEwYmJiYjg0MDIzN2I0MmM3MDAyYjMz
Li4xNDE0ZjQzZThmYjY3NTJhYTc5ZTkwZGQzNDJmZmIxMmNjN2YzZmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaApAQCAt
MTI0LDcgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qg
dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQo
V2ViQ29yZTo6SW1hZ2UqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKik7Ci0gICAgdmlydHVhbCBQYXNzT3du
UHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gYmVnaW5Db250ZW50VXBkYXRlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzLCB1aW50
MzJfdCYgYXRsYXNJRCwgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnRUb1N1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVk
U3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiAvKiBhdGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2lu
dCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwg
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIC8vIFVwZGF0
ZUF0bGFzOjpDbGllbnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>