<?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>111919</bug_id>
          
          <creation_ts>2013-03-09 00:06:31 -0800</creation_ts>
          <short_desc>Coordinated Graphics: Unify messages related object&apos;s lifecycles into CoordinatedGraphicsState.</short_desc>
          <delta_ts>2013-06-05 04:52:59 -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>
          
          <blocked>104360</blocked>
    
    <blocked>111948</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Gwang Yoon Hwang">yoon</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dev</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>jaepark</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>851734</commentid>
    <comment_count>0</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-09 00:06:31 -0800</bug_when>
    <thetext>CoordinatedLayerTreeHostProxy has several methods, which simply passes
    these calls to CoordinatedGraphicsScene.
    
    This patch removes methods in CoordinatedLayerTreeHostProxy just for
    message chaining. Instead of that, messages for creation/deletion of objects
    (Layers, CustomFilters, UpdateAtlas, and ImageBacking) are unified into
    CommitCoordinatedGraphicsState.
    
    And this patch also removes codes for WebCoordinatedSurface in
    CoordinatedLayerTreeHost, except for a factory method.
    CoordinatedGraphicsArgumentCoders [en|de]codes CoordinatedSurface itself
    using WebCoordinatedSurface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851745</commentid>
    <comment_count>1</comment_count>
      <attachid>192339</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-09 00:49:27 -0800</bug_when>
    <thetext>Created attachment 192339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851748</commentid>
    <comment_count>2</comment_count>
      <attachid>192339</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-09 01:06:37 -0800</bug_when>
    <thetext>Comment on attachment 192339
Patch

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

This patch combines too many changes, though I support each of these changes individually.

&gt; Source/WebKit2/ChangeLog:11
&gt; +        This patch removes codes for WebCoordinatedSurface in
&gt; +        CoordinatedLayerTreeHost, except for a factory method.
&gt; +        Now, CoordinatedGraphicsArgumentCoders [en|de]codes CoordinatedSurface itself
&gt; +        using WebCoordinatedSurface.

Does this really need to be part of this patch?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:134
&gt; -    if (m_coordinator) {
&gt; +    if (m_client) {

Let&apos;s review this rename separately. I think it&apos;s ambiguous because CoordinatedGraphicsLayer already has a GraphicsLayerClient.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:276
&gt; +void CoordinatedGraphicsScene::syncCustomFilterPrograms(const CoordinatedGraphicsState&amp; state)

We really need to rename all those sync functions to flush... but that can be done separately.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:597
&gt; -void CoordinatedGraphicsScene::clearImageBackingContents(CoordinatedImageBackingID imageID)
&gt; +void CoordinatedGraphicsScene::clearImageBacking(CoordinatedImageBackingID imageID)

I prefer the old name, we clear the contents and not the reference.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.h:42
&gt; -    class Coordinator {
&gt; +    class Client {

This rename is ok.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:33
&gt; -UpdateAtlas::UpdateAtlas(UpdateAtlasClient* client, int dimension, CoordinatedSurface::Flags flags)
&gt; +UpdateAtlas::UpdateAtlas(Client* client, int dimension, CoordinatedSurface::Flags flags)

Ditto

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:1087
&gt; +#if ENABLE(CSS_SHADERS)
&gt; +    encoder &lt;&lt; static_cast&lt;uint64_t&gt;(state.customFiltersToCreate.size());
&gt; +    for (size_t i = 0; i &lt; state.customFiltersToCreate.size(); ++i) {
&gt; +        encoder &lt;&lt; state.customFiltersToCreate[i].first;
&gt; +        encoder &lt;&lt; state.customFiltersToCreate[i].second;
&gt;      }
&gt; +    encoder &lt;&lt; state.customFiltersToRemove;
&gt; +#endif

Have you run composited CSS shader tests to make sure they don&apos;t break?

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:140
&gt; +    void resetPendingStateChanges();

I would call this clear instead of reset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851836</commentid>
    <comment_count>3</comment_count>
      <attachid>192355</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-09 15:30:34 -0800</bug_when>
    <thetext>Created attachment 192355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851837</commentid>
    <comment_count>4</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-09 15:38:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 192339 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192339&amp;action=review
&gt; 
&gt; This patch combines too many changes, though I support each of these changes individually.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:11
&gt; &gt; +        This patch removes codes for WebCoordinatedSurface in
&gt; &gt; +        CoordinatedLayerTreeHost, except for a factory method.
&gt; &gt; +        Now, CoordinatedGraphicsArgumentCoders [en|de]codes CoordinatedSurface itself
&gt; &gt; +        using WebCoordinatedSurface.
&gt; 
&gt; Does this really need to be part of this patch?
&gt; 

Yes, because this patch makes CoordinatedGraphicsState to handle CoordinatedSurface, WebCoordinatedSurface is hidden from CoordinatedLayerTreeHost[Proxy]. 

&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:134
&gt; &gt; -    if (m_coordinator) {
&gt; &gt; +    if (m_client) {
&gt; 
&gt; Let&apos;s review this rename separately. I think it&apos;s ambiguous because CoordinatedGraphicsLayer already has a GraphicsLayerClient.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:276
&gt; &gt; +void CoordinatedGraphicsScene::syncCustomFilterPrograms(const CoordinatedGraphicsState&amp; state)
&gt; 
&gt; We really need to rename all those sync functions to flush... but that can be done separately.
&gt; 
I see.
Let&apos;s find out better names for that.

&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:597
&gt; &gt; -void CoordinatedGraphicsScene::clearImageBackingContents(CoordinatedImageBackingID imageID)
&gt; &gt; +void CoordinatedGraphicsScene::clearImageBacking(CoordinatedImageBackingID imageID)
&gt; 
&gt; I prefer the old name, we clear the contents and not the reference.
&gt; 
I agree. Good point. Changed.


&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:1087
&gt; &gt; +#if ENABLE(CSS_SHADERS)
&gt; &gt; +    encoder &lt;&lt; static_cast&lt;uint64_t&gt;(state.customFiltersToCreate.size());
&gt; &gt; +    for (size_t i = 0; i &lt; state.customFiltersToCreate.size(); ++i) {
&gt; &gt; +        encoder &lt;&lt; state.customFiltersToCreate[i].first;
&gt; &gt; +        encoder &lt;&lt; state.customFiltersToCreate[i].second;
&gt; &gt;      }
&gt; &gt; +    encoder &lt;&lt; state.customFiltersToRemove;
&gt; &gt; +#endif
&gt; 
&gt; Have you run composited CSS shader tests to make sure they don&apos;t break?

Yes, there was no regression in css3/filters tests.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:140
&gt; &gt; +    void resetPendingStateChanges();
&gt; 
&gt; I would call this clear instead of reset.
Good naming. I changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851908</commentid>
    <comment_count>5</comment_count>
      <attachid>192355</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-10 08:46:03 -0700</bug_when>
    <thetext>Comment on attachment 192355
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.h:77
&gt; -    Coordinator* m_coordinator;
&gt; +    Client* m_client;

These renames are OK but let&apos;s do them in a different patch.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:33
&gt; -UpdateAtlas::UpdateAtlas(UpdateAtlasClient* client, int dimension, CoordinatedSurface::Flags flags)
&gt; +UpdateAtlas::UpdateAtlas(Client* client, int dimension, CoordinatedSurface::Flags flags)

Ditto. OK to do both renames in the same patch, but not in the same patch as the state unification, as it makes commit history harder to read.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:641
&gt; -bool CoordinatedLayerTreeHost::createUpdateAtlas(uint32_t atlasID, PassRefPtr&lt;CoordinatedSurface&gt; coordinatedSurface)
&gt; +void CoordinatedLayerTreeHost::createUpdateAtlas(uint32_t atlasID, PassRefPtr&lt;CoordinatedSurface&gt; surface)
&gt;  {
&gt; -    WebCoordinatedSurface* webCoordinatedSurface = static_cast&lt;WebCoordinatedSurface*&gt;(coordinatedSurface.get());
&gt; -    WebCoordinatedSurface::Handle handle;
&gt; -    if (!webCoordinatedSurface-&gt;createHandle(handle))
&gt; -        return false;
&gt; -    m_webPage-&gt;send(Messages::CoordinatedLayerTreeHostProxy::CreateUpdateAtlas(atlasID, handle));
&gt; -    return true;
&gt; +    m_state.updateAtlasesToCreate.append(std::make_pair(atlasID, surface));

This feels like a change in behavior that belongs in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851994</commentid>
    <comment_count>6</comment_count>
      <attachid>192391</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-10 16:44:16 -0700</bug_when>
    <thetext>Created attachment 192391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851997</commentid>
    <comment_count>7</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-10 16:59:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 192355 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192355&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.h:77
&gt; &gt; -    Coordinator* m_coordinator;
&gt; &gt; +    Client* m_client;
&gt; 
&gt; These renames are OK but let&apos;s do them in a different patch.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/UpdateAtlas.cpp:33
&gt; &gt; -UpdateAtlas::UpdateAtlas(UpdateAtlasClient* client, int dimension, CoordinatedSurface::Flags flags)
&gt; &gt; +UpdateAtlas::UpdateAtlas(Client* client, int dimension, CoordinatedSurface::Flags flags)
&gt; 
&gt; Ditto. OK to do both renames in the same patch, but not in the same patch as the state unification, as it makes commit history harder to read.
&gt; 

I got it. I&apos;m sorry i&apos;ve missed your previous comment.
I made separate refactoring bug for that
https://bugs.webkit.org/show_bug.cgi?id=111948


&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:641
&gt; &gt; -bool CoordinatedLayerTreeHost::createUpdateAtlas(uint32_t atlasID, PassRefPtr&lt;CoordinatedSurface&gt; coordinatedSurface)
&gt; &gt; +void CoordinatedLayerTreeHost::createUpdateAtlas(uint32_t atlasID, PassRefPtr&lt;CoordinatedSurface&gt; surface)
&gt; &gt;  {
&gt; &gt; -    WebCoordinatedSurface* webCoordinatedSurface = static_cast&lt;WebCoordinatedSurface*&gt;(coordinatedSurface.get());
&gt; &gt; -    WebCoordinatedSurface::Handle handle;
&gt; &gt; -    if (!webCoordinatedSurface-&gt;createHandle(handle))
&gt; &gt; -        return false;
&gt; &gt; -    m_webPage-&gt;send(Messages::CoordinatedLayerTreeHostProxy::CreateUpdateAtlas(atlasID, handle));
&gt; &gt; -    return true;
&gt; &gt; +    m_state.updateAtlasesToCreate.append(std::make_pair(atlasID, surface));
&gt; 
&gt; This feels like a change in behavior that belongs in a different patch.

This is needed in this patch. Because this patch delays encoding of CoordinatedSurface message until flush timing, we cannot know whether it is success in this timing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852072</commentid>
    <comment_count>8</comment_count>
      <attachid>192391</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-10 23:57:55 -0700</bug_when>
    <thetext>Comment on attachment 192391
Patch

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

OK, this looks good to me. Please ask a WK2 owner for sign off.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:443
&gt; +    // If a layer gets created and deleted in the same cycle, we can simply remove it from layersToCreate.

This is clear from the code, you don&apos;t need this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852080</commentid>
    <comment_count>9</comment_count>
      <attachid>192412</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-11 00:17:37 -0700</bug_when>
    <thetext>Created attachment 192412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852082</commentid>
    <comment_count>10</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-11 00:19:24 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 192391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192391&amp;action=review
&gt; 
&gt; OK, this looks good to me. Please ask a WK2 owner for sign off.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:443
&gt; &gt; +    // If a layer gets created and deleted in the same cycle, we can simply remove it from layersToCreate.
&gt; 
&gt; This is clear from the code, you don&apos;t need this comment.

Comment has been removed.
Thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852879</commentid>
    <comment_count>11</comment_count>
      <attachid>192595</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-11 16:51:52 -0700</bug_when>
    <thetext>Created attachment 192595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853333</commentid>
    <comment_count>12</comment_count>
      <attachid>192595</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-12 04:28:56 -0700</bug_when>
    <thetext>Comment on attachment 192595
Patch

Attachment 192595 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17041239

New failing tests:
editing/selection/selection-modify-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855699</commentid>
    <comment_count>13</comment_count>
      <attachid>193233</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-03-14 22:30:32 -0700</bug_when>
    <thetext>Created attachment 193233
Patch

Rebased after r145871</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897213</commentid>
    <comment_count>14</comment_count>
      <attachid>203777</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-06-05 02:56:48 -0700</bug_when>
    <thetext>Created attachment 203777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897217</commentid>
    <comment_count>15</comment_count>
      <attachid>203777</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-06-05 03:02:22 -0700</bug_when>
    <thetext>Comment on attachment 203777
Patch

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

Great! but has a couple of unrelated changes

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:118
&gt; -    // If sending the message fails, try again in the next update.
&gt; -    bool success = m_coordinator-&gt;updateImageBacking(id(), m_surface);
&gt; -    m_isDirty = !success;
&gt; +    m_coordinator-&gt;updateImageBacking(id(), m_surface);
&gt; +    m_isDirty = false;

This seems unrelated

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:402
&gt; +    size_t index = m_state.layersToCreate.find(layer-&gt;id());
&gt; +    if (index != notFound) {
&gt; +        m_state.layersToCreate.remove(index);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    m_state.layersToRemove.append(layer-&gt;id());

This seems unrelated as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897228</commentid>
    <comment_count>16</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2013-06-05 03:22:15 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 203777 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203777&amp;action=review
&gt; 
&gt; Great! but has a couple of unrelated changes
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:118
&gt; &gt; -    // If sending the message fails, try again in the next update.
&gt; &gt; -    bool success = m_coordinator-&gt;updateImageBacking(id(), m_surface);
&gt; &gt; -    m_isDirty = !success;
&gt; &gt; +    m_coordinator-&gt;updateImageBacking(id(), m_surface);
&gt; &gt; +    m_isDirty = false;
&gt; 
&gt; This seems unrelated
&gt;
Because this patch does defers creating a handle of WebCoordinatedSurface to sync time, we cannot check whether it is failed, so fallback logic was removed.

I think cleaning m_isDirty is necessary because it indicates ImageBacking posts its update.
 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:402
&gt; &gt; +    size_t index = m_state.layersToCreate.find(layer-&gt;id());
&gt; &gt; +    if (index != notFound) {
&gt; &gt; +        m_state.layersToCreate.remove(index);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    m_state.layersToRemove.append(layer-&gt;id());
&gt; 
&gt; This seems unrelated as well

I think it makes sense, because it is a reused logic from 
 Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897248</commentid>
    <comment_count>17</comment_count>
      <attachid>203777</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-06-05 04:01:12 -0700</bug_when>
    <thetext>Comment on attachment 203777
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp:118
&gt;&gt;&gt; +    m_isDirty = false;
&gt;&gt; 
&gt;&gt; This seems unrelated
&gt; 
&gt; Because this patch does defers creating a handle of WebCoordinatedSurface to sync time, we cannot check whether it is failed, so fallback logic was removed.
&gt; 
&gt; I think cleaning m_isDirty is necessary because it indicates ImageBacking posts its update.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897290</commentid>
    <comment_count>18</comment_count>
      <attachid>203777</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-05 04:52:55 -0700</bug_when>
    <thetext>Comment on attachment 203777
Patch

Clearing flags on attachment: 203777

Committed r151212: &lt;http://trac.webkit.org/changeset/151212&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>897291</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-05 04:52:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192339</attachid>
            <date>2013-03-09 00:49:27 -0800</date>
            <delta_ts>2013-03-09 15:30:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130309174531.patch</filename>
            <type>text/plain</type>
            <size>57584</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3OTQ1YzI4NmVlODI1
ODM3ZmI2ODVlOTdkNmQ4ZTBkNzAwZmViYy4uNmVjN2VmZDliZTE5OWZiYmJiNDA0YzFmOTcwM2Ji
ZDBjN2QyNzJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp+
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpyZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YmVnaW5Db250ZW50VXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRl
VGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnVwZGF0
ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZW1v
dmVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNV
cGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6c3luY0ltYWdlQmFja2luZ3MpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpjbGVhckltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoK
KyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oOgor
ICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnJlbW92
ZUhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y2xlYXJDb250
ZW50c1RpbWVyRmlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oOgorICAgICAgICAoQ2xpZW50KToKKyAg
ICAgICAgKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2xpZW50KToKKyAgICAgICAgKFVwZGF0ZUF0bGFzKToKKwogMjAxMy0wMy0wOCAg
SnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ1NT
IEdyaWQgTGF5b3V0XSBSZXNvbHZlIGdyaWQte2VuZHxhZnRlcn0gaW50ZWdlciBhZ2FpbnN0IHRo
ZSBlbmR8YWZ0ZXIgZWRnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkMWFlZmE0ODNjNzFjZTU2NmFkZWQyOGQ0
Njk1OWZkNzk5NzE5ZmMuLmVhMWJhNzRiNWZhZGJkNDJkYmVhOGM5YmNiNjEzMDRkZDkwNjAzYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMy0wMy0wOCAgR3dhbmcgWW9vbiBId2Fu
ZyAgPHJ5dW1pZWxAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3M6IFVuaWZ5IG1lc3NhZ2VzIHJlbGF0ZWQgb2JqZWN0J3MgbGlmZWN5Y2xlcyBpbnRvIENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMTkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBjb2RlcyBmb3IgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlIGluCisgICAgICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCwgZXhjZXB0IGZvciBh
IGZhY3RvcnkgbWV0aG9kLgorICAgICAgICBOb3csIENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVu
dENvZGVycyBbZW58ZGVdY29kZXMgQ29vcmRpbmF0ZWRTdXJmYWNlIGl0c2VsZgorICAgICAgICB1
c2luZyBXZWJDb29yZGluYXRlZFN1cmZhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3Zl
cmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChD
b3JlSVBDOjplbmNvZGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoQ29yZUlQQyk6Cisg
ICAgICAgIChDb3JlSVBDOjpkZWNvZGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAgICAoQ29y
ZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpyZXNldFBlbmRpbmdTdGF0ZUNoYW5nZXMpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNoZWNrQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3hpZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJl
bW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlSW1hZ2VCYWNraW5nKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRhdGVJbWFnZUJhY2tpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNsZWFySW1hZ2VCYWNr
aW5nKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVH
cmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGVVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6cmVtb3ZlVXBkYXRlQXRsYXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAg
ICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKwogMjAxMy0wMy0wOCAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE0NTI1NCwgcjE0NTI2NCwgYW5kIHIxNDUyODguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGJhYWY3
NDVkMmVkYTA0ZGNiNmE5NjdhODViY2FkYjc3NTMzNjlmZmMuLjliMWU3ODFkMzQ3YjI4NDJlYTIz
NDVmNTRiYzExZDRlYWVmNDU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ckNsaWVudCogY2xpZW50KQogICAgICwgbV9pc1ZhbGlkQ2FudmFzKGZhbHNlKQogICAgICwgbV9w
ZW5kaW5nQ2FudmFzT3BlcmF0aW9uKE5vbmUpCiAjZW5kaWYKLSAgICAsIG1fY29vcmRpbmF0b3Io
MCkKKyAgICAsIG1fY2xpZW50KDApCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigw
KQogICAgICwgbV9jYW52YXNQbGF0Zm9ybUxheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0
ZWRUaW1lcih0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVk
VGltZXJGaXJlZCkKQEAgLTEzMSw5ICsxMzEsOSBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAK
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6fkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcigpCiB7
Ci0gICAgaWYgKG1fY29vcmRpbmF0b3IpIHsKKyAgICBpZiAobV9jbGllbnQpIHsKICAgICAgICAg
cHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgICAgIG1fY29vcmRpbmF0b3ItPmRldGFjaExheWVy
KHRoaXMpOworICAgICAgICBtX2NsaWVudC0+ZGV0YWNoTGF5ZXIodGhpcyk7CiAgICAgfQogICAg
IEFTU0VSVCghbV9jb29yZGluYXRlZEltYWdlQmFja2luZyAmJiAhbV9tYWluQmFja2luZ1N0b3Jl
KTsKICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCkKIAog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtX2Nvb3JkaW5hdG9yLT5pc0ZsdXNoaW5n
TGF5ZXJDaGFuZ2VzKCkpIHsKKyAgICBpZiAoIW1fY2xpZW50LT5pc0ZsdXNoaW5nTGF5ZXJDaGFu
Z2VzKCkpIHsKICAgICAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPm5v
dGlmeUZsdXNoUmVxdWlyZWQodGhpcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTYxNCw3ICs2MTQs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0ltYWdlQmFja2luZygpCiAg
ICAgICAgICAgICByZWxlYXNlSW1hZ2VCYWNraW5nSWZOZWVkZWQoKTsKIAogICAgICAgICBpZiAo
IW1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcpIHsKLSAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcgPSBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVJbWFnZUJhY2tpbmdJZk5lZWRlZCht
X2NvbXBvc2l0ZWRJbWFnZS5nZXQoKSk7CisgICAgICAgICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nID0gbV9jbGllbnQtPmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKG1fY29tcG9zaXRl
ZEltYWdlLmdldCgpKTsKICAgICAgICAgICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmctPmFk
ZEhvc3QodGhpcyk7CiAgICAgICAgICAgICBtX2xheWVyU3RhdGUuaW1hZ2VJRCA9IG1fY29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmctPmlkKCk7CiAgICAgICAgIH0KQEAgLTczNyw3ICs3MzcsNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlQ2FudmFzSWZOZWVkZWQoKQogCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhp
c0xheWVyT25seSgpCiB7Ci0gICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXll
ckNoYW5nZXMoKSk7CisgICAgQVNTRVJUKG1fY2xpZW50LT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2Vz
KCkpOwogCiAgICAgLy8gV2hlbiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGFuaW1hdGlvbiwgd2UgbmVl
ZCB0byB1cGRhdGUgdmlzaWJsZSByZWN0IGV2ZXJ5IGZyYW1lIHRvIGFkanVzdCB0aGUgdmlzaWJs
ZSByZWN0IG9mIGEgYmFja2luZyBzdG9yZS4KICAgICBib29sIGhhc0FjdGl2ZVRyYW5zZm9ybUFu
aW1hdGlvbiA9IHNlbGZPckFuY2VzdG9ySGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKCk7CkBA
IC03NjAsNyArNzYwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIHN5bmNDYW52YXMoKTsKICNlbmRp
ZgogCi0gICAgbV9jb29yZGluYXRvci0+c3luY0xheWVyU3RhdGUobV9pZCwgbV9sYXllclN0YXRl
KTsKKyAgICBtX2NsaWVudC0+c3luY0xheWVyU3RhdGUobV9pZCwgbV9sYXllclN0YXRlKTsKICAg
ICByZXNldExheWVyU3RhdGUoKTsKIAogICAgIC8vIE9ubHkgdW5zZXQgbV9tb3ZpbmdWaXNpYmxl
UmVjdCBhZnRlciB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHZpc2libGUgcmVjdCBhZnRlciB0aGUgYW5p
bWF0aW9uIHN0b3BwZWQuCkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnJlbGVhc2VJbWFnZUJhY2tpbmdJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2Nvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9jb29y
ZGluYXRvcik7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBtX2Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLT5yZW1vdmVIb3N0KHRoaXMpOwogICAgIG1fY29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcu
Y2xlYXIoKTsKICAgICBtX2xheWVyU3RhdGUuaW1hZ2VJRCA9IEludmFsaWRDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEOwpAQCAtOTAwLDcgKzkwMCw3IEBAIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjp0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0KCkKICAgICAvLyBUaGUgcmVz
dWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVjdCBpcyB0aGUg
Ym91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBzcHJlYWQgZnVy
dGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBtb3JlIGFtcGxp
ZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KICAgICBBU1NFUlQobV9jYWNoZWRJ
bnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkp
OwotICAgIEZsb2F0UmVjdCByZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRC
b3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250
ZW50c1JlY3QoKSkpOworICAgIEZsb2F0UmVjdCByZWN0ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNm
b3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1fY2xpZW50LT52aXNp
YmxlQ29udGVudHNSZWN0KCkpKTsKICAgICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZp
bml0ZShyZWN0LCB0aWxlZEJhY2tpbmdTdG9yZUNvbnRlbnRzUmVjdCgpKTsKICAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChyZWN0KTsKIH0KQEAgLTkxMiwxNSArOTEyLDE1IEBAIENvbG9yIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdAogCiBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdWludDMyX3Qm
IGF0bGFzLCBJbnRQb2ludCYgb2Zmc2V0KQogewotICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yKTsK
LSAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKLSAg
ICByZXR1cm4gbV9jb29yZGluYXRvci0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRz
T3BhcXVlKCkgPyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZh
Y2U6OlN1cHBvcnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOworICAgIEFTU0VSVChtX2NsaWVudCk7
CisgICAgQVNTRVJUKG1fY2xpZW50LT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkpOworICAgIHJl
dHVybiBtX2NsaWVudC0+YmVnaW5Db250ZW50VXBkYXRlKHNpemUsIGNvbnRlbnRzT3BhcXVlKCkg
PyBDb29yZGluYXRlZFN1cmZhY2U6Ok5vRmxhZ3MgOiBDb29yZGluYXRlZFN1cmZhY2U6OlN1cHBv
cnRzQWxwaGEsIGF0bGFzLCBvZmZzZXQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Y3JlYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbmZv
JiB1cGRhdGVJbmZvLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCkKIHsKLSAgICBBU1NFUlQobV9j
b29yZGluYXRvcik7Ci0gICAgQVNTRVJUKG1fY29vcmRpbmF0b3ItPmlzRmx1c2hpbmdMYXllckNo
YW5nZXMoKSk7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICBBU1NFUlQobV9jbGllbnQtPmlz
Rmx1c2hpbmdMYXllckNoYW5nZXMoKSk7CiAKICAgICBUaWxlQ3JlYXRpb25JbmZvIGNyZWF0aW9u
SW5mbzsKICAgICBjcmVhdGlvbkluZm8udGlsZUlEID0gdGlsZUlEOwpAQCAtOTMyLDggKzkzMiw4
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVUaWxlKHVpbnQzMl90IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8m
IHVwZGF0ZUluZm8sIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0KQogewotICAgIEFTU0VSVChtX2Nv
b3JkaW5hdG9yKTsKLSAgICBBU1NFUlQobV9jb29yZGluYXRvci0+aXNGbHVzaGluZ0xheWVyQ2hh
bmdlcygpKTsKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIEFTU0VSVChtX2NsaWVudC0+aXNG
bHVzaGluZ0xheWVyQ2hhbmdlcygpKTsKIAogICAgIFRpbGVVcGRhdGVJbmZvIHRpbGVVcGRhdGVJ
bmZvOwogICAgIHRpbGVVcGRhdGVJbmZvLnRpbGVJRCA9IHRpbGVJRDsKQEAgLTk0NCw4ICs5NDQs
OCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6dXBkYXRlVGlsZSh1aW50MzJfdCB0
aWxlSUQsIGNvbnN0IFN1cmZhY2VVcGRhdGVJbgogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6cmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpCiB7Ci0gICAgQVNTRVJUKG1fY29vcmRp
bmF0b3IpOwotICAgIEFTU0VSVChtX2Nvb3JkaW5hdG9yLT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2Vz
KCkgfHwgbV9pc1B1cmdpbmcpOworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgQVNTRVJUKG1f
Y2xpZW50LT5pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKCkgfHwgbV9pc1B1cmdpbmcpOwogICAgIG1f
bGF5ZXJTdGF0ZS50aWxlc1RvUmVtb3ZlLmFwcGVuZCh0aWxlSUQpOwogfQogCkBAIC05OTQsOSAr
OTk0LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnB1cmdlQmFja2luZ1N0b3Jl
cygpCiAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29vcmRpbmF0b3IoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50
KiBjb29yZGluYXRvcikKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDbGllbnQo
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgbV9jb29yZGlu
YXRvciA9IGNvb3JkaW5hdG9yOworICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQogCiB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CmluZGV4IGEwNzA4ZGM1NGExM2NmMzQ1OGVlYmU2NGY4MzBlMjBkYmYxZDVkZTIuLmI3MjQ4NGFj
YzgxNTBhOTg2OGMxNDg4MjY2NTdjM2NiMjhmNjZlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTE0MSw3ICsxNDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBiZWdpbkNv
bnRlbnRVcGRhdGUoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90JiBhdGxhc0lELCBJbnRQb2ludCYp
IE9WRVJSSURFOwogCi0gICAgdm9pZCBzZXRDb29yZGluYXRvcihDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJDbGllbnQqKTsKKyAgICB2b2lkIHNldENsaWVudChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJDbGllbnQqKTsKIAogICAgIHZvaWQgc2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsK
ICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9wZW5kaW5nQ2FudmFzT3BlcmF0aW9uIDogMzsKICNlbmRpZgog
Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOworICAg
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jbGllbnQ7CiAgICAgT3duUHRyPFRp
bGVkQmFja2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CiAgICAgT3duUHRyPFRpbGVkQmFj
a2luZ1N0b3JlPiBtX3ByZXZpb3VzQmFja2luZ1N0b3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGFlMjQ1ZTM2
ZmM5NjQ5ODI1NTFiZTRlYzVmYjE4ZmJhMDc4YjFiNmYuLjIzMmE0OTk5ZTZjYjc1MjM3MGFiNWU4
Njg1NWQ5NWQ1MjBhNWNiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0yNzMsNiArMjczLDE1IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckZpbHRlcnNJZk5lZWRlZChHcmFwaGljc0xh
eWVyKiBsYXllciwgY29uCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3ZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5zaXplKCk7ICsraSkKKyAgICAgICAg
Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0u
Zmlyc3QsIHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZVtpXS5zZWNvbmQpOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuc2l6ZSgpOyAr
K2kpCisgICAgICAgIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oc3RhdGUuY3VzdG9tRmlsdGVy
c1RvUmVtb3ZlW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmluamVj
dENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsg
KytpKSB7CkBAIC01MjUsNiArNTM0LDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Ojp1cGRhdGVUaWxlc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBjb25zdCBDCiAgICAg
fQogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1VwZGF0ZUF0bGFzZXMo
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5zaXplKCk7ICsraSkKKyAg
ICAgICAgY3JlYXRlVXBkYXRlQXRsYXMoc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLmZp
cnN0LCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlLnNpemUoKTsgKytp
KQorICAgICAgICByZW1vdmVVcGRhdGVBdGxhcyhzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmVb
aV0pOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRs
YXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZh
Y2UpCiB7CiAgICAgQVNTRVJUKCFtX3N1cmZhY2VzLmNvbnRhaW5zKGF0bGFzSUQpKTsKQEAgLTUz
Nyw2ICs1NTUsMjEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZVVwZGF0
ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCiAgICAgbV9zdXJmYWNlcy5yZW1vdmUoYXRsYXNJRCk7
CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jSW1hZ2VCYWNraW5ncyhj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQoreworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNy
ZWF0ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFnZXNUb0NyZWF0ZVtpXSk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvUmVtb3ZlLnNpemUoKTsgKytpKQorICAgICAg
ICByZW1vdmVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2VzVG9SZW1vdmVbaV0pOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5zaXplKCk7ICsraSkKKyAg
ICAgICAgdXBkYXRlSW1hZ2VCYWNraW5nKHN0YXRlLmltYWdlc1RvVXBkYXRlW2ldLmZpcnN0LCBz
dGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5zZWNvbmQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGF0ZS5pbWFnZXNUb0NsZWFyLnNpemUoKTsgKytpKQorICAgICAgICBjbGVhckltYWdl
QmFja2luZyhzdGF0ZS5pbWFnZXNUb0NsZWFyW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
IGltYWdlSUQpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJ
RCkpOwpAQCAtNTYxLDcgKzU5NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1
cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnCiAgICAgbV9i
YWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmFkZChiYWNraW5nU3RvcmUpOwogfQogCi12
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6Y2xlYXJJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlEKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwog
ICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3IgaXQgPSBtX2ltYWdlQmFja2luZ3MuZmluZChp
bWFnZUlEKTsKQEAgLTYxNSwxNCArNjQ4LDIwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpjb21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYKICAg
ICAvLyBTaW5jZSB0aGUgZnJhbWUgaGFzIG5vdyBiZWVuIHJlbmRlcmVkLCB3ZSBjYW4gc2FmZWx5
IHVubG9jayB0aGUgYW5pbWF0aW9ucyB1bnRpbCB0aGUgbmV4dCBsYXlvdXQuCiAgICAgc2V0QW5p
bWF0aW9uc0xvY2tlZChmYWxzZSk7CiAKKyAgICBjcmVhdGVMYXllcnMoc3RhdGUubGF5ZXJzVG9D
cmVhdGUpOworICAgIGRlbGV0ZUxheWVycyhzdGF0ZS5sYXllcnNUb1JlbW92ZSk7CisKICAgICBp
ZiAoc3RhdGUucm9vdENvbXBvc2l0aW5nTGF5ZXIgIT0gbV9yb290TGF5ZXJJRCkKICAgICAgICAg
c2V0Um9vdExheWVySUQoc3RhdGUucm9vdENvbXBvc2l0aW5nTGF5ZXIpOwogCiAgICAgaWYgKHN0
YXRlLmJhY2tncm91bmRDb2xvciAhPSBtX2JhY2tncm91bmRDb2xvcikKICAgICAgICAgc2V0QmFj
a2dyb3VuZENvbG9yKHN0YXRlLmJhY2tncm91bmRDb2xvcik7CiAKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvVXBkYXRlLnNpemUoKTsgKytpKQotICAgICAgICB1cGRh
dGVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0uZmlyc3QsIHN0YXRlLmltYWdl
c1RvVXBkYXRlW2ldLnNlY29uZCk7CisgICAgc3luY0ltYWdlQmFja2luZ3Moc3RhdGUpOworICAg
IHN5bmNVcGRhdGVBdGxhc2VzKHN0YXRlKTsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAg
c3luY0N1c3RvbUZpbHRlclByb2dyYW1zKHN0YXRlKTsKKyNlbmRpZgogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdGF0ZS5sYXllcnNUb1VwZGF0ZS5zaXplKCk7ICsraSkKICAgICAgICAg
c2V0TGF5ZXJTdGF0ZShzdGF0ZS5sYXllcnNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUubGF5ZXJz
VG9VcGRhdGVbaV0uc2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA2OGZjNjE5ZjE0ODFhOGUzZTk0YWNlOGQzNDgw
NThkZDUyODRjNDhiLi40Yjg3MDNlMWY1Y2Q3NGU3YTQzMmMyMWZiMjAzMmI3MWIzMDQ1NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAy
MDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgzLDIzICs4NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRl
ZEdyYXBoaWNzU3RhdGUmKTsKIAotICAgIHZvaWQgY3JlYXRlTGF5ZXJzKGNvbnN0IFZlY3RvcjxD
b29yZGluYXRlZExheWVySUQ+Jik7Ci0gICAgdm9pZCBkZWxldGVMYXllcnMoY29uc3QgVmVjdG9y
PENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLQotI2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICB2
b2lkIGluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShp
bnQgaWQsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7Ci0gICAgdm9pZCByZW1vdmVD
dXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCk7Ci0jZW5kaWYKLQotICAgIHZvaWQgY3JlYXRlVXBk
YXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
KTsKLSAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpOwotICAgIHZv
aWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZv
aWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7Ci0gICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZvaWQgc2V0QW5pbWF0aW9uc0xv
Y2tlZChib29sKTsKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwog
ICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZW5hYmxlKSB7IG1fc2V0RHJhd3NCYWNr
Z3JvdW5kID0gZW5hYmxlOyB9CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
CkBAIC0xMDgsNiArOTMsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSb290
TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQpOworICAgIHZvaWQgY3JlYXRlTGF5ZXJzKGNvbnN0
IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+Jik7CisgICAgdm9pZCBkZWxldGVMYXllcnMoY29u
c3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKICAgICB2b2lkIHNldExheWVyU3RhdGUo
Q29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYp
OwogICAgIHZvaWQgc2V0TGF5ZXJDaGlsZHJlbklmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25z
dCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgdXBkYXRlVGlsZXNJ
Zk5lZWRlZChHcmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGUmKTsKQEAgLTEyNCw2ICsxMTEsMjUgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgc2V0
TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChHcmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAorICAgIHZvaWQgc3luY1VwZGF0ZUF0bGFzZXMoY29u
c3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxh
cyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOworICAg
IHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7CisKKyAgICB2b2lkIHN5
bmNJbWFnZUJhY2tpbmdzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOworICAgIHZv
aWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOworICAgIHZv
aWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdm9pZCBjbGVhckltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKTsKKyAgICB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKTsKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB2
b2lkIHN5bmNDdXN0b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmKTsKKyAgICB2b2lkIGluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIGNvbnN0OworICAgIHZvaWQgY3JlYXRlQ3VzdG9tRmls
dGVyUHJvZ3JhbShpbnQgaWQsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7CisgICAg
dm9pZCByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCk7CisjZW5kaWYKKworICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CisKICAgICBHcmFwaGljc0xheWVy
KiBsYXllckJ5SUQoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fbGF5ZXJzLmNvbnRhaW5zKGlkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKaW5kZXggNDE1MGYyNmIyYTRlZWJlMTc4NzBkM2M1
NGZlZWQwNGVhZTFkYmVmMS4uNThjYzAzNzY5MmI4OGVmZmIyZGUwM2UzY2Q2OTRmZmIzNTBmYTRi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U3RhdGUuaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb25zLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5oIgorI2VuZGlmCisKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICNp
bmNsdWRlICJHcmFwaGljc1N1cmZhY2VUb2tlbi5oIgogI2VuZGlmCkBAIC0xNzYsOCArMTgwLDIy
IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUgewogICAgIEludFNpemUgY29udGVu
dHNTaXplOwogICAgIEludFJlY3QgY292ZXJlZFJlY3Q7CiAKKyAgICBWZWN0b3I8Q29vcmRpbmF0
ZWRMYXllcklEPiBsYXllcnNUb0NyZWF0ZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5h
dGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGU+ID4gbGF5ZXJzVG9VcGRh
dGU7CisgICAgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbGF5ZXJzVG9SZW1vdmU7CisKKyAg
ICBWZWN0b3I8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRD4gaW1hZ2VzVG9DcmVhdGU7CisgICAg
VmVjdG9yPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdlc1RvUmVtb3ZlOwogICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4gPiA+IGltYWdlc1RvVXBkYXRlOworICAgIFZlY3RvcjxDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEPiBpbWFnZXNUb0NsZWFyOworCisgICAgVmVjdG9yPHN0ZDo6cGFpcjx1aW50
MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiA+ID4gdXBkYXRl
QXRsYXNlc1RvQ3JlYXRlOworICAgIFZlY3Rvcjx1aW50MzJfdCAvKiBhdGxhc0lEICovPiB1cGRh
dGVBdGxhc2VzVG9SZW1vdmU7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgVmVjdG9y
PHN0ZDo6cGFpcjx1aW50MzJfdCAvKiBGaWx0ZXJJRCAqLywgQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8+ID4gY3VzdG9tRmlsdGVyc1RvQ3JlYXRlOworICAgIFZlY3Rvcjx1aW50MzJfdD4gY3VzdG9t
RmlsdGVyc1RvUmVtb3ZlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNw
cAppbmRleCAxMjhiYWJlMjk4ZjY2Y2JjMjc2OWNmNmZmOGVhOTgyMjlkNTE1NTc3Li4xZTkwMWZk
ODg3ODk4N2VlODU3ZTY3YjE3ZjFiOGQzMDhiYzYzMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcuaCIKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
OCwxMyArMzksMTMgQEAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBDb29yZGluYXRlZEltYWdl
QmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCgKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxDb29yZGluYXRlZEltYWdlQmFja2luZ0lEPihpbWFnZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpj
cmVhdGUoQ29vcmRpbmF0b3IqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCitQYXNz
UmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb29yZGluYXRlZEltYWdlQmFja2luZzo6
Y3JlYXRlKENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKGNsaWVudCwgaW1hZ2Up
KTsKIH0KIAotQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
KENvb3JkaW5hdG9yKiBjbGllbnQsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQotICAgIDogbV9j
b29yZGluYXRvcihjbGllbnQpCitDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcoQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQorICAg
IDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9pbWFnZShpbWFnZSkKICAgICAsIG1faWQoZ2V0
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChtX2ltYWdlLmdldCgpKSkKICAgICAsIG1fY2xlYXJD
b250ZW50c1RpbWVyKHRoaXMsICZDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y2xlYXJDb250ZW50
c1RpbWVyRmlyZWQpCkBAIC01NCw3ICs1NSw3IEBAIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpD
b29yZGluYXRlZEltYWdlQmFja2luZyhDb29yZGluYXRvciogY2xpZW50LCBQYXNzUmVmUHRyCiAg
ICAgLy8gRklYTUU6IFdlIHdvdWxkIG5lZWQgdG8gZGVjb2RlIGEgc21hbGwgaW1hZ2UgZGlyZWN0
bHkgaW50byBhIEdyYXBoaWNzU3VyZmFjZS4KICAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzEw
MTQyNgogCi0gICAgbV9jb29yZGluYXRvci0+Y3JlYXRlSW1hZ2VCYWNraW5nKGlkKCkpOworICAg
IG1fY2xpZW50LT5jcmVhdGVJbWFnZUJhY2tpbmcoaWQoKSk7CiB9CiAKIENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjp+Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoKQpAQCAtNzQsNyArNzUsNyBAQCB2
b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpyZW1vdmVIb3N0KEhvc3QqIGhvc3QpCiAgICAg
bV9ob3N0cy5yZW1vdmUocG9zaXRpb24pOwogCiAgICAgaWYgKG1faG9zdHMuaXNFbXB0eSgpKQot
ICAgICAgICBtX2Nvb3JkaW5hdG9yLT5yZW1vdmVJbWFnZUJhY2tpbmcoaWQoKSk7CisgICAgICAg
IG1fY2xpZW50LT5yZW1vdmVJbWFnZUJhY2tpbmcoaWQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc6Om1hcmtEaXJ0eSgpCkBAIC0xMTMsOSArMTE0LDggQEAgdm9pZCBDb29y
ZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRlKCkKIAogICAgIG1fbmF0aXZlSW1hZ2VQdHIgPSBt
X2ltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogCi0gICAgLy8gSWYgc2VuZGlu
ZyB0aGUgbWVzc2FnZSBmYWlscywgdHJ5IGFnYWluIGluIHRoZSBuZXh0IHVwZGF0ZS4KLSAgICBi
b29sIHN1Y2Nlc3MgPSBtX2Nvb3JkaW5hdG9yLT51cGRhdGVJbWFnZUJhY2tpbmcoaWQoKSwgbV9z
dXJmYWNlKTsKLSAgICBtX2lzRGlydHkgPSAhc3VjY2VzczsKKyAgICBtX2NsaWVudC0+dXBkYXRl
SW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFjZSk7CisgICAgbV9pc0RpcnR5ID0gZmFsc2U7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQo
KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0
ZVZpc2liaWxpdHlJZk5lZWRlZChib29sJiBjaGFuZ2VkVG9WaXNpYmxlKQogCiB2b2lkIENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nOjpjbGVhckNvbnRlbnRzVGltZXJGaXJlZChUaW1lcjxDb29yZGlu
YXRlZEltYWdlQmFja2luZz4qKQogewotICAgIG1fY29vcmRpbmF0b3ItPmNsZWFySW1hZ2VCYWNr
aW5nQ29udGVudHMoaWQoKSk7CisgICAgbV9jbGllbnQtPmNsZWFySW1hZ2VCYWNraW5nKGlkKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCmluZGV4IDM2OWUyMzlmOWIwYTI5OGNkOWZj
Y2U0MjNkYTRkMmYxZTVhMjFhNzYuLjc2N2VjZDFiMDQzNDg4ZmQyOGViM2Q3ZTgyMzEyMGQ3NDFi
MjdlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdl
QmFja2luZy5oCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb29yZGluYXRlZEltYWdlQmFja2luZyA6IHB1YmxpYyBSZWZDb3VudGVkPENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nPiB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgQ29vcmRpbmF0b3IgeworICAgIGNs
YXNzIENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKLSAgICAgICAgdmlydHVh
bCBib29sIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNz
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNs
ZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4p
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICB9OwogCiAgICAgY2xhc3MgSG9zdCB7CkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGltYWdlQmFja2luZ1Zpc2li
bGUoKSA9IDA7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nPiBjcmVhdGUoQ29vcmRpbmF0b3IqLCBQYXNzUmVmUHRyPEltYWdlPik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZShDbGllbnQq
LCBQYXNzUmVmUHRyPEltYWdlPik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmcoKTsKIAogICAgIHN0YXRpYyBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGdldENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQoSW1hZ2UqKTsKQEAgLTY4LDEzICs2OCwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2lu
ZyhDb29yZGluYXRvciosIFBhc3NSZWZQdHI8SW1hZ2U+KTsKKyAgICBDb29yZGluYXRlZEltYWdl
QmFja2luZyhDbGllbnQqLCBQYXNzUmVmUHRyPEltYWdlPik7CiAKICAgICB2b2lkIHJlbGVhc2VT
dXJmYWNlSWZOZWVkZWQoKTsKICAgICB2b2lkIHVwZGF0ZVZpc2liaWxpdHlJZk5lZWRlZChib29s
JiBjaGFuZ2VkVG9WaXNpYmxlKTsKICAgICB2b2lkIGNsZWFyQ29udGVudHNUaW1lckZpcmVkKFRp
bWVyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiopOwogCi0gICAgQ29vcmRpbmF0b3IqIG1fY29v
cmRpbmF0b3I7CisgICAgQ2xpZW50KiBtX2NsaWVudDsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1h
Z2U7CiAgICAgTmF0aXZlSW1hZ2VQdHIgbV9uYXRpdmVJbWFnZVB0cjsKICAgICBDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNw
cAppbmRleCAzNjRmMDY4NzEwODJiNThmY2JkODNhMGVmMzE0NTBiZTQ4MDA4NDhiLi5iZTE4YTY0
MTE3MDA1ZDE5MmMzMjA1NzZkYmU5ZjNjMGJmOWZkYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTIzLDEzICsyMywxNCBAQAogCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVXBkYXRlQXRs
YXM6OlVwZGF0ZUF0bGFzKFVwZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24s
IENvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCitVcGRhdGVBdGxhczo6VXBkYXRlQXRs
YXMoQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIENvb3JkaW5hdGVkU3VyZmFjZTo6Rmxh
Z3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2luYWN0aXZpdHlJblNl
Y29uZHMoMCkKIHsKQEAgLTM4LDkgKzM5LDcgQEAgVXBkYXRlQXRsYXM6OlVwZGF0ZUF0bGFzKFVw
ZGF0ZUF0bGFzQ2xpZW50KiBjbGllbnQsIGludCBkaW1lbnNpb24sIENvb3JkaW5hdGVkU3UKICAg
ICBJbnRTaXplIHNpemUgPSBuZXh0UG93ZXJPZlR3byhJbnRTaXplKGRpbWVuc2lvbiwgZGltZW5z
aW9uKSk7CiAgICAgbV9zdXJmYWNlID0gQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoc2l6ZSwg
ZmxhZ3MpOwogCi0gICAgLy8gRklYTUU6IEN1cnJlbnRseSwgaWYgc2VuZGluZyB0aGUgbWVzc2Fn
ZSBmYWlscywgVXBkYXRlQXRsYXMgZ2l2ZXMgdXAgZHJhd2luZyBhbnl0aGluZyBpbXBsaWNpdGx5
LgotICAgIGlmICghbV9jbGllbnQtPmNyZWF0ZVVwZGF0ZUF0bGFzKG1fSUQsIG1fc3VyZmFjZSkp
Ci0gICAgICAgIG1fc3VyZmFjZS5jbGVhcigpOworICAgIG1fY2xpZW50LT5jcmVhdGVVcGRhdGVB
dGxhcyhtX0lELCBtX3N1cmZhY2UpOwogfQogCiBVcGRhdGVBdGxhczo6flVwZGF0ZUF0bGFzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9VcGRhdGVBdGxhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKaW5kZXggNDhhNmJmODQ0YTQ5MGY3ZmQy
YzM5YTA0MjRlMzMwZmRkYjE2ZDc4Yi4uNDFlYjM4ZTM5MmFiMzE3NmIxNmViZGU0ZWUyMGMzNjNk
ZGYwMTNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmgKQEAgLTMxLDE2ICsz
MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbnRQb2ludDsKIAotY2xhc3MgVXBkYXRlQXRsYXNDbGllbnQgewotcHVibGljOgotICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRy
PENvb3JkaW5hdGVkU3VyZmFjZT4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRl
QXRsYXModWludDMyX3QgYXRsYXNJRCkgPSAwOwotfTsKLQogY2xhc3MgVXBkYXRlQXRsYXMgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0ZUF0bGFzKTsKIHB1YmxpYzoKLSAgICBVcGRh
dGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCosIGludCBkaW1lbnNpb24sIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MpOworICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgLyogaWQgKi8sIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
VXBkYXRlQXRsYXModWludDMyX3QgLyogaWQgKi8pID0gMDsKKyAgICB9OworCisgICAgVXBkYXRl
QXRsYXMoQ2xpZW50KiwgaW50IGRpbWVuc2lvbiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7
CiAgICAgflVwZGF0ZUF0bGFzKCk7CiAKICAgICBpbmxpbmUgSW50U2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9zdXJmYWNlLT5zaXplKCk7IH0KQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGJ1aWxkTGF5b3V0SWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKLSAgICBVcGRhdGVB
dGxhc0NsaWVudCogbV9jbGllbnQ7CisgICAgQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8
R2VuZXJhbEFyZWFBbGxvY2F0b3I+IG1fYXJlYUFsbG9jYXRvcjsKICAgICBSZWZQdHI8Q29vcmRp
bmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgZG91YmxlIG1faW5hY3Rpdml0eUluU2Vjb25k
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGM3OGNiMWIwNWViMzdjODhmOGFmMmExMzY2ZTU1NWY5NDA5MzdmOWQuLmQ5
YjVhODNhNjAyNTQyMjFkMWFiMDMzOGQ5NTQ3ODQ1ZWRmZTlmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAxMCw2
ICsxMDEwLDQyIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUaWxlQ3JlYXRpb25JbmZvPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgVGlsZUNyZWF0CiAgICAgcmV0dXJuIFNpbXBsZUFy
Z3VtZW50Q29kZXI8VGlsZUNyZWF0aW9uSW5mbz46OmRlY29kZShkZWNvZGVyLCB1cGRhdGVJbmZv
KTsKIH0KIAorc3RhdGljIHZvaWQgZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mIHN1cmZhY2Up
Cit7CisgICAgYm9vbCBpc1ZhbGlkU3VyZmFjZSA9IGZhbHNlOworICAgIGlmICghc3VyZmFjZSkg
eworICAgICAgICBlbmNvZGVyIDw8IGlzVmFsaWRTdXJmYWNlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1cmZhY2Ug
PSBzdGF0aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihzdXJmYWNlLmdldCgpKTsKKyAg
ICBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKHdlYkNvb3Jk
aW5hdGVkU3VyZmFjZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCisgICAgICAgIGlzVmFsaWRTdXJm
YWNlID0gdHJ1ZTsKKworICAgIGVuY29kZXIgPDwgaXNWYWxpZFN1cmZhY2U7CisKKyAgICBpZiAo
aXNWYWxpZFN1cmZhY2UpCisgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOworfQorCitzdGF0aWMg
Ym9vbCBkZWNvZGVDb29yZGluYXRlZFN1cmZhY2UoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiYgc3VyZmFjZSkKK3sKKyAgICBib29sIGlzVmFsaWRT
dXJmYWNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNWYWxpZFN1cmZhY2UpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzVmFsaWRTdXJmYWNlKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHN1cmZhY2UgPSBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpOworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRlLnJvb3RDb21w
b3NpdGluZ0xheWVyOwpAQCAtMTAxNywyNCArMTA1MywzOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgYwogICAgIGVuY29kZXIgPDwgc3RhdGUuc2Nyb2xsUG9zaXRpb247CiAgICAgZW5jb2RlciA8
PCBzdGF0ZS5jb250ZW50c1NpemU7CiAgICAgZW5jb2RlciA8PCBzdGF0ZS5jb3ZlcmVkUmVjdDsK
KworICAgIGVuY29kZXIgPDwgc3RhdGUubGF5ZXJzVG9DcmVhdGU7CiAgICAgZW5jb2RlciA8PCBz
dGF0ZS5sYXllcnNUb1VwZGF0ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRlLmxheWVyc1RvUmVtb3Zl
OworCisgICAgZW5jb2RlciA8PCBzdGF0ZS5pbWFnZXNUb0NyZWF0ZTsKKyAgICBlbmNvZGVyIDw8
IHN0YXRlLmltYWdlc1RvUmVtb3ZlOwogCiAgICAgLy8gV2UgbmVlZCB0byBlbmNvZGUgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgcmlnaHQgYWZ0ZXIgaXQncyBjcmVhdGlvbi4KICAgICAv
LyBUaGF0J3Mgd2h5IHdlIGNhbm5vdCB1c2Ugc2ltcGxlIHN0ZDo6cGFpciBlbmNvZGVyLgogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLmltYWdlc1RvVXBkYXRlLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5z
aXplKCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvVXBkYXRlW2ld
LmZpcnN0OworICAgICAgICBlbmNvZGVDb29yZGluYXRlZFN1cmZhY2UoZW5jb2Rlciwgc3RhdGUu
aW1hZ2VzVG9VcGRhdGVbaV0uc2Vjb25kKTsKKyAgICB9CisgICAgZW5jb2RlciA8PCBzdGF0ZS5p
bWFnZXNUb0NsZWFyOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gPiBTdXJmYWNlVXBk
YXRlUGFpclZlY3RvcjsKLSAgICBTdXJmYWNlVXBkYXRlUGFpclZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gc3RhdGUuaW1hZ2VzVG9VcGRhdGUuZW5kKCk7Ci0gICAgZm9yIChTdXJmYWNlVXBk
YXRlUGFpclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLQotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZh
Y2UqIHdlYkNvb3JkaW5hdGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSo+KGl0LT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6
OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICghd2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5jcmVh
dGVIYW5kbGUoaGFuZGxlKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuc2l6ZSgpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5z
aXplKCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0Ny
ZWF0ZVtpXS5maXJzdDsKKyAgICAgICAgZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGVuY29kZXIs
IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5zZWNvbmQpOworICAgIH0KKyAgICBlbmNv
ZGVyIDw8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZTsKIAotICAgICAgICBlbmNvZGVyIDw8
IGl0LT5maXJzdDsKLSAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisjaWYgRU5BQkxFKENTU19T
SEFERVJTKQorICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLmN1c3Rv
bUZpbHRlcnNUb0NyZWF0ZS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Rh
dGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29kZXIg
PDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLmZpcnN0OworICAgICAgICBlbmNvZGVy
IDw8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZVtpXS5zZWNvbmQ7CiAgICAgfQorICAgIGVu
Y29kZXIgPDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlOworI2VuZGlmCiB9CiAKIGJvb2wg
QXJndW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQpAQCAtMTA1
NCwyNiArMTEwNCw3OCBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3RhdGUuY292ZXJlZFJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmxheWVyc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5sYXllcnNUb1VwZGF0
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGUubGF5ZXJzVG9SZW1vdmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRlLmltYWdlc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5pbWFnZXNUb1JlbW92ZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIHVpbnQ2NF90IHNpemVPZkltYWdlc1RvVXBkYXRlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZU9mSW1hZ2VzVG9VcGRhdGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZU9mSW1hZ2Vz
VG9VcGRhdGU7IGkrKykgeworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplT2ZJbWFn
ZXNUb1VwZGF0ZTsgKytpKSB7CiAgICAgICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1h
Z2VJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZUlEKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVDb29y
ZGluYXRlZFN1cmZhY2UoZGVjb2Rlciwgc3VyZmFjZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSA9IFdlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgICAgIHN0YXRlLmltYWdlc1Rv
VXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFnZUlELCBzdXJmYWNlLnJlbGVhc2UoKSkp
OwogICAgIH0KIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuaW1hZ2VzVG9DbGVhcikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQ2NF90IHNpemVPZlVwZGF0ZUF0bGFz
ZXNUb0NyZWF0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemVPZlVwZGF0ZUF0bGFzZXNU
b0NyZWF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodWludDY0X3QgaSA9
IDA7IGkgPCBzaXplT2ZVcGRhdGVBdGxhc2VzVG9DcmVhdGU7ICsraSkgeworICAgICAgICB1aW50
MzJfdCBhdGxhc0lEOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0bGFzSUQpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZh
Y2U+IHN1cmZhY2U7CisgICAgICAgIGlmICghZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGRlY29k
ZXIsIHN1cmZhY2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN0YXRl
LnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXRsYXNJRCwgc3Vy
ZmFjZS5yZWxlYXNlKCkpKTsKKyAgICB9CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRl
LnVwZGF0ZUF0bGFzZXNUb1JlbW92ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyAgICB1aW50NjRfdCBzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVh
dGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVhdGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwg
c2l6ZU9mQ3VzdG9tRmlsdGVyc1RvQ3JlYXRlOyArK2kpIHsKKyAgICAgICAgdWludDMyX3QgZmls
dGVySUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVySUQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBmaWx0ZXJJ
bmZvOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbHRlckluZm8pKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGZpbHRlcklELCBmaWx0ZXJJbmZvKSk7CisgICAgfQorCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXgg
ZjdlMzFkMzg0MGU3YWZmMjg3N2Y0NGQ4ZDAyMDJjM2M0Mzg2Nzg0My4uMWQ2NTgwYWEzMjFlMWRj
YmRkZWM2MTkyNzkzOTQ2NTc2ZmE1ZmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAg
Q29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC02MiwzNyArNjMsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdAog
ICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0ZShmdW5jdGlvbik7CiB9CiAKLXZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQs
IGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVVcGRhdGVB
dGxhcywgbV9zY2VuZS5nZXQoKSwgYXRsYXNJRCwgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGUoaGFuZGxlKSkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpy
ZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQotewotICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlVXBkYXRlQXRsYXMsIG1fc2Nl
bmUuZ2V0KCksIGF0bGFzSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Y3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5
ZXJJRD4mIGlkcykKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmNyZWF0ZUxheWVycywgbV9zY2VuZS5nZXQoKSwgaWRzKSk7Ci19Ci0KLXZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNv
bnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JiBpZHMpCi17Ci0gICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZWxldGVMYXllcnMsIG1fc2NlbmUu
Z2V0KCksIGlkcykpOwotfQotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQp
Ci17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpy
ZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtLCBtX3NjZW5lLmdldCgpLCBpZCkpOwotfQotdm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShp
bnQgaWQsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKLXsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUN1
c3RvbUZpbHRlclByb2dyYW0sIG1fc2NlbmUuZ2V0KCksIGlkLCBwcm9ncmFtSW5mbykpOwotfQot
I2VuZGlmCi0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIGdyYXBo
aWNzU3RhdGUpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpjb21taXRTY2VuZVN0YXRlLCBtX3NjZW5lLmdldCgpLCBncmFwaGljc1N0YXRlKSk7
CkBAIC0xMDIsMjYgKzcyLDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IENvb3JkaW4KICNlbmRpZgogfQog
Ci12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZUJhY2tpbmco
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQotewotICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNraW5nLCBtX3Nj
ZW5lLmdldCgpLCBpbWFnZUlEKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdl
SUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAg
ZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVJbWFn
ZUJhY2tpbmcsIG1fc2NlbmUuZ2V0KCksIGltYWdlSUQsIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6
Y3JlYXRlKGhhbmRsZSkpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzLCBtX3NjZW5lLmdldCgpLCBpbWFnZUlEKSk7
Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlzcGF0Y2hV
cGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVJbWFnZUJhY2tpbmcs
IG1fc2NlbmUuZ2V0KCksIGltYWdlSUQpKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6c2V0QW5pbWF0aW9uc0xvY2tlZChib29sIGxvY2tlZCkKIHsKICAgICBkaXNw
YXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEFuaW1hdGlvbnNM
b2NrZWQsIG1fc2NlbmUuZ2V0KCksIGxvY2tlZCkpOwpAQCAtMTYzLDExICsxMTMsNiBAQCB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAg
IG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6UHVyZ2VCYWNraW5nU3RvcmVzKCksIG1fZHJhd2luZ0Fy
ZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0g
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRCYWNr
Z3JvdW5kQ29sb3IsIG1fc2NlbmUuZ2V0KCksIGNvbG9yKSk7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklE
LCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCiB7CiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdl
KCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpD
b21taXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KSwgbV9kcmF3aW5nQXJlYVByb3h5LT5w
YWdlKCktPnBhZ2VJRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5oCmluZGV4IDQ0ODZhMGYyZWQ2ZmEwYWM1YzMyNGI0OTMwZTBlMGEyMzk1
YTRmZGEuLmY3NjRhOTUzMmUzMTkxZTU2ZWU2MWMyNmE5NTcwZGI1YTQxMWViNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55
IDEwMCwgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MSw5ICs0Miw3IEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZTsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZTsKLWNs
YXNzIFN1cmZhY2VVcGRhdGVJbmZvOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDI1
ICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkoKTsKIAogICAgIC8vIE1lc3NhZ2VzIEZyb20gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ci0gICAgdm9pZCBjcmVhdGVDb21wb3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRMYXllcklEPiYpOwotICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLSNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCi0gICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwg
Y29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKLSAgICB2b2lkIHJlbW92
ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKLSNlbmRpZgotICAgIHZvaWQgY3JlYXRlVXBk
YXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpI
YW5kbGUmKTsKLSAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpOwot
ICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQpOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJik7Ci0g
ICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpOwotICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotCiAgICAgdm9pZCBjb21taXRDb29yZGluYXRlZEdyYXBo
aWNzU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisKICAg
ICB2b2lkIHNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCk7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5J
TUFUSU9OX0ZSQU1FKQogICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CiAjZW5kaWYK
LSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCiAg
ICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9zY2VuZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCAz
YTc2NGYxM2M3YTJlMTQ0NjI2MWFmODY1YjdmZDYwMGQxZTdlNjgzLi5hYzMwNzg2Nzg3ZDAwYWZl
NTEwNmU3YTM5NWNmZDE2MTZlYThhODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw1ICsx
LDYgQEAKICMKICMgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorIyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAx
MDAsIEluYy4KICMKICMgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsMjYgKzIzLDkgQEAgbWVzc2Fn
ZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewogCiAgICAgQ29tbWl0Q29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSBzdGF0
ZSkKIAotICAgIENyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKFZlY3Rvcjx1aW50MzJfdD4gaWRzKQot
ICAgIERlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKFZlY3Rvcjx1aW50MzJfdD4gaWRzKQotCi0jaWYg
RU5BQkxFKENTU19TSEFERVJTKQotICAgIENyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlk
LCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbykKLSAgICBSZW1v
dmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKLSNlbmRpZgotICAgIENyZWF0ZVVwZGF0ZUF0
bGFzKHVpbnQzMl90IGF0bGFzSUQsIFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5k
bGUgaGFuZGxlKQotICAgIFJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCi0gICAg
Q3JlYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQpCi0gICAgVXBkYXRlSW1hZ2VCYWNr
aW5nKHVpbnQ2NF90IGltYWdlSUQsIFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5k
bGUgaGFuZGxlKQotICAgIENsZWFySW1hZ2VCYWNraW5nQ29udGVudHModWludDY0X3QgaW1hZ2VJ
RCkKLSAgICBSZW1vdmVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKLQogICAgIFNldEFu
aW1hdGlvbnNMb2NrZWQoYm9vbCBsb2NrZWQpCi0KICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJ
T05fRlJBTUUpCiAgICAgUmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkKICNlbmRpZgotCi0gICAgU2V0
QmFja2dyb3VuZENvbG9yKFdlYkNvcmU6OkNvbG9yIGNvbG9yKQogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cAppbmRleCA0NjkyY2M4ODYxM2JjYjUwMjE2YTBjYTE4MTg4N2M4NjRiZGU3YTQ0Li4yZTkxODkw
MmU3MThhMzU0YTkwMzhjZDZlYzBkNzA0NTgxYTI4Mzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTc0LDcg
Kzc0LDcgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0KCkKIAogICAgIExheWVyTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7CiAgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXll
cnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnNldENvb3Jk
aW5hdG9yKDApOworICAgICAgICBpdC0+dmFsdWUtPnNldENsaWVudCgwKTsKIH0KIAogQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2Vi
UGFnZSkKQEAgLTI4Niw4ICsyODYsNiBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBw
cm90ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0cnVlKTsKIAotICAgIGNyZWF0ZUNv
bXBvc2l0aW5nTGF5ZXJzKCk7Ci0KICAgICBpbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJ
Zk5lZWRlZCgpOwogCiAgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoKTsKQEAgLTI5OSw4ICsyOTcsNiBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAgIGZsdXNoUGVuZGluZ0lt
YWdlQmFja2luZ0NoYW5nZXMoKTsKIAotICAgIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7Ci0K
ICAgICBpZiAobV9zaG91bGRTeW5jRnJhbWUpIHsKICAgICAgICAgZGlkU3luYyA9IHRydWU7CiAK
QEAgLTMxMCw5ICszMDYsNyBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQ
ZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDb21taXRDb29yZGluYXRlZEdyYXBoaWNz
U3RhdGUobV9zdGF0ZSkpOwogCi0gICAgICAgIG1fc3RhdGUubGF5ZXJzVG9VcGRhdGUuY2xlYXIo
KTsKLSAgICAgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5jbGVhcigpOwotCisgICAgICAgIHJl
c2V0UGVuZGluZ1N0YXRlQ2hhbmdlcygpOwogICAgICAgICBtX3dhaXRpbmdGb3JVSVByb2Nlc3Mg
PSB0cnVlOwogICAgICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNlOwogICAgIH0gZWxzZQpA
QCAtMzI2LDM4ICszMjAsMjQgQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgcmV0dXJuIGRpZFN5bmM7CiB9CiAKLXZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb21wb3NpdGluZ0xheWVycygpCit2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVzZXRQZW5kaW5nU3RhdGVDaGFuZ2VzKCkKIHsKLSAg
ICBpZiAobV9sYXllcnNUb0NyZWF0ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBt
X3N0YXRlLmxheWVyc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0
ZS5jbGVhcigpOworICAgIG1fc3RhdGUubGF5ZXJzVG9SZW1vdmUuY2xlYXIoKTsKIAotICAgIC8v
IElmIGEgbGF5ZXIgZ2V0cyBjcmVhdGVkIGFuZCBkZWxldGVkIGluIHRoZSBzYW1lIGN5Y2xlLCB3
ZSBjYW4gc2ltcGx5IHJlbW92ZSBpdCBmcm9tIG1fbGF5ZXJzVG9DcmVhdGUgYW5kIG1fbGF5ZXJz
VG9EZWxldGUuCi0gICAgZm9yIChpbnQgaSA9IG1fbGF5ZXJzVG9DcmVhdGUuc2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4ID0gbV9sYXllcnNUb0RlbGV0ZS5m
aW5kKG1fbGF5ZXJzVG9DcmVhdGVbaV0pOwotICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQp
IHsKLSAgICAgICAgICAgIG1fbGF5ZXJzVG9DcmVhdGUucmVtb3ZlKGkpOwotICAgICAgICAgICAg
bV9sYXllcnNUb0RlbGV0ZS5yZW1vdmUoaW5kZXgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
Q3JlYXRlQ29tcG9zaXRpbmdMYXllcnMobV9sYXllcnNUb0NyZWF0ZSkpOwotICAgIG1fbGF5ZXJz
VG9DcmVhdGUuY2xlYXIoKTsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci19Ci0KLXZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygpCi17
Ci0gICAgaWYgKG1fbGF5ZXJzVG9EZWxldGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Cisg
ICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9S
ZW1vdmUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmNsZWFyKCk7CisgICAg
bV9zdGF0ZS5pbWFnZXNUb0NsZWFyLmNsZWFyKCk7CiAKLSAgICBpZiAobV9pc1B1cmdpbmcpIHsK
LSAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVhcigpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0
ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUuY2xlYXIoKTsKIAotICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkRlbGV0ZUNvbXBvc2l0aW5n
TGF5ZXJzKG1fbGF5ZXJzVG9EZWxldGUpKTsKLSAgICBtX2xheWVyc1RvRGVsZXRlLmNsZWFyKCk7
Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
KyAgICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUu
Y3VzdG9tRmlsdGVyc1RvUmVtb3ZlLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVk
KCkKQEAgLTQyOCw3ICs0MDgsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2hl
Y2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyhjb25zdCBGaWx0ZXJPcGVyYQogICAgICAgICBp
ZiAoIWN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+Y2xpZW50KCkpIHsKICAgICAgICAgICAgIGN1
c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+c2V0Q2xpZW50KHRoaXMpOwogICAgICAgICAgICAgbV9j
dXN0b21GaWx0ZXJQcm9ncmFtcy5hZGQoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LmdldCgpKTsK
LSAgICAgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OkNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oY3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3h5LT5pZCgpLCBjdXN0b21PcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKS0+dmFsaWRh
dGVkUHJvZ3JhbUluZm8oKSkpOworICAgICAgICAgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9D
cmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+aWQo
KSwgY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9ncmFtKCktPnZhbGlkYXRlZFByb2dyYW1J
bmZvKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBjbGllbnQg
d2FzIG5vdCBkaXNjb25uZWN0ZWQgdGhlbiB0aGlzIGNvb3JkaW5hdG9yIG11c3QgYmUgdGhlIGNs
aWVudCBmb3IgaXQuCiAgICAgICAgICAgICBBU1NFUlQoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5
LT5jbGllbnQoKSA9PSB0aGlzKTsKQEAgLTQ0MSw3ICs0MjEsNyBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KFdlYkN1c3RvbUZp
bHRlclBybwogICAgIC8vIEF0IHRoaXMgdGltZSB0aGUgc2hhZGVyIGlzIG5vdCBuZWVkZWQgYW55
bW9yZSwgc28gd2UgcmVtb3ZlIGl0IGZyb20gb3VyIHNldCBhbmQKICAgICAvLyBzZW5kIGEgbWVz
c2FnZSB0byB0aGUgb3RoZXIgcHJvY2VzcyB0byBkZWxldGUgaXQuCiAgICAgbV9jdXN0b21GaWx0
ZXJQcm9ncmFtcy5yZW1vdmUoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5KTsKLSAgICBtX3dlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVD
dXN0b21GaWx0ZXJQcm9ncmFtKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+aWQoKSkpOworICAg
IG1fc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlLmFwcGVuZChjdXN0b21GaWx0ZXJQcm9ncmFt
UHJveHktPmlkKCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29u
bmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKQEAgLTQ1NSw4ICs0MzUsMTkgQEAgdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpc2Nvbm5lY3RDdXN0b21GaWx0ZXJQcm9ncmFtcygpCiAK
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcihDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogeworICAgIGlmIChtX2lzUHVyZ2luZykKKyAgICAgICAgcmV0
dXJuOworCiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQoKSk7Ci0gICAg
bV9sYXllcnNUb0RlbGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOworCisgICAgLy8gSWYgYSBsYXll
ciBnZXRzIGNyZWF0ZWQgYW5kIGRlbGV0ZWQgaW4gdGhlIHNhbWUgY3ljbGUsIHdlIGNhbiBzaW1w
bHkgcmVtb3ZlIGl0IGZyb20gbGF5ZXJzVG9DcmVhdGUuCisgICAgc2l6ZV90IGluZGV4ID0gbV9z
dGF0ZS5sYXllcnNUb0NyZWF0ZS5maW5kKGxheWVyLT5pZCgpKTsKKyAgICBpZiAoaW5kZXggIT0g
bm90Rm91bmQpIHsKKyAgICAgICAgbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5yZW1vdmUoaW5kZXgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zdGF0ZS5sYXllcnNUb1JlbW92ZS5h
cHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQogCkBAIC01
NTksMzcgKzU1MCwyOCBAQCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZwogCiB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQgaW1hZ2VJRCkKIHsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3Jl
YXRlSW1hZ2VCYWNraW5nKGltYWdlSUQpKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvQ3JlYXRlLmFw
cGVuZChpbWFnZUlEKTsKIH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnVwZGF0
ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCit2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQgaW1hZ2VJRCkKIHsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxX
ZWJDb29yZGluYXRlZFN1cmZhY2UqPihjb29yZGluYXRlZFN1cmZhY2UuZ2V0KCkpOwotICAgIFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKLSAgICBpZiAoIXdlYkNvb3JkaW5h
dGVkU3VyZmFjZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobV9pc1B1cmdpbmcpCisgICAgICAgIHJldHVybjsKIAotICAgIG1fc3RhdGUuaW1h
Z2VzVG9VcGRhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGltYWdlSUQsIGNvb3JkaW5hdGVkU3Vy
ZmFjZSkpOwotICAgIHJldHVybiB0cnVlOworICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29u
dGFpbnMoaW1hZ2VJRCkpOworICAgIG1faW1hZ2VCYWNraW5ncy5yZW1vdmUoaW1hZ2VJRCk7CisK
KyAgICBtX3N0YXRlLmltYWdlc1RvUmVtb3ZlLmFwcGVuZChpbWFnZUlEKTsKIH0KIAotdm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQs
IFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQogewotICAgIG1fc2hvdWxk
U3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKGltYWdlSUQp
KTsKKyAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFn
ZUlELCBzdXJmYWNlKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1v
dmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQordm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNsZWFySW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKLSAgICBpZiAobV9pc1B1cmdpbmcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwot
ICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX2ltYWdlQmFja2luZ3MucmVtb3Zl
KGltYWdlSUQpOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OlJlbW92ZUltYWdlQmFja2luZyhpbWFnZUlEKSk7CisgICAgbV9zdGF0
ZS5pbWFnZXNUb0NsZWFyLmFwcGVuZChpbWFnZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0ltYWdlQmFja2luZ0NoYW5nZXMoKQpAQCAtNjI2LDkg
KzYwOCw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGdyYXBoCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGlj
c0xheWVyQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBs
YXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoY2xpZW50KTsKLSAgICBsYXllci0+
c2V0Q29vcmRpbmF0b3IodGhpcyk7CisgICAgbGF5ZXItPnNldENsaWVudCh0aGlzKTsKICAgICBt
X3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyLT5pZCgpLCBsYXllcik7Ci0gICAgbV9sYXllcnNU
b0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOworICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUu
YXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVz
dG1lbnQoKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICByZXR1cm4gYWRvcHRQdHIo
bGF5ZXIpOwpAQCAtNjU0LDIxICs2MzYsMTYgQEAgYm9vbCBMYXllclRyZWVIb3N0OjpzdXBwb3J0
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJ
RCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKK3Zv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBh
dGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSkKIHsKLSAgICBX
ZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5hdGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0
PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KGNvb3JkaW5hdGVkU3VyZmFjZS5nZXQoKSk7Ci0gICAg
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOwotICAgIGlmICghd2ViQ29vcmRp
bmF0ZWRTdXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OkNyZWF0ZVVwZGF0ZUF0bGFzKGF0bGFzSUQsIGhhbmRsZSkpOwotICAgIHJldHVybiB0
cnVlOworICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihhdGxhc0lELCBzdXJmYWNlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogewogICAgIGlmIChtX2lz
UHVyZ2luZykKICAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZVVwZGF0ZUF0bGFzKGF0bGFzSUQp
KTsKKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5hcHBlbmQoYXRsYXNJRCk7CiB9
CiAKIFdlYkNvcmU6OkZsb2F0UmVjdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnZpc2libGVD
b250ZW50c1JlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCBhMjE3NGUyOTczMjZkYWRhMDcwNDBjYTc2
ZmU3NzUyNTJkODE1ZDNmLi5lYWQzNmNmNjM2YzVmMDdlZDQ1YjBiOGVmZDFlZTRiM2MyZmJkY2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdo
dCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Nyw4
ICs0OCw4IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CiAg
ICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Ci0gICAg
LCBwdWJsaWMgV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdG9yCi0g
ICAgLCBwdWJsaWMgV2ViQ29yZTo6VXBkYXRlQXRsYXNDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJD
b3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q2xpZW50CisgICAgLCBwdWJsaWMgV2ViQ29y
ZTo6VXBkYXRlQXRsYXM6OkNsaWVudAogICAgICwgcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJGYWN0b3J5CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgICwgV2ViQ3VzdG9tRmlsdGVy
UHJvZ3JhbVByb3h5Q2xpZW50CkBAIC0xMDgsMTIgKzEwOSwxNSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgLy8gQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdG9yCisgICAgLy8gVXBkYXRlQXRsYXM6OkNs
aWVudAorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBpZCAq
LywgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgLyogaWQgKi8pIE9WRVJS
SURFOworCisgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNsaWVudAogICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZUltYWdlQmFja2luZyhXZWJD
b3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3Jk
aW5hdGVkU3VyZmFjZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFj
a2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7Ci0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1h
Z2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNsZWFySW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9W
RVJSSURFOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpOwogCiAg
ICAgLy8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50CkBAIC0xMjQsOSArMTI4LDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
PiBiZWdpbkNvbnRlbnRVcGRhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiBhdGxhc0lELCBXZWJDb3JlOjpJbnRQ
b2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJDb3JlOjpDb29yZGlu
YXRlZExheWVySUQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAK
LSAgICAvLyBVcGRhdGVBdGxhc0NsaWVudAotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVVcGRhdGVB
dGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3Vy
ZmFjZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lEKTsKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJGYWN0b3J5CiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUdyYXBoaWNzTGF5ZXIo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCopIE9WRVJSSURFOwpAQCAtMTM2LDggKzEzNyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAgdm9p
ZCBkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOwogICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJD
aGFuZ2VzKCk7Ci0gICAgdm9pZCBjcmVhdGVDb21wb3NpdGluZ0xheWVycygpOwotICAgIHZvaWQg
ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKKyAgICB2b2lkIHJlc2V0UGVuZGluZ1N0YXRlQ2hh
bmdlcygpOwogICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKICAgICB2b2lkIHBl
cmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2NoZWR1bGVk
TGF5ZXJGbHVzaCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192355</attachid>
            <date>2013-03-09 15:30:34 -0800</date>
            <delta_ts>2013-03-10 16:44:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130310082639.patch</filename>
            <type>text/plain</type>
            <size>48046</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3OTQ1YzI4NmVlODI1
ODM3ZmI2ODVlOTdkNmQ4ZTBkNzAwZmViYy4uNjAxMzI4YjM1OTg2YzNhNmRkNDc5MzFkMTI0ZTU0
Yzg5YTc2NmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVy
UHJvZ3JhbXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjpyZW1vdmVIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OmNsZWFyQ29udGVudHNUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAg
ICAgKENsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEltYWdlQmFja2luZyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENsaWVudCk6CisgICAgICAgIChVcGRhdGVBdGxhcyk6
CisKIDIwMTMtMDMtMDggIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91dF0gUmVzb2x2ZSBncmlkLXtlbmR8YWZ0ZXJ9IGlu
dGVnZXIgYWdhaW5zdCB0aGUgZW5kfGFmdGVyIGVkZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZDFhZWZhNDgz
YzcxY2U1NjZhZGVkMjhkNDY5NTlmZDc5OTcxOWZjLi45YzRiNWVlNzNmYzAwYjE5YTkyYjFhNWIw
NGE0NmYwYTFiNmE5MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTMtMDMtMDgg
IEd3YW5nIFlvb24gSHdhbmcgIDxyeXVtaWVsQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENv
b3JkaW5hdGVkIEdyYXBoaWNzOiBVbmlmeSBtZXNzYWdlcyByZWxhdGVkIG9iamVjdCdzIGxpZmVj
eWNsZXMgaW50byBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE5MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29kZXMgZm9y
IFdlYkNvb3JkaW5hdGVkU3VyZmFjZSBpbgorICAgICAgICBDb29yZGluYXRlZExheWVyVHJlZUhv
c3QsIGV4Y2VwdCBmb3IgYSBmYWN0b3J5IG1ldGhvZC4KKyAgICAgICAgTm93LCBDb29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMgW2VufGRlXWNvZGVzIENvb3JkaW5hdGVkU3VyZmFjZSBp
dHNlbGYKKyAgICAgICAgdXNpbmcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzaXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBTaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAg
ICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6ZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNl
KToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nU3RhdGVDaGFuZ2VzKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjaGVja0N1c3RvbUZpbHRlclByb2dy
YW1Qcm94aWVzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpy
ZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFja2luZyk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBkYXRlSW1hZ2VCYWNraW5nKToK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdlQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
R3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnJlbW92ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisKIDIwMTMtMDMtMDggIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxNDUyNTQsIHIxNDUyNjQsIGFuZCByMTQ1Mjg4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBhZTI0
NWUzNmZjOTY0OTgyNTUxYmU0ZWM1ZmIxOGZiYTA3OGIxYjZmLi5mNjRiYzFlNDBkMDFmNDhkMGI0
MGNmNzcxZGU1NWFjNzg2Y2ZlNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMjczLDYgKzI3MywxNSBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQoR3JhcGhp
Y3NMYXllciogbGF5ZXIsIGNvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0N1c3RvbUZpbHRlclByb2dyYW1zKGNv
bnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAg
ICAgIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRl
W2ldLmZpcnN0LCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uc2Vjb25kKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlLnNpemUo
KTsgKytpKQorICAgICAgICByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKHN0YXRlLmN1c3RvbUZp
bHRlcnNUb1JlbW92ZVtpXSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpp
bmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXpl
KCk7ICsraSkgewpAQCAtNTI1LDYgKzUzNCwxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6dXBkYXRlVGlsZXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiBsYXllciwgY29uc3QgQwog
ICAgIH0KIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxh
c2VzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuc2l6ZSgpOyArK2kp
CisgICAgICAgIGNyZWF0ZVVwZGF0ZUF0bGFzKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtp
XS5maXJzdCwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLnNlY29uZCk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5zaXplKCk7
ICsraSkKKyAgICAgICAgcmVtb3ZlVXBkYXRlQXRsYXMoc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVt
b3ZlW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0
ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBz
dXJmYWNlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7CkBA
IC01MzcsNiArNTU1LDIxIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVV
cGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogICAgIG1fc3VyZmFjZXMucmVtb3ZlKGF0bGFz
SUQpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2lu
Z3MoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvQ3JlYXRlLnNpemUoKTsgKytpKQorICAgICAg
ICBjcmVhdGVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2VzVG9DcmVhdGVbaV0pOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb1JlbW92ZS5zaXplKCk7ICsraSkKKyAg
ICAgICAgcmVtb3ZlSW1hZ2VCYWNraW5nKHN0YXRlLmltYWdlc1RvUmVtb3ZlW2ldKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kp
CisgICAgICAgIHVwZGF0ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJz
dCwgc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9DbGVhci5zaXplKCk7ICsraSkKKyAgICAgICAgY2xlYXJJ
bWFnZUJhY2tpbmdDb250ZW50cyhzdGF0ZS5pbWFnZXNUb0NsZWFyW2ldKTsKK30KKwogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlQmFja2luZ3MuY29u
dGFpbnMoaW1hZ2VJRCkpOwpAQCAtNjE1LDE0ICs2NDgsMjAgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJgogICAgIC8vIFNpbmNlIHRoZSBmcmFtZSBoYXMgbm93IGJlZW4gcmVuZGVyZWQsIHdlIGNh
biBzYWZlbHkgdW5sb2NrIHRoZSBhbmltYXRpb25zIHVudGlsIHRoZSBuZXh0IGxheW91dC4KICAg
ICBzZXRBbmltYXRpb25zTG9ja2VkKGZhbHNlKTsKIAorICAgIGNyZWF0ZUxheWVycyhzdGF0ZS5s
YXllcnNUb0NyZWF0ZSk7CisgICAgZGVsZXRlTGF5ZXJzKHN0YXRlLmxheWVyc1RvUmVtb3ZlKTsK
KwogICAgIGlmIChzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXllciAhPSBtX3Jvb3RMYXllcklEKQog
ICAgICAgICBzZXRSb290TGF5ZXJJRChzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXllcik7CiAKICAg
ICBpZiAoc3RhdGUuYmFja2dyb3VuZENvbG9yICE9IG1fYmFja2dyb3VuZENvbG9yKQogICAgICAg
ICBzZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGUuYmFja2dyb3VuZENvbG9yKTsKIAotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIHVwZGF0ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3Rh
dGUuaW1hZ2VzVG9VcGRhdGVbaV0uc2Vjb25kKTsKKyAgICBzeW5jSW1hZ2VCYWNraW5ncyhzdGF0
ZSk7CisgICAgc3luY1VwZGF0ZUF0bGFzZXMoc3RhdGUpOworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKKyAgICBzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoc3RhdGUpOworI2VuZGlmCiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmxheWVyc1RvVXBkYXRlLnNpemUoKTsgKytpKQog
ICAgICAgICBzZXRMYXllclN0YXRlKHN0YXRlLmxheWVyc1RvVXBkYXRlW2ldLmZpcnN0LCBzdGF0
ZS5sYXllcnNUb1VwZGF0ZVtpXS5zZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDY4ZmM2MTlmMTQ4MWE4ZTNlOTRh
Y2U4ZDM0ODA1OGRkNTI4NGM0OGIuLmZlODVmOGY4ZmFhMDEzMmUyNTEwNDhhYzExMTliZjYyMTNi
MmJiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAxMiBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODMs
MjMgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IENv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwogCi0gICAgdm9pZCBjcmVhdGVMYXllcnMoY29uc3Qg
VmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLSAgICB2b2lkIGRlbGV0ZUxheWVycyhjb25z
dCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwotCi0jaWYgRU5BQkxFKENTU19TSEFERVJT
KQotICAgIHZvaWQgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKGludCBpZCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKLSAgICB2b2lk
IHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKLSNlbmRpZgotCi0gICAgdm9pZCBj
cmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4pOwotICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7
Ci0gICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7
Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwg
UGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KTsKLSAgICB2b2lkIGNsZWFySW1hZ2VCYWNr
aW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRBbmlt
YXRpb25zTG9ja2VkKGJvb2wpOwotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJik7CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXRE
cmF3c0JhY2tncm91bmQgPSBlbmFibGU7IH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKQEAgLTEwOCw2ICs5Myw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lk
IHNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCk7CisgICAgdm9pZCBjcmVhdGVMYXll
cnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKKyAgICB2b2lkIGRlbGV0ZUxh
eWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwogICAgIHZvaWQgc2V0TGF5
ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
clN0YXRlJik7CiAgICAgdm9pZCBzZXRMYXllckNoaWxkcmVuSWZOZWVkZWQoR3JhcGhpY3NMYXll
ciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCB1cGRh
dGVUaWxlc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJTdGF0ZSYpOwpAQCAtMTI0LDYgKzExMSwyNSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
dm9pZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogCisgICAgdm9pZCBzeW5jVXBkYXRlQXRs
YXNlcyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKKyAgICB2b2lkIGNyZWF0ZVVw
ZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
Pik7CisgICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKKworICAg
IHZvaWQgc3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7
CisgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7
CisgICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwg
UGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KTsKKyAgICB2b2lkIGNsZWFySW1hZ2VCYWNr
aW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCByZW1vdmVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCisgICAgdm9pZCBzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQ
cm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdDsKKyAgICB2b2lk
IGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyYpOworICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwor
I2VuZGlmCisKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOworCiAg
ICAgR3JhcGhpY3NMYXllciogbGF5ZXJCeUlEKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2xheWVycy5jb250YWlucyhpZCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IDQxNTBmMjZi
MmE0ZWViZTE3ODcwZDNjNTRmZWVkMDRlYWUxZGJlZjEuLjU4Y2MwMzc2OTJiODhlZmZiMmRlMDNl
M2NkNjk0ZmZiMzUwZmE0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiRmls
dGVyT3BlcmF0aW9ucy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKKyNlbmRpZgorCiAjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCiAjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCIKICNlbmRpZgpA
QCAtMTc2LDggKzE4MCwyMiBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHsKICAg
ICBJbnRTaXplIGNvbnRlbnRzU2l6ZTsKICAgICBJbnRSZWN0IGNvdmVyZWRSZWN0OwogCisgICAg
VmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDb29yZGluYXRlZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRl
PiA+IGxheWVyc1RvVXBkYXRlOworICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IGxheWVy
c1RvUmVtb3ZlOworCisgICAgVmVjdG9yPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdl
c1RvQ3JlYXRlOworICAgIFZlY3RvcjxDb29yZGluYXRlZEltYWdlQmFja2luZ0lEPiBpbWFnZXNU
b1JlbW92ZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQs
IFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gPiBpbWFnZXNUb1VwZGF0ZTsKKyAgICBWZWN0
b3I8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRD4gaW1hZ2VzVG9DbGVhcjsKKworICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDMyX3QgLyogYXRsYXNJRCAqLywgUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4gPiA+IHVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3QgLyog
YXRsYXNJRCAqLz4gdXBkYXRlQXRsYXNlc1RvUmVtb3ZlOworCisjaWYgRU5BQkxFKENTU19TSEFE
RVJTKQorICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDMyX3QgLyogRmlsdGVySUQgKi8sIEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvPiA+IGN1c3RvbUZpbHRlcnNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8
dWludDMyX3Q+IGN1c3RvbUZpbHRlcnNUb1JlbW92ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEltYWdlQmFja2luZy5jcHAKaW5kZXggMTI4YmFiZTI5OGY2NmNiYzI3NjljZjZmZjhlYTk4MjI5
ZDUxNTU3Ny4uMWU5MDFmZDg4Nzg5ODdlZTg1N2U2N2IxN2YxYjhkMzA4YmM2MzIzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1
ZGUgIkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzgsMTMgKzM5LDEzIEBAIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQg
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQoCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRD4oaW1h
Z2UpOwogfQogCi1QYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6Y3JlYXRlKENvb3JkaW5hdG9yKiBjbGllbnQsIFBhc3NSZWZQdHI8SW1h
Z2U+IGltYWdlKQorUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZShDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEltYWdlQmFja2lu
ZyhjbGllbnQsIGltYWdlKSk7CiB9CiAKLUNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDb29yZGlu
YXRlZEltYWdlQmFja2luZyhDb29yZGluYXRvciogY2xpZW50LCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZSkKLSAgICA6IG1fY29vcmRpbmF0b3IoY2xpZW50KQorQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKENsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPElt
YWdlPiBpbWFnZSkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faW1hZ2UoaW1hZ2Up
CiAgICAgLCBtX2lkKGdldENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQobV9pbWFnZS5nZXQoKSkp
CiAgICAgLCBtX2NsZWFyQ29udGVudHNUaW1lcih0aGlzLCAmQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmc6OmNsZWFyQ29udGVudHNUaW1lckZpcmVkKQpAQCAtNTQsNyArNTUsNyBAQCBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ29vcmRpbmF0b3IqIGNsaWVu
dCwgUGFzc1JlZlB0cgogICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBuZWVkIHRvIGRlY29kZSBhIHNt
YWxsIGltYWdlIGRpcmVjdGx5IGludG8gYSBHcmFwaGljc1N1cmZhY2UuCiAgICAgLy8gaHR0cDov
L3dlYmtpdC5vcmcvYi8xMDE0MjYKIAotICAgIG1fY29vcmRpbmF0b3ItPmNyZWF0ZUltYWdlQmFj
a2luZyhpZCgpKTsKKyAgICBtX2NsaWVudC0+Y3JlYXRlSW1hZ2VCYWNraW5nKGlkKCkpOwogfQog
CiBDb29yZGluYXRlZEltYWdlQmFja2luZzo6fkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nKCkKQEAg
LTc0LDcgKzc1LDcgQEAgdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6cmVtb3ZlSG9zdChI
b3N0KiBob3N0KQogICAgIG1faG9zdHMucmVtb3ZlKHBvc2l0aW9uKTsKIAogICAgIGlmIChtX2hv
c3RzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9jb29yZGluYXRvci0+cmVtb3ZlSW1hZ2VCYWNraW5n
KGlkKCkpOworICAgICAgICBtX2NsaWVudC0+cmVtb3ZlSW1hZ2VCYWNraW5nKGlkKCkpOwogfQog
CiB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjptYXJrRGlydHkoKQpAQCAtMTEzLDkgKzEx
NCw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSgpCiAKICAgICBtX25h
dGl2ZUltYWdlUHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAot
ICAgIC8vIElmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIHRyeSBhZ2FpbiBpbiB0aGUgbmV4
dCB1cGRhdGUuCi0gICAgYm9vbCBzdWNjZXNzID0gbV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VC
YWNraW5nKGlkKCksIG1fc3VyZmFjZSk7Ci0gICAgbV9pc0RpcnR5ID0gIXN1Y2Nlc3M7CisgICAg
bV9jbGllbnQtPnVwZGF0ZUltYWdlQmFja2luZyhpZCgpLCBtX3N1cmZhY2UpOworICAgIG1faXNE
aXJ0eSA9IGZhbHNlOwogfQogCiB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpyZWxlYXNl
U3VyZmFjZUlmTmVlZGVkKCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjp1cGRhdGVWaXNpYmlsaXR5SWZOZWVkZWQoYm9vbCYgY2hhbmdlZFRvVmlzaWJs
ZSkKIAogdm9pZCBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Y2xlYXJDb250ZW50c1RpbWVyRmly
ZWQoVGltZXI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+KikKIHsKLSAgICBtX2Nvb3JkaW5hdG9y
LT5jbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKGlkKCkpOworICAgIG1fY2xpZW50LT5jbGVhcklt
YWdlQmFja2luZyhpZCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCAzNjll
MjM5ZjliMGEyOThjZDlmY2NlNDIzZGE0ZDJmMWU1YTIxYTc2Li43NjdlY2QxYjA0MzQ4OGZkMjhl
YjNkN2U4MjMxMjBkNzQxYjI3ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaApAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcgOiBwdWJsaWMgUmVmQ291
bnRlZDxDb29yZGluYXRlZEltYWdlQmFja2luZz4gewogcHVibGljOgotICAgIGNsYXNzIENvb3Jk
aW5hdG9yIHsKKyAgICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAgICAgfTsKIAogICAgIGNsYXNz
IEhvc3QgewpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUJhY2tpbmdWaXNpYmxlKCkgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlKENvb3JkaW5hdG9yKiwgUGFzc1JlZlB0
cjxJbWFnZT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
PiBjcmVhdGUoQ2xpZW50KiwgUGFzc1JlZlB0cjxJbWFnZT4pOwogICAgIHZpcnR1YWwgfkNvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nKCk7CiAKICAgICBzdGF0aWMgQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBnZXRDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKEltYWdlKik7CkBAIC02OCwxMyArNjgs
MTMgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcoQ29vcmRpbmF0b3IqLCBQYXNzUmVmUHRyPEltYWdlPik7CisgICAg
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcoQ2xpZW50KiwgUGFzc1JlZlB0cjxJbWFnZT4pOwogCiAg
ICAgdm9pZCByZWxlYXNlU3VyZmFjZUlmTmVlZGVkKCk7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmls
aXR5SWZOZWVkZWQoYm9vbCYgY2hhbmdlZFRvVmlzaWJsZSk7CiAgICAgdm9pZCBjbGVhckNvbnRl
bnRzVGltZXJGaXJlZChUaW1lcjxDb29yZGluYXRlZEltYWdlQmFja2luZz4qKTsKIAotICAgIENv
b3JkaW5hdG9yKiBtX2Nvb3JkaW5hdG9yOworICAgIENsaWVudCogbV9jbGllbnQ7CiAgICAgUmVm
UHRyPEltYWdlPiBtX2ltYWdlOwogICAgIE5hdGl2ZUltYWdlUHRyIG1fbmF0aXZlSW1hZ2VQdHI7
CiAgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9VcGRhdGVBdGxhcy5jcHAKaW5kZXggMzY0ZjA2ODcxMDgyYjU4ZmNiZDgzYTBlZjMxNDUwYmU0
ODAwODQ4Yi4uYmUxOGE2NDExNzAwNWQxOTJjMzIwNTc2ZGJlOWYzYzBiZjlmZGI2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L1VwZGF0ZUF0bGFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCkBAIC0yMywxMyArMjMsMTQgQEAKIAog
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3Jh
cGhpY3NTdGF0ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50
LCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQorVXBkYXRl
QXRsYXM6OlVwZGF0ZUF0bGFzKENsaWVudCogY2xpZW50LCBpbnQgZGltZW5zaW9uLCBDb29yZGlu
YXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzKQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9pbmFjdGl2aXR5SW5TZWNvbmRzKDApCiB7CkBAIC0zOCw5ICszOSw3IEBAIFVwZGF0ZUF0bGFz
OjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50LCBpbnQgZGltZW5zaW9uLCBD
b29yZGluYXRlZFN1CiAgICAgSW50U2l6ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShk
aW1lbnNpb24sIGRpbWVuc2lvbikpOwogICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKHNpemUsIGZsYWdzKTsKIAotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIGlmIHNl
bmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIFVwZGF0ZUF0bGFzIGdpdmVzIHVwIGRyYXdpbmcgYW55
dGhpbmcgaW1wbGljaXRseS4KLSAgICBpZiAoIW1fY2xpZW50LT5jcmVhdGVVcGRhdGVBdGxhcyht
X0lELCBtX3N1cmZhY2UpKQotICAgICAgICBtX3N1cmZhY2UuY2xlYXIoKTsKKyAgICBtX2NsaWVu
dC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9zdXJmYWNlKTsKIH0KIAogVXBkYXRlQXRsYXM6
On5VcGRhdGVBdGxhcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCmluZGV4IDQ4
YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0ZTMzMGZkZGIxNmQ3OGIuLjQxZWIzOGUzOTJhYjMxNzZi
MTZlYmRlNGVlMjBjMzYzZGRmMDEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5oCkBAIC0zMSwxNiArMzEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW50UG9pbnQ7CiAKLWNsYXNzIFVwZGF0ZUF0bGFzQ2xpZW50IHsK
LXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRs
YXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpID0gMDsKLX07Ci0KIGNsYXNz
IFVwZGF0ZUF0bGFzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShVcGRhdGVBdGxhcyk7CiBw
dWJsaWM6Ci0gICAgVXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqLCBpbnQgZGltZW5zaW9u
LCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IC8q
IGlkICovLCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IC8qIGlkICovKSA9IDA7CisgICAg
fTsKKworICAgIFVwZGF0ZUF0bGFzKENsaWVudCosIGludCBkaW1lbnNpb24sIENvb3JkaW5hdGVk
U3VyZmFjZTo6RmxhZ3MpOwogICAgIH5VcGRhdGVBdGxhcygpOwogCiAgICAgaW5saW5lIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VyZmFjZS0+c2l6ZSgpOyB9CkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZExheW91dElmTmVlZGVkKCk7CiAKIHByaXZh
dGU6Ci0gICAgVXBkYXRlQXRsYXNDbGllbnQqIG1fY2xpZW50OworICAgIENsaWVudCogbV9jbGll
bnQ7CiAgICAgT3duUHRyPEdlbmVyYWxBcmVhQWxsb2NhdG9yPiBtX2FyZWFBbGxvY2F0b3I7CiAg
ICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwogICAgIGRvdWJsZSBtX2lu
YWN0aXZpdHlJblNlY29uZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjNzhjYjFiMDVlYjM3Yzg4ZjhhZjJhMTM2NmU1
NTVmOTQwOTM3ZjlkLi5kOWI1YTgzYTYwMjU0MjIxZDFhYjAzMzhkOTU0Nzg0NWVkZmU5ZmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTEwMTAsNiArMTAxMCw0MiBAQCBib29sIEFyZ3VtZW50Q29kZXI8VGlsZUNyZWF0
aW9uSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFRpbGVDcmVhdAogICAg
IHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPFRpbGVDcmVhdGlvbkluZm8+OjpkZWNvZGUoZGVj
b2RlciwgdXBkYXRlSW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGVuY29kZUNvb3JkaW5hdGVkU3Vy
ZmFjZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxDb29yZGluYXRlZFN1
cmZhY2U+JiBzdXJmYWNlKQoreworICAgIGJvb2wgaXNWYWxpZFN1cmZhY2UgPSBmYWxzZTsKKyAg
ICBpZiAoIXN1cmZhY2UpIHsKKyAgICAgICAgZW5jb2RlciA8PCBpc1ZhbGlkU3VyZmFjZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSogd2ViQ29v
cmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4oc3Vy
ZmFjZS5nZXQoKSk7CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOwor
ICAgIGlmICh3ZWJDb29yZGluYXRlZFN1cmZhY2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQorICAg
ICAgICBpc1ZhbGlkU3VyZmFjZSA9IHRydWU7CisKKyAgICBlbmNvZGVyIDw8IGlzVmFsaWRTdXJm
YWNlOworCisgICAgaWYgKGlzVmFsaWRTdXJmYWNlKQorICAgICAgICBlbmNvZGVyIDw8IGhhbmRs
ZTsKK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mIHN1cmZhY2UpCit7Cisg
ICAgYm9vbCBpc1ZhbGlkU3VyZmFjZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzVmFsaWRT
dXJmYWNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpc1ZhbGlkU3VyZmFj
ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZSBoYW5kbGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzdXJmYWNlID0gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVh
dGUoaGFuZGxlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPENv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCiB7CiAgICAgZW5jb2RlciA8
PCBzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXllcjsKQEAgLTEwMTcsMjQgKzEwNTMsMzggQEAgdm9p
ZCBBcmd1bWVudENvZGVyPENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGMKICAgICBlbmNvZGVyIDw8IHN0YXRlLnNjcm9sbFBvc2l0aW9u
OwogICAgIGVuY29kZXIgPDwgc3RhdGUuY29udGVudHNTaXplOwogICAgIGVuY29kZXIgPDwgc3Rh
dGUuY292ZXJlZFJlY3Q7CisKKyAgICBlbmNvZGVyIDw8IHN0YXRlLmxheWVyc1RvQ3JlYXRlOwog
ICAgIGVuY29kZXIgPDwgc3RhdGUubGF5ZXJzVG9VcGRhdGU7CisgICAgZW5jb2RlciA8PCBzdGF0
ZS5sYXllcnNUb1JlbW92ZTsKKworICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VzVG9DcmVhdGU7
CisgICAgZW5jb2RlciA8PCBzdGF0ZS5pbWFnZXNUb1JlbW92ZTsKIAogICAgIC8vIFdlIG5lZWQg
dG8gZW5jb2RlIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIHJpZ2h0IGFmdGVyIGl0J3Mg
Y3JlYXRpb24uCiAgICAgLy8gVGhhdCdzIHdoeSB3ZSBjYW5ub3QgdXNlIHNpbXBsZSBzdGQ6OnBh
aXIgZW5jb2Rlci4KICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0ZS5p
bWFnZXNUb1VwZGF0ZS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUu
aW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5p
bWFnZXNUb1VwZGF0ZVtpXS5maXJzdDsKKyAgICAgICAgZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNl
KGVuY29kZXIsIHN0YXRlLmltYWdlc1RvVXBkYXRlW2ldLnNlY29uZCk7CisgICAgfQorICAgIGVu
Y29kZXIgPDwgc3RhdGUuaW1hZ2VzVG9DbGVhcjsKIAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6
cGFpcjxDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiA+ID4gU3VyZmFjZVVwZGF0ZVBhaXJWZWN0b3I7Ci0gICAgU3VyZmFjZVVwZGF0ZVBhaXJWZWN0
b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHN0YXRlLmltYWdlc1RvVXBkYXRlLmVuZCgpOwotICAg
IGZvciAoU3VyZmFjZVVwZGF0ZVBhaXJWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3RhdGUu
aW1hZ2VzVG9VcGRhdGUuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0KLSAgICAgICAgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxX
ZWJDb29yZGluYXRlZFN1cmZhY2UqPihpdC0+c2Vjb25kLmdldCgpKTsKLSAgICAgICAgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBpZiAoIXdlYkNvb3JkaW5h
dGVkU3VyZmFjZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCi0gICAgICAgICAgICByZXR1cm47Cisg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGUudXBkYXRlQXRsYXNlc1Rv
Q3JlYXRlLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS51cGRhdGVB
dGxhc2VzVG9DcmVhdGUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS51
cGRhdGVBdGxhc2VzVG9DcmVhdGVbaV0uZmlyc3Q7CisgICAgICAgIGVuY29kZUNvb3JkaW5hdGVk
U3VyZmFjZShlbmNvZGVyLCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGVbaV0uc2Vjb25kKTsK
KyAgICB9CisgICAgZW5jb2RlciA8PCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmU7CiAKLSAg
ICAgICAgZW5jb2RlciA8PCBpdC0+Zmlyc3Q7Ci0gICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwor
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5zaXplKCk7ICsraSkgewor
ICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZVtpXS5maXJzdDsK
KyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uc2Vjb25k
OwogICAgIH0KKyAgICBlbmNvZGVyIDw8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb1JlbW92ZTsKKyNl
bmRpZgogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
JiBzdGF0ZSkKQEAgLTEwNTQsMjYgKzExMDQsNzggQEAgYm9vbCBBcmd1bWVudENvZGVyPENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEMK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmNvdmVyZWRSZWN0KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5sYXllcnNUb0NyZWF0
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGUubGF5ZXJzVG9VcGRhdGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRlLmxheWVyc1RvUmVtb3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5pbWFnZXNUb0NyZWF0ZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuaW1hZ2Vz
VG9SZW1vdmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICB1aW50NjRfdCBzaXplT2ZJ
bWFnZXNUb1VwZGF0ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemVPZkltYWdlc1RvVXBk
YXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yICh1aW50NjRfdCBpID0gMDsg
aSA8IHNpemVPZkltYWdlc1RvVXBkYXRlOyBpKyspIHsKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAw
OyBpIDwgc2l6ZU9mSW1hZ2VzVG9VcGRhdGU7ICsraSkgewogICAgICAgICBDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW1hZ2VJ
RCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgV2ViQ29vcmRpbmF0ZWRT
dXJmYWNlOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRs
ZSkpCisgICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CisgICAgICAg
IGlmICghZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGRlY29kZXIsIHN1cmZhY2UpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
IHN1cmZhY2UgPSBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpOwogICAgICAg
ICBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW1hZ2VJRCwgc3Vy
ZmFjZS5yZWxlYXNlKCkpKTsKICAgICB9CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRl
LmltYWdlc1RvQ2xlYXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50NjRfdCBz
aXplT2ZVcGRhdGVBdGxhc2VzVG9DcmVhdGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXpl
T2ZVcGRhdGVBdGxhc2VzVG9DcmVhdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBm
b3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZU9mVXBkYXRlQXRsYXNlc1RvQ3JlYXRlOyArK2kp
IHsKKyAgICAgICAgdWludDMyX3QgYXRsYXNJRDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhdGxhc0lEKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBSZWZQdHI8
Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBpZiAoIWRlY29kZUNvb3JkaW5h
dGVkU3VyZmFjZShkZWNvZGVyLCBzdXJmYWNlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGF0bGFzSUQsIHN1cmZhY2UucmVsZWFzZSgpKSk7CisgICAgfQorCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdWludDY0X3Qgc2l6ZU9mQ3Vz
dG9tRmlsdGVyc1RvQ3JlYXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZU9mQ3VzdG9t
RmlsdGVyc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1aW50
NjRfdCBpID0gMDsgaSA8IHNpemVPZkN1c3RvbUZpbHRlcnNUb0NyZWF0ZTsgKytpKSB7CisgICAg
ICAgIHVpbnQzMl90IGZpbHRlcklEOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbHRl
cklEKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8gZmlsdGVySW5mbzsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWx0ZXJJ
bmZvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3RhdGUuY3VzdG9tRmls
dGVyc1RvQ3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihmaWx0ZXJJRCwgZmlsdGVySW5mbykp
OworICAgIH0KKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUudXBkYXRlQXRsYXNlc1Rv
UmVtb3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuY3BwCmluZGV4IGY3ZTMxZDM4NDBlN2FmZjI4NzdmNDRkOGQwMjAyYzNjNDM4Njc4NDMu
LjFkNjU4MGFhMzIxZTFkY2JkZGVjNjE5Mjc5Mzk0NjU3NmZhNWZkYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAx
MDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjIsMzcgKzYzLDYgQEAgdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248
dm9pZCgpPiYgZnVuY3QKICAgICBtX3NjZW5lLT5hcHBlbmRVcGRhdGUoZnVuY3Rpb24pOwogfQog
Ci12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVVcGRhdGVBdGxhcyh1
aW50MzJfdCBhdGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYgaGFu
ZGxlKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlVXBkYXRlQXRsYXMsIG1fc2NlbmUuZ2V0KCksIGF0bGFzSUQsIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSkpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKLXsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZVVw
ZGF0ZUF0bGFzLCBtX3NjZW5lLmdldCgpLCBhdGxhc0lEKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3Rv
cjxDb29yZGluYXRlZExheWVySUQ+JiBpZHMpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcnMsIG1fc2NlbmUuZ2V0KCksIGlk
cykpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkZWxldGVDb21w
b3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYgaWRzKQotewot
ICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGVsZXRl
TGF5ZXJzLCBtX3NjZW5lLmdldCgpLCBpZHMpKTsKLX0KLQotI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZUN1c3RvbUZpbHRl
clByb2dyYW0oaW50IGlkKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgbV9zY2VuZS5nZXQoKSwg
aWQpKTsKLX0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUN1c3Rv
bUZpbHRlclByb2dyYW0oaW50IGlkLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgcHJv
Z3JhbUluZm8pCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtLCBtX3NjZW5lLmdldCgpLCBpZCwgcHJv
Z3JhbUluZm8pKTsKLX0KLSNlbmRpZgotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Ojpjb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJiBncmFwaGljc1N0YXRlKQogewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVTdGF0ZSwgbV9zY2VuZS5nZXQoKSwg
Z3JhcGhpY3NTdGF0ZSkpOwpAQCAtMTAyLDI2ICs3Miw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OmNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBDb29y
ZGluCiAjZW5kaWYKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y3Jl
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKLXsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUlt
YWdlQmFja2luZywgbV9zY2VuZS5nZXQoKSwgaW1hZ2VJRCkpOwotfQotCi12b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCBpbWFnZUlELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYg
aGFuZGxlKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6dXBkYXRlSW1hZ2VCYWNraW5nLCBtX3NjZW5lLmdldCgpLCBpbWFnZUlELCBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHk6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnZUlEKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cywgbV9zY2VuZS5n
ZXQoKSwgaW1hZ2VJRCkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
OjpyZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQot
ewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVt
b3ZlSW1hZ2VCYWNraW5nLCBtX3NjZW5lLmdldCgpLCBpbWFnZUlEKSk7Ci19Ci0KIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCBsb2Nr
ZWQpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpzZXRBbmltYXRpb25zTG9ja2VkLCBtX3NjZW5lLmdldCgpLCBsb2NrZWQpKTsKQEAgLTE2Mywx
MSArMTEzLDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6cHVyZ2VCYWNr
aW5nU3RvcmVzKCkKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OlB1cmdlQmFja2luZ1N0b3Jl
cygpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwogfQogCi12b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yLCBtX3NjZW5lLmdldCgpLCBjb2xvcikpOwotfQot
CiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxPZmZzZXQo
dWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQogewogICAgIG1fZHJhd2lu
Z0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Q29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCksIG1fZHJh
d2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA0NDg2YTBmMmVkNmZhMGFjNWMz
MjRiNDkzMGUwZTBhMjM5NWE0ZmRhLi5mNzY0YTk1MzJlMzE5MWU1NmVlNjFjMjZhOTU3MGRiNWE0
MTFlYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDEsOSAr
NDIsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGU7CiBjbGFzcyBDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGU7Ci1jbGFzcyBTdXJmYWNlVXBkYXRlSW5mbzsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01NiwyNSArNTUsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5KCk7CiAKICAgICAvLyBNZXNzYWdlcyBGcm9tIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdAotICAgIHZvaWQgY3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLSAgICB2b2lkIGRlbGV0ZUNv
bXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+
Jik7Ci0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIHZvaWQgY3JlYXRlQ3VzdG9tRmlsdGVy
UHJvZ3JhbShpbnQgaWQsIGNvbnN0IFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7
Ci0gICAgdm9pZCByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCk7Ci0jZW5kaWYKLSAg
ICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZTo6SGFuZGxlJik7Ci0gICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lEKTsKLSAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhXZWJD
b3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OkhhbmRsZSYpOwotICAgIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhXZWJDb3Jl
OjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHJlbW92ZUltYWdlQmFja2lu
ZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKLQogICAgIHZvaWQgY29tbWl0
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYpOworCiAgICAgdm9pZCBzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wpOwogI2lmIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25G
cmFtZSgpOwogI2VuZGlmCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImKTsKIAogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVj
dG9yKTsKICAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NlbmUuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVz
c2FnZXMuaW4KaW5kZXggM2E3NjRmMTNjN2EyZTE0NDYyNjFhZjg2NWI3ZmQ2MDBkMWU3ZTY4My4u
YWMzMDc4Njc4N2QwMGFmZTUxMDZlN2EzOTVjZmQxNjE2ZWE4YTgyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTEsNSArMSw2IEBACiAjCiAjICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyMgICAgQ29weXJpZ2h0IChD
KSAyMDEzIENvbXBhbnkgMTAwLCBJbmMuCiAjCiAjICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICMgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDI2
ICsyMyw5IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IHsKIAog
ICAgIENvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUgc3RhdGUpCiAKLSAgICBDcmVhdGVDb21wb3NpdGluZ0xheWVycyhWZWN0b3I8
dWludDMyX3Q+IGlkcykKLSAgICBEZWxldGVDb21wb3NpdGluZ0xheWVycyhWZWN0b3I8dWludDMy
X3Q+IGlkcykKLQotI2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICBDcmVhdGVDdXN0b21GaWx0
ZXJQcm9ncmFtKGludCBpZCwgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3Jh
bUluZm8pCi0gICAgUmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCi0jZW5kaWYKLSAg
ICBDcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBXZWJLaXQ6OldlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKLSAgICBSZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJf
dCBhdGxhc0lEKQotICAgIENyZWF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQotICAg
IFVwZGF0ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlELCBXZWJLaXQ6OldlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZSkKLSAgICBDbGVhckltYWdlQmFja2luZ0NvbnRlbnRz
KHVpbnQ2NF90IGltYWdlSUQpCi0gICAgUmVtb3ZlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdl
SUQpCi0KICAgICBTZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQotCiAjaWYgRU5BQkxF
KFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIFJlcXVlc3RBbmltYXRpb25GcmFtZSgpCiAj
ZW5kaWYKLQotICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNDY5MmNjODg2MTNiY2I1MDIxNmEwY2ExODE4ODdjODY0
YmRlN2E0NC4uNWNjODJmOTBiN2RiZGY1ZWQxODU1MDcyY2JmNTA2MWJjNDMyM2E5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCkBAIC0yODYsOCArMjg2LDYgQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4g
cHJvdGVjdG9yKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CiAKLSAgICBjcmVhdGVD
b21wb3NpdGluZ0xheWVycygpOwotCiAgICAgaW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVy
SWZOZWVkZWQoKTsKIAogICAgIG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KCk7CkBAIC0yOTksOCArMjk3LDYgQEAgYm9vbCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKICAgICBmbHVzaFBlbmRpbmdJ
bWFnZUJhY2tpbmdDaGFuZ2VzKCk7CiAKLSAgICBkZWxldGVDb21wb3NpdGluZ0xheWVycygpOwot
CiAgICAgaWYgKG1fc2hvdWxkU3luY0ZyYW1lKSB7CiAgICAgICAgIGRpZFN5bmMgPSB0cnVlOwog
CkBAIC0zMTAsOSArMzA2LDcgQEAgYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKICAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29tbWl0Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlKG1fc3RhdGUpKTsKIAotICAgICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmNsZWFy
KCk7Ci0gICAgICAgIG1fc3RhdGUuaW1hZ2VzVG9VcGRhdGUuY2xlYXIoKTsKLQorICAgICAgICBj
bGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMoKTsKICAgICAgICAgbV93YWl0aW5nRm9yVUlQcm9jZXNz
ID0gdHJ1ZTsKICAgICAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsKICAgICB9IGVsc2UK
QEAgLTMyNiwzOCArMzIwLDI0IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIHJldHVybiBkaWRTeW5jOwogfQogCi12b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKQordm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1N0YXRlQ2hhbmdlcygpCiB7Ci0g
ICAgaWYgKG1fbGF5ZXJzVG9DcmVhdGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAg
bV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUubGF5ZXJzVG9VcGRh
dGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmxheWVyc1RvUmVtb3ZlLmNsZWFyKCk7CiAKLSAgICAv
LyBJZiBhIGxheWVyIGdldHMgY3JlYXRlZCBhbmQgZGVsZXRlZCBpbiB0aGUgc2FtZSBjeWNsZSwg
d2UgY2FuIHNpbXBseSByZW1vdmUgaXQgZnJvbSBtX2xheWVyc1RvQ3JlYXRlIGFuZCBtX2xheWVy
c1RvRGVsZXRlLgotICAgIGZvciAoaW50IGkgPSBtX2xheWVyc1RvQ3JlYXRlLnNpemUoKSAtIDE7
IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIHNpemVfdCBpbmRleCA9IG1fbGF5ZXJzVG9EZWxldGUu
ZmluZChtX2xheWVyc1RvQ3JlYXRlW2ldKTsKLSAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5k
KSB7Ci0gICAgICAgICAgICBtX2xheWVyc1RvQ3JlYXRlLnJlbW92ZShpKTsKLSAgICAgICAgICAg
IG1fbGF5ZXJzVG9EZWxldGUucmVtb3ZlKGluZGV4KTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OkNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKG1fbGF5ZXJzVG9DcmVhdGUpKTsKLSAgICBtX2xheWVy
c1RvQ3JlYXRlLmNsZWFyKCk7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotfQotCi12
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKQot
ewotICAgIGlmIChtX2xheWVyc1RvRGVsZXRlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIG1fc3RhdGUuaW1hZ2VzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmltYWdlc1Rv
UmVtb3ZlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5jbGVhcigpOworICAg
IG1fc3RhdGUuaW1hZ2VzVG9DbGVhci5jbGVhcigpOwogCi0gICAgaWYgKG1faXNQdXJnaW5nKSB7
Ci0gICAgICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3Rh
dGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlLmNsZWFyKCk7CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpEZWxldGVDb21wb3NpdGlu
Z0xheWVycyhtX2xheWVyc1RvRGVsZXRlKSk7Ci0gICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVhcigp
OwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRl
LmN1c3RvbUZpbHRlcnNUb1JlbW92ZS5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ojppbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRl
ZCgpCkBAIC00MjgsNyArNDA4LDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNo
ZWNrQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3hpZXMoY29uc3QgRmlsdGVyT3BlcmEKICAgICAgICAg
aWYgKCFjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNsaWVudCgpKSB7CiAgICAgICAgICAgICBj
dXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPnNldENsaWVudCh0aGlzKTsKICAgICAgICAgICAgIG1f
Y3VzdG9tRmlsdGVyUHJvZ3JhbXMuYWRkKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS5nZXQoKSk7
Ci0gICAgICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpDcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eS0+aWQoKSwgY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9ncmFtKCktPnZhbGlk
YXRlZFByb2dyYW1JbmZvKCkpKTsKKyAgICAgICAgICAgIG1fc3RhdGUuY3VzdG9tRmlsdGVyc1Rv
Q3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlk
KCksIGN1c3RvbU9wZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgpLT52YWxpZGF0ZWRQcm9ncmFt
SW5mbygpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgY2xpZW50
IHdhcyBub3QgZGlzY29ubmVjdGVkIHRoZW4gdGhpcyBjb29yZGluYXRvciBtdXN0IGJlIHRoZSBj
bGllbnQgZm9yIGl0LgogICAgICAgICAgICAgQVNTRVJUKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eS0+Y2xpZW50KCkgPT0gdGhpcyk7CkBAIC00NDEsNyArNDIxLDcgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShXZWJDdXN0b21G
aWx0ZXJQcm8KICAgICAvLyBBdCB0aGlzIHRpbWUgdGhlIHNoYWRlciBpcyBub3QgbmVlZGVkIGFu
eW1vcmUsIHNvIHdlIHJlbW92ZSBpdCBmcm9tIG91ciBzZXQgYW5kCiAgICAgLy8gc2VuZCBhIG1l
c3NhZ2UgdG8gdGhlIG90aGVyIHByb2Nlc3MgdG8gZGVsZXRlIGl0LgogICAgIG1fY3VzdG9tRmls
dGVyUHJvZ3JhbXMucmVtb3ZlKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk7Ci0gICAgbV93ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6UmVtb3Zl
Q3VzdG9tRmlsdGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCkpKTsKKyAg
ICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb1JlbW92ZS5hcHBlbmQoY3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3h5LT5pZCgpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpc2Nv
bm5lY3RDdXN0b21GaWx0ZXJQcm9ncmFtcygpCkBAIC00NTUsOCArNDM1LDE5IEBAIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQog
CiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKiBsYXllcikKIHsKKyAgICBpZiAobV9pc1B1cmdpbmcpCisgICAgICAgIHJl
dHVybjsKKwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5ZXItPmlkKCkpOwotICAg
IG1fbGF5ZXJzVG9EZWxldGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKKworICAgIC8vIElmIGEgbGF5
ZXIgZ2V0cyBjcmVhdGVkIGFuZCBkZWxldGVkIGluIHRoZSBzYW1lIGN5Y2xlLCB3ZSBjYW4gc2lt
cGx5IHJlbW92ZSBpdCBmcm9tIGxheWVyc1RvQ3JlYXRlLgorICAgIHNpemVfdCBpbmRleCA9IG1f
c3RhdGUubGF5ZXJzVG9DcmVhdGUuZmluZChsYXllci0+aWQoKSk7CisgICAgaWYgKGluZGV4ICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUucmVtb3ZlKGluZGV4
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc3RhdGUubGF5ZXJzVG9SZW1vdmUu
YXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIApAQCAt
NTU5LDM3ICs1NTAsMjggQEAgUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVJbWFnZUJhY2tpbmcKIAogdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGltYWdlSUQpCiB7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1f
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNy
ZWF0ZUltYWdlQmFja2luZyhpbWFnZUlEKSk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5h
cHBlbmQoaW1hZ2VJRCk7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBQYXNzUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQordm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFj
a2luZ0lEIGltYWdlSUQpCiB7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIFdl
YkNvb3JkaW5hdGVkU3VyZmFjZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4oY29vcmRpbmF0ZWRTdXJmYWNlLmdldCgpKTsKLSAgICBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCF3ZWJDb29yZGlu
YXRlZFN1cmZhY2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1faXNQdXJnaW5nKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3N0YXRlLmlt
YWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFnZUlELCBjb29yZGluYXRlZFN1
cmZhY2UpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNv
bnRhaW5zKGltYWdlSUQpKTsKKyAgICBtX2ltYWdlQmFja2luZ3MucmVtb3ZlKGltYWdlSUQpOwor
CisgICAgbV9zdGF0ZS5pbWFnZXNUb1JlbW92ZS5hcHBlbmQoaW1hZ2VJRCk7CiB9CiAKLXZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlE
LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSkKIHsKLSAgICBtX3Nob3Vs
ZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhpbWFnZUlE
KSk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW1h
Z2VJRCwgc3VyZmFjZSkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKK3ZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQpCiB7Ci0gICAgaWYgKG1faXNQdXJnaW5nKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsK
LSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV9pbWFnZUJhY2tpbmdzLnJlbW92
ZShpbWFnZUlEKTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVJbWFnZUJhY2tpbmcoaW1hZ2VJRCkpOworICAgIG1fc3Rh
dGUuaW1hZ2VzVG9DbGVhci5hcHBlbmQoaW1hZ2VJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdJbWFnZUJhY2tpbmdDaGFuZ2VzKCkKQEAgLTYyOCw3
ICs2MTAsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljcwogICAgIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciogbGF5ZXIgPSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGNsaWVudCk7CiAg
ICAgbGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5h
ZGQobGF5ZXItPmlkKCksIGxheWVyKTsKLSAgICBtX2xheWVyc1RvQ3JlYXRlLmFwcGVuZChsYXll
ci0+aWQoKSk7CisgICAgbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkp
OwogICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOwogICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CkBAIC02NTQsMjEg
KzYzNiwxNiBAQCBib29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQordm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8
Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQogewotICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlKj4oY29vcmRpbmF0ZWRTdXJmYWNlLmdldCgpKTsKLSAgICBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCF3ZWJDb29yZGluYXRlZFN1cmZhY2UtPmNyZWF0
ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV93ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3JlYXRlVXBkYXRl
QXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgbV9zdGF0ZS51
cGRhdGVBdGxhc2VzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGF0bGFzSUQsIHN1cmZh
Y2UpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZVVwZGF0ZUF0
bGFzKHVpbnQzMl90IGF0bGFzSUQpCiB7CiAgICAgaWYgKG1faXNQdXJnaW5nKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6UmVtb3ZlVXBkYXRlQXRsYXMoYXRsYXNJRCkpOworICAgIG1fc3RhdGUudXBk
YXRlQXRsYXNlc1RvUmVtb3ZlLmFwcGVuZChhdGxhc0lEKTsKIH0KIAogV2ViQ29yZTo6RmxvYXRS
ZWN0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IGEyMTc0ZTI5NzMyNmRhZGEwNzA0MGNhNzZmZTc3NTI1MmQ4MTVkM2YuLmM5
NWE1MGFhNjQwZTZiOGViNTJmNDMyZmRjYmQ5NjIwMDAxYjE4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkg
MTAwLCBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDggKzQ4LDggQEAgY2xhc3MgV2Vi
UGFnZTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IDogcHVibGljIExheWVyVHJl
ZUhvc3QsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQKICAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpD
b29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0b3IKLSAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpVcGRhdGVBdGxhc0NsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjpDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpVcGRhdGVBdGxhczo6Q2xp
ZW50CiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkKICNpZiBFTkFC
TEUoQ1NTX1NIQURFUlMpCiAgICAgLCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHlDbGllbnQK
QEAgLTEwOCwxMiArMTA5LDE1IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxl
RmFjdG9yKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2lu
Zzo6Q29vcmRpbmF0b3IKKyAgICAvLyBVcGRhdGVBdGxhczo6Q2xpZW50CisgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IC8qIGlkICovLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVVcGRhdGVBdGxhcyh1aW50MzJfdCAvKiBpZCAqLykgT1ZFUlJJREU7CisKKyAgICAvLyBDb29y
ZGluYXRlZEltYWdlQmFja2luZzo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdl
QmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBP
VkVSUklERTsKLQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRl
ZFN1cmZhY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmco
V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CiAgICAgdm9pZCBm
bHVzaFBlbmRpbmdJbWFnZUJhY2tpbmdDaGFuZ2VzKCk7CiAKICAgICAvLyBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJDbGllbnQKQEAgLTEyNCw5ICsxMjgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGJlZ2luQ29udGVudFVwZGF0
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpG
bGFncywgdWludDMyX3QmIGF0bGFzSUQsIFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAotICAgIC8vIFVwZGF0ZUF0bGFz
Q2xpZW50Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFz
SUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpOwogCiAg
ICAgLy8gR3JhcGhpY3NMYXllckZhY3RvcnkKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllcj4gY3JlYXRlR3JhcGhpY3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2xpZW50KikgT1ZFUlJJREU7CkBAIC0xMzYsOCArMTM3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lQYWdlT3Zlcmxh
eUxheWVyKCk7CiAgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKLSAgICB2b2lk
IGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7Ci0gICAgdm9pZCBkZWxldGVDb21wb3NpdGluZ0xh
eWVycygpOworICAgIHZvaWQgY2xlYXJQZW5kaW5nU3RhdGVDaGFuZ2VzKCk7CiAgICAgdm9pZCBj
YW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgcGVyZm9ybVNjaGVkdWxlZExheWVy
Rmx1c2goKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192391</attachid>
            <date>2013-03-10 16:44:16 -0700</date>
            <delta_ts>2013-03-11 00:17:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130311084020.patch</filename>
            <type>text/plain</type>
            <size>42372</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYzODIxMDBmZmZmYzVl
NjVkNmViNDMwNjViYzQ2MmYxYjY2YzZkMi4uMTQyZGQ2N2I2MzIyZDQxMDQ4MmU0MDdhYzFiN2M0
MzY1NTFmMjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVy
UHJvZ3JhbXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oOgorICAgICAgICAoQ29vcmRpbmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgor
ICAgICAgICAoVXBkYXRlQXRsYXNDbGllbnQpOgorCiAyMDEzLTAzLTEwICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMgc2hv
dWxkIHVzZSBPd25QdHIgZm9yIHBlbmRpbmcgcmVzb3VyY2UgbWFwcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0
NGNiNTMyOWQ0MTdhZTE1MmU4NmNlNjdhZjI1OWUyMTg1YzdjZGQ5Li43ZmY4ODc0YTFlYzliNmRl
MmRlZTU1NmU0NWE5NTgxYzY1ZWZlM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIw
MTMtMDMtMDggIEd3YW5nIFlvb24gSHdhbmcgIDxyeXVtaWVsQGNvbXBhbnkxMDAubmV0PgorCisg
ICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBVbmlmeSBtZXNzYWdlcyByZWxhdGVkIG9iamVj
dCdzIGxpZmVjeWNsZXMgaW50byBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE5MTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMg
Y29kZXMgZm9yIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSBpbgorICAgICAgICBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QsIGV4Y2VwdCBmb3IgYSBmYWN0b3J5IG1ldGhvZC4KKyAgICAgICAgTm93LCBD
b29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMgW2VufGRlXWNvZGVzIENvb3JkaW5hdGVk
U3VyZmFjZSBpdHNlbGYKKyAgICAgICAgdXNpbmcgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzaXRpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1l
bnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNl
KToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6ZGVjb2RlQ29vcmRpbmF0
ZWRTdXJmYWNlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJ
UEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAg
ICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nU3RhdGVDaGFuZ2VzKToK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjaGVja0N1c3RvbUZp
bHRlclByb2dyYW1Qcm94aWVzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVJbWFnZUJhY2tpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnVwZGF0ZUltYWdlQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJJbWFnZUJh
Y2tpbmdDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6cmVtb3ZlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVVcGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlVXBkYXRlQXRsYXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKwogMjAxMy0w
My0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIHRoZSDigJxwcmltYXJ54oCdIHNuYXBzaG90dGVk
IHBsdWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcAppbmRleCBhZTI0NWUzNmZjOTY0OTgyNTUxYmU0ZWM1ZmIxOGZiYTA3OGIx
YjZmLi5mNjRiYzFlNDBkMDFmNDhkMGI0MGNmNzcxZGU1NWFjNzg2Y2ZlNzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApA
QCAtMjczLDYgKzI3MywxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5
ZXJGaWx0ZXJzSWZOZWVkZWQoR3JhcGhpY3NMYXllciogbGF5ZXIsIGNvbgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3lu
Y0N1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3Rh
dGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9D
cmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oc3Rh
dGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLmZpcnN0LCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9D
cmVhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuY3Vz
dG9tRmlsdGVyc1RvUmVtb3ZlLnNpemUoKTsgKytpKQorICAgICAgICByZW1vdmVDdXN0b21GaWx0
ZXJQcm9ncmFtKHN0YXRlLmN1c3RvbUZpbHRlcnNUb1JlbW92ZVtpXSk7Cit9CisKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjppbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewpAQCAtNTI1LDYgKzUzNCwxNSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVGlsZXNJZk5lZWRlZChHcmFwaGlj
c0xheWVyKiBsYXllciwgY29uc3QgQwogICAgIH0KIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZSYgc3RhdGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS51cGRhdGVBdGxh
c2VzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0ZVVwZGF0ZUF0bGFzKHN0YXRl
LnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5maXJzdCwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3Jl
YXRlW2ldLnNlY29uZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLnVwZGF0
ZUF0bGFzZXNUb1JlbW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlVXBkYXRlQXRsYXMo
c3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNl
cy5jb250YWlucyhhdGxhc0lEKSk7CkBAIC01MzcsNiArNTU1LDIxIEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogICAg
IG1fc3VyZmFjZXMucmVtb3ZlKGF0bGFzSUQpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
JiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvQ3Jl
YXRlLnNpemUoKTsgKytpKQorICAgICAgICBjcmVhdGVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2Vz
VG9DcmVhdGVbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNU
b1JlbW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlSW1hZ2VCYWNraW5nKHN0YXRlLmlt
YWdlc1RvUmVtb3ZlW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1h
Z2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIHVwZGF0ZUltYWdlQmFja2luZyhzdGF0
ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0uc2Vjb25k
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9DbGVhci5zaXpl
KCk7ICsraSkKKyAgICAgICAgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhzdGF0ZS5pbWFnZXNU
b0NsZWFyW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiB7CiAgICAgQVNT
RVJUKCFtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwpAQCAtNjE1LDE0ICs2NDgs
MjAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUoY29u
c3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogICAgIC8vIFNpbmNlIHRoZSBmcmFtZSBoYXMg
bm93IGJlZW4gcmVuZGVyZWQsIHdlIGNhbiBzYWZlbHkgdW5sb2NrIHRoZSBhbmltYXRpb25zIHVu
dGlsIHRoZSBuZXh0IGxheW91dC4KICAgICBzZXRBbmltYXRpb25zTG9ja2VkKGZhbHNlKTsKIAor
ICAgIGNyZWF0ZUxheWVycyhzdGF0ZS5sYXllcnNUb0NyZWF0ZSk7CisgICAgZGVsZXRlTGF5ZXJz
KHN0YXRlLmxheWVyc1RvUmVtb3ZlKTsKKwogICAgIGlmIChzdGF0ZS5yb290Q29tcG9zaXRpbmdM
YXllciAhPSBtX3Jvb3RMYXllcklEKQogICAgICAgICBzZXRSb290TGF5ZXJJRChzdGF0ZS5yb290
Q29tcG9zaXRpbmdMYXllcik7CiAKICAgICBpZiAoc3RhdGUuYmFja2dyb3VuZENvbG9yICE9IG1f
YmFja2dyb3VuZENvbG9yKQogICAgICAgICBzZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGUuYmFja2dy
b3VuZENvbG9yKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9V
cGRhdGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIHVwZGF0ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFn
ZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0uc2Vjb25kKTsKKyAg
ICBzeW5jSW1hZ2VCYWNraW5ncyhzdGF0ZSk7CisgICAgc3luY1VwZGF0ZUF0bGFzZXMoc3RhdGUp
OworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMo
c3RhdGUpOworI2VuZGlmCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmxheWVy
c1RvVXBkYXRlLnNpemUoKTsgKytpKQogICAgICAgICBzZXRMYXllclN0YXRlKHN0YXRlLmxheWVy
c1RvVXBkYXRlW2ldLmZpcnN0LCBzdGF0ZS5sYXllcnNUb1VwZGF0ZVtpXS5zZWNvbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmlu
ZGV4IDY4ZmM2MTlmMTQ4MWE4ZTNlOTRhY2U4ZDM0ODA1OGRkNTI4NGM0OGIuLmZlODVmOGY4ZmFh
MDEzMmUyNTEwNDhhYzExMTliZjYyMTNiMmJiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTEsNSArMSw2IEBACiAvKgog
ICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KIAog
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtODMsMjMgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
b21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwogCi0gICAg
dm9pZCBjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLSAg
ICB2b2lkIGRlbGV0ZUxheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwot
Ci0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIHZvaWQgaW5qZWN0Q2FjaGVkQ3VzdG9tRmls
dGVyUHJvZ3JhbXMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3Q7Ci0gICAg
dm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8mKTsKLSAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlk
KTsKLSNlbmRpZgotCi0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lE
LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOwotICAgIHZvaWQgcmVtb3ZlVXBkYXRl
QXRsYXModWludDMyX3QgYXRsYXNJRCk7Ci0gICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KTsK
LSAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7CiAgICAgdm9pZCBzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wpOwotICAgIHZvaWQgc2V0
QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91
bmQoYm9vbCBlbmFibGUpIHsgbV9zZXREcmF3c0JhY2tncm91bmQgPSBlbmFibGU7IH0KIAogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEwOCw2ICs5Myw4IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJ
RCk7CisgICAgdm9pZCBjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJ
RD4mKTsKKyAgICB2b2lkIGRlbGV0ZUxheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXll
cklEPiYpOwogICAgIHZvaWQgc2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQsIGNvbnN0
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCBzZXRMYXllckNoaWxk
cmVuSWZOZWVkZWQoR3JhcGhpY3NMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
clN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlc0lmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwpAQCAtMTI0LDYgKzExMSwyNSBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVk
KEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwog
CisgICAgdm9pZCBzeW5jVXBkYXRlQXRsYXNlcyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmKTsKKyAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1
aW50MzJfdCBhdGxhc0lEKTsKKworICAgIHZvaWQgc3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KTsK
KyAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7CisgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgdm9pZCBzeW5jQ3VzdG9tRmls
dGVyUHJvZ3JhbXMoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBp
bmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlk
LCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOworICAgIHZvaWQgcmVtb3ZlQ3VzdG9t
RmlsdGVyUHJvZ3JhbShpbnQgaWQpOworI2VuZGlmCisKKyAgICB2b2lkIHNldEJhY2tncm91bmRD
b2xvcihjb25zdCBDb2xvciYpOworCiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXJCeUlEKENvb3Jk
aW5hdGVkTGF5ZXJJRCBpZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2xheWVycy5jb250YWlu
cyhpZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZS5oCmluZGV4IDQxNTBmMjZiMmE0ZWViZTE3ODcwZDNjNTRmZWVkMDRlYWUxZGJlZjEu
LjU4Y2MwMzc2OTJiODhlZmZiMmRlMDNlM2NkNjk0ZmZiMzUwZmE0YjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTQyLDYg
KzQyLDEwIEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIK
KyNlbmRpZgorCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAjaW5jbHVkZSAiR3JhcGhpY3NT
dXJmYWNlVG9rZW4uaCIKICNlbmRpZgpAQCAtMTc2LDggKzE4MCwyMiBAQCBzdHJ1Y3QgQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlIHsKICAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZTsKICAgICBJbnRS
ZWN0IGNvdmVyZWRSZWN0OwogCisgICAgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbGF5ZXJz
VG9DcmVhdGU7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb29yZGluYXRlZExheWVySUQsIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPiA+IGxheWVyc1RvVXBkYXRlOworICAgIFZlY3RvcjxD
b29yZGluYXRlZExheWVySUQ+IGxheWVyc1RvUmVtb3ZlOworCisgICAgVmVjdG9yPENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdlc1RvQ3JlYXRlOworICAgIFZlY3RvcjxDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEPiBpbWFnZXNUb1JlbW92ZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gPiBp
bWFnZXNUb1VwZGF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRD4gaW1h
Z2VzVG9DbGVhcjsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDMyX3QgLyogYXRsYXNJRCAq
LywgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+IHVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsK
KyAgICBWZWN0b3I8dWludDMyX3QgLyogYXRsYXNJRCAqLz4gdXBkYXRlQXRsYXNlc1RvUmVtb3Zl
OworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDMy
X3QgLyogRmlsdGVySUQgKi8sIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvPiA+IGN1c3RvbUZpbHRl
cnNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGN1c3RvbUZpbHRlcnNUb1JlbW92ZTsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5kZXggMTI4YmFiZTI5
OGY2NmNiYzI3NjljZjZmZjhlYTk4MjI5ZDUxNTU3Ny4uNDM5MTljNmM1NGM4ZGFlYzM0MTU3Nzlh
ZTI3MThmMDMzN2NkMmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgiCiAK
KyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzLDkgKzExNCw4IEBAIHZv
aWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSgpCiAKICAgICBtX25hdGl2ZUltYWdl
UHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAotICAgIC8vIElm
IHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIHRyeSBhZ2FpbiBpbiB0aGUgbmV4dCB1cGRhdGUu
Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlk
KCksIG1fc3VyZmFjZSk7Ci0gICAgbV9pc0RpcnR5ID0gIXN1Y2Nlc3M7CisgICAgbV9jb29yZGlu
YXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFjZSk7CisgICAgbV9pc0RpcnR5
ID0gZmFsc2U7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnJlbGVhc2VTdXJm
YWNlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcuaAppbmRleCAzNjllMjM5ZjliMGEyOThjZDlmY2NlNDIzZGE0ZDJmMWU1YTIx
YTc2Li43OTMzZDY5ZDNkYzJiZWI3ZGE4NWFmMzFkY2FmMjlkMzZmOTBiOWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29vcmRpbmF0b3IgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJbWFnZUJhY2tpbmco
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRh
dGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDM2NGYwNjg3MTA4MmI1OGZjYmQ4M2EwZWYz
MTQ1MGJlNDgwMDg0OGIuLmFmNmZjNzkyMjNmZTYzZWRlMWRlMzYwM2QxNzZiMzYzNTdiY2RiNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcApAQCAtMjMsNiArMjMsNyBA
QAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0zOCw5ICszOSw3
IEBAIFVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50LCBp
bnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1CiAgICAgSW50U2l6ZSBzaXplID0gbmV4dFBvd2Vy
T2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikpOwogICAgIG1fc3VyZmFjZSA9IENv
b3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzKTsKIAotICAgIC8vIEZJWE1FOiBD
dXJyZW50bHksIGlmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIFVwZGF0ZUF0bGFzIGdpdmVz
IHVwIGRyYXdpbmcgYW55dGhpbmcgaW1wbGljaXRseS4KLSAgICBpZiAoIW1fY2xpZW50LT5jcmVh
dGVVcGRhdGVBdGxhcyhtX0lELCBtX3N1cmZhY2UpKQotICAgICAgICBtX3N1cmZhY2UuY2xlYXIo
KTsKKyAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9zdXJmYWNlKTsKIH0K
IAogVXBkYXRlQXRsYXM6On5VcGRhdGVBdGxhcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVB
dGxhcy5oCmluZGV4IDQ4YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0ZTMzMGZkZGIxNmQ3OGIuLjVk
ZDVkMjYwNmYyMWVmNjc4NGQwZGVmYjc0ZGZhNjdkOGZjZDVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9VcGRhdGVBdGxhcy5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEludFBvaW50OwogCiBj
bGFzcyBVcGRhdGVBdGxhc0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGNyZWF0
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBh
dGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkgPSAwOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggYzc4Y2IxYjA1ZWIzN2M4OGY4YWYyYTEzNjZlNTU1Zjk0MDkzN2Y5ZC4uZDliNWE4M2E2
MDI1NDIyMWQxYWIwMzM4ZDk1NDc4NDVlZGZlOWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMDEwLDYgKzEwMTAs
NDIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRpbGVDcmVhdGlvbkluZm8+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBUaWxlQ3JlYXQKICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRD
b2RlcjxUaWxlQ3JlYXRpb25JbmZvPjo6ZGVjb2RlKGRlY29kZXIsIHVwZGF0ZUluZm8pOwogfQog
CitzdGF0aWMgdm9pZCBlbmNvZGVDb29yZGluYXRlZFN1cmZhY2UoQXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiYgc3VyZmFjZSkKK3sKKyAg
ICBib29sIGlzVmFsaWRTdXJmYWNlID0gZmFsc2U7CisgICAgaWYgKCFzdXJmYWNlKSB7CisgICAg
ICAgIGVuY29kZXIgPDwgaXNWYWxpZFN1cmZhY2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5hdGVkU3VyZmFjZSA9IHN0YXRp
Y19jYXN0PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KHN1cmZhY2UuZ2V0KCkpOworICAgIFdlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAod2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAgICAgaXNWYWxpZFN1cmZhY2UgPSB0
cnVlOworCisgICAgZW5jb2RlciA8PCBpc1ZhbGlkU3VyZmFjZTsKKworICAgIGlmIChpc1ZhbGlk
U3VyZmFjZSkKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7Cit9CisKK3N0YXRpYyBib29sIGRl
Y29kZUNvb3JkaW5hdGVkU3VyZmFjZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+JiBzdXJmYWNlKQoreworICAgIGJvb2wgaXNWYWxpZFN1cmZhY2U7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkU3VyZmFjZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghaXNWYWxpZFN1cmZhY2UpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3Vy
ZmFjZSA9IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBo
aWNzU3RhdGUmIHN0YXRlKQogewogICAgIGVuY29kZXIgPDwgc3RhdGUucm9vdENvbXBvc2l0aW5n
TGF5ZXI7CkBAIC0xMDE3LDI0ICsxMDUzLDM4IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjCiAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5zY3JvbGxQb3NpdGlvbjsKICAgICBlbmNvZGVyIDw8IHN0YXRl
LmNvbnRlbnRzU2l6ZTsKICAgICBlbmNvZGVyIDw8IHN0YXRlLmNvdmVyZWRSZWN0OworCisgICAg
ZW5jb2RlciA8PCBzdGF0ZS5sYXllcnNUb0NyZWF0ZTsKICAgICBlbmNvZGVyIDw8IHN0YXRlLmxh
eWVyc1RvVXBkYXRlOworICAgIGVuY29kZXIgPDwgc3RhdGUubGF5ZXJzVG9SZW1vdmU7CisKKyAg
ICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvQ3JlYXRlOworICAgIGVuY29kZXIgPDwgc3RhdGUu
aW1hZ2VzVG9SZW1vdmU7CiAKICAgICAvLyBXZSBuZWVkIHRvIGVuY29kZSBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZSByaWdodCBhZnRlciBpdCdzIGNyZWF0aW9uLgogICAgIC8vIFRoYXQn
cyB3aHkgd2UgY2Fubm90IHVzZSBzaW1wbGUgc3RkOjpwYWlyIGVuY29kZXIuCiAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvVXBkYXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0uZmlyc3Q7
CisgICAgICAgIGVuY29kZUNvb3JkaW5hdGVkU3VyZmFjZShlbmNvZGVyLCBzdGF0ZS5pbWFnZXNU
b1VwZGF0ZVtpXS5zZWNvbmQpOworICAgIH0KKyAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1Rv
Q2xlYXI7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+IFN1cmZhY2VVcGRhdGVQYWly
VmVjdG9yOwotICAgIFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5lbmQoKTsKLSAgICBmb3IgKFN1cmZhY2VVcGRhdGVQYWly
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0YXRlLmltYWdlc1RvVXBkYXRlLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotCi0gICAgICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSogd2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4o
aXQtPnNlY29uZC5nZXQoKSk7Ci0gICAgICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxl
IGhhbmRsZTsKLSAgICAgICAgaWYgKCF3ZWJDb29yZGluYXRlZFN1cmZhY2UtPmNyZWF0ZUhhbmRs
ZShoYW5kbGUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5zaXplKCkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ld
LmZpcnN0OworICAgICAgICBlbmNvZGVDb29yZGluYXRlZFN1cmZhY2UoZW5jb2Rlciwgc3RhdGUu
dXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLnNlY29uZCk7CisgICAgfQorICAgIGVuY29kZXIgPDwg
c3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlOwogCi0gICAgICAgIGVuY29kZXIgPDwgaXQtPmZp
cnN0OwotICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGUuY3VzdG9tRmlsdGVy
c1RvQ3JlYXRlLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5jdXN0
b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0
ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uZmlyc3Q7CisgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLnNlY29uZDsKICAgICB9CisgICAgZW5jb2RlciA8
PCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmU7CisjZW5kaWYKIH0KIAogYm9vbCBBcmd1bWVu
dENvZGVyPENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCkBAIC0xMDU0LDI2ICsx
MTA0LDc4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0ZS5jb3ZlcmVkUmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGUubGF5ZXJzVG9DcmVhdGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmxheWVyc1RvVXBkYXRlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5sYXll
cnNUb1JlbW92ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGUuaW1hZ2VzVG9DcmVhdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmltYWdlc1RvUmVtb3ZlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgdWludDY0X3Qgc2l6ZU9mSW1hZ2VzVG9VcGRhdGU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzaXplT2ZJbWFnZXNUb1VwZGF0ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplT2ZJbWFnZXNUb1VwZGF0
ZTsgaSsrKSB7CisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IHNpemVPZkltYWdlc1RvVXBk
YXRlOyArK2kpIHsKICAgICAgICAgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlSUQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQorICAgICAgICBSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBpZiAoIWRlY29kZUNvb3JkaW5hdGVk
U3VyZmFjZShkZWNvZGVyLCBzdXJmYWNlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlID0gV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKTsKICAgICAgICAgc3RhdGUuaW1hZ2VzVG9VcGRhdGUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGltYWdlSUQsIHN1cmZhY2UucmVsZWFzZSgpKSk7CiAgICAg
fQogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5pbWFnZXNUb0NsZWFyKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDY0X3Qgc2l6ZU9mVXBkYXRlQXRsYXNlc1RvQ3Jl
YXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZU9mVXBkYXRlQXRsYXNlc1RvQ3JlYXRl
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8
IHNpemVPZlVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsgKytpKSB7CisgICAgICAgIHVpbnQzMl90IGF0
bGFzSUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXRsYXNJRCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3Vy
ZmFjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVDb29yZGluYXRlZFN1cmZhY2UoZGVjb2Rlciwgc3Vy
ZmFjZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3RhdGUudXBkYXRl
QXRsYXNlc1RvQ3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihhdGxhc0lELCBzdXJmYWNlLnJl
bGVhc2UoKSkpOworICAgIH0KKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUudXBkYXRl
QXRsYXNlc1RvUmVtb3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFKENT
U19TSEFERVJTKQorICAgIHVpbnQ2NF90IHNpemVPZkN1c3RvbUZpbHRlcnNUb0NyZWF0ZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemVPZkN1c3RvbUZpbHRlcnNUb0NyZWF0ZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplT2ZD
dXN0b21GaWx0ZXJzVG9DcmVhdGU7ICsraSkgeworICAgICAgICB1aW50MzJfdCBmaWx0ZXJJRDsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWx0ZXJJRCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIGZpbHRlckluZm87Cisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVySW5mbykpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoZmlsdGVySUQsIGZpbHRlckluZm8pKTsKKyAgICB9CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBmN2UzMWQz
ODQwZTdhZmYyODc3ZjQ0ZDhkMDIwMmMzYzQzODY3ODQzLi4xZDY1ODBhYTMyMWUxZGNiZGRlYzYx
OTI3OTM5NDY1NzZmYTVmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTYyLDM3ICs2Myw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OmRpc3BhdGNoVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0CiAgICAgbV9z
Y2VuZS0+YXBwZW5kVXBkYXRlKGZ1bmN0aW9uKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgY29uc3Qg
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0ZUF0bGFzLCBt
X3NjZW5lLmdldCgpLCBhdGxhc0lELCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5k
bGUpKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZVVw
ZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcywgbV9zY2VuZS5nZXQo
KSwgYXRsYXNJRCkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpj
cmVhdGVDb21wb3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYg
aWRzKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlTGF5ZXJzLCBtX3NjZW5lLmdldCgpLCBpZHMpKTsKLX0KLQotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3QgVmVj
dG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGlkcykKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5k
KCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlbGV0ZUxheWVycywgbV9zY2VuZS5nZXQoKSwg
aWRzKSk7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi12b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKLXsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUN1
c3RvbUZpbHRlclByb2dyYW0sIG1fc2NlbmUuZ2V0KCksIGlkKSk7Ci19Ci12b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwg
Y29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvKQotewotICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlQ3VzdG9tRmls
dGVyUHJvZ3JhbSwgbV9zY2VuZS5nZXQoKSwgaWQsIHByb2dyYW1JbmZvKSk7Ci19Ci0jZW5kaWYK
LQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0Q29vcmRpbmF0ZWRH
cmFwaGljc1N0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgZ3JhcGhpY3NTdGF0
ZSkKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmNvbW1pdFNjZW5lU3RhdGUsIG1fc2NlbmUuZ2V0KCksIGdyYXBoaWNzU3RhdGUpKTsKQEAgLTEw
MiwyNiArNzIsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRD
b29yZGluYXRlZEdyYXBoaWNzU3RhdGUoY29uc3QgQ29vcmRpbgogI2VuZGlmCiB9CiAKLXZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGlu
YXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJhY2tpbmcsIG1fc2NlbmUuZ2V0
KCksIGltYWdlSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgY29u
c3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkKLXsKLSAgICBkaXNwYXRj
aFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2lu
ZywgbV9zY2VuZS5nZXQoKSwgaW1hZ2VJRCwgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUo
aGFuZGxlKSkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjbGVh
ckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkK
LXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNs
ZWFySW1hZ2VCYWNraW5nQ29udGVudHMsIG1fc2NlbmUuZ2V0KCksIGltYWdlSUQpKTsKLX0KLQot
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlSW1hZ2VCYWNraW5nKENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShi
aW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUltYWdlQmFja2luZywgbV9zY2Vu
ZS5nZXQoKSwgaW1hZ2VJRCkpOwotfQotCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5OjpzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQogewogICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0QW5pbWF0aW9uc0xvY2tlZCwg
bV9zY2VuZS5nZXQoKSwgbG9ja2VkKSk7CkBAIC0xNjMsMTEgKzExMyw2IEBAIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiAgICAgbV9kcmF3
aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpQdXJnZUJhY2tpbmdTdG9yZXMoKSwgbV9kcmF3aW5nQXJlYVByb3h5
LT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKLXsKLSAgICBkaXNw
YXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEJhY2tncm91bmRD
b2xvciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0
IEludFNpemUmIG9mZnNldCkKIHsKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvbW1pdFNj
cm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+
cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmgKaW5kZXggNDQ4NmEwZjJlZDZmYTBhYzVjMzI0YjQ5MzBlMGUwYTIzOTVhNGZkYS4u
Zjc2NGE5NTMyZTMxOTFlNTZlZTYxYzI2YTk1NzBkYjVhNDExZWI1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJ
bmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQxLDkgKzQyLDcgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllclN0YXRlOwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlOwotY2xhc3MgU3Vy
ZmFjZVVwZGF0ZUluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsMjUgKzU1LDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSgp
OwogCiAgICAgLy8gTWVzc2FnZXMgRnJvbSBDb29yZGluYXRlZExheWVyVHJlZUhvc3QKLSAgICB2
b2lkIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29yZGlu
YXRlZExheWVySUQ+Jik7Ci0gICAgdm9pZCBkZWxldGVDb21wb3NpdGluZ0xheWVycyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEPiYpOwotI2lmIEVOQUJMRShDU1NfU0hB
REVSUykKLSAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkLCBjb25zdCBX
ZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwotICAgIHZvaWQgcmVtb3ZlQ3VzdG9t
RmlsdGVyUHJvZ3JhbShpbnQgaWQpOwotI2VuZGlmCi0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxh
cyh1aW50MzJfdCBhdGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSYp
OwotICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7Ci0gICAgdm9p
ZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7
Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKLSAgICB2b2lk
IGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCk7Ci0KICAgICB2b2lkIGNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKKwogICAgIHZvaWQg
c2V0QW5pbWF0aW9uc0xvY2tlZChib29sKTsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUUpCiAgICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTsKICNlbmRpZgotICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKICAgICB2b2lk
IHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CiAgICAgV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBjb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKSBjb25zdCB7
IHJldHVybiBtX3NjZW5lLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDNhNzY0ZjEz
YzdhMmUxNDQ2MjYxYWY4NjViN2ZkNjAwZDFlN2U2ODMuLmFjMzA3ODY3ODdkMDBhZmU1MTA2ZTdh
Mzk1Y2ZkMTYxNmVhOGE4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xLDUgKzEsNiBAQAog
IwogIyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisjICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5j
LgogIwogIyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAjICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwyNiArMjMsOSBAQCBtZXNzYWdlcyAtPiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAKICAgICBDb21taXRDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHN0YXRlKQogCi0g
ICAgQ3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoVmVjdG9yPHVpbnQzMl90PiBpZHMpCi0gICAgRGVs
ZXRlQ29tcG9zaXRpbmdMYXllcnMoVmVjdG9yPHVpbnQzMl90PiBpZHMpCi0KLSNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCi0gICAgQ3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQsIFdlYkNv
cmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1JbmZvKQotICAgIFJlbW92ZUN1c3Rv
bUZpbHRlclByb2dyYW0oaW50IGlkKQotI2VuZGlmCi0gICAgQ3JlYXRlVXBkYXRlQXRsYXModWlu
dDMyX3QgYXRsYXNJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5k
bGUpCi0gICAgUmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKLSAgICBDcmVhdGVJ
bWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKLSAgICBVcGRhdGVJbWFnZUJhY2tpbmcodWlu
dDY0X3QgaW1hZ2VJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5k
bGUpCi0gICAgQ2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyh1aW50NjRfdCBpbWFnZUlEKQotICAg
IFJlbW92ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQotCiAgICAgU2V0QW5pbWF0aW9u
c0xvY2tlZChib29sIGxvY2tlZCkKLQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKICAgICBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQogI2VuZGlmCi0KLSAgICBTZXRCYWNrZ3Jv
dW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDQ2OTJjYzg4NjEzYmNiNTAyMTZhMGNhMTgxODg3Yzg2NGJkZTdhNDQuLmY5ZjhmZTlhMzc4NGVk
ZGE5NDUxYzQxMmY3MDhkOWFkMDliYjUxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtMjg2LDggKzI4Niw2
IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3RlY3RvcihtX2lzRmx1c2hpbmdM
YXllckNoYW5nZXMsIHRydWUpOwogCi0gICAgY3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKLQog
ICAgIGluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVkKCk7CiAKICAgICBtX3Jv
b3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwpAQCAtMjk5
LDggKzI5Nyw2IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdM
YXllckNoYW5nZXMoKQogCiAgICAgZmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpOwog
Ci0gICAgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKLQogICAgIGlmIChtX3Nob3VsZFN5bmNG
cmFtZSkgewogICAgICAgICBkaWRTeW5jID0gdHJ1ZTsKIApAQCAtMzEwLDkgKzMwNiw3IEBAIGJv
b2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQog
CiAgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OkNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShtX3N0YXRlKSk7CiAKLSAg
ICAgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5jbGVhcigpOwotICAgICAgICBtX3N0YXRlLmlt
YWdlc1RvVXBkYXRlLmNsZWFyKCk7Ci0KKyAgICAgICAgY2xlYXJQZW5kaW5nU3RhdGVDaGFuZ2Vz
KCk7CiAgICAgICAgIG1fd2FpdGluZ0ZvclVJUHJvY2VzcyA9IHRydWU7CiAgICAgICAgIG1fc2hv
dWxkU3luY0ZyYW1lID0gZmFsc2U7CiAgICAgfSBlbHNlCkBAIC0zMjYsMzggKzMyMCwyNCBAQCBi
b29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkK
ICAgICByZXR1cm4gZGlkU3luYzsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMoKQogewotICAgIGlmIChtX2xheWVyc1RvQ3JlYXRl
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUu
Y2xlYXIoKTsKKyAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0
ZS5sYXllcnNUb1JlbW92ZS5jbGVhcigpOwogCi0gICAgLy8gSWYgYSBsYXllciBnZXRzIGNyZWF0
ZWQgYW5kIGRlbGV0ZWQgaW4gdGhlIHNhbWUgY3ljbGUsIHdlIGNhbiBzaW1wbHkgcmVtb3ZlIGl0
IGZyb20gbV9sYXllcnNUb0NyZWF0ZSBhbmQgbV9sYXllcnNUb0RlbGV0ZS4KLSAgICBmb3IgKGlu
dCBpID0gbV9sYXllcnNUb0NyZWF0ZS5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAg
ICBzaXplX3QgaW5kZXggPSBtX2xheWVyc1RvRGVsZXRlLmZpbmQobV9sYXllcnNUb0NyZWF0ZVtp
XSk7Ci0gICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgbV9sYXll
cnNUb0NyZWF0ZS5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBtX2xheWVyc1RvRGVsZXRlLnJlbW92
ZShpbmRleCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5j
bGVhcigpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUuY2xlYXIoKTsKKyAgICBtX3N0YXRl
LmltYWdlc1RvVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NsZWFyLmNsZWFy
KCk7CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpDcmVhdGVDb21wb3NpdGluZ0xheWVycyhtX2xheWVyc1RvQ3JlYXRlKSk7Ci0g
ICAgbV9sYXllcnNUb0NyZWF0ZS5jbGVhcigpOwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1
ZTsKLX0KKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1f
c3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlLmNsZWFyKCk7CiAKLXZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygpCi17Ci0gICAgaWYgKG1fbGF5
ZXJzVG9EZWxldGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9pc1B1
cmdpbmcpIHsKLSAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVhcigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXllcnMobV9sYXllcnNUb0RlbGV0
ZSkpOwotICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKLSAgICBtX3Nob3VsZFN5bmNGcmFt
ZSA9IHRydWU7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIG1fc3RhdGUuY3VzdG9tRmls
dGVyc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUu
Y2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW5p
dGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQpAQCAtNDI4LDcgKzQwOCw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Q
cm94aWVzKGNvbnN0IEZpbHRlck9wZXJhCiAgICAgICAgIGlmICghY3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3h5LT5jbGllbnQoKSkgewogICAgICAgICAgICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5
LT5zZXRDbGllbnQodGhpcyk7CiAgICAgICAgICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmFk
ZChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkuZ2V0KCkpOwotICAgICAgICAgICAgbV93ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3JlYXRlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCksIGN1c3RvbU9w
ZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgpLT52YWxpZGF0ZWRQcm9ncmFtSW5mbygpKSk7Cisg
ICAgICAgICAgICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpLCBjdXN0b21PcGVyYXRpb24tPnZh
bGlkYXRlZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3JhbUluZm8oKSkpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgLy8gSWYgdGhlIGNsaWVudCB3YXMgbm90IGRpc2Nvbm5lY3RlZCB0
aGVuIHRoaXMgY29vcmRpbmF0b3IgbXVzdCBiZSB0aGUgY2xpZW50IGZvciBpdC4KICAgICAgICAg
ICAgIEFTU0VSVChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNsaWVudCgpID09IHRoaXMpOwpA
QCAtNDQxLDcgKzQyMSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVD
dXN0b21GaWx0ZXJQcm9ncmFtUHJveHkoV2ViQ3VzdG9tRmlsdGVyUHJvCiAgICAgLy8gQXQgdGhp
cyB0aW1lIHRoZSBzaGFkZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLCBzbyB3ZSByZW1vdmUgaXQg
ZnJvbSBvdXIgc2V0IGFuZAogICAgIC8vIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBvdGhlciBwcm9j
ZXNzIHRvIGRlbGV0ZSBpdC4KICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLnJlbW92ZShjdXN0
b21GaWx0ZXJQcm9ncmFtUHJveHkpOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oY3Vz
dG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpKSk7CisgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJz
VG9SZW1vdmUuYXBwZW5kKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+aWQoKSk7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3Jh
bXMoKQpAQCAtNDU1LDggKzQzNSwxOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIAogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7
CisgICAgaWYgKG1faXNQdXJnaW5nKQorICAgICAgICByZXR1cm47CisKICAgICBtX3JlZ2lzdGVy
ZWRMYXllcnMucmVtb3ZlKGxheWVyLT5pZCgpKTsKLSAgICBtX2xheWVyc1RvRGVsZXRlLmFwcGVu
ZChsYXllci0+aWQoKSk7CisKKyAgICAvLyBJZiBhIGxheWVyIGdldHMgY3JlYXRlZCBhbmQgZGVs
ZXRlZCBpbiB0aGUgc2FtZSBjeWNsZSwgd2UgY2FuIHNpbXBseSByZW1vdmUgaXQgZnJvbSBsYXll
cnNUb0NyZWF0ZS4KKyAgICBzaXplX3QgaW5kZXggPSBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLmZp
bmQobGF5ZXItPmlkKCkpOworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBt
X3N0YXRlLmxheWVyc1RvQ3JlYXRlLnJlbW92ZShpbmRleCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3N0YXRlLmxheWVyc1RvUmVtb3ZlLmFwcGVuZChsYXllci0+aWQoKSk7CiAg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKQEAgLTU1OSwyNiArNTUwLDE3IEBAIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Y3JlYXRlSW1hZ2VCYWNraW5nCiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewotICAg
IG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJ
RCkpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9DcmVhdGUuYXBwZW5kKGltYWdlSUQpOwogfQogCi1i
b29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
IGNvb3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBQYXNzUmVm
UHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQogewotICAgIG1fc2hv
dWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3Jk
aW5hdGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KGNvb3Jk
aW5hdGVkU3VyZmFjZS5nZXQoKSk7Ci0gICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUg
aGFuZGxlOwotICAgIGlmICghd2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFu
ZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW1hZ2VJRCwgY29vcmRpbmF0ZWRTdXJmYWNlKSk7Ci0g
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVh
ckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkK
IHsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q2xlYXJJbWFnZUJhY2tpbmdD
b250ZW50cyhpbWFnZUlEKSk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NsZWFyLmFwcGVuZChpbWFn
ZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCkBAIC01ODcsOSArNTY5LDkg
QEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFja2luZyhDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWcKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KG1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlEKSk7Ci0gICAgbV9zaG91bGRTeW5jRnJh
bWUgPSB0cnVlOwogICAgIG1faW1hZ2VCYWNraW5ncy5yZW1vdmUoaW1hZ2VJRCk7Ci0gICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6UmVt
b3ZlSW1hZ2VCYWNraW5nKGltYWdlSUQpKTsKKworICAgIG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUu
YXBwZW5kKGltYWdlSUQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1
c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpCkBAIC02MjgsNyArNjEwLDcgQEAgUGFzc093
blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBo
aWNzTGF5ZXIoR3JhcGhpY3MKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0g
bmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGllbnQpOwogICAgIGxheWVyLT5zZXRDb29y
ZGluYXRvcih0aGlzKTsKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyLT5pZCgpLCBs
YXllcik7Ci0gICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOworICAgIG1f
c3RhdGUubGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBsYXllci0+c2V0
TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsK
ICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwpAQCAtNjU0LDIxICs2MzYsMTYgQEAgYm9vbCBM
YXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlVXBkYXRl
QXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNv
b3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVV
cGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFj
ZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQogewotICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSogd2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4o
Y29vcmRpbmF0ZWRTdXJmYWNlLmdldCgpKTsKLSAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6Okhh
bmRsZSBoYW5kbGU7Ci0gICAgaWYgKCF3ZWJDb29yZGluYXRlZFN1cmZhY2UtPmNyZWF0ZUhhbmRs
ZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3JlYXRlVXBkYXRlQXRsYXMo
YXRsYXNJRCwgaGFuZGxlKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgbV9zdGF0ZS51cGRhdGVB
dGxhc2VzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGF0bGFzSUQsIGNvb3JkaW5hdGVk
U3VyZmFjZSkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlVXBk
YXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKIHsKICAgICBpZiAobV9pc1B1cmdpbmcpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVVcGRhdGVBdGxhcyhhdGxhc0lEKSk7CisgICAgbV9zdGF0
ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUuYXBwZW5kKGF0bGFzSUQpOwogfQogCiBXZWJDb3JlOjpG
bG9hdFJlY3QgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp2aXNpYmxlQ29udGVudHNSZWN0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKaW5kZXggYTIxNzRlMjk3MzI2ZGFkYTA3MDQwY2E3NmZlNzc1MjUyZDgxNWQz
Zi4uMGZiM2NlZjMyZTljMzRiZjUxZTg1YjViZWQxOGE2MzMxOWRjNWYxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29t
cGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTEwLDcgKzExMSw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Q29vcmRpbmF0b3IKICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJbWFnZUJhY2tp
bmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
SW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhX
ZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKIApAQCAtMTI1LDcg
KzEyNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllclN0YXRlKFdlYkNv
cmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
U3RhdGUmKTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xpZW50Ci0gICAgdmlydHVhbCBib29sIGNy
ZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0
ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRT
dXJmYWNlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVp
bnQzMl90IGF0bGFzSUQpOwogCiAgICAgLy8gR3JhcGhpY3NMYXllckZhY3RvcnkKQEAgLTEzNiw4
ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOwog
ICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoKTsKICAgICBib29sIGZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpOwotICAgIHZvaWQgY3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKLSAg
ICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdT
dGF0ZUNoYW5nZXMoKTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7CiAgICAg
dm9pZCBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNj
aGVkdWxlZExheWVyRmx1c2goKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192412</attachid>
            <date>2013-03-11 00:17:37 -0700</date>
            <delta_ts>2013-03-11 16:51:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130311161337.patch</filename>
            <type>text/plain</type>
            <size>42307</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBkNjM0MGRhZGJiOTc2
OTZkMDJlMjYxYmZlOWU4ZjVjNzc3YjM3Ni4uZGE3NTYxZTRlYTQzOWQ2YjNmY2QxNmE4MDk1ODcy
YTFmYzk0NmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVy
UHJvZ3JhbXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oOgorICAgICAgICAoQ29vcmRpbmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgor
ICAgICAgICAoVXBkYXRlQXRsYXNDbGllbnQpOgorCiAyMDEzLTAzLTEwICBNYXR0IEZhbGtlbmhh
Z2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgaW5lcnQgc3Vi
dHJlZXMgbmVlZGVkIGZvciBtb2RhbCA8ZGlhbG9nPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMzYzNmY2VjMjQ5
ZGJjOTZhNjcxNTQxMThjNDczZjMzNWE5NjU5MTguLjk2MTFhMzM5MTE3ODc2NzIwNjVjNDllOGZl
N2NhOGU4MzFjYWQyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMy0wMy0wOCAg
R3dhbmcgWW9vbiBId2FuZyAgPHJ5dW1pZWxAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29v
cmRpbmF0ZWQgR3JhcGhpY3M6IFVuaWZ5IG1lc3NhZ2VzIHJlbGF0ZWQgb2JqZWN0J3MgbGlmZWN5
Y2xlcyBpbnRvIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTkxOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBjb2RlcyBmb3Ig
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlIGluCisgICAgICAgIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dCwgZXhjZXB0IGZvciBhIGZhY3RvcnkgbWV0aG9kLgorICAgICAgICBOb3csIENvb3JkaW5hdGVk
R3JhcGhpY3NBcmd1bWVudENvZGVycyBbZW58ZGVdY29kZXMgQ29vcmRpbmF0ZWRTdXJmYWNlIGl0
c2VsZgorICAgICAgICB1c2luZyBXZWJDb29yZGluYXRlZFN1cmZhY2UuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChDb3JlSVBDOjplbmNvZGVDb29yZGluYXRlZFN1cmZhY2UpOgorICAgICAg
ICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGVDb29yZGluYXRlZFN1cmZhY2Up
OgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNv
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNoZWNrQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3hpZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJl
bW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdlQmFja2luZ0NvbnRl
bnRzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVJ
bWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVVcGRhdGVBdGxhcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorCiAyMDEzLTAzLTEwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2U6OnNj
YWxlZFNuYXBzaG90V2l0aE9wdGlvbnMgcmV0dXJucyBhIGNvcnJ1cHQgc25hcHNob3QgaWYgeW91
IHJlcXVlc3QgYSByZWN0IGxhcmdlciB0aGFuIHRoZSBGcmFtZVZpZXfigJlzIHNpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
aW5kZXggYWUyNDVlMzZmYzk2NDk4MjU1MWJlNGVjNWZiMThmYmEwNzhiMWI2Zi4uZjY0YmMxZTQw
ZDAxZjQ4ZDBiNDBjZjc3MWRlNTVhYzc4NmNmZTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTI3Myw2ICsyNzMs
MTUgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyRmlsdGVyc0lmTmVl
ZGVkKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBjb24KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19T
SEFERVJTKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNDdXN0b21GaWx0ZXJQ
cm9ncmFtcyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQoreworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLnNpemUoKTsg
KytpKQorICAgICAgICBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKHN0YXRlLmN1c3RvbUZpbHRl
cnNUb0NyZWF0ZVtpXS5maXJzdCwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLnNlY29u
ZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb1Jl
bW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShzdGF0
ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmVbaV0pOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6aW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
bHRlcnMuc2l6ZSgpOyArK2kpIHsKQEAgLTUyNSw2ICs1MzQsMTUgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVRpbGVzSWZOZWVkZWQoR3JhcGhpY3NMYXllciogbGF5ZXIs
IGNvbnN0IEMKICAgICB9CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5j
VXBkYXRlQXRsYXNlcyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLnNp
emUoKTsgKytpKQorICAgICAgICBjcmVhdGVVcGRhdGVBdGxhcyhzdGF0ZS51cGRhdGVBdGxhc2Vz
VG9DcmVhdGVbaV0uZmlyc3QsIHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5zZWNvbmQp
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1v
dmUuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZVVwZGF0ZUF0bGFzKHN0YXRlLnVwZGF0ZUF0
bGFzZXNUb1JlbW92ZVtpXSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpj
cmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gc3VyZmFjZSkKIHsKICAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29udGFpbnMoYXRs
YXNJRCkpOwpAQCAtNTM3LDYgKzU1NSwyMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKICAgICBtX3N1cmZhY2VzLnJl
bW92ZShhdGxhc0lEKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNJ
bWFnZUJhY2tpbmdzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb0NyZWF0ZS5zaXplKCk7ICsr
aSkKKyAgICAgICAgY3JlYXRlSW1hZ2VCYWNraW5nKHN0YXRlLmltYWdlc1RvQ3JlYXRlW2ldKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9SZW1vdmUuc2l6ZSgp
OyArK2kpCisgICAgICAgIHJlbW92ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFnZXNUb1JlbW92ZVtp
XSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvVXBkYXRlLnNp
emUoKTsgKytpKQorICAgICAgICB1cGRhdGVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2VzVG9VcGRh
dGVbaV0uZmlyc3QsIHN0YXRlLmltYWdlc1RvVXBkYXRlW2ldLnNlY29uZCk7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvQ2xlYXIuc2l6ZSgpOyArK2kpCisgICAg
ICAgIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoc3RhdGUuaW1hZ2VzVG9DbGVhcltpXSk7Cit9
CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQogewogICAgIEFTU0VSVCghbV9pbWFnZUJh
Y2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKQEAgLTYxNSwxNCArNjQ4LDIwIEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZSYKICAgICAvLyBTaW5jZSB0aGUgZnJhbWUgaGFzIG5vdyBiZWVuIHJlbmRl
cmVkLCB3ZSBjYW4gc2FmZWx5IHVubG9jayB0aGUgYW5pbWF0aW9ucyB1bnRpbCB0aGUgbmV4dCBs
YXlvdXQuCiAgICAgc2V0QW5pbWF0aW9uc0xvY2tlZChmYWxzZSk7CiAKKyAgICBjcmVhdGVMYXll
cnMoc3RhdGUubGF5ZXJzVG9DcmVhdGUpOworICAgIGRlbGV0ZUxheWVycyhzdGF0ZS5sYXllcnNU
b1JlbW92ZSk7CisKICAgICBpZiAoc3RhdGUucm9vdENvbXBvc2l0aW5nTGF5ZXIgIT0gbV9yb290
TGF5ZXJJRCkKICAgICAgICAgc2V0Um9vdExheWVySUQoc3RhdGUucm9vdENvbXBvc2l0aW5nTGF5
ZXIpOwogCiAgICAgaWYgKHN0YXRlLmJhY2tncm91bmRDb2xvciAhPSBtX2JhY2tncm91bmRDb2xv
cikKICAgICAgICAgc2V0QmFja2dyb3VuZENvbG9yKHN0YXRlLmJhY2tncm91bmRDb2xvcik7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvVXBkYXRlLnNpemUoKTsg
KytpKQotICAgICAgICB1cGRhdGVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0u
Zmlyc3QsIHN0YXRlLmltYWdlc1RvVXBkYXRlW2ldLnNlY29uZCk7CisgICAgc3luY0ltYWdlQmFj
a2luZ3Moc3RhdGUpOworICAgIHN5bmNVcGRhdGVBdGxhc2VzKHN0YXRlKTsKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgc3luY0N1c3RvbUZpbHRlclByb2dyYW1zKHN0YXRlKTsKKyNlbmRp
ZgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5sYXllcnNUb1VwZGF0ZS5zaXpl
KCk7ICsraSkKICAgICAgICAgc2V0TGF5ZXJTdGF0ZShzdGF0ZS5sYXllcnNUb1VwZGF0ZVtpXS5m
aXJzdCwgc3RhdGUubGF5ZXJzVG9VcGRhdGVbaV0uc2Vjb25kKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA2OGZjNjE5ZjE0
ODFhOGUzZTk0YWNlOGQzNDgwNThkZDUyODRjNDhiLi5mZTg1ZjhmOGZhYTAxMzJlMjUxMDQ4YWMx
MTE5YmY2MjEzYjJiYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTgzLDIzICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0
ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKIAotICAgIHZvaWQgY3JlYXRlTGF5
ZXJzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+Jik7Ci0gICAgdm9pZCBkZWxldGVM
YXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLQotI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKLSAgICB2b2lkIGluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1zKGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJik7
Ci0gICAgdm9pZCByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCk7Ci0jZW5kaWYKLQot
ICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+KTsKLSAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90
IGF0bGFzSUQpOwotICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7Ci0gICAgdm9pZCBjbGVh
ckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZv
aWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogICAgIHZv
aWQgc2V0QW5pbWF0aW9uc0xvY2tlZChib29sKTsKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZW5hYmxl
KSB7IG1fc2V0RHJhd3NCYWNrZ3JvdW5kID0gZW5hYmxlOyB9CiAKICNpZiBFTkFCTEUoUkVRVUVT
VF9BTklNQVRJT05fRlJBTUUpCkBAIC0xMDgsNiArOTMsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExheWVySUQpOworICAgIHZvaWQg
Y3JlYXRlTGF5ZXJzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+Jik7CisgICAgdm9p
ZCBkZWxldGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKICAgICB2
b2lkIHNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBjb25zdCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5ZXJDaGlsZHJlbklmTmVlZGVkKEdy
YXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAg
IHZvaWQgdXBkYXRlVGlsZXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiwgY29uc3QgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKQEAgLTEyNCw2ICsxMTEsMjUgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChHcmFwaGljc0xheWVy
KiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAorICAgIHZvaWQgc3lu
Y1VwZGF0ZUF0bGFzZXMoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9p
ZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4pOworICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJ
RCk7CisKKyAgICB2b2lkIHN5bmNJbWFnZUJhY2tpbmdzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQpOworICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdm9pZCBjbGVh
ckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOworICAgIHZv
aWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOworCisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgIHZvaWQgc3luY0N1c3RvbUZpbHRlclByb2dyYW1zKGNv
bnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOworICAgIHZvaWQgaW5qZWN0Q2FjaGVkQ3Vz
dG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3Q7
CisgICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgQ3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8mKTsKKyAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0o
aW50IGlkKTsKKyNlbmRpZgorCisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImKTsKKwogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyQnlJRChDb29yZGluYXRlZExheWVySUQg
aWQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9sYXllcnMuY29udGFpbnMoaWQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRl
eCA0MTUwZjI2YjJhNGVlYmUxNzg3MGQzYzU0ZmVlZDA0ZWFlMWRiZWYxLi41OGNjMDM3NjkyYjg4
ZWZmYjJkZTAzZTNjZDY5NGZmYjM1MGZhNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC00Miw2ICs0MiwxMCBAQAogI2lu
Y2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQorI2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCisjZW5kaWYKKwogI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgi
CiAjZW5kaWYKQEAgLTE3Niw4ICsxODAsMjIgQEAgc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSB7CiAgICAgSW50U2l6ZSBjb250ZW50c1NpemU7CiAgICAgSW50UmVjdCBjb3ZlcmVkUmVj
dDsKIAorICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IGxheWVyc1RvQ3JlYXRlOwogICAg
IFZlY3RvcjxzdGQ6OnBhaXI8Q29vcmRpbmF0ZWRMYXllcklELCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXJTdGF0ZT4gPiBsYXllcnNUb1VwZGF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRMYXll
cklEPiBsYXllcnNUb1JlbW92ZTsKKworICAgIFZlY3RvcjxDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEPiBpbWFnZXNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJ
RD4gaW1hZ2VzVG9SZW1vdmU7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb29yZGluYXRlZEltYWdl
QmFja2luZ0lELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiA+ID4gaW1hZ2VzVG9VcGRhdGU7
CisgICAgVmVjdG9yPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdlc1RvQ2xlYXI7CisK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQzMl90IC8qIGF0bGFzSUQgKi8sIFJlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+ID4gPiB1cGRhdGVBdGxhc2VzVG9DcmVhdGU7CisgICAgVmVjdG9yPHVp
bnQzMl90IC8qIGF0bGFzSUQgKi8+IHVwZGF0ZUF0bGFzZXNUb1JlbW92ZTsKKworI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQzMl90IC8qIEZpbHRlcklE
ICovLCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbz4gPiBjdXN0b21GaWx0ZXJzVG9DcmVhdGU7Cisg
ICAgVmVjdG9yPHVpbnQzMl90PiBjdXN0b21GaWx0ZXJzVG9SZW1vdmU7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCmluZGV4IDEyOGJhYmUyOThmNjZjYmMyNzY5Y2Y2
ZmY4ZWE5ODIyOWQ1MTU1NzcuLjQzOTE5YzZjNTRjOGRhZWMzNDE1Nzc5YWUyNzE4ZjAzMzdjZDJh
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICNpbmNsdWRlICJDb29yZGluYXRlZEltYWdlQmFja2luZy5oIgogCisjaW5jbHVkZSAiQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMyw5ICsxMTQsOCBAQCB2b2lkIENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nOjp1cGRhdGUoKQogCiAgICAgbV9uYXRpdmVJbWFnZVB0ciA9IG1faW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAKLSAgICAvLyBJZiBzZW5kaW5nIHRoZSBt
ZXNzYWdlIGZhaWxzLCB0cnkgYWdhaW4gaW4gdGhlIG5leHQgdXBkYXRlLgotICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fY29vcmRpbmF0b3ItPnVwZGF0ZUltYWdlQmFja2luZyhpZCgpLCBtX3N1cmZhY2Up
OwotICAgIG1faXNEaXJ0eSA9ICFzdWNjZXNzOworICAgIG1fY29vcmRpbmF0b3ItPnVwZGF0ZUlt
YWdlQmFja2luZyhpZCgpLCBtX3N1cmZhY2UpOworICAgIG1faXNEaXJ0eSA9IGZhbHNlOwogfQog
CiB2b2lkIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpyZWxlYXNlU3VyZmFjZUlmTmVlZGVkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgK
aW5kZXggMzY5ZTIzOWY5YjBhMjk4Y2Q5ZmNjZTQyM2RhNGQyZjFlNWEyMWE3Ni4uNzkzM2Q2OWQz
ZGMyYmViN2RhODVhZjMxZGNhZjI5ZDM2ZjkwYjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIGNsYXNzIENvb3JkaW5hdG9yIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgPSAw
OwotICAgICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCkgPSAwOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0
ZUF0bGFzLmNwcAppbmRleCAzNjRmMDY4NzEwODJiNThmY2JkODNhMGVmMzE0NTBiZTQ4MDA4NDhi
Li5hZjZmYzc5MjIzZmU2M2VkZTFkZTM2MDNkMTc2YjM2MzU3YmNkYjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRl
QXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMzgsOSArMzksNyBAQCBVcGRhdGVBdGxh
czo6VXBkYXRlQXRsYXMoVXBkYXRlQXRsYXNDbGllbnQqIGNsaWVudCwgaW50IGRpbWVuc2lvbiwg
Q29vcmRpbmF0ZWRTdQogICAgIEludFNpemUgc2l6ZSA9IG5leHRQb3dlck9mVHdvKEludFNpemUo
ZGltZW5zaW9uLCBkaW1lbnNpb24pKTsKICAgICBtX3N1cmZhY2UgPSBDb29yZGluYXRlZFN1cmZh
Y2U6OmNyZWF0ZShzaXplLCBmbGFncyk7CiAKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBpZiBz
ZW5kaW5nIHRoZSBtZXNzYWdlIGZhaWxzLCBVcGRhdGVBdGxhcyBnaXZlcyB1cCBkcmF3aW5nIGFu
eXRoaW5nIGltcGxpY2l0bHkuCi0gICAgaWYgKCFtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMo
bV9JRCwgbV9zdXJmYWNlKSkKLSAgICAgICAgbV9zdXJmYWNlLmNsZWFyKCk7CisgICAgbV9jbGll
bnQtPmNyZWF0ZVVwZGF0ZUF0bGFzKG1fSUQsIG1fc3VyZmFjZSk7CiB9CiAKIFVwZGF0ZUF0bGFz
Ojp+VXBkYXRlQXRsYXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaAppbmRleCA0
OGE2YmY4NDRhNDkwZjdmZDJjMzlhMDQyNGUzMzBmZGRiMTZkNzhiLi41ZGQ1ZDI2MDZmMjFlZjY3
ODRkMGRlZmI3NGRmYTY3ZDhmY2Q1ZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRs
YXMuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBJbnRQb2ludDsKIAogY2xhc3MgVXBkYXRlQXRs
YXNDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVVcGRhdGVBdGxhcyh1
aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVVw
ZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGM3OGNiMWIw
NWViMzdjODhmOGFmMmExMzY2ZTU1NWY5NDA5MzdmOWQuLmQ5YjVhODNhNjAyNTQyMjFkMWFiMDMz
OGQ5NTQ3ODQ1ZWRmZTlmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTAxMCw2ICsxMDEwLDQyIEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxUaWxlQ3JlYXRpb25JbmZvPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgVGlsZUNyZWF0CiAgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8VGlsZUNyZWF0
aW9uSW5mbz46OmRlY29kZShkZWNvZGVyLCB1cGRhdGVJbmZvKTsKIH0KIAorc3RhdGljIHZvaWQg
ZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mIHN1cmZhY2UpCit7CisgICAgYm9vbCBpc1ZhbGlk
U3VyZmFjZSA9IGZhbHNlOworICAgIGlmICghc3VyZmFjZSkgeworICAgICAgICBlbmNvZGVyIDw8
IGlzVmFsaWRTdXJmYWNlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXZWJDb29y
ZGluYXRlZFN1cmZhY2UqPihzdXJmYWNlLmdldCgpKTsKKyAgICBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKHdlYkNvb3JkaW5hdGVkU3VyZmFjZS0+Y3JlYXRl
SGFuZGxlKGhhbmRsZSkpCisgICAgICAgIGlzVmFsaWRTdXJmYWNlID0gdHJ1ZTsKKworICAgIGVu
Y29kZXIgPDwgaXNWYWxpZFN1cmZhY2U7CisKKyAgICBpZiAoaXNWYWxpZFN1cmZhY2UpCisgICAg
ICAgIGVuY29kZXIgPDwgaGFuZGxlOworfQorCitzdGF0aWMgYm9vbCBkZWNvZGVDb29yZGluYXRl
ZFN1cmZhY2UoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiYgc3VyZmFjZSkKK3sKKyAgICBib29sIGlzVmFsaWRTdXJmYWNlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXNWYWxpZFN1cmZhY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWlzVmFsaWRTdXJmYWNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFdlYkNv
b3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN1cmZhY2UgPSBXZWJDb29y
ZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpOworICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0
ZSkKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRlLnJvb3RDb21wb3NpdGluZ0xheWVyOwpAQCAtMTAx
NywyNCArMTA1MywzOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgYwogICAgIGVuY29kZXIgPDwg
c3RhdGUuc2Nyb2xsUG9zaXRpb247CiAgICAgZW5jb2RlciA8PCBzdGF0ZS5jb250ZW50c1NpemU7
CiAgICAgZW5jb2RlciA8PCBzdGF0ZS5jb3ZlcmVkUmVjdDsKKworICAgIGVuY29kZXIgPDwgc3Rh
dGUubGF5ZXJzVG9DcmVhdGU7CiAgICAgZW5jb2RlciA8PCBzdGF0ZS5sYXllcnNUb1VwZGF0ZTsK
KyAgICBlbmNvZGVyIDw8IHN0YXRlLmxheWVyc1RvUmVtb3ZlOworCisgICAgZW5jb2RlciA8PCBz
dGF0ZS5pbWFnZXNUb0NyZWF0ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvUmVtb3Zl
OwogCiAgICAgLy8gV2UgbmVlZCB0byBlbmNvZGUgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5k
bGUgcmlnaHQgYWZ0ZXIgaXQncyBjcmVhdGlvbi4KICAgICAvLyBUaGF0J3Mgd2h5IHdlIGNhbm5v
dCB1c2Ugc2ltcGxlIHN0ZDo6cGFpciBlbmNvZGVyLgogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHN0YXRlLmltYWdlc1RvVXBkYXRlLnNpemUoKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5zaXplKCk7ICsraSkgeworICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvVXBkYXRlW2ldLmZpcnN0OworICAgICAgICBlbmNv
ZGVDb29yZGluYXRlZFN1cmZhY2UoZW5jb2Rlciwgc3RhdGUuaW1hZ2VzVG9VcGRhdGVbaV0uc2Vj
b25kKTsKKyAgICB9CisgICAgZW5jb2RlciA8PCBzdGF0ZS5pbWFnZXNUb0NsZWFyOwogCi0gICAg
dHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0
cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gPiBTdXJmYWNlVXBkYXRlUGFpclZlY3RvcjsKLSAgICBT
dXJmYWNlVXBkYXRlUGFpclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gc3RhdGUuaW1hZ2Vz
VG9VcGRhdGUuZW5kKCk7Ci0gICAgZm9yIChTdXJmYWNlVXBkYXRlUGFpclZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLQotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KGl0LT5zZWNvbmQuZ2V0
KCkpOwotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgIGlmICghd2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihz
dGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5zaXplKCk7ICsraSkgeworICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5maXJzdDsKKyAgICAg
ICAgZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGVuY29kZXIsIHN0YXRlLnVwZGF0ZUF0bGFzZXNU
b0NyZWF0ZVtpXS5zZWNvbmQpOworICAgIH0KKyAgICBlbmNvZGVyIDw8IHN0YXRlLnVwZGF0ZUF0
bGFzZXNUb1JlbW92ZTsKIAotICAgICAgICBlbmNvZGVyIDw8IGl0LT5maXJzdDsKLSAgICAgICAg
ZW5jb2RlciA8PCBoYW5kbGU7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIGVuY29kZXIg
PDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5zaXpl
KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3Jl
YXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuY3VzdG9tRmlsdGVy
c1RvQ3JlYXRlW2ldLmZpcnN0OworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmN1c3RvbUZpbHRl
cnNUb0NyZWF0ZVtpXS5zZWNvbmQ7CiAgICAgfQorICAgIGVuY29kZXIgPDwgc3RhdGUuY3VzdG9t
RmlsdGVyc1RvUmVtb3ZlOworI2VuZGlmCiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQpAQCAtMTA1NCwyNiArMTEwNCw3OCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgQwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuY292ZXJl
ZFJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRlLmxheWVyc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0ZS5sYXllcnNUb1VwZGF0ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUubGF5ZXJzVG9SZW1vdmUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmlt
YWdlc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0ZS5pbWFnZXNUb1JlbW92ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHVpbnQ2NF90IHNpemVPZkltYWdlc1RvVXBkYXRlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZU9mSW1hZ2VzVG9VcGRhdGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBm
b3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZU9mSW1hZ2VzVG9VcGRhdGU7IGkrKykgeworICAg
IGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplT2ZJbWFnZXNUb1VwZGF0ZTsgKytpKSB7CiAg
ICAgICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRDsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpbWFnZUlEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFj
ZT4gc3VyZmFjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVDb29yZGluYXRlZFN1cmZhY2UoZGVjb2Rl
ciwgc3VyZmFjZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgUmVmUHRy
PENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSA9IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3Jl
YXRlKGhhbmRsZSk7CiAgICAgICAgIHN0YXRlLmltYWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihpbWFnZUlELCBzdXJmYWNlLnJlbGVhc2UoKSkpOwogICAgIH0KIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGUuaW1hZ2VzVG9DbGVhcikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHVpbnQ2NF90IHNpemVPZlVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNpemVPZlVwZGF0ZUF0bGFzZXNUb0NyZWF0ZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplT2ZVcGRhdGVB
dGxhc2VzVG9DcmVhdGU7ICsraSkgeworICAgICAgICB1aW50MzJfdCBhdGxhc0lEOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0bGFzSUQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2U7CisgICAgICAg
IGlmICghZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGRlY29kZXIsIHN1cmZhY2UpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXRsYXNJRCwgc3VyZmFjZS5yZWxlYXNlKCkpKTsKKyAg
ICB9CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAg
ICB1aW50NjRfdCBzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVhdGU7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVhdGUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZU9mQ3VzdG9tRmlsdGVyc1Rv
Q3JlYXRlOyArK2kpIHsKKyAgICAgICAgdWludDMyX3QgZmlsdGVySUQ7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZmlsdGVySUQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBmaWx0ZXJJbmZvOworICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGZpbHRlckluZm8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZp
bHRlcklELCBmaWx0ZXJJbmZvKSk7CisgICAgfQorCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggZjdlMzFkMzg0MGU3YWZmMjg3N2Y0
NGQ4ZDAyMDJjM2M0Mzg2Nzg0My4uMWQ2NTgwYWEzMjFlMWRjYmRkZWM2MTkyNzkzOTQ2NTc2ZmE1
ZmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdo
dCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Miwz
NyArNjMsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkaXNwYXRjaFVw
ZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdAogICAgIG1fc2NlbmUtPmFwcGVuZFVw
ZGF0ZShmdW5jdGlvbik7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVk
U3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVVcGRhdGVBdGxhcywgbV9zY2VuZS5nZXQoKSwg
YXRsYXNJRCwgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkpOwotfQotCi12
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lEKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cmVtb3ZlVXBkYXRlQXRsYXMsIG1fc2NlbmUuZ2V0KCksIGF0bGFzSUQpKTsK
LX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlQ29tcG9zaXRp
bmdMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGlkcykKLXsKLSAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVy
cywgbV9zY2VuZS5nZXQoKSwgaWRzKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRl
ZExheWVySUQ+JiBpZHMpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpkZWxldGVMYXllcnMsIG1fc2NlbmUuZ2V0KCksIGlkcykpOwotfQotCi0j
aWYgRU5BQkxFKENTU19TSEFERVJTKQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpCi17Ci0gICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9n
cmFtLCBtX3NjZW5lLmdldCgpLCBpZCkpOwotfQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQsIGNvbnN0IEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5k
KCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0sIG1f
c2NlbmUuZ2V0KCksIGlkLCBwcm9ncmFtSW5mbykpOwotfQotI2VuZGlmCi0KIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIGdyYXBoaWNzU3RhdGUpCiB7CiAgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0
YXRlLCBtX3NjZW5lLmdldCgpLCBncmFwaGljc1N0YXRlKSk7CkBAIC0xMDIsMjYgKzcyLDYgQEAg
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlKGNvbnN0IENvb3JkaW4KICNlbmRpZgogfQogCi12b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlEKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNraW5nLCBtX3NjZW5lLmdldCgpLCBpbWFnZUlEKSk7
Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnVwZGF0ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIGNvbnN0IFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgm
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVJbWFnZUJhY2tpbmcsIG1fc2NlbmUuZ2V0
KCksIGltYWdlSUQsIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSkpKTsKLX0K
LQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y2xlYXJJbWFnZUJhY2tpbmdD
b250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjbGVhckltYWdlQmFja2lu
Z0NvbnRlbnRzLCBtX3NjZW5lLmdldCgpLCBpbWFnZUlEKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVJbWFnZUJhY2tpbmcsIG1fc2NlbmUuZ2V0KCksIGltYWdl
SUQpKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QW5pbWF0
aW9uc0xvY2tlZChib29sIGxvY2tlZCkKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEFuaW1hdGlvbnNMb2NrZWQsIG1fc2NlbmUuZ2V0KCks
IGxvY2tlZCkpOwpAQCAtMTYzLDExICsxMTMsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+
cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6UHVyZ2VCYWNraW5nU3RvcmVzKCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdl
SUQoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmlu
ZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRCYWNrZ3JvdW5kQ29sb3IsIG1fc2NlbmUu
Z2V0KCksIGNvbG9yKSk7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZz
ZXQpCiB7CiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb21taXRTY3JvbGxPZmZzZXQobGF5
ZXJJRCwgb2Zmc2V0KSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCmluZGV4
IDQ0ODZhMGYyZWQ2ZmEwYWM1YzMyNGI0OTMwZTBlMGEyMzk1YTRmZGEuLmY3NjRhOTUzMmUzMTkx
ZTU2ZWU2MWMyNmE5NTcwZGI1YTQxMWViNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgogCiAgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC00MSw5ICs0Miw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZTsK
IGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZTsKLWNsYXNzIFN1cmZhY2VVcGRhdGVJbmZv
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDI1ICs1NSwxMiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKTsKIAogICAgIC8vIE1l
c3NhZ2VzIEZyb20gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ci0gICAgdm9pZCBjcmVhdGVDb21w
b3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEPiYp
OwotICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgdm9p
ZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8mKTsKLSAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0o
aW50IGlkKTsKLSNlbmRpZgotICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRs
YXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKLSAgICB2b2lkIHJl
bW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpOwotICAgIHZvaWQgY3JlYXRlSW1hZ2VC
YWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZvaWQgdXBk
YXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0
IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJik7Ci0gICAgdm9pZCBjbGVhckltYWdlQmFj
a2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZv
aWQgcmVtb3ZlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQp
OwotCiAgICAgdm9pZCBjb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoY29uc3QgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisKICAgICB2b2lkIHNldEFuaW1hdGlvbnNM
b2NrZWQoYm9vbCk7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIHZv
aWQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCk7CiAjZW5kaWYKLSAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCiAgICAgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOwogICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZSogY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkgY29uc3QgeyByZXR1cm4gbV9zY2Vu
ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYTc2NGYxM2M3YTJlMTQ0NjI2MWFm
ODY1YjdmZDYwMGQxZTdlNjgzLi5hYzMwNzg2Nzg3ZDAwYWZlNTEwNmU3YTM5NWNmZDE2MTZlYThh
ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw1ICsxLDYgQEAKICMKICMgICAgQ29weXJp
Z2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorIyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KICMKICMgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogIyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjIsMjYgKzIzLDkgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkgewogCiAgICAgQ29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSBzdGF0ZSkKIAotICAgIENyZWF0ZUNvbXBv
c2l0aW5nTGF5ZXJzKFZlY3Rvcjx1aW50MzJfdD4gaWRzKQotICAgIERlbGV0ZUNvbXBvc2l0aW5n
TGF5ZXJzKFZlY3Rvcjx1aW50MzJfdD4gaWRzKQotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQot
ICAgIENyZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkLCBXZWJDb3JlOjpDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbykKLSAgICBSZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFt
KGludCBpZCkKLSNlbmRpZgotICAgIENyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQs
IFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQotICAgIFJlbW92
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCi0gICAgQ3JlYXRlSW1hZ2VCYWNraW5nKHVp
bnQ2NF90IGltYWdlSUQpCi0gICAgVXBkYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQs
IFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlKQotICAgIENsZWFy
SW1hZ2VCYWNraW5nQ29udGVudHModWludDY0X3QgaW1hZ2VJRCkKLSAgICBSZW1vdmVJbWFnZUJh
Y2tpbmcodWludDY0X3QgaW1hZ2VJRCkKLQogICAgIFNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCBs
b2NrZWQpCi0KICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgUmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkKICNlbmRpZgotCi0gICAgU2V0QmFja2dyb3VuZENvbG9yKFdlYkNv
cmU6OkNvbG9yIGNvbG9yKQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA0NjkyY2M4ODYxM2Jj
YjUwMjE2YTBjYTE4MTg4N2M4NjRiZGU3YTQ0Li5kOWFmZjIzMGI5NjBiNDg3ZjZjMTY5OGVjMWZi
OWFlMGQyNTQzZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI4Niw4ICsyODYsNiBAQCBib29sIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAgIFRl
bXBvcmFyeUNoYW5nZTxib29sPiBwcm90ZWN0b3IobV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzLCB0
cnVlKTsKIAotICAgIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7Ci0KICAgICBpbml0aWFsaXpl
Um9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOwogCiAgICAgbV9yb290TGF5ZXItPmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKQEAgLTI5OSw4ICsyOTcsNiBAQCBi
b29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkK
IAogICAgIGZsdXNoUGVuZGluZ0ltYWdlQmFja2luZ0NoYW5nZXMoKTsKIAotICAgIGRlbGV0ZUNv
bXBvc2l0aW5nTGF5ZXJzKCk7Ci0KICAgICBpZiAobV9zaG91bGRTeW5jRnJhbWUpIHsKICAgICAg
ICAgZGlkU3luYyA9IHRydWU7CiAKQEAgLTMxMCw5ICszMDYsNyBAQCBib29sIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogICAgICAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDb21t
aXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUobV9zdGF0ZSkpOwogCi0gICAgICAgIG1fc3RhdGUu
bGF5ZXJzVG9VcGRhdGUuY2xlYXIoKTsKLSAgICAgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5j
bGVhcigpOwotCisgICAgICAgIGNsZWFyUGVuZGluZ1N0YXRlQ2hhbmdlcygpOwogICAgICAgICBt
X3dhaXRpbmdGb3JVSVByb2Nlc3MgPSB0cnVlOwogICAgICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9
IGZhbHNlOwogICAgIH0gZWxzZQpAQCAtMzI2LDM4ICszMjAsMjQgQEAgYm9vbCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgcmV0dXJuIGRp
ZFN5bmM7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVDb21wb3Np
dGluZ0xheWVycygpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5n
U3RhdGVDaGFuZ2VzKCkKIHsKLSAgICBpZiAobV9sYXllcnNUb0NyZWF0ZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAg
bV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUubGF5ZXJzVG9SZW1v
dmUuY2xlYXIoKTsKIAotICAgIC8vIElmIGEgbGF5ZXIgZ2V0cyBjcmVhdGVkIGFuZCBkZWxldGVk
IGluIHRoZSBzYW1lIGN5Y2xlLCB3ZSBjYW4gc2ltcGx5IHJlbW92ZSBpdCBmcm9tIG1fbGF5ZXJz
VG9DcmVhdGUgYW5kIG1fbGF5ZXJzVG9EZWxldGUuCi0gICAgZm9yIChpbnQgaSA9IG1fbGF5ZXJz
VG9DcmVhdGUuc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgc2l6ZV90IGluZGV4
ID0gbV9sYXllcnNUb0RlbGV0ZS5maW5kKG1fbGF5ZXJzVG9DcmVhdGVbaV0pOwotICAgICAgICBp
ZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIG1fbGF5ZXJzVG9DcmVhdGUucmVt
b3ZlKGkpOwotICAgICAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5yZW1vdmUoaW5kZXgpOwotICAg
ICAgICB9Ci0gICAgfQorICAgIG1fc3RhdGUuaW1hZ2VzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBt
X3N0YXRlLmltYWdlc1RvUmVtb3ZlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0
ZS5jbGVhcigpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9DbGVhci5jbGVhcigpOwogCi0gICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3Jl
YXRlQ29tcG9zaXRpbmdMYXllcnMobV9sYXllcnNUb0NyZWF0ZSkpOwotICAgIG1fbGF5ZXJzVG9D
cmVhdGUuY2xlYXIoKTsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci19CisgICAgbV9z
dGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLnVwZGF0ZUF0
bGFzZXNUb1JlbW92ZS5jbGVhcigpOwogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKQotewotICAgIGlmIChtX2xheWVyc1RvRGVsZXRlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1faXNQdXJnaW5nKSB7Ci0gICAg
ICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OkRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKG1fbGF5ZXJzVG9EZWxldGUpKTsKLSAgICBtX2xh
eWVyc1RvRGVsZXRlLmNsZWFyKCk7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOworI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5j
bGVhcigpOworICAgIG1fc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlLmNsZWFyKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmluaXRpYWxpemVSb290Q29t
cG9zaXRpbmdMYXllcklmTmVlZGVkKCkKQEAgLTQyOCw3ICs0MDgsNyBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Y2hlY2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyhjb25zdCBG
aWx0ZXJPcGVyYQogICAgICAgICBpZiAoIWN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+Y2xpZW50
KCkpIHsKICAgICAgICAgICAgIGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+c2V0Q2xpZW50KHRo
aXMpOwogICAgICAgICAgICAgbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5hZGQoY3VzdG9tRmlsdGVy
UHJvZ3JhbVByb3h5LmdldCgpKTsKLSAgICAgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNyZWF0ZUN1c3RvbUZpbHRlclByb2dy
YW0oY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpLCBjdXN0b21PcGVyYXRpb24tPnZhbGlk
YXRlZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3JhbUluZm8oKSkpOworICAgICAgICAgICAgbV9z
dGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGN1c3RvbUZp
bHRlclByb2dyYW1Qcm94eS0+aWQoKSwgY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9ncmFt
KCktPnZhbGlkYXRlZFByb2dyYW1JbmZvKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIElmIHRoZSBjbGllbnQgd2FzIG5vdCBkaXNjb25uZWN0ZWQgdGhlbiB0aGlzIGNvb3Jk
aW5hdG9yIG11c3QgYmUgdGhlIGNsaWVudCBmb3IgaXQuCiAgICAgICAgICAgICBBU1NFUlQoY3Vz
dG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5jbGllbnQoKSA9PSB0aGlzKTsKQEAgLTQ0MSw3ICs0MjEs
NyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJv
Z3JhbVByb3h5KFdlYkN1c3RvbUZpbHRlclBybwogICAgIC8vIEF0IHRoaXMgdGltZSB0aGUgc2hh
ZGVyIGlzIG5vdCBuZWVkZWQgYW55bW9yZSwgc28gd2UgcmVtb3ZlIGl0IGZyb20gb3VyIHNldCBh
bmQKICAgICAvLyBzZW5kIGEgbWVzc2FnZSB0byB0aGUgb3RoZXIgcHJvY2VzcyB0byBkZWxldGUg
aXQuCiAgICAgbV9jdXN0b21GaWx0ZXJQcm9ncmFtcy5yZW1vdmUoY3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3h5KTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpSZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGN1c3RvbUZpbHRlclByb2dy
YW1Qcm94eS0+aWQoKSkpOworICAgIG1fc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlLmFwcGVu
ZChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKQEAgLTQ1NSw4
ICs0MzUsMTggQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpc2Nvbm5lY3RDdXN0
b21GaWx0ZXJQcm9ncmFtcygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRh
Y2hMYXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogeworICAgIGlmIChtX2lz
UHVyZ2luZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92
ZShsYXllci0+aWQoKSk7Ci0gICAgbV9sYXllcnNUb0RlbGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkp
OworCisgICAgc2l6ZV90IGluZGV4ID0gbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5maW5kKGxheWVy
LT5pZCgpKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9zdGF0ZS5s
YXllcnNUb0NyZWF0ZS5yZW1vdmUoaW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9zdGF0ZS5sYXllcnNUb1JlbW92ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOwogfQogCkBAIC01NTksMjYgKzU0OSwxNyBAQCBQYXNzUmVmUHRyPENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUlt
YWdlQmFja2luZwogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKLSAgICBtX3Nob3Vs
ZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3JlYXRlSW1hZ2VCYWNraW5nKGltYWdlSUQpKTsKKyAg
ICBtX3N0YXRlLmltYWdlc1RvQ3JlYXRlLmFwcGVuZChpbWFnZUlEKTsKIH0KIAotYm9vbCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGlu
YXRlZFN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBkYXRlSW1hZ2VC
YWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKIHsKLSAgICBtX3Nob3VsZFN5bmNG
cmFtZSA9IHRydWU7Ci0gICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1
cmZhY2UgPSBzdGF0aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihjb29yZGluYXRlZFN1
cmZhY2UuZ2V0KCkpOwotICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsK
LSAgICBpZiAoIXdlYkNvb3JkaW5hdGVkU3VyZmFjZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIG1fc3RhdGUuaW1hZ2VzVG9VcGRhdGUuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGltYWdlSUQsIGNvb3JkaW5hdGVkU3VyZmFjZSkpOwotICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJJbWFnZUJh
Y2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCiB7Ci0gICAg
bV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMo
aW1hZ2VJRCkpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9DbGVhci5hcHBlbmQoaW1hZ2VJRCk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQpAQCAtNTg3LDkgKzU2OCw5IEBAIHZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCBpbWFnCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2ltYWdl
QmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1
ZTsKICAgICBtX2ltYWdlQmFja2luZ3MucmVtb3ZlKGltYWdlSUQpOwotICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZUltYWdl
QmFja2luZyhpbWFnZUlEKSk7CisKKyAgICBtX3N0YXRlLmltYWdlc1RvUmVtb3ZlLmFwcGVuZChp
bWFnZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGlu
Z0ltYWdlQmFja2luZ0NoYW5nZXMoKQpAQCAtNjI4LDcgKzYwOSw3IEBAIFBhc3NPd25QdHI8R3Jh
cGhpY3NMYXllcj4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVy
KEdyYXBoaWNzCiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIoY2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3Io
dGhpcyk7CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllci0+aWQoKSwgbGF5ZXIpOwot
ICAgIG1fbGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKKyAgICBtX3N0YXRlLmxh
eWVyc1RvQ3JlYXRlLmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgbGF5ZXItPnNldE5lZWRzVmlz
aWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKGxheWVyKTsKQEAgLTY1NCwyMSArNjM1LDE2IEBAIGJvb2wgTGF5ZXJUcmVl
SG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVp
bnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRl
ZFN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlVXBkYXRlQXRs
YXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3Jk
aW5hdGVkU3VyZmFjZSkKIHsKLSAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5h
dGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KGNvb3JkaW5h
dGVkU3VyZmFjZS5nZXQoKSk7Ci0gICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFu
ZGxlOwotICAgIGlmICghd2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNyZWF0ZVVwZGF0ZUF0bGFzKGF0bGFzSUQs
IGhhbmRsZSkpOwotICAgIHJldHVybiB0cnVlOworICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1Rv
Q3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihhdGxhc0lELCBjb29yZGluYXRlZFN1cmZhY2Up
KTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZVVwZGF0ZUF0bGFz
KHVpbnQzMl90IGF0bGFzSUQpCiB7CiAgICAgaWYgKG1faXNQdXJnaW5nKQogICAgICAgICByZXR1
cm47Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6UmVtb3ZlVXBkYXRlQXRsYXMoYXRsYXNJRCkpOworICAgIG1fc3RhdGUudXBkYXRl
QXRsYXNlc1RvUmVtb3ZlLmFwcGVuZChhdGxhc0lEKTsKIH0KIAogV2ViQ29yZTo6RmxvYXRSZWN0
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dmlzaWJsZUNvbnRlbnRzUmVjdCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oCmluZGV4IGEyMTc0ZTI5NzMyNmRhZGEwNzA0MGNhNzZmZTc3NTI1MmQ4MTVkM2YuLjBmYjNj
ZWYzMmU5YzM0YmY1MWU4NWI1YmVkMThhNjMzMTlkYzVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAw
LCBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTExMCw3ICsxMTEsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNvb3JkaW5hdG9yCiAgICAgdmlydHVh
bCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNv
cmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFj
a2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckltYWdlQmFja2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CiAKQEAgLTEyNSw3ICsxMjYsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJTdGF0ZShXZWJDb3JlOjpDb29y
ZGluYXRlZExheWVySUQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7
CiAKICAgICAvLyBVcGRhdGVBdGxhc0NsaWVudAotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVVcGRh
dGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVk
U3VyZmFjZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1
aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4p
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBh
dGxhc0lEKTsKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJGYWN0b3J5CkBAIC0xMzYsOCArMTM3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIoKTsKICAgICB2b2lk
IGRlc3Ryb3lQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAgYm9vbCBmbHVzaFBlbmRpbmdMYXllckNo
YW5nZXMoKTsKLSAgICB2b2lkIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7Ci0gICAgdm9pZCBk
ZWxldGVDb21wb3NpdGluZ0xheWVycygpOworICAgIHZvaWQgY2xlYXJQZW5kaW5nU3RhdGVDaGFu
Z2VzKCk7CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgcGVy
Zm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TY2hlZHVsZWRM
YXllckZsdXNoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192595</attachid>
            <date>2013-03-11 16:51:52 -0700</date>
            <delta_ts>2013-03-14 22:30:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130312084751.patch</filename>
            <type>text/plain</type>
            <size>42719</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk1YTQwYWE1OTZjOGE0
NTE1YWU3YTcxZTQ5MzMxN2NjYTI2OGZiNi4uNGE0NDJlMTgyYTFkMTFiY2I4MzJiNTE4ZjNlNGM5
M2EyOGNlMWU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVy
UHJvZ3JhbXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oOgorICAgICAgICAoQ29vcmRpbmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgor
ICAgICAgICAoVXBkYXRlQXRsYXNDbGllbnQpOgorCiAyMDEzLTAzLTExICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGwgb3V0IHBhcnQgb2YgcjE0NDY3
MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCBhMmNkMGUyMTM5NDBiYjIyNmU1OTQ1Y2UzNzExYmUzODE0ZmQ5MDlh
Li5kY2Q5ZTgxNTMzNmU5OWQwZDZmMTJhZmYzZTgyMmE4OGUwOGExOTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTMtMDMtMDggIEd3YW5nIFlvb24gSHdhbmcgIDxyeXVtaWVsQGNv
bXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBVbmlmeSBtZXNz
YWdlcyByZWxhdGVkIG9iamVjdCdzIGxpZmVjeWNsZXMgaW50byBDb29yZGluYXRlZEdyYXBoaWNz
U3RhdGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTE5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIHJlbW92ZXMgY29kZXMgZm9yIFdlYkNvb3JkaW5hdGVkU3VyZmFjZSBpbgorICAg
ICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3QsIGV4Y2VwdCBmb3IgYSBmYWN0b3J5IG1ldGhv
ZC4KKyAgICAgICAgTm93LCBDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMgW2VufGRl
XWNvZGVzIENvb3JkaW5hdGVkU3VyZmFjZSBpdHNlbGYKKyAgICAgICAgdXNpbmcgV2ViQ29vcmRp
bmF0ZWRTdXJmYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzaXRp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2Rl
Q29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQ
Qzo6ZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2Rl
KToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5k
aW5nU3RhdGVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94aWVzKToKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVy
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVJbWFn
ZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnVw
ZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVVcGRhdGVBdGxhcyk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlVXBkYXRl
QXRsYXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KToKKwogMjAxMy0wMS0zMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBGdWxsIHNjcmVlbiBtb2RlIHNob3VsZCBub3QgZXhpdCB3aGVuIGFwcGxpY2F0
aW9uIHJlc2lnbnMgYWN0aXZlIHN0YXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBhZTI0NWUzNmZjOTY0OTgyNTUx
YmU0ZWM1ZmIxOGZiYTA3OGIxYjZmLi5mNjRiYzFlNDBkMDFmNDhkMGI0MGNmNzcxZGU1NWFjNzg2
Y2ZlNzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcApAQCAtMjczLDYgKzI3MywxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQoR3JhcGhpY3NMYXllciogbGF5ZXIs
IGNvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6c3luY0N1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0
ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0ZUN1c3Rv
bUZpbHRlclByb2dyYW0oc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLmZpcnN0LCBzdGF0
ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlLnNpemUoKTsgKytpKQorICAgICAg
ICByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKHN0YXRlLmN1c3RvbUZpbHRlcnNUb1JlbW92ZVtp
XSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjppbmplY3RDYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewpAQCAt
NTI1LDYgKzUzNCwxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVGls
ZXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiBsYXllciwgY29uc3QgQwogICAgIH0KIH0KIAordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKGNvbnN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0
ZVVwZGF0ZUF0bGFzKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5maXJzdCwgc3RhdGUu
dXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLnNlY29uZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAg
cmVtb3ZlVXBkYXRlQXRsYXMoc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlW2ldKTsKK30KKwog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90
IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQogewogICAg
IEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7CkBAIC01MzcsNiArNTU1LDIx
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lEKQogICAgIG1fc3VyZmFjZXMucmVtb3ZlKGF0bGFzSUQpOwogfQogCit2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXRlLmltYWdlc1RvQ3JlYXRlLnNpemUoKTsgKytpKQorICAgICAgICBjcmVhdGVJbWFnZUJh
Y2tpbmcoc3RhdGUuaW1hZ2VzVG9DcmVhdGVbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGF0ZS5pbWFnZXNUb1JlbW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlSW1h
Z2VCYWNraW5nKHN0YXRlLmltYWdlc1RvUmVtb3ZlW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIHVwZGF0
ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUuaW1hZ2Vz
VG9VcGRhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUu
aW1hZ2VzVG9DbGVhci5zaXplKCk7ICsraSkKKyAgICAgICAgY2xlYXJJbWFnZUJhY2tpbmdDb250
ZW50cyhzdGF0ZS5pbWFnZXNUb0NsZWFyW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkp
OwpAQCAtNjE1LDE0ICs2NDgsMjAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNv
bW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogICAgIC8vIFNp
bmNlIHRoZSBmcmFtZSBoYXMgbm93IGJlZW4gcmVuZGVyZWQsIHdlIGNhbiBzYWZlbHkgdW5sb2Nr
IHRoZSBhbmltYXRpb25zIHVudGlsIHRoZSBuZXh0IGxheW91dC4KICAgICBzZXRBbmltYXRpb25z
TG9ja2VkKGZhbHNlKTsKIAorICAgIGNyZWF0ZUxheWVycyhzdGF0ZS5sYXllcnNUb0NyZWF0ZSk7
CisgICAgZGVsZXRlTGF5ZXJzKHN0YXRlLmxheWVyc1RvUmVtb3ZlKTsKKwogICAgIGlmIChzdGF0
ZS5yb290Q29tcG9zaXRpbmdMYXllciAhPSBtX3Jvb3RMYXllcklEKQogICAgICAgICBzZXRSb290
TGF5ZXJJRChzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXllcik7CiAKICAgICBpZiAoc3RhdGUuYmFj
a2dyb3VuZENvbG9yICE9IG1fYmFja2dyb3VuZENvbG9yKQogICAgICAgICBzZXRCYWNrZ3JvdW5k
Q29sb3Ioc3RhdGUuYmFja2dyb3VuZENvbG9yKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIHVwZGF0ZUltYWdl
QmFja2luZyhzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUuaW1hZ2VzVG9VcGRh
dGVbaV0uc2Vjb25kKTsKKyAgICBzeW5jSW1hZ2VCYWNraW5ncyhzdGF0ZSk7CisgICAgc3luY1Vw
ZGF0ZUF0bGFzZXMoc3RhdGUpOworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBzeW5jQ3Vz
dG9tRmlsdGVyUHJvZ3JhbXMoc3RhdGUpOworI2VuZGlmCiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlLmxheWVyc1RvVXBkYXRlLnNpemUoKTsgKytpKQogICAgICAgICBzZXRMYXll
clN0YXRlKHN0YXRlLmxheWVyc1RvVXBkYXRlW2ldLmZpcnN0LCBzdGF0ZS5sYXllcnNUb1VwZGF0
ZVtpXS5zZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCmluZGV4IDY4ZmM2MTlmMTQ4MWE4ZTNlOTRhY2U4ZDM0ODA1OGRkNTI4
NGM0OGIuLmZlODVmOGY4ZmFhMDEzMmUyNTEwNDhhYzExMTliZjYyMTNiMmJiMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29t
cGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODMsMjMgKzg0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYpOwogCi0gICAgdm9pZCBjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5h
dGVkTGF5ZXJJRD4mKTsKLSAgICB2b2lkIGRlbGV0ZUxheWVycyhjb25zdCBWZWN0b3I8Q29vcmRp
bmF0ZWRMYXllcklEPiYpOwotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIHZvaWQgaW5q
ZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwg
Y29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKLSAgICB2b2lkIHJlbW92ZUN1c3RvbUZp
bHRlclByb2dyYW0oaW50IGlkKTsKLSNlbmRpZgotCi0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxh
cyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOwotICAg
IHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7Ci0gICAgdm9pZCBjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KTsKLSAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRBbmltYXRpb25zTG9ja2VkKGJv
b2wpOwotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9p
ZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXREcmF3c0JhY2tncm91bmQg
PSBlbmFibGU7IH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEw
OCw2ICs5Myw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RMYXllcklE
KENvb3JkaW5hdGVkTGF5ZXJJRCk7CisgICAgdm9pZCBjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9y
PENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKKyAgICB2b2lkIGRlbGV0ZUxheWVycyhjb25zdCBWZWN0
b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwogICAgIHZvaWQgc2V0TGF5ZXJTdGF0ZShDb29yZGlu
YXRlZExheWVySUQsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAg
dm9pZCBzZXRMYXllckNoaWxkcmVuSWZOZWVkZWQoR3JhcGhpY3NMYXllciosIGNvbnN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlc0lmTmVlZGVk
KEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwpA
QCAtMTI0LDYgKzExMSwyNSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJl
cGFpbnRDb3VudElmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYpOwogCisgICAgdm9pZCBzeW5jVXBkYXRlQXRsYXNlcyhjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKKyAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQz
Ml90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdm9pZCBy
ZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKKworICAgIHZvaWQgc3luY0ltYWdl
QmFja2luZ3MoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KTsKKyAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAg
dm9pZCBzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJik7CisgICAgdm9pZCBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZUN1c3RvbUZp
bHRlclByb2dyYW0oaW50IGlkLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOworICAg
IHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOworI2VuZGlmCisKKyAgICB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOworCiAgICAgR3JhcGhpY3NMYXll
ciogbGF5ZXJCeUlEKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2xheWVycy5jb250YWlucyhpZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IDQxNTBmMjZiMmE0ZWViZTE3ODcwZDNj
NTRmZWVkMDRlYWUxZGJlZjEuLjU4Y2MwMzc2OTJiODhlZmZiMmRlMDNlM2NkNjk0ZmZiMzUwZmE0
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlLmgKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8uaCIKKyNlbmRpZgorCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAj
aW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCIKICNlbmRpZgpAQCAtMTc2LDggKzE4MCwy
MiBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHsKICAgICBJbnRTaXplIGNvbnRl
bnRzU2l6ZTsKICAgICBJbnRSZWN0IGNvdmVyZWRSZWN0OwogCisgICAgVmVjdG9yPENvb3JkaW5h
dGVkTGF5ZXJJRD4gbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb29yZGlu
YXRlZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPiA+IGxheWVyc1RvVXBk
YXRlOworICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IGxheWVyc1RvUmVtb3ZlOworCisg
ICAgVmVjdG9yPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdlc1RvQ3JlYXRlOworICAg
IFZlY3RvcjxDb29yZGluYXRlZEltYWdlQmFja2luZ0lEPiBpbWFnZXNUb1JlbW92ZTsKICAgICBW
ZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+ID4gPiBpbWFnZXNUb1VwZGF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRD4gaW1hZ2VzVG9DbGVhcjsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWlu
dDMyX3QgLyogYXRsYXNJRCAqLywgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+IHVwZGF0
ZUF0bGFzZXNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3QgLyogYXRsYXNJRCAqLz4gdXBk
YXRlQXRsYXNlc1RvUmVtb3ZlOworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDMyX3QgLyogRmlsdGVySUQgKi8sIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvPiA+IGN1c3RvbUZpbHRlcnNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGN1c3Rv
bUZpbHRlcnNUb1JlbW92ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5j
cHAKaW5kZXggMTI4YmFiZTI5OGY2NmNiYzI3NjljZjZmZjhlYTk4MjI5ZDUxNTU3Ny4uNDM5MTlj
NmM1NGM4ZGFlYzM0MTU3NzlhZTI3MThmMDMzN2NkMmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTEzLDkgKzExNCw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSgpCiAK
ICAgICBtX25hdGl2ZUltYWdlUHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKIAotICAgIC8vIElmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIHRyeSBhZ2FpbiBp
biB0aGUgbmV4dCB1cGRhdGUuCi0gICAgYm9vbCBzdWNjZXNzID0gbV9jb29yZGluYXRvci0+dXBk
YXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFjZSk7Ci0gICAgbV9pc0RpcnR5ID0gIXN1Y2Nl
c3M7CisgICAgbV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFj
ZSk7CisgICAgbV9pc0RpcnR5ID0gZmFsc2U7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCAzNjllMjM5ZjliMGEyOThjZDlm
Y2NlNDIzZGE0ZDJmMWU1YTIxYTc2Li43OTMzZDY5ZDNkYzJiZWI3ZGE4NWFmMzFkY2FmMjlkMzZm
OTBiOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29vcmRpbmF0
b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0Nv
bnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDM2NGYwNjg3
MTA4MmI1OGZjYmQ4M2EwZWYzMTQ1MGJlNDgwMDg0OGIuLmFmNmZjNzkyMjNmZTYzZWRlMWRlMzYw
M2QxNzZiMzYzNTdiY2RiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNw
cApAQCAtMjMsNiArMjMsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisj
aW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CkBAIC0zOCw5ICszOSw3IEBAIFVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxh
c0NsaWVudCogY2xpZW50LCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1CiAgICAgSW50U2l6
ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikpOwog
ICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzKTsK
IAotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIGlmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMs
IFVwZGF0ZUF0bGFzIGdpdmVzIHVwIGRyYXdpbmcgYW55dGhpbmcgaW1wbGljaXRseS4KLSAgICBp
ZiAoIW1fY2xpZW50LT5jcmVhdGVVcGRhdGVBdGxhcyhtX0lELCBtX3N1cmZhY2UpKQotICAgICAg
ICBtX3N1cmZhY2UuY2xlYXIoKTsKKyAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9J
RCwgbV9zdXJmYWNlKTsKIH0KIAogVXBkYXRlQXRsYXM6On5VcGRhdGVBdGxhcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCmluZGV4IDQ4YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0
ZTMzMGZkZGIxNmQ3OGIuLjVkZDVkMjYwNmYyMWVmNjc4NGQwZGVmYjc0ZGZhNjdkOGZjZDVmN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCkBAIC0zMyw3ICszMyw3IEBAIGNs
YXNzIEludFBvaW50OwogCiBjbGFzcyBVcGRhdGVBdGxhc0NsaWVudCB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRh
dGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJ
RCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggYzc4Y2IxYjA1ZWIzN2M4OGY4YWYyYTEzNjZlNTU1Zjk0
MDkzN2Y5ZC4uZDliNWE4M2E2MDI1NDIyMWQxYWIwMzM4ZDk1NDc4NDVlZGZlOWZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMDEwLDYgKzEwMTAsNDIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRpbGVDcmVhdGlvbklu
Zm8+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBUaWxlQ3JlYXQKICAgICByZXR1
cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUaWxlQ3JlYXRpb25JbmZvPjo6ZGVjb2RlKGRlY29kZXIs
IHVwZGF0ZUluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmNvZGVDb29yZGluYXRlZFN1cmZhY2Uo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiYgc3VyZmFjZSkKK3sKKyAgICBib29sIGlzVmFsaWRTdXJmYWNlID0gZmFsc2U7CisgICAgaWYg
KCFzdXJmYWNlKSB7CisgICAgICAgIGVuY29kZXIgPDwgaXNWYWxpZFN1cmZhY2U7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5h
dGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KHN1cmZhY2Uu
Z2V0KCkpOworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBp
ZiAod2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAgICAg
aXNWYWxpZFN1cmZhY2UgPSB0cnVlOworCisgICAgZW5jb2RlciA8PCBpc1ZhbGlkU3VyZmFjZTsK
KworICAgIGlmIChpc1ZhbGlkU3VyZmFjZSkKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7Cit9
CisKK3N0YXRpYyBib29sIGRlY29kZUNvb3JkaW5hdGVkU3VyZmFjZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiBzdXJmYWNlKQoreworICAgIGJv
b2wgaXNWYWxpZFN1cmZhY2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkU3VyZmFj
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNWYWxpZFN1cmZhY2UpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUg
aGFuZGxlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc3VyZmFjZSA9IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhh
bmRsZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewogICAgIGVuY29kZXIgPDwgc3Rh
dGUucm9vdENvbXBvc2l0aW5nTGF5ZXI7CkBAIC0xMDE3LDI0ICsxMDUzLDM4IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjCiAgICAgZW5jb2RlciA8PCBzdGF0ZS5zY3JvbGxQb3NpdGlvbjsKICAg
ICBlbmNvZGVyIDw8IHN0YXRlLmNvbnRlbnRzU2l6ZTsKICAgICBlbmNvZGVyIDw8IHN0YXRlLmNv
dmVyZWRSZWN0OworCisgICAgZW5jb2RlciA8PCBzdGF0ZS5sYXllcnNUb0NyZWF0ZTsKICAgICBl
bmNvZGVyIDw8IHN0YXRlLmxheWVyc1RvVXBkYXRlOworICAgIGVuY29kZXIgPDwgc3RhdGUubGF5
ZXJzVG9SZW1vdmU7CisKKyAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvQ3JlYXRlOworICAg
IGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VzVG9SZW1vdmU7CiAKICAgICAvLyBXZSBuZWVkIHRvIGVu
Y29kZSBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSByaWdodCBhZnRlciBpdCdzIGNyZWF0
aW9uLgogICAgIC8vIFRoYXQncyB3aHkgd2UgY2Fubm90IHVzZSBzaW1wbGUgc3RkOjpwYWlyIGVu
Y29kZXIuCiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGUuaW1hZ2Vz
VG9VcGRhdGUuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdl
c1RvVXBkYXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2Vz
VG9VcGRhdGVbaV0uZmlyc3Q7CisgICAgICAgIGVuY29kZUNvb3JkaW5hdGVkU3VyZmFjZShlbmNv
ZGVyLCBzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5zZWNvbmQpOworICAgIH0KKyAgICBlbmNvZGVy
IDw8IHN0YXRlLmltYWdlc1RvQ2xlYXI7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+
IFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOwotICAgIFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5lbmQoKTsKLSAgICBmb3Ig
KFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0YXRlLmltYWdl
c1RvVXBkYXRlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotCi0gICAgICAgIFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKj4oaXQtPnNlY29uZC5nZXQoKSk7Ci0gICAgICAgIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgaWYgKCF3ZWJDb29yZGluYXRlZFN1
cmZhY2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0
ZS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudXBkYXRlQXRsYXNl
c1RvQ3JlYXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUudXBkYXRl
QXRsYXNlc1RvQ3JlYXRlW2ldLmZpcnN0OworICAgICAgICBlbmNvZGVDb29yZGluYXRlZFN1cmZh
Y2UoZW5jb2Rlciwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLnNlY29uZCk7CisgICAg
fQorICAgIGVuY29kZXIgPDwgc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlOwogCi0gICAgICAg
IGVuY29kZXIgPDwgaXQtPmZpcnN0OwotICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
c3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uZmlyc3Q7CisgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLnNlY29uZDsKICAg
ICB9CisgICAgZW5jb2RlciA8PCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmU7CisjZW5kaWYK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3Rh
dGUpCkBAIC0xMDU0LDI2ICsxMTA0LDc4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRl
ZEdyYXBoaWNzU3RhdGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5jb3ZlcmVkUmVjdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUubGF5ZXJzVG9DcmVhdGUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmxh
eWVyc1RvVXBkYXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0ZS5sYXllcnNUb1JlbW92ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuaW1hZ2VzVG9DcmVhdGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmltYWdlc1RvUmVt
b3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgdWludDY0X3Qgc2l6ZU9mSW1hZ2Vz
VG9VcGRhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplT2ZJbWFnZXNUb1VwZGF0ZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBz
aXplT2ZJbWFnZXNUb1VwZGF0ZTsgaSsrKSB7CisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8
IHNpemVPZkltYWdlc1RvVXBkYXRlOyArK2kpIHsKICAgICAgICAgQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlSUQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQor
ICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBpZiAo
IWRlY29kZUNvb3JkaW5hdGVkU3VyZmFjZShkZWNvZGVyLCBzdXJmYWNlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJm
YWNlID0gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKTsKICAgICAgICAgc3Rh
dGUuaW1hZ2VzVG9VcGRhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGltYWdlSUQsIHN1cmZhY2Uu
cmVsZWFzZSgpKSk7CiAgICAgfQogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5pbWFn
ZXNUb0NsZWFyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDY0X3Qgc2l6ZU9m
VXBkYXRlQXRsYXNlc1RvQ3JlYXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZU9mVXBk
YXRlQXRsYXNlc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1
aW50NjRfdCBpID0gMDsgaSA8IHNpemVPZlVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsgKytpKSB7Cisg
ICAgICAgIHVpbnQzMl90IGF0bGFzSUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXRs
YXNJRCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVDb29yZGluYXRlZFN1
cmZhY2UoZGVjb2Rlciwgc3VyZmFjZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihh
dGxhc0lELCBzdXJmYWNlLnJlbGVhc2UoKSkpOworICAgIH0KKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIHVpbnQ2NF90IHNpemVPZkN1c3RvbUZp
bHRlcnNUb0NyZWF0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemVPZkN1c3RvbUZpbHRl
cnNUb0NyZWF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodWludDY0X3Qg
aSA9IDA7IGkgPCBzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVhdGU7ICsraSkgeworICAgICAgICB1
aW50MzJfdCBmaWx0ZXJJRDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWx0ZXJJRCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvIGZpbHRlckluZm87CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVySW5mbykp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHN0YXRlLmN1c3RvbUZpbHRlcnNU
b0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZmlsdGVySUQsIGZpbHRlckluZm8pKTsKKyAg
ICB9CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmNwcAppbmRleCBmN2UzMWQzODQwZTdhZmYyODc3ZjQ0ZDhkMDIwMmMzYzQzODY3ODQzLi4xZDY1
ODBhYTMyMWUxZGNiZGRlYzYxOTI3OTM5NDY1NzZmYTVmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJ
bmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYyLDM3ICs2Myw2IEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mIGZ1bmN0CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKGZ1bmN0aW9uKTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMy
X3QgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkK
LXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNy
ZWF0ZVVwZGF0ZUF0bGFzLCBtX3NjZW5lLmdldCgpLCBhdGxhc0lELCBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OmNyZWF0ZShoYW5kbGUpKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCi17Ci0gICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVB
dGxhcywgbV9zY2VuZS5nZXQoKSwgYXRsYXNJRCkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVDb21wb3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8Q29v
cmRpbmF0ZWRMYXllcklEPiYgaWRzKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXJzLCBtX3NjZW5lLmdldCgpLCBpZHMpKTsK
LX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGVsZXRlQ29tcG9zaXRp
bmdMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGlkcykKLXsKLSAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlbGV0ZUxheWVy
cywgbV9zY2VuZS5nZXQoKSwgaWRzKSk7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi12
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9n
cmFtKGludCBpZCkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0sIG1fc2NlbmUuZ2V0KCksIGlkKSk7
Ci19Ci12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVDdXN0b21GaWx0
ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1J
bmZvKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgbV9zY2VuZS5nZXQoKSwgaWQsIHByb2dyYW1J
bmZvKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSYgZ3JhcGhpY3NTdGF0ZSkKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUsIG1fc2NlbmUuZ2V0KCksIGdyYXBo
aWNzU3RhdGUpKTsKQEAgLTEwMiwyNiArNzIsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Ojpjb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoY29uc3QgQ29vcmRpbgog
I2VuZGlmCiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJh
Y2tpbmcsIG1fc2NlbmUuZ2V0KCksIGltYWdlSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQgaW1hZ2VJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRs
ZSkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnVwZGF0ZUltYWdlQmFja2luZywgbV9zY2VuZS5nZXQoKSwgaW1hZ2VJRCwgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQgaW1hZ2VJRCkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMsIG1fc2NlbmUuZ2V0KCks
IGltYWdlSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6cmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKLXsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUlt
YWdlQmFja2luZywgbV9zY2VuZS5nZXQoKSwgaW1hZ2VJRCkpOwotfQotCiB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQog
ewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0
QW5pbWF0aW9uc0xvY2tlZCwgbV9zY2VuZS5nZXQoKSwgbG9ja2VkKSk7CkBAIC0xNjMsMTEgKzEx
Myw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0
b3JlcygpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpQdXJnZUJhY2tpbmdTdG9yZXMoKSwg
bV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNldEJhY2tncm91bmRDb2xvciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKLX0KLQogdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQz
Ml90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkKIHsKICAgICBtX2RyYXdpbmdBcmVh
UHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OkNvbW1pdFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdB
cmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNDQ4NmEwZjJlZDZmYTBhYzVjMzI0YjQ5
MzBlMGUwYTIzOTVhNGZkYS4uZjc2NGE5NTMyZTMxOTFlNTZlZTYxYzI2YTk1NzBkYjVhNDExZWI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAy
MDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQxLDkgKzQyLDcg
QEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlOwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlOwotY2xhc3MgU3VyZmFjZVVwZGF0ZUluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsMjUgKzU1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eSgpOwogCiAgICAgLy8gTWVzc2FnZXMgRnJvbSBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QKLSAgICB2b2lkIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+Jik7Ci0gICAgdm9pZCBkZWxldGVDb21wb3Np
dGluZ0xheWVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEPiYpOwot
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dy
YW0oaW50IGlkLCBjb25zdCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwotICAg
IHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwotI2VuZGlmCi0gICAgdm9p
ZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3Qg
YXRsYXNJRCk7Ci0gICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpI
YW5kbGUmKTsKLSAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0KICAgICB2b2lkIGNvbW1pdENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmKTsKKwogICAgIHZvaWQgc2V0QW5pbWF0aW9uc0xvY2tlZChib29sKTsKICNpZiBFTkFCTEUo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
KTsKICNlbmRpZgotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJik7CiAKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7
CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUoKSBjb25zdCB7IHJldHVybiBtX3NjZW5lLmdldCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDNhNzY0ZjEzYzdhMmUxNDQ2MjYxYWY4NjViN2ZkNjAwZDFlN2U2ODMuLmFjMzA3
ODY3ODdkMDBhZmU1MTA2ZTdhMzk1Y2ZkMTYxNmVhOGE4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xLDUgKzEsNiBAQAogIwogIyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisjICAgIENvcHlyaWdodCAoQykgMjAx
MyBDb21wYW55IDEwMCwgSW5jLgogIwogIyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwyNiArMjMs
OSBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAKICAgICBD
b21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlIHN0YXRlKQogCi0gICAgQ3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoVmVjdG9yPHVpbnQz
Ml90PiBpZHMpCi0gICAgRGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoVmVjdG9yPHVpbnQzMl90PiBp
ZHMpCi0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgQ3JlYXRlQ3VzdG9tRmlsdGVyUHJv
Z3JhbShpbnQgaWQsIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1JbmZv
KQotICAgIFJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQotI2VuZGlmCi0gICAgQ3Jl
YXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZSBoYW5kbGUpCi0gICAgUmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRs
YXNJRCkKLSAgICBDcmVhdGVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKLSAgICBVcGRh
dGVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZSBoYW5kbGUpCi0gICAgQ2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyh1aW50
NjRfdCBpbWFnZUlEKQotICAgIFJlbW92ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQot
CiAgICAgU2V0QW5pbWF0aW9uc0xvY2tlZChib29sIGxvY2tlZCkKLQogI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQogI2VuZGlm
Ci0KLSAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDQ2OTJjYzg4NjEzYmNiNTAyMTZhMGNhMTgxODg3Yzg2NGJkZTdh
NDQuLmQ5YWZmMjMwYjk2MGI0ODdmNmMxNjk4ZWMxZmI5YWUwZDI1NDNlM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cApAQCAtMjg2LDggKzI4Niw2IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3Rl
Y3RvcihtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCi0gICAgY3JlYXRlQ29tcG9z
aXRpbmdMYXllcnMoKTsKLQogICAgIGluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVl
ZGVkKCk7CiAKICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpOwpAQCAtMjk5LDggKzI5Nyw2IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgZmx1c2hQZW5kaW5nSW1hZ2VC
YWNraW5nQ2hhbmdlcygpOwogCi0gICAgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKLQogICAg
IGlmIChtX3Nob3VsZFN5bmNGcmFtZSkgewogICAgICAgICBkaWRTeW5jID0gdHJ1ZTsKIApAQCAt
MzEwLDkgKzMwNiw3IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXMoKQogCiAgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZShtX3N0YXRlKSk7CiAKLSAgICAgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5jbGVhcigpOwot
ICAgICAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmNsZWFyKCk7Ci0KKyAgICAgICAgY2xlYXJQ
ZW5kaW5nU3RhdGVDaGFuZ2VzKCk7CiAgICAgICAgIG1fd2FpdGluZ0ZvclVJUHJvY2VzcyA9IHRy
dWU7CiAgICAgICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gZmFsc2U7CiAgICAgfSBlbHNlCkBAIC0z
MjYsMzggKzMyMCwyNCBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKICAgICByZXR1cm4gZGlkU3luYzsKIH0KIAotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMoKQogewotICAgIGlm
IChtX2xheWVyc1RvQ3JlYXRlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fc3Rh
dGUubGF5ZXJzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmNs
ZWFyKCk7CisgICAgbV9zdGF0ZS5sYXllcnNUb1JlbW92ZS5jbGVhcigpOwogCi0gICAgLy8gSWYg
YSBsYXllciBnZXRzIGNyZWF0ZWQgYW5kIGRlbGV0ZWQgaW4gdGhlIHNhbWUgY3ljbGUsIHdlIGNh
biBzaW1wbHkgcmVtb3ZlIGl0IGZyb20gbV9sYXllcnNUb0NyZWF0ZSBhbmQgbV9sYXllcnNUb0Rl
bGV0ZS4KLSAgICBmb3IgKGludCBpID0gbV9sYXllcnNUb0NyZWF0ZS5zaXplKCkgLSAxOyBpID49
IDA7IC0taSkgewotICAgICAgICBzaXplX3QgaW5kZXggPSBtX2xheWVyc1RvRGVsZXRlLmZpbmQo
bV9sYXllcnNUb0NyZWF0ZVtpXSk7Ci0gICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewot
ICAgICAgICAgICAgbV9sYXllcnNUb0NyZWF0ZS5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBtX2xh
eWVyc1RvRGVsZXRlLnJlbW92ZShpbmRleCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9zdGF0
ZS5pbWFnZXNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUuY2xl
YXIoKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5p
bWFnZXNUb0NsZWFyLmNsZWFyKCk7CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVhdGVDb21wb3NpdGluZ0xheWVycyhtX2xh
eWVyc1RvQ3JlYXRlKSk7Ci0gICAgbV9sYXllcnNUb0NyZWF0ZS5jbGVhcigpOwotICAgIG1fc2hv
dWxkU3luY0ZyYW1lID0gdHJ1ZTsKLX0KKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0
ZS5jbGVhcigpOworICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlLmNsZWFyKCk7CiAK
LXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygp
Ci17Ci0gICAgaWYgKG1fbGF5ZXJzVG9EZWxldGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAobV9pc1B1cmdpbmcpIHsKLSAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVh
cigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXll
cnMobV9sYXllcnNUb0RlbGV0ZSkpOwotICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKLSAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAg
IG1fc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5jdXN0
b21GaWx0ZXJzVG9SZW1vdmUuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQpA
QCAtNDI4LDcgKzQwOCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjaGVja0N1
c3RvbUZpbHRlclByb2dyYW1Qcm94aWVzKGNvbnN0IEZpbHRlck9wZXJhCiAgICAgICAgIGlmICgh
Y3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5jbGllbnQoKSkgewogICAgICAgICAgICAgY3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRDbGllbnQodGhpcyk7CiAgICAgICAgICAgICBtX2N1c3Rv
bUZpbHRlclByb2dyYW1zLmFkZChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkuZ2V0KCkpOwotICAg
ICAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6Q3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFtUHJv
eHktPmlkKCksIGN1c3RvbU9wZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgpLT52YWxpZGF0ZWRQ
cm9ncmFtSW5mbygpKSk7CisgICAgICAgICAgICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpLCBj
dXN0b21PcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3JhbUluZm8o
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhlIGNsaWVudCB3YXMg
bm90IGRpc2Nvbm5lY3RlZCB0aGVuIHRoaXMgY29vcmRpbmF0b3IgbXVzdCBiZSB0aGUgY2xpZW50
IGZvciBpdC4KICAgICAgICAgICAgIEFTU0VSVChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNs
aWVudCgpID09IHRoaXMpOwpAQCAtNDQxLDcgKzQyMSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkoV2ViQ3VzdG9tRmlsdGVy
UHJvCiAgICAgLy8gQXQgdGhpcyB0aW1lIHRoZSBzaGFkZXIgaXMgbm90IG5lZWRlZCBhbnltb3Jl
LCBzbyB3ZSByZW1vdmUgaXQgZnJvbSBvdXIgc2V0IGFuZAogICAgIC8vIHNlbmQgYSBtZXNzYWdl
IHRvIHRoZSBvdGhlciBwcm9jZXNzIHRvIGRlbGV0ZSBpdC4KICAgICBtX2N1c3RvbUZpbHRlclBy
b2dyYW1zLnJlbW92ZShjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkpOwotICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZUN1c3Rv
bUZpbHRlclByb2dyYW0oY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpKSk7CisgICAgbV9z
dGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuYXBwZW5kKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eS0+aWQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0
Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQpAQCAtNDU1LDggKzQzNSwxOCBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIAogdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiB7CisgICAgaWYgKG1faXNQdXJnaW5nKQorICAgICAgICByZXR1cm47
CisKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyLT5pZCgpKTsKLSAgICBtX2xh
eWVyc1RvRGVsZXRlLmFwcGVuZChsYXllci0+aWQoKSk7CisKKyAgICBzaXplX3QgaW5kZXggPSBt
X3N0YXRlLmxheWVyc1RvQ3JlYXRlLmZpbmQobGF5ZXItPmlkKCkpOworICAgIGlmIChpbmRleCAh
PSBub3RGb3VuZCkgeworICAgICAgICBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLnJlbW92ZShpbmRl
eCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlLmxheWVyc1RvUmVtb3Zl
LmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKQEAg
LTU1OSwyNiArNTQ5LDE3IEBAIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW1hZ2VCYWNraW5nCiAKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlEKQogewotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBt
X3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpD
cmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJRCkpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9DcmVhdGUu
YXBwZW5kKGltYWdlSUQpOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0
ZWRTdXJmYWNlKQogewotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBXZWJDb29y
ZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5hdGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNv
b3JkaW5hdGVkU3VyZmFjZSo+KGNvb3JkaW5hdGVkU3VyZmFjZS5nZXQoKSk7Ci0gICAgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOwotICAgIGlmICghd2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW1hZ2VJRCwg
Y29vcmRpbmF0ZWRTdXJmYWNlKSk7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Q2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhpbWFnZUlEKSk7CisgICAgbV9zdGF0ZS5p
bWFnZXNUb0NsZWFyLmFwcGVuZChpbWFnZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCkBAIC01ODcsOSArNTY4LDkgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWcKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlE
KSk7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwogICAgIG1faW1hZ2VCYWNraW5ncy5y
ZW1vdmUoaW1hZ2VJRCk7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6UmVtb3ZlSW1hZ2VCYWNraW5nKGltYWdlSUQpKTsKKworICAg
IG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUuYXBwZW5kKGltYWdlSUQpOwogfQogCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpCkBA
IC02MjgsNyArNjA5LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGll
bnQpOwogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKICAgICBtX3JlZ2lzdGVyZWRM
YXllcnMuYWRkKGxheWVyLT5pZCgpLCBsYXllcik7Ci0gICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBl
bmQobGF5ZXItPmlkKCkpOworICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVy
LT5pZCgpKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAg
ICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwpAQCAt
NjU0LDIxICs2MzUsMTYgQEAgYm9vbCBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0
cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNz
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQogewotICAgIFdl
YkNvb3JkaW5hdGVkU3VyZmFjZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4oY29vcmRpbmF0ZWRTdXJmYWNlLmdldCgpKTsKLSAgICBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCF3ZWJDb29yZGlu
YXRlZFN1cmZhY2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Q3JlYXRlVXBkYXRlQXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgbV9zdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGF0bGFzSUQsIGNvb3JkaW5hdGVkU3VyZmFjZSkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKIHsKICAg
ICBpZiAobV9pc1B1cmdpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVVcGRhdGVBdGxh
cyhhdGxhc0lEKSk7CisgICAgbV9zdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUuYXBwZW5kKGF0
bGFzSUQpOwogfQogCiBXZWJDb3JlOjpGbG9hdFJlY3QgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ojp2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYTIxNzRlMjk3MzI2ZGFk
YTA3MDQwY2E3NmZlNzc1MjUyZDgxNWQzZi4uOTgyNDFhZTUyMmI1NjRmNmNlYzFjYTdmZTcwZTA0
MGU1NzIyZGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMTEwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdl
QmFja2luZzo6Q29vcmRpbmF0b3IKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5n
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgYm9vbCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KSBPVkVSUklERTsKIApAQCAtMTI1LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xp
ZW50Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpOwogCiAgICAgLy8gR3JhcGhp
Y3NMYXllckZhY3RvcnkKQEAgLTEzNiw4ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jl
YXRlUGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIo
KTsKICAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwotICAgIHZvaWQgY3JlYXRl
Q29tcG9zaXRpbmdMYXllcnMoKTsKLSAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7
CisgICAgdm9pZCBjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMoKTsKICAgICB2b2lkIGNhbmNlbFBl
bmRpbmdMYXllckZsdXNoKCk7CiAgICAgdm9pZCBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgp
OwogICAgIHZvaWQgZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKQEAgLTE3Niw4ICsx
NzYsNiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5h
dGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gTGF5ZXJNYXA7
CiAgICAgTGF5ZXJNYXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwotICAgIFZlY3RvcjxXZWJDb3JlOjpD
b29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hN
YXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tp
bmdNYXAgbV9pbWFnZUJhY2tpbmdzOwogICAgIFZlY3RvcjxPd25QdHI8V2ViQ29yZTo6VXBkYXRl
QXRsYXM+ID4gbV91cGRhdGVBdGxhc2VzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193233</attachid>
            <date>2013-03-14 22:30:32 -0700</date>
            <delta_ts>2013-06-05 02:56:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130315142627.patch</filename>
            <type>text/plain</type>
            <size>42776</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDYwZTA3MzkxMmVkOTZj
NWE2NjM5YTJjMGJhZDAzYjhlZThjZDRjNi4uMGNjZTc4MTI2YTZhZThjNGY3OGViNmM1Y2ZmNmFh
MzNjZWVjODNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ3VzdG9tRmlsdGVy
UHJvZ3JhbXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
Ojp1cGRhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5oOgorICAgICAgICAoQ29vcmRpbmF0b3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVBdGxhczo6VXBkYXRlQXRsYXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oOgor
ICAgICAgICAoVXBkYXRlQXRsYXNDbGllbnQpOgorCiAyMDEzLTAzLTE0ICBTaGV6YW4gQmFpZyAg
PHNiYWlnMUBibG9vbWJlcmcubmV0PgogCiAgICAgICAgIEJhY2tzcGFjZS9kZWxldGUgYXQgc3Rh
cnQgb2YgdGFibGUgY2VsbCBzaG91bGRuJ3Qgc3RlcCBvdXQgb2YgY2VsbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDI2ODI1MDY5YTc3MDAzMWMxYWNiMTgwZDkwNTljOTYzY2IyNGMxNWQuLjZmZTI1Nzc3YmMzNjM2
YjUyOTc1OGM1N2I0M2YxNDRiZjFjZDA3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAor
MjAxMy0wMy0wOCAgR3dhbmcgWW9vbiBId2FuZyAgPHJ5dW1pZWxAY29tcGFueTEwMC5uZXQ+CisK
KyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IFVuaWZ5IG1lc3NhZ2VzIHJlbGF0ZWQgb2Jq
ZWN0J3MgbGlmZWN5Y2xlcyBpbnRvIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTkxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyBjb2RlcyBmb3IgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlIGluCisgICAgICAgIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdCwgZXhjZXB0IGZvciBhIGZhY3RvcnkgbWV0aG9kLgorICAgICAgICBOb3cs
IENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycyBbZW58ZGVdY29kZXMgQ29vcmRpbmF0
ZWRTdXJmYWNlIGl0c2VsZgorICAgICAgICB1c2luZyBXZWJDb29yZGluYXRlZFN1cmZhY2UuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXNpdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjplbmNvZGVDb29yZGluYXRlZFN1cmZh
Y2UpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGVDb29yZGlu
YXRlZFN1cmZhY2UpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29y
ZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAg
ICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNoZWNrQ3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3hpZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZyk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBkYXRlSW1hZ2VCYWNraW5n
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdl
QmFja2luZ0NvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpyZW1vdmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVVcGRhdGVBdGxhcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorCiAyMDEz
LTAzLTE0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIxNDUxNjkpOiBbTWFjXVtXSzJdIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJh
bWUtYWNjZXNzLXB1dC5odG1sIGZhaWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBlYjA4NWZjOGNlNDNiNzQ3YzU1
OWJkMTAwYWM1MDdiZGMwM2JjNzFmLi4yYzQzN2U5YWJlNjdjZjkzZDU5NjIwZDE0NGJkYWM4MGMw
MGEzN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcApAQCAtMjczLDYgKzI3MywxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQoR3JhcGhpY3NMYXllciogbGF5ZXIs
IGNvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6c3luY0N1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IENvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0
ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0ZUN1c3Rv
bUZpbHRlclByb2dyYW0oc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLmZpcnN0LCBzdGF0
ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlLnNpemUoKTsgKytpKQorICAgICAg
ICByZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKHN0YXRlLmN1c3RvbUZpbHRlcnNUb1JlbW92ZVtp
XSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjppbmplY3RDYWNoZWRDdXN0
b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdAog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewpAQCAt
NTI1LDYgKzUzNCwxNSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVGls
ZXNJZk5lZWRlZChHcmFwaGljc0xheWVyKiBsYXllciwgY29uc3QgQwogICAgIH0KIH0KIAordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKGNvbnN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0
ZVVwZGF0ZUF0bGFzKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5maXJzdCwgc3RhdGUu
dXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLnNlY29uZCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAg
cmVtb3ZlVXBkYXRlQXRsYXMoc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlW2ldKTsKK30KKwog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90
IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQogewogICAg
IEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7CkBAIC01MzcsNiArNTU1LDIx
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lEKQogICAgIG1fc3VyZmFjZXMucmVtb3ZlKGF0bGFzSUQpOwogfQogCit2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXRlLmltYWdlc1RvQ3JlYXRlLnNpemUoKTsgKytpKQorICAgICAgICBjcmVhdGVJbWFnZUJh
Y2tpbmcoc3RhdGUuaW1hZ2VzVG9DcmVhdGVbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGF0ZS5pbWFnZXNUb1JlbW92ZS5zaXplKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlSW1h
Z2VCYWNraW5nKHN0YXRlLmltYWdlc1RvUmVtb3ZlW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIHVwZGF0
ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUuaW1hZ2Vz
VG9VcGRhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUu
aW1hZ2VzVG9DbGVhci5zaXplKCk7ICsraSkKKyAgICAgICAgY2xlYXJJbWFnZUJhY2tpbmdDb250
ZW50cyhzdGF0ZS5pbWFnZXNUb0NsZWFyW2ldKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCiB7CiAgICAgQVNTRVJUKCFtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkp
OwpAQCAtNjE1LDE0ICs2NDgsMjAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNv
bW1pdFNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogICAgIC8vIFNp
bmNlIHRoZSBmcmFtZSBoYXMgbm93IGJlZW4gcmVuZGVyZWQsIHdlIGNhbiBzYWZlbHkgdW5sb2Nr
IHRoZSBhbmltYXRpb25zIHVudGlsIHRoZSBuZXh0IGxheW91dC4KICAgICBzZXRBbmltYXRpb25z
TG9ja2VkKGZhbHNlKTsKIAorICAgIGNyZWF0ZUxheWVycyhzdGF0ZS5sYXllcnNUb0NyZWF0ZSk7
CisgICAgZGVsZXRlTGF5ZXJzKHN0YXRlLmxheWVyc1RvUmVtb3ZlKTsKKwogICAgIGlmIChzdGF0
ZS5yb290Q29tcG9zaXRpbmdMYXllciAhPSBtX3Jvb3RMYXllcklEKQogICAgICAgICBzZXRSb290
TGF5ZXJJRChzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXllcik7CiAKICAgICBpZiAoc3RhdGUuYmFj
a2dyb3VuZENvbG9yICE9IG1fYmFja2dyb3VuZENvbG9yKQogICAgICAgICBzZXRCYWNrZ3JvdW5k
Q29sb3Ioc3RhdGUuYmFja2dyb3VuZENvbG9yKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RhdGUuaW1hZ2VzVG9VcGRhdGUuc2l6ZSgpOyArK2kpCi0gICAgICAgIHVwZGF0ZUltYWdl
QmFja2luZyhzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5maXJzdCwgc3RhdGUuaW1hZ2VzVG9VcGRh
dGVbaV0uc2Vjb25kKTsKKyAgICBzeW5jSW1hZ2VCYWNraW5ncyhzdGF0ZSk7CisgICAgc3luY1Vw
ZGF0ZUF0bGFzZXMoc3RhdGUpOworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBzeW5jQ3Vz
dG9tRmlsdGVyUHJvZ3JhbXMoc3RhdGUpOworI2VuZGlmCiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0YXRlLmxheWVyc1RvVXBkYXRlLnNpemUoKTsgKytpKQogICAgICAgICBzZXRMYXll
clN0YXRlKHN0YXRlLmxheWVyc1RvVXBkYXRlW2ldLmZpcnN0LCBzdGF0ZS5sYXllcnNUb1VwZGF0
ZVtpXS5zZWNvbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oCmluZGV4IDY4ZmM2MTlmMTQ4MWE4ZTNlOTRhY2U4ZDM0ODA1OGRkNTI4
NGM0OGIuLmZlODVmOGY4ZmFhMDEzMmUyNTEwNDhhYzExMTliZjYyMTNiMmJiMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29t
cGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODMsMjMgKzg0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYpOwogCi0gICAgdm9pZCBjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5h
dGVkTGF5ZXJJRD4mKTsKLSAgICB2b2lkIGRlbGV0ZUxheWVycyhjb25zdCBWZWN0b3I8Q29vcmRp
bmF0ZWRMYXllcklEPiYpOwotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIHZvaWQgaW5q
ZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmls
dGVycykgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCwg
Y29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKLSAgICB2b2lkIHJlbW92ZUN1c3RvbUZp
bHRlclByb2dyYW0oaW50IGlkKTsKLSNlbmRpZgotCi0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxh
cyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOwotICAg
IHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7Ci0gICAgdm9pZCBjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KTsKLSAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCBzZXRBbmltYXRpb25zTG9ja2VkKGJv
b2wpOwotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAgdm9p
ZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCBlbmFibGUpIHsgbV9zZXREcmF3c0JhY2tncm91bmQg
PSBlbmFibGU7IH0KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKQEAgLTEw
OCw2ICs5Myw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldFJvb3RMYXllcklE
KENvb3JkaW5hdGVkTGF5ZXJJRCk7CisgICAgdm9pZCBjcmVhdGVMYXllcnMoY29uc3QgVmVjdG9y
PENvb3JkaW5hdGVkTGF5ZXJJRD4mKTsKKyAgICB2b2lkIGRlbGV0ZUxheWVycyhjb25zdCBWZWN0
b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwogICAgIHZvaWQgc2V0TGF5ZXJTdGF0ZShDb29yZGlu
YXRlZExheWVySUQsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAg
dm9pZCBzZXRMYXllckNoaWxkcmVuSWZOZWVkZWQoR3JhcGhpY3NMYXllciosIGNvbnN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlc0lmTmVlZGVk
KEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwpA
QCAtMTI0LDYgKzExMSwyNSBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJl
cGFpbnRDb3VudElmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYpOwogCisgICAgdm9pZCBzeW5jVXBkYXRlQXRsYXNlcyhjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKKyAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQz
Ml90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdm9pZCBy
ZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKKworICAgIHZvaWQgc3luY0ltYWdl
QmFja2luZ3MoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBjcmVh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCB1cGRh
dGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29y
ZGluYXRlZFN1cmZhY2U+KTsKKyAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAg
dm9pZCBzeW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJik7CisgICAgdm9pZCBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9ncmFtcyhjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZUN1c3RvbUZp
bHRlclByb2dyYW0oaW50IGlkLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOworICAg
IHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOworI2VuZGlmCisKKyAgICB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOworCiAgICAgR3JhcGhpY3NMYXll
ciogbGF5ZXJCeUlEKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX2xheWVycy5jb250YWlucyhpZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IDhjYWY5MGI5NjFjNDE3MjIzYWUwNmJj
ZTdlYWViODM4NWU3YTYyNmQuLmNhMWJkNzU4NWExZWMyMThhODcwZjVkNjAzZDhiMGU3MGNjNDcw
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlLmgKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8uaCIKKyNlbmRpZgorCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAj
aW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCIKICNlbmRpZgpAQCAtMTc5LDggKzE4Mywy
MiBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHsKICAgICBJbnRTaXplIGNvbnRl
bnRzU2l6ZTsKICAgICBJbnRSZWN0IGNvdmVyZWRSZWN0OwogCisgICAgVmVjdG9yPENvb3JkaW5h
dGVkTGF5ZXJJRD4gbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb29yZGlu
YXRlZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPiA+IGxheWVyc1RvVXBk
YXRlOworICAgIFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+IGxheWVyc1RvUmVtb3ZlOworCisg
ICAgVmVjdG9yPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdlc1RvQ3JlYXRlOworICAg
IFZlY3RvcjxDb29yZGluYXRlZEltYWdlQmFja2luZ0lEPiBpbWFnZXNUb1JlbW92ZTsKICAgICBW
ZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+ID4gPiBpbWFnZXNUb1VwZGF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRD4gaW1hZ2VzVG9DbGVhcjsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWlu
dDMyX3QgLyogYXRsYXNJRCAqLywgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+IHVwZGF0
ZUF0bGFzZXNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3QgLyogYXRsYXNJRCAqLz4gdXBk
YXRlQXRsYXNlc1RvUmVtb3ZlOworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8dWludDMyX3QgLyogRmlsdGVySUQgKi8sIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvPiA+IGN1c3RvbUZpbHRlcnNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGN1c3Rv
bUZpbHRlcnNUb1JlbW92ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5j
cHAKaW5kZXggMTI4YmFiZTI5OGY2NmNiYzI3NjljZjZmZjhlYTk4MjI5ZDUxNTU3Ny4uNDM5MTlj
NmM1NGM4ZGFlYzM0MTU3NzlhZTI3MThmMDMzN2NkMmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTEzLDkgKzExNCw4IEBAIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSgpCiAK
ICAgICBtX25hdGl2ZUltYWdlUHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKIAotICAgIC8vIElmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIHRyeSBhZ2FpbiBp
biB0aGUgbmV4dCB1cGRhdGUuCi0gICAgYm9vbCBzdWNjZXNzID0gbV9jb29yZGluYXRvci0+dXBk
YXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFjZSk7Ci0gICAgbV9pc0RpcnR5ID0gIXN1Y2Nl
c3M7CisgICAgbV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFj
ZSk7CisgICAgbV9pc0RpcnR5ID0gZmFsc2U7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmc6OnJlbGVhc2VTdXJmYWNlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAppbmRleCAzNjllMjM5ZjliMGEyOThjZDlm
Y2NlNDIzZGE0ZDJmMWU1YTIxYTc2Li43OTMzZDY5ZDNkYzJiZWI3ZGE4NWFmMzFkY2FmMjlkMzZm
OTBiOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmcuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29vcmRpbmF0
b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFn
ZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0Nv
bnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDM2NGYwNjg3
MTA4MmI1OGZjYmQ4M2EwZWYzMTQ1MGJlNDgwMDg0OGIuLmFmNmZjNzkyMjNmZTYzZWRlMWRlMzYw
M2QxNzZiMzYzNTdiY2RiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNw
cApAQCAtMjMsNiArMjMsNyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisj
aW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CkBAIC0zOCw5ICszOSw3IEBAIFVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxh
c0NsaWVudCogY2xpZW50LCBpbnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1CiAgICAgSW50U2l6
ZSBzaXplID0gbmV4dFBvd2VyT2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikpOwog
ICAgIG1fc3VyZmFjZSA9IENvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzKTsK
IAotICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIGlmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMs
IFVwZGF0ZUF0bGFzIGdpdmVzIHVwIGRyYXdpbmcgYW55dGhpbmcgaW1wbGljaXRseS4KLSAgICBp
ZiAoIW1fY2xpZW50LT5jcmVhdGVVcGRhdGVBdGxhcyhtX0lELCBtX3N1cmZhY2UpKQotICAgICAg
ICBtX3N1cmZhY2UuY2xlYXIoKTsKKyAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9J
RCwgbV9zdXJmYWNlKTsKIH0KIAogVXBkYXRlQXRsYXM6On5VcGRhdGVBdGxhcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
VXBkYXRlQXRsYXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCmluZGV4IDQ4YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0
ZTMzMGZkZGIxNmQ3OGIuLjVkZDVkMjYwNmYyMWVmNjc4NGQwZGVmYjc0ZGZhNjdkOGZjZDVmN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9VcGRhdGVBdGxhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5oCkBAIC0zMyw3ICszMyw3IEBAIGNs
YXNzIEludFBvaW50OwogCiBjbGFzcyBVcGRhdGVBdGxhc0NsaWVudCB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRh
dGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJ
RCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggYzc4Y2IxYjA1ZWIzN2M4OGY4YWYyYTEzNjZlNTU1Zjk0
MDkzN2Y5ZC4uZDliNWE4M2E2MDI1NDIyMWQxYWIwMzM4ZDk1NDc4NDVlZGZlOWZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0xMDEwLDYgKzEwMTAsNDIgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRpbGVDcmVhdGlvbklu
Zm8+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBUaWxlQ3JlYXQKICAgICByZXR1
cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUaWxlQ3JlYXRpb25JbmZvPjo6ZGVjb2RlKGRlY29kZXIs
IHVwZGF0ZUluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmNvZGVDb29yZGluYXRlZFN1cmZhY2Uo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNl
PiYgc3VyZmFjZSkKK3sKKyAgICBib29sIGlzVmFsaWRTdXJmYWNlID0gZmFsc2U7CisgICAgaWYg
KCFzdXJmYWNlKSB7CisgICAgICAgIGVuY29kZXIgPDwgaXNWYWxpZFN1cmZhY2U7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBXZWJDb29yZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5h
dGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVkU3VyZmFjZSo+KHN1cmZhY2Uu
Z2V0KCkpOworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBp
ZiAod2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKKyAgICAgICAg
aXNWYWxpZFN1cmZhY2UgPSB0cnVlOworCisgICAgZW5jb2RlciA8PCBpc1ZhbGlkU3VyZmFjZTsK
KworICAgIGlmIChpc1ZhbGlkU3VyZmFjZSkKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7Cit9
CisKK3N0YXRpYyBib29sIGRlY29kZUNvb3JkaW5hdGVkU3VyZmFjZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiBzdXJmYWNlKQoreworICAgIGJv
b2wgaXNWYWxpZFN1cmZhY2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkU3VyZmFj
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXNWYWxpZFN1cmZhY2UpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUg
aGFuZGxlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgc3VyZmFjZSA9IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhh
bmRsZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGU+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogewogICAgIGVuY29kZXIgPDwgc3Rh
dGUucm9vdENvbXBvc2l0aW5nTGF5ZXI7CkBAIC0xMDE3LDI0ICsxMDUzLDM4IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiBlbmNvZGVyLCBjCiAgICAgZW5jb2RlciA8PCBzdGF0ZS5zY3JvbGxQb3NpdGlvbjsKICAg
ICBlbmNvZGVyIDw8IHN0YXRlLmNvbnRlbnRzU2l6ZTsKICAgICBlbmNvZGVyIDw8IHN0YXRlLmNv
dmVyZWRSZWN0OworCisgICAgZW5jb2RlciA8PCBzdGF0ZS5sYXllcnNUb0NyZWF0ZTsKICAgICBl
bmNvZGVyIDw8IHN0YXRlLmxheWVyc1RvVXBkYXRlOworICAgIGVuY29kZXIgPDwgc3RhdGUubGF5
ZXJzVG9SZW1vdmU7CisKKyAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvQ3JlYXRlOworICAg
IGVuY29kZXIgPDwgc3RhdGUuaW1hZ2VzVG9SZW1vdmU7CiAKICAgICAvLyBXZSBuZWVkIHRvIGVu
Y29kZSBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSByaWdodCBhZnRlciBpdCdzIGNyZWF0
aW9uLgogICAgIC8vIFRoYXQncyB3aHkgd2UgY2Fubm90IHVzZSBzaW1wbGUgc3RkOjpwYWlyIGVu
Y29kZXIuCiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3RhdGUuaW1hZ2Vz
VG9VcGRhdGUuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdl
c1RvVXBkYXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuaW1hZ2Vz
VG9VcGRhdGVbaV0uZmlyc3Q7CisgICAgICAgIGVuY29kZUNvb3JkaW5hdGVkU3VyZmFjZShlbmNv
ZGVyLCBzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5zZWNvbmQpOworICAgIH0KKyAgICBlbmNvZGVy
IDw8IHN0YXRlLmltYWdlc1RvQ2xlYXI7CiAKLSAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+
IFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOwotICAgIFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBzdGF0ZS5pbWFnZXNUb1VwZGF0ZS5lbmQoKTsKLSAgICBmb3Ig
KFN1cmZhY2VVcGRhdGVQYWlyVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0YXRlLmltYWdl
c1RvVXBkYXRlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotCi0gICAgICAgIFdlYkNvb3Jk
aW5hdGVkU3VyZmFjZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29v
cmRpbmF0ZWRTdXJmYWNlKj4oaXQtPnNlY29uZC5nZXQoKSk7Ci0gICAgICAgIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgaWYgKCF3ZWJDb29yZGluYXRlZFN1
cmZhY2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0
ZS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudXBkYXRlQXRsYXNl
c1RvQ3JlYXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29kZXIgPDwgc3RhdGUudXBkYXRl
QXRsYXNlc1RvQ3JlYXRlW2ldLmZpcnN0OworICAgICAgICBlbmNvZGVDb29yZGluYXRlZFN1cmZh
Y2UoZW5jb2Rlciwgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLnNlY29uZCk7CisgICAg
fQorICAgIGVuY29kZXIgPDwgc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlOwogCi0gICAgICAg
IGVuY29kZXIgPDwgaXQtPmZpcnN0OwotICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
c3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uZmlyc3Q7CisgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLnNlY29uZDsKICAg
ICB9CisgICAgZW5jb2RlciA8PCBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmU7CisjZW5kaWYK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZT46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3Rh
dGUpCkBAIC0xMDU0LDI2ICsxMTA0LDc4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRl
ZEdyYXBoaWNzU3RhdGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5jb3ZlcmVkUmVjdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUubGF5ZXJzVG9DcmVhdGUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmxh
eWVyc1RvVXBkYXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0ZS5sYXllcnNUb1JlbW92ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuaW1hZ2VzVG9DcmVhdGUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmltYWdlc1RvUmVt
b3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgdWludDY0X3Qgc2l6ZU9mSW1hZ2Vz
VG9VcGRhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplT2ZJbWFnZXNUb1VwZGF0ZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBz
aXplT2ZJbWFnZXNUb1VwZGF0ZTsgaSsrKSB7CisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8
IHNpemVPZkltYWdlc1RvVXBkYXRlOyArK2kpIHsKICAgICAgICAgQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlSUQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpKQor
ICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICBpZiAo
IWRlY29kZUNvb3JkaW5hdGVkU3VyZmFjZShkZWNvZGVyLCBzdXJmYWNlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJm
YWNlID0gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKTsKICAgICAgICAgc3Rh
dGUuaW1hZ2VzVG9VcGRhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGltYWdlSUQsIHN1cmZhY2Uu
cmVsZWFzZSgpKSk7CiAgICAgfQogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5pbWFn
ZXNUb0NsZWFyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDY0X3Qgc2l6ZU9m
VXBkYXRlQXRsYXNlc1RvQ3JlYXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZU9mVXBk
YXRlQXRsYXNlc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yICh1
aW50NjRfdCBpID0gMDsgaSA8IHNpemVPZlVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsgKytpKSB7Cisg
ICAgICAgIHVpbnQzMl90IGF0bGFzSUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXRs
YXNJRCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVDb29yZGluYXRlZFN1
cmZhY2UoZGVjb2Rlciwgc3VyZmFjZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgc3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihh
dGxhc0lELCBzdXJmYWNlLnJlbGVhc2UoKSkpOworICAgIH0KKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIHVpbnQ2NF90IHNpemVPZkN1c3RvbUZp
bHRlcnNUb0NyZWF0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemVPZkN1c3RvbUZpbHRl
cnNUb0NyZWF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodWludDY0X3Qg
aSA9IDA7IGkgPCBzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVhdGU7ICsraSkgeworICAgICAgICB1
aW50MzJfdCBmaWx0ZXJJRDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaWx0ZXJJRCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvIGZpbHRlckluZm87CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVySW5mbykp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHN0YXRlLmN1c3RvbUZpbHRlcnNU
b0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZmlsdGVySUQsIGZpbHRlckluZm8pKTsKKyAg
ICB9CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
LmNwcAppbmRleCBmN2UzMWQzODQwZTdhZmYyODc3ZjQ0ZDhkMDIwMmMzYzQzODY3ODQzLi4xZDY1
ODBhYTMyMWUxZGNiZGRlYzYxOTI3OTM5NDY1NzZmYTVmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC0xLDUgKzEsNiBA
QAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJ
bmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYyLDM3ICs2Myw2IEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OmRpc3BhdGNoVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mIGZ1bmN0CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKGZ1bmN0aW9uKTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMy
X3QgYXRsYXNJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRsZSkK
LXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNy
ZWF0ZVVwZGF0ZUF0bGFzLCBtX3NjZW5lLmdldCgpLCBhdGxhc0lELCBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OmNyZWF0ZShoYW5kbGUpKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCi17Ci0gICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVB
dGxhcywgbV9zY2VuZS5nZXQoKSwgYXRsYXNJRCkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVDb21wb3NpdGluZ0xheWVycyhjb25zdCBWZWN0b3I8Q29v
cmRpbmF0ZWRMYXllcklEPiYgaWRzKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXJzLCBtX3NjZW5lLmdldCgpLCBpZHMpKTsK
LX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6ZGVsZXRlQ29tcG9zaXRp
bmdMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4mIGlkcykKLXsKLSAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlbGV0ZUxheWVy
cywgbV9zY2VuZS5nZXQoKSwgaWRzKSk7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi12
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9n
cmFtKGludCBpZCkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0sIG1fc2NlbmUuZ2V0KCksIGlkKSk7
Ci19Ci12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVDdXN0b21GaWx0
ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIHByb2dyYW1J
bmZvKQotewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgbV9zY2VuZS5nZXQoKSwgaWQsIHByb2dyYW1J
bmZvKSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6
Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSYgZ3JhcGhpY3NTdGF0ZSkKIHsKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjZW5lU3RhdGUsIG1fc2NlbmUuZ2V0KCksIGdyYXBo
aWNzU3RhdGUpKTsKQEAgLTEwMiwyNiArNzIsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Ojpjb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoY29uc3QgQ29vcmRpbgog
I2VuZGlmCiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZUlt
YWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJh
Y2tpbmcsIG1fc2NlbmUuZ2V0KCksIGltYWdlSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNr
aW5nSUQgaW1hZ2VJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmIGhhbmRs
ZSkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnVwZGF0ZUltYWdlQmFja2luZywgbV9zY2VuZS5nZXQoKSwgaW1hZ2VJRCwgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlOjpjcmVhdGUoaGFuZGxlKSkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQgaW1hZ2VJRCkKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMsIG1fc2NlbmUuZ2V0KCks
IGltYWdlSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6cmVt
b3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKLXsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZUlt
YWdlQmFja2luZywgbV9zY2VuZS5nZXQoKSwgaW1hZ2VJRCkpOwotfQotCiB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQog
ewogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0
QW5pbWF0aW9uc0xvY2tlZCwgbV9zY2VuZS5nZXQoKSwgbG9ja2VkKSk7CkBAIC0xNjMsMTEgKzEx
Myw2IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnB1cmdlQmFja2luZ1N0
b3JlcygpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpQdXJnZUJhY2tpbmdTdG9yZXMoKSwg
bV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNldEJhY2tncm91bmRDb2xvciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKLX0KLQogdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQz
Ml90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkKIHsKICAgICBtX2RyYXdpbmdBcmVh
UHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OkNvbW1pdFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdB
cmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNDQ4NmEwZjJlZDZmYTBhYzVjMzI0YjQ5
MzBlMGUwYTIzOTVhNGZkYS4uZjc2NGE5NTMyZTMxOTFlNTZlZTYxYzI2YTk1NzBkYjVhNDExZWI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAy
MDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQxLDkgKzQyLDcg
QEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlOwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlOwotY2xhc3MgU3VyZmFjZVVwZGF0ZUluZm87CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsMjUgKzU1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eSgpOwogCiAgICAgLy8gTWVzc2FnZXMgRnJvbSBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QKLSAgICB2b2lkIGNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+Jik7Ci0gICAgdm9pZCBkZWxldGVDb21wb3Np
dGluZ0xheWVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEPiYpOwot
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKLSAgICB2b2lkIGNyZWF0ZUN1c3RvbUZpbHRlclByb2dy
YW0oaW50IGlkLCBjb25zdCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYpOwotICAg
IHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwotI2VuZGlmCi0gICAgdm9p
ZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBjb25zdCBXZWJDb29yZGluYXRl
ZFN1cmZhY2U6OkhhbmRsZSYpOwotICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3Qg
YXRsYXNJRCk7Ci0gICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgY29uc3QgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpI
YW5kbGUmKTsKLSAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0KICAgICB2b2lkIGNvbW1pdENvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmKTsKKwogICAgIHZvaWQgc2V0QW5pbWF0aW9uc0xvY2tlZChib29sKTsKICNpZiBFTkFCTEUo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
KTsKICNlbmRpZgotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJik7CiAKICAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7
CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBjb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUoKSBjb25zdCB7IHJldHVybiBtX3NjZW5lLmdldCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDNhNzY0ZjEzYzdhMmUxNDQ2MjYxYWY4NjViN2ZkNjAwZDFlN2U2ODMuLmFjMzA3
ODY3ODdkMDBhZmU1MTA2ZTdhMzk1Y2ZkMTYxNmVhOGE4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xLDUgKzEsNiBAQAogIwogIyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisjICAgIENvcHlyaWdodCAoQykgMjAx
MyBDb21wYW55IDEwMCwgSW5jLgogIwogIyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiwyNiArMjMs
OSBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSB7CiAKICAgICBD
b21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlIHN0YXRlKQogCi0gICAgQ3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoVmVjdG9yPHVpbnQz
Ml90PiBpZHMpCi0gICAgRGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoVmVjdG9yPHVpbnQzMl90PiBp
ZHMpCi0KLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgQ3JlYXRlQ3VzdG9tRmlsdGVyUHJv
Z3JhbShpbnQgaWQsIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1JbmZv
KQotICAgIFJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKQotI2VuZGlmCi0gICAgQ3Jl
YXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZSBoYW5kbGUpCi0gICAgUmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRs
YXNJRCkKLSAgICBDcmVhdGVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKLSAgICBVcGRh
dGVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCwgV2ViS2l0OjpXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZSBoYW5kbGUpCi0gICAgQ2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyh1aW50
NjRfdCBpbWFnZUlEKQotICAgIFJlbW92ZUltYWdlQmFja2luZyh1aW50NjRfdCBpbWFnZUlEKQot
CiAgICAgU2V0QW5pbWF0aW9uc0xvY2tlZChib29sIGxvY2tlZCkKLQogI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICBSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKQogI2VuZGlm
Ci0KLSAgICBTZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCmluZGV4IGNmZTJlNzljYjY5ZDhiYTYzZjQxZDFjNzhhZTYyMjdiOTkzM2Y0
MDYuLmM2Mzk0NTNkNDM3YTFkY2ZlZjNlYTAxYzA4N2Y0MTcyNzI3ZWUxMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cApAQCAtMjg1LDggKzI4NSw2IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3Rl
Y3RvcihtX2lzRmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCi0gICAgY3JlYXRlQ29tcG9z
aXRpbmdMYXllcnMoKTsKLQogICAgIGluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVl
ZGVkKCk7CiAKICAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpOwpAQCAtMjk4LDggKzI5Niw2IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiAgICAgZmx1c2hQZW5kaW5nSW1hZ2VC
YWNraW5nQ2hhbmdlcygpOwogCi0gICAgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKLQogICAg
IGlmIChtX3Nob3VsZFN5bmNGcmFtZSkgewogICAgICAgICBkaWRTeW5jID0gdHJ1ZTsKIApAQCAt
MzA5LDkgKzMwNSw3IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXMoKQogCiAgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZShtX3N0YXRlKSk7CiAKLSAgICAgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5jbGVhcigpOwot
ICAgICAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmNsZWFyKCk7Ci0KKyAgICAgICAgY2xlYXJQ
ZW5kaW5nU3RhdGVDaGFuZ2VzKCk7CiAgICAgICAgIG1fd2FpdGluZ0ZvclVJUHJvY2VzcyA9IHRy
dWU7CiAgICAgICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gZmFsc2U7CiAgICAgfSBlbHNlCkBAIC0z
MjUsMzggKzMxOSwyNCBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5k
aW5nTGF5ZXJDaGFuZ2VzKCkKICAgICByZXR1cm4gZGlkU3luYzsKIH0KIAotdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMoKQogewotICAgIGlm
IChtX2xheWVyc1RvQ3JlYXRlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOworICAgIG1fc3Rh
dGUubGF5ZXJzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmNs
ZWFyKCk7CisgICAgbV9zdGF0ZS5sYXllcnNUb1JlbW92ZS5jbGVhcigpOwogCi0gICAgLy8gSWYg
YSBsYXllciBnZXRzIGNyZWF0ZWQgYW5kIGRlbGV0ZWQgaW4gdGhlIHNhbWUgY3ljbGUsIHdlIGNh
biBzaW1wbHkgcmVtb3ZlIGl0IGZyb20gbV9sYXllcnNUb0NyZWF0ZSBhbmQgbV9sYXllcnNUb0Rl
bGV0ZS4KLSAgICBmb3IgKGludCBpID0gbV9sYXllcnNUb0NyZWF0ZS5zaXplKCkgLSAxOyBpID49
IDA7IC0taSkgewotICAgICAgICBzaXplX3QgaW5kZXggPSBtX2xheWVyc1RvRGVsZXRlLmZpbmQo
bV9sYXllcnNUb0NyZWF0ZVtpXSk7Ci0gICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewot
ICAgICAgICAgICAgbV9sYXllcnNUb0NyZWF0ZS5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBtX2xh
eWVyc1RvRGVsZXRlLnJlbW92ZShpbmRleCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9zdGF0
ZS5pbWFnZXNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUuY2xl
YXIoKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5p
bWFnZXNUb0NsZWFyLmNsZWFyKCk7CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVhdGVDb21wb3NpdGluZ0xheWVycyhtX2xh
eWVyc1RvQ3JlYXRlKSk7Ci0gICAgbV9sYXllcnNUb0NyZWF0ZS5jbGVhcigpOwotICAgIG1fc2hv
dWxkU3luY0ZyYW1lID0gdHJ1ZTsKLX0KKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0
ZS5jbGVhcigpOworICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3ZlLmNsZWFyKCk7CiAK
LXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZWxldGVDb21wb3NpdGluZ0xheWVycygp
Ci17Ci0gICAgaWYgKG1fbGF5ZXJzVG9EZWxldGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAobV9pc1B1cmdpbmcpIHsKLSAgICAgICAgbV9sYXllcnNUb0RlbGV0ZS5jbGVh
cigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXll
cnMobV9sYXllcnNUb0RlbGV0ZSkpOwotICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKLSAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAg
IG1fc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5jdXN0
b21GaWx0ZXJzVG9SZW1vdmUuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQpA
QCAtNDI3LDcgKzQwNyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjaGVja0N1
c3RvbUZpbHRlclByb2dyYW1Qcm94aWVzKGNvbnN0IEZpbHRlck9wZXJhCiAgICAgICAgIGlmICgh
Y3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5jbGllbnQoKSkgewogICAgICAgICAgICAgY3VzdG9t
RmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRDbGllbnQodGhpcyk7CiAgICAgICAgICAgICBtX2N1c3Rv
bUZpbHRlclByb2dyYW1zLmFkZChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkuZ2V0KCkpOwotICAg
ICAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6Q3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFtUHJv
eHktPmlkKCksIGN1c3RvbU9wZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgpLT52YWxpZGF0ZWRQ
cm9ncmFtSW5mbygpKSk7CisgICAgICAgICAgICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpLCBj
dXN0b21PcGVyYXRpb24tPnZhbGlkYXRlZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3JhbUluZm8o
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhlIGNsaWVudCB3YXMg
bm90IGRpc2Nvbm5lY3RlZCB0aGVuIHRoaXMgY29vcmRpbmF0b3IgbXVzdCBiZSB0aGUgY2xpZW50
IGZvciBpdC4KICAgICAgICAgICAgIEFTU0VSVChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNs
aWVudCgpID09IHRoaXMpOwpAQCAtNDQwLDcgKzQyMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkoV2ViQ3VzdG9tRmlsdGVy
UHJvCiAgICAgLy8gQXQgdGhpcyB0aW1lIHRoZSBzaGFkZXIgaXMgbm90IG5lZWRlZCBhbnltb3Jl
LCBzbyB3ZSByZW1vdmUgaXQgZnJvbSBvdXIgc2V0IGFuZAogICAgIC8vIHNlbmQgYSBtZXNzYWdl
IHRvIHRoZSBvdGhlciBwcm9jZXNzIHRvIGRlbGV0ZSBpdC4KICAgICBtX2N1c3RvbUZpbHRlclBy
b2dyYW1zLnJlbW92ZShjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkpOwotICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZUN1c3Rv
bUZpbHRlclByb2dyYW0oY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpKSk7CisgICAgbV9z
dGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuYXBwZW5kKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eS0+aWQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0
Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQpAQCAtNDU0LDggKzQzNCwxOCBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIAogdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiB7CisgICAgaWYgKG1faXNQdXJnaW5nKQorICAgICAgICByZXR1cm47
CisKICAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyLT5pZCgpKTsKLSAgICBtX2xh
eWVyc1RvRGVsZXRlLmFwcGVuZChsYXllci0+aWQoKSk7CisKKyAgICBzaXplX3QgaW5kZXggPSBt
X3N0YXRlLmxheWVyc1RvQ3JlYXRlLmZpbmQobGF5ZXItPmlkKCkpOworICAgIGlmIChpbmRleCAh
PSBub3RGb3VuZCkgeworICAgICAgICBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLnJlbW92ZShpbmRl
eCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlLmxheWVyc1RvUmVtb3Zl
LmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAKQEAg
LTU1OCwyNiArNTQ4LDE3IEBAIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW1hZ2VCYWNraW5nCiAKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlEKQogewotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBt
X3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpD
cmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2VJRCkpOworICAgIG1fc3RhdGUuaW1hZ2VzVG9DcmVhdGUu
YXBwZW5kKGltYWdlSUQpOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0
ZWRTdXJmYWNlKQogewotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBXZWJDb29y
ZGluYXRlZFN1cmZhY2UqIHdlYkNvb3JkaW5hdGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNv
b3JkaW5hdGVkU3VyZmFjZSo+KGNvb3JkaW5hdGVkU3VyZmFjZS5nZXQoKSk7Ci0gICAgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgaGFuZGxlOwotICAgIGlmICghd2ViQ29vcmRpbmF0ZWRT
dXJmYWNlLT5jcmVhdGVIYW5kbGUoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaW1hZ2VJRCwg
Y29vcmRpbmF0ZWRTdXJmYWNlKSk7Ci0gICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Q2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhpbWFnZUlEKSk7CisgICAgbV9zdGF0ZS5p
bWFnZXNUb0NsZWFyLmFwcGVuZChpbWFnZUlEKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCkBAIC01ODYsOSArNTY3LDkgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWcKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlE
KSk7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwogICAgIG1faW1hZ2VCYWNraW5ncy5y
ZW1vdmUoaW1hZ2VJRCk7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6UmVtb3ZlSW1hZ2VCYWNraW5nKGltYWdlSUQpKTsKKworICAg
IG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUuYXBwZW5kKGltYWdlSUQpOwogfQogCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpCkBA
IC02MjcsNyArNjA4LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKICAgICBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGll
bnQpOwogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKICAgICBtX3JlZ2lzdGVyZWRM
YXllcnMuYWRkKGxheWVyLT5pZCgpLCBsYXllcik7Ci0gICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBl
bmQobGF5ZXItPmlkKCkpOworICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVy
LT5pZCgpKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAg
ICBzY2hlZHVsZUxheWVyRmx1c2goKTsKICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIpOwpAQCAt
NjUzLDIxICs2MzQsMTYgQEAgYm9vbCBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0
cjxDb29yZGluYXRlZFN1cmZhY2U+IGNvb3JkaW5hdGVkU3VyZmFjZSkKK3ZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNz
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQogewotICAgIFdl
YkNvb3JkaW5hdGVkU3VyZmFjZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8
V2ViQ29vcmRpbmF0ZWRTdXJmYWNlKj4oY29vcmRpbmF0ZWRTdXJmYWNlLmdldCgpKTsKLSAgICBX
ZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCF3ZWJDb29yZGlu
YXRlZFN1cmZhY2UtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Q3JlYXRlVXBkYXRlQXRsYXMoYXRsYXNJRCwgaGFuZGxlKSk7Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgbV9zdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGF0bGFzSUQsIGNvb3JkaW5hdGVkU3VyZmFjZSkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKIHsKICAg
ICBpZiAobV9pc1B1cmdpbmcpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpSZW1vdmVVcGRhdGVBdGxh
cyhhdGxhc0lEKSk7CisgICAgbV9zdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUuYXBwZW5kKGF0
bGFzSUQpOwogfQogCiBXZWJDb3JlOjpGbG9hdFJlY3QgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ojp2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggYTIxNzRlMjk3MzI2ZGFk
YTA3MDQwY2E3NmZlNzc1MjUyZDgxNWQzZi4uOTgyNDFhZTUyMmI1NjRmNmNlYzFjYTdmZTcwZTA0
MGU1NzIyZGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFueSAxMDAsIEluYy4KIAogICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMTEwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdl
QmFja2luZzo6Q29vcmRpbmF0b3IKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5n
KFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgYm9vbCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
KSBPVkVSUklERTsKIApAQCAtMTI1LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNMYXllclN0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIC8vIFVwZGF0ZUF0bGFzQ2xp
ZW50Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpOwogCiAgICAgLy8gR3JhcGhp
Y3NMYXllckZhY3RvcnkKQEAgLTEzNiw4ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3Jl
YXRlUGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIo
KTsKICAgICBib29sIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpOwotICAgIHZvaWQgY3JlYXRl
Q29tcG9zaXRpbmdMYXllcnMoKTsKLSAgICB2b2lkIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7
CisgICAgdm9pZCBjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMoKTsKICAgICB2b2lkIGNhbmNlbFBl
bmRpbmdMYXllckZsdXNoKCk7CiAgICAgdm9pZCBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgp
OwogICAgIHZvaWQgZGlkUGVyZm9ybVNjaGVkdWxlZExheWVyRmx1c2goKTsKQEAgLTE3Niw4ICsx
NzYsNiBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5h
dGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gTGF5ZXJNYXA7
CiAgICAgTGF5ZXJNYXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwotICAgIFZlY3RvcjxXZWJDb3JlOjpD
b29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7Ci0gICAgVmVjdG9yPFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hN
YXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKICAgICBJbWFnZUJhY2tp
bmdNYXAgbV9pbWFnZUJhY2tpbmdzOwogICAgIFZlY3RvcjxPd25QdHI8V2ViQ29yZTo6VXBkYXRl
QXRsYXM+ID4gbV91cGRhdGVBdGxhc2VzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203777</attachid>
            <date>2013-06-05 02:56:48 -0700</date>
            <delta_ts>2013-06-05 04:52:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111919-20130605185516.patch</filename>
            <type>text/plain</type>
            <size>41797</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQzZGJmMjhjODM0NjZi
MjNhZDRmNGViZTIyYTc5NmU1MGZkYTFmZS4uOTIyZmY5NGNiNmM3NjQxMGMxNjc1MGQzNzcyZjY0
ZDk0NjgzMWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA4ICBHd2Fu
ZyBZb29uIEh3YW5nICA8cnl1bWllbEBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBDb29yZGlu
YXRlZCBHcmFwaGljczogVW5pZnkgbWVzc2FnZXMgcmVsYXRlZCBvYmplY3QncyBsaWZlY3ljbGVz
IGludG8gQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgaGFz
IHNldmVyYWwgbWV0aG9kcywgd2hpY2ggc2ltcGx5IHBhc3NlcworICAgICAgICB0aGVzZSBjYWxs
cyB0byBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1v
dmVzIG1ldGhvZHMgaW4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkganVzdCBmb3IKKyAg
ICAgICAgbWVzc2FnZSBjaGFpbmluZy4gSW5zdGVhZCBvZiB0aGF0LCBtZXNzYWdlcyBmb3IgY3Jl
YXRpb24vZGVsZXRpb24gb2Ygb2JqZWN0cworICAgICAgICAoTGF5ZXJzLCBDdXN0b21GaWx0ZXJz
LCBVcGRhdGVBdGxhcywgYW5kIEltYWdlQmFja2luZykgYXJlIHVuaWZpZWQgaW50bworICAgICAg
ICBDb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisKKyAgICAgICAgQW5kIHRoaXMgcGF0
Y2ggYWxzbyByZW1vdmVzIGNvZGVzIGZvciBXZWJDb29yZGluYXRlZFN1cmZhY2UgaW4KKyAgICAg
ICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LCBleGNlcHQgZm9yIGEgZmFjdG9yeSBtZXRob2Qu
CisgICAgICAgIENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycyBbZW58ZGVdY29kZXMg
Q29vcmRpbmF0ZWRTdXJmYWNlIGl0c2VsZgorICAgICAgICB1c2luZyBXZWJDb29yZGluYXRlZFN1
cmZhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnN5bmNDdXN0b21GaWx0ZXJQcm9ncmFtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxhc2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRTY2VuZVN0
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2lu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZzo6dXBkYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlQXRs
YXM6OlVwZGF0ZUF0bGFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuaDoKKwogMjAxMy0wNi0wNCAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIFtOb0ludGVyZmFj
ZU9iamVjdF0gZnJvbSBYUGF0aEV4cHJlc3Npb24gYW5kIE5vZGVJdGVyYXRvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDEyYzc2MjEwZDNiM2M5ZjVkYWZhNDlmNDNmZGEzYmI1ODUwY2FlZGIuLjViODYwYTRjNjdl
MmVkNDhjMTkwNDUzODZkOTkzMWY0NmQ5NDljM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBA
QAorMjAxMy0wMy0wOCAgR3dhbmcgWW9vbiBId2FuZyAgPHJ5dW1pZWxAY29tcGFueTEwMC5uZXQ+
CisKKyAgICAgICAgW0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBVbmlmeSBtZXNzYWdlcyByZWxhdGVk
IG9iamVjdCdzIGxpZmVjeWNsZXMgaW50byBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE5MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eSBoYXMgc2V2ZXJhbCBtZXRob2RzLCB3aGljaCBzaW1wbHkgcGFzc2Vz
CisgICAgICAgIHRoZXNlIGNhbGxzIHRvIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgbWV0aG9kcyBpbiBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eSBqdXN0IGZvcgorICAgICAgICBtZXNzYWdlIGNoYWluaW5nLiBJbnN0ZWFkIG9mIHRo
YXQsIG1lc3NhZ2VzIGZvciBjcmVhdGlvbi9kZWxldGlvbiBvZiBvYmplY3RzCisgICAgICAgIChM
YXllcnMsIEN1c3RvbUZpbHRlcnMsIFVwZGF0ZUF0bGFzLCBhbmQgSW1hZ2VCYWNraW5nKSBhcmUg
dW5pZmllZCBpbnRvCisgICAgICAgIENvbW1pdENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS4KKwor
ICAgICAgICBBbmQgdGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgY29kZXMgZm9yIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZSBpbgorICAgICAgICBDb29yZGluYXRlZExheWVyVHJlZUhvc3QsIGV4Y2VwdCBm
b3IgYSBmYWN0b3J5IG1ldGhvZC4KKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzIFtlbnxkZV1jb2RlcyBDb29yZGluYXRlZFN1cmZhY2UgaXRzZWxmCisgICAgICAgIHVz
aW5nIFdlYkNvb3JkaW5hdGVkU3VyZmFjZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29y
ZUlQQzo6ZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKToKKyAgICAgICAgKENvcmVJUEM6OmRlY29k
ZUNvb3JkaW5hdGVkU3VyZmFjZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAg
ICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNs
ZWFyUGVuZGluZ1N0YXRlQ2hhbmdlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y2hlY2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyk6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRh
Y2hMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Ojp1cGRhdGVJbWFnZUJhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZUltYWdlQmFja2luZyk6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlVXBkYXRl
QXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbW92
ZVVwZGF0ZUF0bGFzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKwogMjAxMy0wNi0wNCAgQ2hyaXMg
RmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBXSzI6IGFjY2Vz
c2liaWxpdHkgcG9zaXRpb24gaXMgY2FsY3VsYXRlZCBldmVyeSB0aW1lIHdpbmRvdyBmcmFtZSBp
cyB1cGRhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwCmluZGV4IDAzMjUwZmYxMjRjNDAyMmM3MDYwMjQ2ZTMwMDVhOTg3YWQ5
Njc3NjMuLjY2M2Q5YWUwMzA4NjdlYWJhMmZlODBhYmVlZDczZmVlOTM1ZTEzZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CkBAIC0yNDMsNiArMjQzLDE1IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRM
YXllckZpbHRlcnNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpz
eW5jQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBz
dGF0ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmN1c3RvbUZpbHRlcnNU
b0NyZWF0ZS5zaXplKCk7ICsraSkKKyAgICAgICAgY3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3JhbShz
dGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGVbaV0uZmlyc3QsIHN0YXRlLmN1c3RvbUZpbHRlcnNU
b0NyZWF0ZVtpXS5zZWNvbmQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5j
dXN0b21GaWx0ZXJzVG9SZW1vdmUuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlbW92ZUN1c3RvbUZp
bHRlclByb2dyYW0oc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlW2ldKTsKK30KKwogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmluamVjdENhY2hlZEN1c3RvbUZpbHRlclByb2dyYW1z
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpIGNvbnN0CiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CkBAIC00OTYsNiArNTA1LDE1IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVUaWxlc0lmTmVlZGVkKFRleHR1
cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvCiAgICAgfQogfQogCit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c3luY1VwZGF0ZUF0bGFzZXMoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLnVwZGF0ZUF0
bGFzZXNUb0NyZWF0ZS5zaXplKCk7ICsraSkKKyAgICAgICAgY3JlYXRlVXBkYXRlQXRsYXMoc3Rh
dGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlW2ldLmZpcnN0LCBzdGF0ZS51cGRhdGVBdGxhc2VzVG9D
cmVhdGVbaV0uc2Vjb25kKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUudXBk
YXRlQXRsYXNlc1RvUmVtb3ZlLnNpemUoKTsgKytpKQorICAgICAgICByZW1vdmVVcGRhdGVBdGxh
cyhzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmVbaV0pOworfQorCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2UpCiB7CiAgICAgQVNTRVJUKCFtX3N1cmZh
Y2VzLmNvbnRhaW5zKGF0bGFzSUQpKTsKQEAgLTUwOCw2ICs1MjYsMjEgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpCiAg
ICAgbV9zdXJmYWNlcy5yZW1vdmUoYXRsYXNJRCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzeW5jSW1hZ2VCYWNraW5ncyhjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3Rh
dGUmIHN0YXRlKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuaW1hZ2VzVG9D
cmVhdGUuc2l6ZSgpOyArK2kpCisgICAgICAgIGNyZWF0ZUltYWdlQmFja2luZyhzdGF0ZS5pbWFn
ZXNUb0NyZWF0ZVtpXSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdl
c1RvUmVtb3ZlLnNpemUoKTsgKytpKQorICAgICAgICByZW1vdmVJbWFnZUJhY2tpbmcoc3RhdGUu
aW1hZ2VzVG9SZW1vdmVbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5p
bWFnZXNUb1VwZGF0ZS5zaXplKCk7ICsraSkKKyAgICAgICAgdXBkYXRlSW1hZ2VCYWNraW5nKHN0
YXRlLmltYWdlc1RvVXBkYXRlW2ldLmZpcnN0LCBzdGF0ZS5pbWFnZXNUb1VwZGF0ZVtpXS5zZWNv
bmQpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb0NsZWFyLnNp
emUoKTsgKytpKQorICAgICAgICBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKHN0YXRlLmltYWdl
c1RvQ2xlYXJbaV0pOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
SW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKIHsKICAgICBB
U1NFUlQoIW1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlEKSk7CkBAIC01ODQsMTEgKzYx
NywxNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2NlbmVTdGF0ZShj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmCiB7CiAgICAgbV9yZW5kZXJlZENvbnRlbnRz
U2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS5zY3JvbGxQb3NpdGlvbjsKIAorICAgIGNyZWF0ZUxheWVy
cyhzdGF0ZS5sYXllcnNUb0NyZWF0ZSk7CisgICAgZGVsZXRlTGF5ZXJzKHN0YXRlLmxheWVyc1Rv
UmVtb3ZlKTsKKwogICAgIGlmIChzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXllciAhPSBtX3Jvb3RM
YXllcklEKQogICAgICAgICBzZXRSb290TGF5ZXJJRChzdGF0ZS5yb290Q29tcG9zaXRpbmdMYXll
cik7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmltYWdlc1RvVXBkYXRlLnNp
emUoKTsgKytpKQotICAgICAgICB1cGRhdGVJbWFnZUJhY2tpbmcoc3RhdGUuaW1hZ2VzVG9VcGRh
dGVbaV0uZmlyc3QsIHN0YXRlLmltYWdlc1RvVXBkYXRlW2ldLnNlY29uZCk7CisgICAgc3luY0lt
YWdlQmFja2luZ3Moc3RhdGUpOworICAgIHN5bmNVcGRhdGVBdGxhc2VzKHN0YXRlKTsKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCisgICAgc3luY0N1c3RvbUZpbHRlclByb2dyYW1zKHN0YXRlKTsK
KyNlbmRpZgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5sYXllcnNUb1VwZGF0
ZS5zaXplKCk7ICsraSkKICAgICAgICAgc2V0TGF5ZXJTdGF0ZShzdGF0ZS5sYXllcnNUb1VwZGF0
ZVtpXS5maXJzdCwgc3RhdGUubGF5ZXJzVG9VcGRhdGVbaV0uc2Vjb25kKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA5ZTgz
ZmM1YmUyNTZlYmUyODY5NDBiNGU4OWQ4ZTk1ZjJjNTAzMGVhLi43ZmE5MmFkODc1NzQzZTM2MmIx
MGQwYWI1YTc1ZGZhNDExOWZiNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTgwLDI2ICs4MSwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbW1pdFNj
ZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CiAKLSAgICB2b2lkIGNy
ZWF0ZUxheWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYpOwotICAgIHZvaWQg
ZGVsZXRlTGF5ZXJzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+Jik7Ci0KLSNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgdm9pZCBpbmplY3RDYWNoZWRDdXN0b21GaWx0ZXJQcm9n
cmFtcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBjb25zdDsKLSAgICB2b2lkIGNy
ZWF0ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFt
SW5mbyYpOwotICAgIHZvaWQgcmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQgaWQpOwotI2Vu
ZGlmCi0KLSAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NS
ZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPik7Ci0gICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1
aW50MzJfdCBhdGxhc0lEKTsKLSAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOwotICAgIHZv
aWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsK
LSAgICB2b2lkIHJlbW92ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsK
ICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIHZvaWQgc2V0
RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZW5hYmxlKSB7IG1fc2V0RHJhd3NCYWNrZ3JvdW5kID0gZW5h
YmxlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSb290TGF5ZXJJRChDb29yZGluYXRlZExh
eWVySUQpOworICAgIHZvaWQgY3JlYXRlTGF5ZXJzKGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExh
eWVySUQ+Jik7CisgICAgdm9pZCBkZWxldGVMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVk
TGF5ZXJJRD4mKTsKICAgICB2b2lkIHNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5ZXJD
aGlsZHJlbklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCB1cGRhdGVUaWxlc0lmTmVlZGVkKFRleHR1cmVN
YXBwZXJMYXllciosIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CkBAIC0x
MTYsNiArMTA0LDIzIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIHNldExheWVyUmVwYWlu
dENvdW50SWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyU3RhdGUmKTsKIAorICAgIHZvaWQgc3luY1VwZGF0ZUF0bGFzZXMoY29uc3QgQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7CisgICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50
MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pOworICAgIHZvaWQg
cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7CisKKyAgICB2b2lkIHN5bmNJbWFn
ZUJhY2tpbmdzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOworICAgIHZvaWQgY3Jl
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOworICAgIHZvaWQgdXBk
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPik7CisgICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOworICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAg
IHZvaWQgc3luY0N1c3RvbUZpbHRlclByb2dyYW1zKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSYpOworICAgIHZvaWQgaW5qZWN0Q2FjaGVkQ3VzdG9tRmlsdGVyUHJvZ3JhbXMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVDdXN0b21G
aWx0ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mKTsKKyAg
ICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKKyNlbmRpZgorCiAgICAg
VGV4dHVyZU1hcHBlckxheWVyKiBsYXllckJ5SUQoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fbGF5ZXJzLmNvbnRhaW5zKGlkKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKaW5kZXggOTNlMjVj
YmExOTc5MzEyMjNlZjRhMzFhMGY3ZDMwNGZiMjlhM2YwOS4uNTQ0NWU2MmZmMzg1YmU0ODZjZWM0
NDEyYjNlNDUxMTMwM2UwMGIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaApAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJG
aWx0ZXJPcGVyYXRpb25zLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNp
bmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIgorI2VuZGlmCisKICNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKICNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKICNpbmNsdWRlICJH
cmFwaGljc1N1cmZhY2VUb2tlbi5oIgpAQCAtMTgzLDggKzE4NywyMiBAQCBzdHJ1Y3QgQ29vcmRp
bmF0ZWRHcmFwaGljc1N0YXRlIHsKICAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZTsKICAgICBJbnRS
ZWN0IGNvdmVyZWRSZWN0OwogCisgICAgVmVjdG9yPENvb3JkaW5hdGVkTGF5ZXJJRD4gbGF5ZXJz
VG9DcmVhdGU7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb29yZGluYXRlZExheWVySUQsIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPiA+IGxheWVyc1RvVXBkYXRlOworICAgIFZlY3RvcjxD
b29yZGluYXRlZExheWVySUQ+IGxheWVyc1RvUmVtb3ZlOworCisgICAgVmVjdG9yPENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQ+IGltYWdlc1RvQ3JlYXRlOworICAgIFZlY3RvcjxDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEPiBpbWFnZXNUb1JlbW92ZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gPiBp
bWFnZXNUb1VwZGF0ZTsKKyAgICBWZWN0b3I8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRD4gaW1h
Z2VzVG9DbGVhcjsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDMyX3QgLyogYXRsYXNJRCAq
LywgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gPiA+IHVwZGF0ZUF0bGFzZXNUb0NyZWF0ZTsK
KyAgICBWZWN0b3I8dWludDMyX3QgLyogYXRsYXNJRCAqLz4gdXBkYXRlQXRsYXNlc1RvUmVtb3Zl
OworCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIFZlY3RvcjxzdGQ6OnBhaXI8dWludDMy
X3QgLyogRmlsdGVySUQgKi8sIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvPiA+IGN1c3RvbUZpbHRl
cnNUb0NyZWF0ZTsKKyAgICBWZWN0b3I8dWludDMyX3Q+IGN1c3RvbUZpbHRlcnNUb1JlbW92ZTsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFja2luZy5jcHAKaW5kZXggMTI4YmFiZTI5
OGY2NmNiYzI3NjljZjZmZjhlYTk4MjI5ZDUxNTU3Ny4uNDM5MTljNmM1NGM4ZGFlYzM0MTU3Nzlh
ZTI3MThmMDMzN2NkMmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmgiCiAK
KyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTEzLDkgKzExNCw4IEBAIHZv
aWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnVwZGF0ZSgpCiAKICAgICBtX25hdGl2ZUltYWdl
UHRyID0gbV9pbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKIAotICAgIC8vIElm
IHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIHRyeSBhZ2FpbiBpbiB0aGUgbmV4dCB1cGRhdGUu
Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9jb29yZGluYXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlk
KCksIG1fc3VyZmFjZSk7Ci0gICAgbV9pc0RpcnR5ID0gIXN1Y2Nlc3M7CisgICAgbV9jb29yZGlu
YXRvci0+dXBkYXRlSW1hZ2VCYWNraW5nKGlkKCksIG1fc3VyZmFjZSk7CisgICAgbV9pc0RpcnR5
ID0gZmFsc2U7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OnJlbGVhc2VTdXJm
YWNlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmcuaAppbmRleCAzNjllMjM5ZjliMGEyOThjZDlmY2NlNDIzZGE0ZDJmMWU1YTIx
YTc2Li43OTMzZDY5ZDNkYzJiZWI3ZGE4NWFmMzFkY2FmMjlkMzZmOTBiOWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29vcmRpbmF0b3IgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdl
QmFja2luZ0lEKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJbWFnZUJhY2tpbmco
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUltYWdlQmFj
a2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSA9IDA7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRh
dGVBdGxhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCmluZGV4IDM2NGYwNjg3MTA4MmI1OGZjYmQ4M2EwZWYz
MTQ1MGJlNDgwMDg0OGIuLmFmNmZjNzkyMjNmZTYzZWRlMWRlMzYwM2QxNzZiMzYzNTdiY2RiNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcApAQCAtMjMsNiArMjMsNyBA
QAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCisjaW5jbHVkZSAiQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0zOCw5ICszOSw3
IEBAIFVwZGF0ZUF0bGFzOjpVcGRhdGVBdGxhcyhVcGRhdGVBdGxhc0NsaWVudCogY2xpZW50LCBp
bnQgZGltZW5zaW9uLCBDb29yZGluYXRlZFN1CiAgICAgSW50U2l6ZSBzaXplID0gbmV4dFBvd2Vy
T2ZUd28oSW50U2l6ZShkaW1lbnNpb24sIGRpbWVuc2lvbikpOwogICAgIG1fc3VyZmFjZSA9IENv
b3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKHNpemUsIGZsYWdzKTsKIAotICAgIC8vIEZJWE1FOiBD
dXJyZW50bHksIGlmIHNlbmRpbmcgdGhlIG1lc3NhZ2UgZmFpbHMsIFVwZGF0ZUF0bGFzIGdpdmVz
IHVwIGRyYXdpbmcgYW55dGhpbmcgaW1wbGljaXRseS4KLSAgICBpZiAoIW1fY2xpZW50LT5jcmVh
dGVVcGRhdGVBdGxhcyhtX0lELCBtX3N1cmZhY2UpKQotICAgICAgICBtX3N1cmZhY2UuY2xlYXIo
KTsKKyAgICBtX2NsaWVudC0+Y3JlYXRlVXBkYXRlQXRsYXMobV9JRCwgbV9zdXJmYWNlKTsKIH0K
IAogVXBkYXRlQXRsYXM6On5VcGRhdGVBdGxhcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBkYXRlQXRsYXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVB
dGxhcy5oCmluZGV4IDQ4YTZiZjg0NGE0OTBmN2ZkMmMzOWEwNDI0ZTMzMGZkZGIxNmQ3OGIuLjVk
ZDVkMjYwNmYyMWVmNjc4NGQwZGVmYjc0ZGZhNjdkOGZjZDVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxh
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9VcGRhdGVBdGxhcy5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEludFBvaW50OwogCiBj
bGFzcyBVcGRhdGVBdGxhc0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGNyZWF0
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBh
dGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkgPSAwOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggM2NhZjU3Njc2NzhkZWUyZTdlMzcwNGIwMGZhYmM5MTc3OTBhZjFlNi4uMmIwZDlkMjY0
NmVmMmEyNWVmZmI3YjcxM2E5NGM1YTBiZTE0YWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xMDI2LDMwICsxMDI2
LDgwIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUaWxlQ3JlYXRpb25JbmZvPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgVGlsZUNyZWF0CiAgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50
Q29kZXI8VGlsZUNyZWF0aW9uSW5mbz46OmRlY29kZShkZWNvZGVyLCB1cGRhdGVJbmZvKTsKIH0K
IAorc3RhdGljIHZvaWQgZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKEFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mIHN1cmZhY2UpCit7Cisg
ICAgYm9vbCBpc1ZhbGlkU3VyZmFjZSA9IGZhbHNlOworICAgIGlmICghc3VyZmFjZSkgeworICAg
ICAgICBlbmNvZGVyIDw8IGlzVmFsaWRTdXJmYWNlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1cmZhY2UgPSBzdGF0
aWNfY2FzdDxXZWJDb29yZGluYXRlZFN1cmZhY2UqPihzdXJmYWNlLmdldCgpKTsKKyAgICBXZWJD
b29yZGluYXRlZFN1cmZhY2U6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKHdlYkNvb3JkaW5hdGVk
U3VyZmFjZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCisgICAgICAgIGlzVmFsaWRTdXJmYWNlID0g
dHJ1ZTsKKworICAgIGVuY29kZXIgPDwgaXNWYWxpZFN1cmZhY2U7CisKKyAgICBpZiAoaXNWYWxp
ZFN1cmZhY2UpCisgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOworfQorCitzdGF0aWMgYm9vbCBk
ZWNvZGVDb29yZGluYXRlZFN1cmZhY2UoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
Q29vcmRpbmF0ZWRTdXJmYWNlPiYgc3VyZmFjZSkKK3sKKyAgICBib29sIGlzVmFsaWRTdXJmYWNl
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNWYWxpZFN1cmZhY2UpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzVmFsaWRTdXJmYWNlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN1
cmZhY2UgPSBXZWJDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZShoYW5kbGUpOworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJiBzdGF0ZSkKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRlLnJvb3RDb21wb3NpdGlu
Z0xheWVyOwogICAgIGVuY29kZXIgPDwgc3RhdGUuc2Nyb2xsUG9zaXRpb247CiAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5jb250ZW50c1NpemU7CiAgICAgZW5jb2RlciA8PCBzdGF0ZS5jb3ZlcmVkUmVj
dDsKKworICAgIGVuY29kZXIgPDwgc3RhdGUubGF5ZXJzVG9DcmVhdGU7CiAgICAgZW5jb2RlciA8
PCBzdGF0ZS5sYXllcnNUb1VwZGF0ZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRlLmxheWVyc1RvUmVt
b3ZlOworCisgICAgZW5jb2RlciA8PCBzdGF0ZS5pbWFnZXNUb0NyZWF0ZTsKKyAgICBlbmNvZGVy
IDw8IHN0YXRlLmltYWdlc1RvUmVtb3ZlOwogCiAgICAgLy8gV2UgbmVlZCB0byBlbmNvZGUgV2Vi
Q29vcmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUgcmlnaHQgYWZ0ZXIgaXQncyBjcmVhdGlvbi4KICAg
ICAvLyBUaGF0J3Mgd2h5IHdlIGNhbm5vdCB1c2Ugc2ltcGxlIHN0ZDo6cGFpciBlbmNvZGVyLgog
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLmltYWdlc1RvVXBkYXRl
LnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0ZS5pbWFnZXNUb1VwZGF0
ZS5zaXplKCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmltYWdlc1RvVXBkYXRl
W2ldLmZpcnN0OworICAgICAgICBlbmNvZGVDb29yZGluYXRlZFN1cmZhY2UoZW5jb2Rlciwgc3Rh
dGUuaW1hZ2VzVG9VcGRhdGVbaV0uc2Vjb25kKTsKKyAgICB9CisgICAgZW5jb2RlciA8PCBzdGF0
ZS5pbWFnZXNUb0NsZWFyOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+ID4gPiBTdXJmYWNl
VXBkYXRlUGFpclZlY3RvcjsKLSAgICBTdXJmYWNlVXBkYXRlUGFpclZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gc3RhdGUuaW1hZ2VzVG9VcGRhdGUuZW5kKCk7Ci0gICAgZm9yIChTdXJmYWNl
VXBkYXRlUGFpclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzdGF0ZS5pbWFnZXNUb1VwZGF0
ZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLQotICAgICAgICBXZWJDb29yZGluYXRlZFN1
cmZhY2UqIHdlYkNvb3JkaW5hdGVkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFdlYkNvb3JkaW5hdGVk
U3VyZmFjZSo+KGl0LT5zZWNvbmQuZ2V0KCkpOwotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZh
Y2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIGlmICghd2ViQ29vcmRpbmF0ZWRTdXJmYWNlLT5j
cmVhdGVIYW5kbGUoaGFuZGxlKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGF0ZS51cGRhdGVBdGxhc2VzVG9DcmVhdGUuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0
ZS5zaXplKCk7ICsraSkgeworICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLnVwZGF0ZUF0bGFzZXNU
b0NyZWF0ZVtpXS5maXJzdDsKKyAgICAgICAgZW5jb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGVuY29k
ZXIsIHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZVtpXS5zZWNvbmQpOworICAgIH0KKyAgICBl
bmNvZGVyIDw8IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZTsKIAotICAgICAgICBlbmNvZGVy
IDw8IGl0LT5maXJzdDsKLSAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisjaWYgRU5BQkxFKENT
U19TSEFERVJTKQorICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0YXRlLmN1
c3RvbUZpbHRlcnNUb0NyZWF0ZS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLnNpemUoKTsgKytpKSB7CisgICAgICAgIGVuY29k
ZXIgPDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlW2ldLmZpcnN0OworICAgICAgICBlbmNv
ZGVyIDw8IHN0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZVtpXS5zZWNvbmQ7CiAgICAgfQorICAg
IGVuY29kZXIgPDwgc3RhdGUuY3VzdG9tRmlsdGVyc1RvUmVtb3ZlOworI2VuZGlmCiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzU3RhdGU+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQpAQCAt
MTA2NiwyNiArMTExNiw3OCBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGUuY292ZXJlZFJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmxheWVyc1RvQ3JlYXRlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5sYXllcnNUb1Vw
ZGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGUubGF5ZXJzVG9SZW1vdmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0YXRlLmltYWdlc1RvQ3JlYXRlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5pbWFnZXNUb1JlbW92ZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHVpbnQ2NF90IHNpemVPZkltYWdlc1RvVXBkYXRl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZU9mSW1hZ2VzVG9VcGRhdGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZU9mSW1h
Z2VzVG9VcGRhdGU7IGkrKykgeworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXplT2ZJ
bWFnZXNUb1VwZGF0ZTsgKytpKSB7CiAgICAgICAgIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQg
aW1hZ2VJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZUlEKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBXZWJDb29yZGluYXRlZFN1cmZhY2U6OkhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAgICAgICAg
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgaWYgKCFkZWNvZGVD
b29yZGluYXRlZFN1cmZhY2UoZGVjb2Rlciwgc3VyZmFjZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSA9IFdl
YkNvb3JkaW5hdGVkU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZSk7CiAgICAgICAgIHN0YXRlLmltYWdl
c1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFnZUlELCBzdXJmYWNlLnJlbGVhc2Uo
KSkpOwogICAgIH0KIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuaW1hZ2VzVG9DbGVh
cikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQ2NF90IHNpemVPZlVwZGF0ZUF0
bGFzZXNUb0NyZWF0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemVPZlVwZGF0ZUF0bGFz
ZXNUb0NyZWF0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodWludDY0X3Qg
aSA9IDA7IGkgPCBzaXplT2ZVcGRhdGVBdGxhc2VzVG9DcmVhdGU7ICsraSkgeworICAgICAgICB1
aW50MzJfdCBhdGxhc0lEOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0bGFzSUQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFJlZlB0cjxDb29yZGluYXRlZFN1
cmZhY2U+IHN1cmZhY2U7CisgICAgICAgIGlmICghZGVjb2RlQ29vcmRpbmF0ZWRTdXJmYWNlKGRl
Y29kZXIsIHN1cmZhY2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHN0
YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXRsYXNJRCwg
c3VyZmFjZS5yZWxlYXNlKCkpKTsKKyAgICB9CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKKyAgICB1aW50NjRfdCBzaXplT2ZDdXN0b21GaWx0ZXJzVG9D
cmVhdGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplT2ZDdXN0b21GaWx0ZXJzVG9DcmVh
dGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBp
IDwgc2l6ZU9mQ3VzdG9tRmlsdGVyc1RvQ3JlYXRlOyArK2kpIHsKKyAgICAgICAgdWludDMyX3Qg
ZmlsdGVySUQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlsdGVySUQpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBmaWx0
ZXJJbmZvOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZpbHRlckluZm8pKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGZpbHRlcklELCBmaWx0ZXJJbmZvKSk7CisgICAgfQorCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS51cGRhdGVBdGxhc2VzVG9SZW1vdmUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5k
ZXggZWJlOTQ4NDI0ZGJhMjk5YjRhOGI3OWJjM2U4OTQ4YTk5Nzc3ZTQwZS4uYzhjZTdkNzc5MTI4
N2VhMDRhOTY2Y2NmOGQwNDAwYTQ1OTNkN2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgogCiAg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC02MiwzNyArNjMsNiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5OjpkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiBmdW5j
dAogICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0ZShmdW5jdGlvbik7CiB9CiAKLXZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFz
SUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCi17Ci0gICAg
ZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVVcGRh
dGVBdGxhcywgbV9zY2VuZS5nZXQoKSwgYXRsYXNJRCwgV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpj
cmVhdGUoaGFuZGxlKSkpOwotfQotCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
OjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQotewotICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlVXBkYXRlQXRsYXMsIG1f
c2NlbmUuZ2V0KCksIGF0bGFzSUQpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6Y3JlYXRlQ29tcG9zaXRpbmdMYXllcnMoY29uc3QgVmVjdG9yPENvb3JkaW5hdGVk
TGF5ZXJJRD4mIGlkcykKLXsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVycywgbV9zY2VuZS5nZXQoKSwgaWRzKSk7Ci19Ci0KLXZv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJz
KGNvbnN0IFZlY3RvcjxDb29yZGluYXRlZExheWVySUQ+JiBpZHMpCi17Ci0gICAgZGlzcGF0Y2hV
cGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZWxldGVMYXllcnMsIG1fc2Nl
bmUuZ2V0KCksIGlkcykpOwotfQotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6cmVtb3ZlQ3VzdG9tRmlsdGVyUHJvZ3JhbShpbnQg
aWQpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpyZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtLCBtX3NjZW5lLmdldCgpLCBpZCkpOwotfQotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bShpbnQgaWQsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBwcm9ncmFtSW5mbykKLXsK
LSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZUN1c3RvbUZpbHRlclByb2dyYW0sIG1fc2NlbmUuZ2V0KCksIGlkLCBwcm9ncmFtSW5mbykpOwot
fQotI2VuZGlmCi0KIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdENv
b3JkaW5hdGVkR3JhcGhpY3NTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIGdy
YXBoaWNzU3RhdGUpCiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpjb21taXRTY2VuZVN0YXRlLCBtX3NjZW5lLmdldCgpLCBncmFwaGljc1N0YXRl
KSk7CkBAIC0xMDIsMjYgKzcyLDYgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6Y29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKGNvbnN0IENvb3JkaW4KICNlbmRpZgog
fQogCi12b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQotewotICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNraW5nLCBt
X3NjZW5lLmdldCgpLCBpbWFnZUlEKSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3VyZmFjZTo6SGFuZGxlJiBoYW5kbGUpCi17Ci0g
ICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVJ
bWFnZUJhY2tpbmcsIG1fc2NlbmUuZ2V0KCksIGltYWdlSUQsIFdlYkNvb3JkaW5hdGVkU3VyZmFj
ZTo6Y3JlYXRlKGhhbmRsZSkpKTsKLX0KLQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6Y2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
IGltYWdlSUQpCi17Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzLCBtX3NjZW5lLmdldCgpLCBpbWFnZUlE
KSk7Ci19Ci0KLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnJlbW92ZUltYWdl
QmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgZGlzcGF0
Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVJbWFnZUJhY2tp
bmcsIG1fc2NlbmUuZ2V0KCksIGltYWdlSUQpKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7CiAgICAgLy8gSW5mb3Jt
IHRoZSByZW5kZXJlciB0byBhZGp1c3Qgdmlld3BvcnQtZml4ZWQgbGF5ZXJzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggNDY2ZGVh
NDU0Y2E5YzVlZDg2YTU0MWI3NDhhNTExMjhmYjZkODEyYS4uZGI4MDk1NjlkYmUyYmI5MjA2NDIy
Zjc0ZjMwZTA3ZWE1Nzg0MTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQg
KEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEzIENvbXBhbnkgMTAwLCBJbmMuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTU1LDIyICs1Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5Kik7CiAgICAgdmlydHVhbCB+Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkoKTsKIAotICAgIC8vIE1lc3NhZ2VzIEZyb20gQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ci0gICAgdm9pZCBjcmVhdGVDb21wb3NpdGluZ0xheWVycyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEPiYpOwotICAgIHZvaWQgZGVsZXRl
Q29tcG9zaXRpbmdMYXllcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJ
RD4mKTsKLSNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0gICAgdm9pZCBjcmVhdGVDdXN0b21GaWx0
ZXJQcm9ncmFtKGludCBpZCwgY29uc3QgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8m
KTsKLSAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oaW50IGlkKTsKLSNlbmRpZgot
ICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgY29uc3QgV2ViQ29v
cmRpbmF0ZWRTdXJmYWNlOjpIYW5kbGUmKTsKLSAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVp
bnQzMl90IGF0bGFzSUQpOwotICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKFdl
YkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIGNvbnN0IFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZTo6SGFuZGxlJik7Ci0gICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKFdlYkNv
cmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNr
aW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpOwotCiAgICAgdm9pZCBjb21t
aXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJik7Ci0gICAgdm9pZCBzZXRBbmltYXRpb25zTG9ja2VkKGJvb2wpOwogICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJik7CiAKICAgICB2b2lk
IHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeVZlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IDg1NWFjZWViZDc4ZTYwNjgyZjUyN2NjZDgwMWYyMGY0YjJlMDhkY2EuLmFlODRiNDM5
NWRkYWU4YTBjYWNkNDJjZTdmNTQ2ZTIyZGFhNjAyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0xLDUgKzEsNiBAQAogIwogIyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisjICAgIENvcHlyaWdodCAoQykgMjAxMyBD
b21wYW55IDEwMCwgSW5jLgogIwogIyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSwyMCArMjIsNiBA
QAogbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgewogCiAgICAgQ29t
bWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZSBzdGF0ZSkKLQotICAgIENyZWF0ZUNvbXBvc2l0aW5nTGF5ZXJzKFZlY3Rvcjx1aW50MzJf
dD4gaWRzKQotICAgIERlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKFZlY3Rvcjx1aW50MzJfdD4gaWRz
KQotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIENyZWF0ZUN1c3RvbUZpbHRlclByb2dy
YW0oaW50IGlkLCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbykK
LSAgICBSZW1vdmVDdXN0b21GaWx0ZXJQcm9ncmFtKGludCBpZCkKLSNlbmRpZgotICAgIENyZWF0
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpIYW5kbGUgaGFuZGxlKQotICAgIFJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFz
SUQpCi0gICAgQ3JlYXRlSW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQpCi0gICAgVXBkYXRl
SW1hZ2VCYWNraW5nKHVpbnQ2NF90IGltYWdlSUQsIFdlYktpdDo6V2ViQ29vcmRpbmF0ZWRTdXJm
YWNlOjpIYW5kbGUgaGFuZGxlKQotICAgIENsZWFySW1hZ2VCYWNraW5nQ29udGVudHModWludDY0
X3QgaW1hZ2VJRCkKLSAgICBSZW1vdmVJbWFnZUJhY2tpbmcodWludDY0X3QgaW1hZ2VJRCkKICAg
ICBTZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29yZTo6Q29sb3IgY29sb3IpCiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwCmluZGV4IDY2YjUwMTY3MWI4NWFiZjk2YjZhMTA5MWRkMjkxYTc0ZWE1ODRiOGQuLmQx
YjZhMzU0OGJhMWIzOTI0M2Q0MzQyMDYzYzI1MmNmYzI0YTU0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAt
MjQwLDcgKzI0MCw2IEBAIGJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRp
bmdMYXllckNoYW5nZXMoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHByb3RlY3Rvciht
X2lzRmx1c2hpbmdMYXllckNoYW5nZXMsIHRydWUpOwogCi0gICAgY3JlYXRlQ29tcG9zaXRpbmdM
YXllcnMoKTsKICAgICBpbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOwog
CiAgICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KTsKQEAgLTI1MCw3ICsyNDksNiBAQCBib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1
c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAgICBib29sIGRpZFN5bmMgPSBtX3dlYlBhZ2UtPmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1
ZGluZ1N1YmZyYW1lcygpOwogCiAgICAgZmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygp
OwotICAgIGRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCk7CiAKICAgICBpZiAobV9zaG91bGRTeW5j
RnJhbWUpIHsKICAgICAgICAgZGlkU3luYyA9IHRydWU7CkBAIC0yNjUsOSArMjYzLDcgQEAgYm9v
bCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAK
ICAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6Q29tbWl0Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKG1fc3RhdGUpKTsKIAotICAg
ICAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmNsZWFyKCk7Ci0gICAgICAgIG1fc3RhdGUuaW1h
Z2VzVG9VcGRhdGUuY2xlYXIoKTsKLQorICAgICAgICBjbGVhclBlbmRpbmdTdGF0ZUNoYW5nZXMo
KTsKICAgICAgICAgbV93YWl0aW5nRm9yVUlQcm9jZXNzID0gdHJ1ZTsKICAgICAgICAgbV9zaG91
bGRTeW5jRnJhbWUgPSBmYWxzZTsKICAgICB9CkBAIC0yODAsMzggKzI3NiwyNCBAQCBib29sIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAgICBy
ZXR1cm4gZGlkU3luYzsKIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0
ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjbGVh
clBlbmRpbmdTdGF0ZUNoYW5nZXMoKQogewotICAgIGlmIChtX2xheWVyc1RvQ3JlYXRlLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gSWYgYSBsYXllciBnZXRzIGNyZWF0ZWQg
YW5kIGRlbGV0ZWQgaW4gdGhlIHNhbWUgY3ljbGUsIHdlIGNhbiBzaW1wbHkgcmVtb3ZlIGl0IGZy
b20gbV9sYXllcnNUb0NyZWF0ZSBhbmQgbV9sYXllcnNUb0RlbGV0ZS4KLSAgICBmb3IgKGludCBp
ID0gbV9sYXllcnNUb0NyZWF0ZS5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBz
aXplX3QgaW5kZXggPSBtX2xheWVyc1RvRGVsZXRlLmZpbmQobV9sYXllcnNUb0NyZWF0ZVtpXSk7
Ci0gICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgbV9sYXllcnNU
b0NyZWF0ZS5yZW1vdmUoaSk7Ci0gICAgICAgICAgICBtX2xheWVyc1RvRGVsZXRlLnJlbW92ZShp
bmRleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVhdGVDb21wb3NpdGluZ0xheWVycyht
X2xheWVyc1RvQ3JlYXRlKSk7Ci0gICAgbV9sYXllcnNUb0NyZWF0ZS5jbGVhcigpOwotICAgIG1f
c2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLX0KKyAgICBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLmNs
ZWFyKCk7CisgICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUu
bGF5ZXJzVG9SZW1vdmUuY2xlYXIoKTsKIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmRlbGV0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKLXsKLSAgICBpZiAobV9sYXllcnNUb0RlbGV0ZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlLmltYWdlc1RvQ3JlYXRlLmNs
ZWFyKCk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb1JlbW92ZS5jbGVhcigpOworICAgIG1fc3RhdGUu
aW1hZ2VzVG9VcGRhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvQ2xlYXIuY2xlYXIo
KTsKIAotICAgIGlmIChtX2lzUHVyZ2luZykgewotICAgICAgICBtX2xheWVyc1RvRGVsZXRlLmNs
ZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9zdGF0ZS51cGRhdGVBdGxhc2Vz
VG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5jbGVh
cigpOwogCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6RGVsZXRlQ29tcG9zaXRpbmdMYXllcnMobV9sYXllcnNUb0RlbGV0ZSkpOwot
ICAgIG1fbGF5ZXJzVG9EZWxldGUuY2xlYXIoKTsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRy
dWU7CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIG1fc3RhdGUuY3VzdG9tRmlsdGVyc1Rv
Q3JlYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuY2xlYXIo
KTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW5pdGlhbGl6
ZVJvb3RDb21wb3NpdGluZ0xheWVySWZOZWVkZWQoKQpAQCAtMzgyLDcgKzM2NCw3IEBAIHZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94aWVz
KGNvbnN0IEZpbHRlck9wZXJhCiAgICAgICAgIGlmICghY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5
LT5jbGllbnQoKSkgewogICAgICAgICAgICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRD
bGllbnQodGhpcyk7CiAgICAgICAgICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmFkZChjdXN0
b21GaWx0ZXJQcm9ncmFtUHJveHkuZ2V0KCkpOwotICAgICAgICAgICAgbV93ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q3JlYXRlQ3VzdG9tRmls
dGVyUHJvZ3JhbShjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCksIGN1c3RvbU9wZXJhdGlv
bi0+dmFsaWRhdGVkUHJvZ3JhbSgpLT52YWxpZGF0ZWRQcm9ncmFtSW5mbygpKSk7CisgICAgICAg
ICAgICBtX3N0YXRlLmN1c3RvbUZpbHRlcnNUb0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
Y3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5pZCgpLCBjdXN0b21PcGVyYXRpb24tPnZhbGlkYXRl
ZFByb2dyYW0oKS0+dmFsaWRhdGVkUHJvZ3JhbUluZm8oKSkpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gSWYgdGhlIGNsaWVudCB3YXMgbm90IGRpc2Nvbm5lY3RlZCB0aGVuIHRo
aXMgY29vcmRpbmF0b3IgbXVzdCBiZSB0aGUgY2xpZW50IGZvciBpdC4KICAgICAgICAgICAgIEFT
U0VSVChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmNsaWVudCgpID09IHRoaXMpOwpAQCAtMzk1
LDcgKzM3Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVDdXN0b21G
aWx0ZXJQcm9ncmFtUHJveHkoV2ViQ3VzdG9tRmlsdGVyUHJvCiAgICAgLy8gQXQgdGhpcyB0aW1l
IHRoZSBzaGFkZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLCBzbyB3ZSByZW1vdmUgaXQgZnJvbSBv
dXIgc2V0IGFuZAogICAgIC8vIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBvdGhlciBwcm9jZXNzIHRv
IGRlbGV0ZSBpdC4KICAgICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLnJlbW92ZShjdXN0b21GaWx0
ZXJQcm9ncmFtUHJveHkpOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW0oY3VzdG9tRmls
dGVyUHJvZ3JhbVByb3h5LT5pZCgpKSk7CisgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1v
dmUuYXBwZW5kKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+aWQoKSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQpA
QCAtNDEwLDcgKzM5MiwxNCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29u
bmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkZXRhY2hMYXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIG1f
cmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5ZXItPmlkKCkpOwotICAgIG1fbGF5ZXJzVG9EZWxl
dGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKKworICAgIHNpemVfdCBpbmRleCA9IG1fc3RhdGUubGF5
ZXJzVG9DcmVhdGUuZmluZChsYXllci0+aWQoKSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5k
KSB7CisgICAgICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUucmVtb3ZlKGluZGV4KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc3RhdGUubGF5ZXJzVG9SZW1vdmUuYXBwZW5kKGxh
eWVyLT5pZCgpKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIApAQCAtNDk0LDI2ICs0
ODMsMTkgQEAgUGFzc1JlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpjcmVhdGVJbWFnZUJhY2tpbmcKIAogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQpCiB7Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OkNyZWF0ZUltYWdl
QmFja2luZyhpbWFnZUlEKSk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5hcHBlbmQoaW1h
Z2VJRCk7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRhdGVJbWFnZUJh
Y2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3Jk
aW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQordm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2Up
CiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIFdlYkNvb3JkaW5hdGVkU3Vy
ZmFjZSogd2ViQ29vcmRpbmF0ZWRTdXJmYWNlID0gc3RhdGljX2Nhc3Q8V2ViQ29vcmRpbmF0ZWRT
dXJmYWNlKj4oY29vcmRpbmF0ZWRTdXJmYWNlLmdldCgpKTsKLSAgICBXZWJDb29yZGluYXRlZFN1
cmZhY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAgaWYgKCF3ZWJDb29yZGluYXRlZFN1cmZhY2UtPmNy
ZWF0ZUhhbmRsZShoYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBtX3N0YXRl
LmltYWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFnZUlELCBjb29yZGluYXRl
ZFN1cmZhY2UpKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlEKQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDbGVh
ckltYWdlQmFja2luZ0NvbnRlbnRzKGltYWdlSUQpKTsKKyAgICBtX3N0YXRlLmltYWdlc1RvQ2xl
YXIuYXBwZW5kKGltYWdlSUQpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCkKQEAg
LTUyMiw5ICs1MDQsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlSW1h
Z2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZwogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsKLSAgICBt
X3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CiAgICAgbV9pbWFnZUJhY2tpbmdzLnJlbW92ZShpbWFn
ZUlEKTsKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5OjpSZW1vdmVJbWFnZUJhY2tpbmcoaW1hZ2VJRCkpOworCisgICAgbV9zdGF0ZS5p
bWFnZXNUb1JlbW92ZS5hcHBlbmQoaW1hZ2VJRCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpmbHVzaFBlbmRpbmdJbWFnZUJhY2tpbmdDaGFuZ2VzKCkKQEAgLTU1OCw3ICs1
NDAsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljcwogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciogbGF5ZXIgPSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGNsaWVudCk7CiAgICAg
bGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwogICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQo
bGF5ZXItPmlkKCksIGxheWVyKTsKLSAgICBtX2xheWVyc1RvQ3JlYXRlLmFwcGVuZChsYXllci0+
aWQoKSk7CisgICAgbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwog
ICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOwogICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CkBAIC01ODQsMjEgKzU2
NiwxNiBAQCBib29sIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPENvb3JkaW5h
dGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQordm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCiB7Ci0gICAgV2ViQ29vcmRpbmF0
ZWRTdXJmYWNlKiB3ZWJDb29yZGluYXRlZFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxXZWJDb29yZGlu
YXRlZFN1cmZhY2UqPihjb29yZGluYXRlZFN1cmZhY2UuZ2V0KCkpOwotICAgIFdlYkNvb3JkaW5h
dGVkU3VyZmFjZTo6SGFuZGxlIGhhbmRsZTsKLSAgICBpZiAoIXdlYkNvb3JkaW5hdGVkU3VyZmFj
ZS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDcmVh
dGVVcGRhdGVBdGxhcyhhdGxhc0lELCBoYW5kbGUpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBt
X3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoYXRsYXNJ
RCwgY29vcmRpbmF0ZWRTdXJmYWNlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQogewogICAgIGlmIChtX2lz
UHVyZ2luZykKICAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlJlbW92ZVVwZGF0ZUF0bGFzKGF0bGFzSUQp
KTsKKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5hcHBlbmQoYXRsYXNJRCk7CiB9
CiAKIFdlYkNvcmU6OkZsb2F0UmVjdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnZpc2libGVD
b250ZW50c1JlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCAwNWQ2MWJhYTQxOGEzZDMzNjY0ZTljY2Zk
ZjU3Y2UwMTAwMDRhNWMzLi5hYjgyNWJmMDczNTg3ZTI2NDc2ZDYxZDZlZDkxZGE1MzZjNDgzMDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdo
dCAoQykgMjAxMyBDb21wYW55IDEwMCwgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMTIs
NyArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpD
b29yZGluYXRvcgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHVw
ZGF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50cyhXZWJDb3JlOjpDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
SW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURF
OwogCkBAIC0xMjcsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xh
eWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogCiAgICAgLy8gVXBkYXRlQXRsYXNDbGllbnQKLSAgICB2
aXJ0dWFsIGJvb2wgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
VXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7CiAKICAgICAvLyBHcmFwaGljc0xheWVyRmFj
dG9yeQpAQCAtMTM4LDggKzEzOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVQYWdlT3Zl
cmxheUxheWVyKCk7CiAgICAgdm9pZCBkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOwogICAgIGJv
b2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0gICAgdm9pZCBjcmVhdGVDb21wb3NpdGlu
Z0xheWVycygpOwotICAgIHZvaWQgZGVsZXRlQ29tcG9zaXRpbmdMYXllcnMoKTsKKyAgICB2b2lk
IGNsZWFyUGVuZGluZ1N0YXRlQ2hhbmdlcygpOwogICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVy
Rmx1c2goKTsKICAgICB2b2lkIHBlcmZvcm1TY2hlZHVsZWRMYXllckZsdXNoKCk7CiAgICAgdm9p
ZCBkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOwpAQCAtMTcxLDggKzE3MSw2IEBAIHBy
aXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklE
LCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBMYXllck1hcDsKICAgICBMYXll
ck1hcCBtX3JlZ2lzdGVyZWRMYXllcnM7Ci0gICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVk
TGF5ZXJJRD4gbV9sYXllcnNUb0NyZWF0ZTsKLSAgICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRMYXllcklEPiBtX2xheWVyc1RvRGVsZXRlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3Jl
OjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+ID4gSW1hZ2VCYWNraW5nTWFwOwogICAgIEltYWdlQmFja2luZ01hcCBtX2lt
YWdlQmFja2luZ3M7CiAgICAgVmVjdG9yPE93blB0cjxXZWJDb3JlOjpVcGRhdGVBdGxhcz4gPiBt
X3VwZGF0ZUF0bGFzZXM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>