<?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>105552</bug_id>
          
          <creation_ts>2012-12-20 10:39:01 -0800</creation_ts>
          <short_desc>[GStreamer][Soup] Let GStreamer provide the buffer data is downloaded to, to avoid copying</short_desc>
          <delta_ts>2013-02-04 17:55:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>107557</dependson>
    
    <dependson>107808</dependson>
    
    <dependson>108714</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gustavo Noronha (kov)">gustavo</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>danw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jbadics</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>795553</commentid>
    <comment_count>0</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-20 10:39:01 -0800</bug_when>
    <thetext>[GStreamer][Soup] Let GStreamer provide the buffer data is downloaded to, to avoid copying</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795570</commentid>
    <comment_count>1</comment_count>
      <attachid>180368</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-20 11:00:31 -0800</bug_when>
    <thetext>Created attachment 180368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795575</commentid>
    <comment_count>2</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-20 11:04:47 -0800</bug_when>
    <thetext>A bit more rationale on the background for the change: memcpy() was hot in some profiles we were running on a custom ARM platform, and was much higher in WebKit than with gst-launch, causing performance to degrade significantly. By letting the GStreamer media backend provide the buffers we eliminate the need for memcpy() inside our custom source element.

There is another patch also focused on eliminating as much copying as possible that requests buffers from the pipeline if possible, so that we can take advantage of hw accelerated decoders when available. I still need to rebase it and make it more webkitty, will post it on another bug later today or tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795577</commentid>
    <comment_count>3</comment_count>
      <attachid>180368</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 11:04:58 -0800</bug_when>
    <thetext>Comment on attachment 180368
Patch

Attachment 180368 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15457097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795580</commentid>
    <comment_count>4</comment_count>
      <attachid>180368</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-20 11:07:17 -0800</bug_when>
    <thetext>Comment on attachment 180368
Patch

Attachment 180368 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15433005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795592</commentid>
    <comment_count>5</comment_count>
      <attachid>180368</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-20 11:18:24 -0800</bug_when>
    <thetext>Comment on attachment 180368
Patch

Attachment 180368 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15451122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795647</commentid>
    <comment_count>6</comment_count>
      <attachid>180368</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-20 12:10:56 -0800</bug_when>
    <thetext>Comment on attachment 180368
Patch

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

Pretty cool stuff Gustavo! I&apos;ve just glanced at the patch but I&apos;ll try to do a full review tomorrow.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:892
&gt; +#if GST_API_VERSION_1

#ifdef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796223</commentid>
    <comment_count>7</comment_count>
      <attachid>180368</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-21 02:48:07 -0800</bug_when>
    <thetext>Comment on attachment 180368
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:895
&gt; +    GstMapInfo* mapInfo = g_slice_new(GstMapInfo);

I wonder, isn&apos;t the mapInfo leaked if the buffer can&apos;t be mapped?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:478
&gt; +#ifdef GST_API_VERSION_1
&gt; +        GstMiniObject* miniObject = reinterpret_cast&lt;GstMiniObject*&gt;(d-&gt;m_gstBuffer);
&gt; +
&gt; +        GstMapInfo* mapInfo = static_cast&lt;GstMapInfo*&gt;(gst_mini_object_steal_qdata(miniObject, g_quark_from_string(&quot;webkit-gst-map-info&quot;)));
&gt; +        if (mapInfo)
&gt; +            gst_buffer_unmap(d-&gt;m_gstBuffer, mapInfo);
&gt; +#endif

Maybe this can be moved to a function in GStreamerVersioning? Could be used in the source element too I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796243</commentid>
    <comment_count>8</comment_count>
      <attachid>180502</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-21 04:53:08 -0800</bug_when>
    <thetext>Created attachment 180502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796244</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-21 04:54:46 -0800</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #6)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:892
&gt; &gt; +#if GST_API_VERSION_1
&gt; 
&gt; #ifdef

Fixing this should fix qt and efl; wonder why my gst 0.10 build did not fail =/

(In reply to comment #7)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:895
&gt; &gt; +    GstMapInfo* mapInfo = g_slice_new(GstMapInfo);
&gt; 
&gt; I wonder, isn&apos;t the mapInfo leaked if the buffer can&apos;t be mapped?

It was being leaked, yes! Not only in this case, but even if it could be mapped heh.
 
&gt; &gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:478
&gt; &gt; +#ifdef GST_API_VERSION_1
&gt; &gt; +        GstMiniObject* miniObject = reinterpret_cast&lt;GstMiniObject*&gt;(d-&gt;m_gstBuffer);
&gt; &gt; +
&gt; &gt; +        GstMapInfo* mapInfo = static_cast&lt;GstMapInfo*&gt;(gst_mini_object_steal_qdata(miniObject, g_quark_from_string(&quot;webkit-gst-map-info&quot;)));
&gt; &gt; +        if (mapInfo)
&gt; &gt; +            gst_buffer_unmap(d-&gt;m_gstBuffer, mapInfo);
&gt; &gt; +#endif
&gt; 
&gt; Maybe this can be moved to a function in GStreamerVersioning? Could be used in the source element too I think.

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796248</commentid>
    <comment_count>10</comment_count>
      <attachid>180368</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-21 05:06:37 -0800</bug_when>
    <thetext>Comment on attachment 180368
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:135
&gt; +char* getGstBufferDataPointer(GstBuffer* buffer)

I&apos;m thinking of using this function in the WebAudio backend, but there the data pointer needs to be a float*. Maybe we could return a guint8* here and let the caller do the cast?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:890
&gt; +GstBuffer* StreamingClient::getBufferForData(gsize requestedSize)

I wonder if most of this method could be moved to a function in GStreamerVersioning, something like allocateGstBuffer(gsize requestedSize). And I could reuse it in the webaudio src element :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796271</commentid>
    <comment_count>11</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-12-21 06:23:52 -0800</bug_when>
    <thetext>You could reorganize this to keep all of the gst-specific stuff in WebKitWebSourceGStreamer.cpp. Just add a method to ResourceHandleClient:

    char* getBuffer(size_t length);

and then for each read, have ResourceHandleSoup call client-&gt;getBuffer() to get a buffer, read into it, and then client-&gt;didReceiveData() afterward. The default getBuffer() would be emulate the current behavior; something like:

    if (!m_buffer)
        m_buffer = static_cast&lt;char*&gt;(g_malloc(length));
    return m_buffer;

(except dealing with the possibility of length changing between calls too...)

and StreamingClient would override it to something like:

    m_gstBuffer = gst_buffer_new_and_alloc(length);
    return reinterpret_cast&lt;char*&gt;(GST_BUFFER_DATA(m_gstBuffer));

and its didReceiveData() would assert() that the passed-in data pointer was m_gstBuffer&apos;s data pointer, adjust m_gstBuffer&apos;s length if needed, and then hand the buffer off to the gstreamer pipeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796457</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-21 14:12:22 -0800</bug_when>
    <thetext>That&apos;s a great idea, Dan! The only thing I don&apos;t yet know how to do with that approach is freeing the buffer if the handle is destroyed inbetween a read and a didReceiveData, but this also made me realize that was a problem with the patch as it is right now! I don&apos;t think we can rely on the client existing to tell us how to free the buffer.

So I&apos;m thinking I can probably have the getBuffer method tell me whether the buffer is to be owned by the ResourceHandle, which implies it&apos;s been slice allocated and ResourceHandle should free it using its size. Otherwise the buffer is owned by the client, so we&apos;d just ignore them/set to NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796458</commentid>
    <comment_count>13</comment_count>
      <attachid>180502</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-21 14:12:38 -0800</bug_when>
    <thetext>Comment on attachment 180502
Patch

I&apos;ll use Dan&apos;s idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796529</commentid>
    <comment_count>14</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-12-21 16:15:40 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; That&apos;s a great idea, Dan! The only thing I don&apos;t yet know how to do with that approach is freeing the buffer if the handle is destroyed inbetween a read and a didReceiveData, but this also made me realize that was a problem with the patch as it is right now! I don&apos;t think we can rely on the client existing to tell us how to free the buffer.

I was assuming the client would deal with freeing the buffer itself, although I don&apos;t actually know the life cycle of ResourceHandleClients...

&gt; So I&apos;m thinking I can probably have the getBuffer method tell me whether the buffer is to be owned by the ResourceHandle, which implies it&apos;s been slice allocated and ResourceHandle should free it using its size.

oh, btw, the code shouldn&apos;t be using the slice allocator anyway; that&apos;s for small allocations. just use g_malloc/g_free.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796579</commentid>
    <comment_count>15</comment_count>
      <attachid>180582</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-21 18:37:32 -0800</bug_when>
    <thetext>Created attachment 180582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796582</commentid>
    <comment_count>16</comment_count>
      <attachid>180582</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 18:42:05 -0800</bug_when>
    <thetext>Comment on attachment 180582
Patch

Attachment 180582 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15475170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796585</commentid>
    <comment_count>17</comment_count>
      <attachid>180582</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 18:43:33 -0800</bug_when>
    <thetext>Comment on attachment 180582
Patch

Attachment 180582 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15450628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796733</commentid>
    <comment_count>18</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-23 05:33:56 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; That&apos;s a great idea, Dan! The only thing I don&apos;t yet know how to do with that approach is freeing the buffer if the handle is destroyed inbetween a read and a didReceiveData, but this also made me realize that was a problem with the patch as it is right now! I don&apos;t think we can rely on the client existing to tell us how to free the buffer.
&gt; 
&gt; I was assuming the client would deal with freeing the buffer itself, although I don&apos;t actually know the life cycle of ResourceHandleClients...

I guess we could add a default destructor to the client interface, but that sounds more intrusive than I&apos;d like to be. The life cycle of the client is quite varied - the FrameLoader is one of the clients, for instance, and it may outlive the handle by quite a bit.
 
&gt; &gt; So I&apos;m thinking I can probably have the getBuffer method tell me whether the buffer is to be owned by the ResourceHandle, which implies it&apos;s been slice allocated and ResourceHandle should free it using its size.
&gt; 
&gt; oh, btw, the code shouldn&apos;t be using the slice allocator anyway; that&apos;s for small allocations. just use g_malloc/g_free.

OK! Btw, one other thing we were experimenting with was bumping the default read size to read one or more MBs at once instead of the 8K we&apos;re doing now. Do you remember why we have 8K in the first place?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796734</commentid>
    <comment_count>19</comment_count>
      <attachid>180618</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-23 05:59:11 -0800</bug_when>
    <thetext>Created attachment 180618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796767</commentid>
    <comment_count>20</comment_count>
      <attachid>180618</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-23 09:12:42 -0800</bug_when>
    <thetext>Comment on attachment 180618
Patch

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

Looks pretty good to me but maybe Martin would like to give the final stamp. Thanks Dan for the informal review as well!

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:117
&gt; +int getGstBufferSize(GstBuffer* buffer)

unsigned int or gsize to be coherent with setGstBufferSize?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:139
&gt; +    GstMapInfo* mapInfo = static_cast&lt;GstMapInfo*&gt;(gst_mini_object_get_qdata(miniObject, g_quark_from_string(&quot;webkit-gst-map-info&quot;)));

What about having the string declared static and use g_quark_from_static_string()? The doc suggests this would be more efficient.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:296
&gt; +    GST_CALL_PARENT(G_OBJECT_CLASS, dispose, ((GObject* )(src)));

Is that a C-style cast? :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796774</commentid>
    <comment_count>21</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-12-23 09:22:31 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; I was assuming the client would deal with freeing the buffer itself, although I don&apos;t actually know the life cycle of ResourceHandleClients...
&gt; 
&gt; I guess we could add a default destructor to the client interface, but that sounds more intrusive than I&apos;d like to be. The life cycle of the client is quite varied - the FrameLoader is one of the clients, for instance, and it may outlive the handle by quite a bit.

But if it only ever has a single ResourceHandle active on it at any given time, then this wouldn&apos;t be a problem; it would just end up reusing the same buffer for multiple consecutive requests, rather than reallocating a new one each time like we do now.

&gt; OK! Btw, one other thing we were experimenting with was bumping the default read size to read one or more MBs at once instead of the 8K we&apos;re doing now. Do you remember why we have 8K in the first place?

The old SoupHTTPInputStream used 8K buffers internally, so using anything larger in WebKit would have been pointless (a read would always have returned 8k or less), and using anything smaller would have resulted in extra memcpy()s being needed sometimes. But with the new-and-improved I/O codepaths, you can use whatever buffer size you want and that will eventually get passed down to g_socket_receive().

As for why libsoup used 8K internally, there&apos;s no particular reason. Someone pulled that number out of a hat 10 years ago. It might not be optimal, although I&apos;m guessing &quot;one or more MBs&quot; is way too big; unless your main loop is taking up a lot of time somewhere, it shouldn&apos;t be possible for that much network data to get buffered up between reads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796780</commentid>
    <comment_count>22</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-12-23 09:35:18 -0800</bug_when>
    <thetext>(In reply to comment #21)

&gt; As for why libsoup used 8K internally, there&apos;s no particular reason. Someone pulled that number out of a hat 10 years ago. It might not be optimal, although I&apos;m guessing &quot;one or more MBs&quot; is way too big; unless your main loop is taking up a lot of time somewhere, it shouldn&apos;t be possible for that much network data to get buffered up between reads.

Sometimes parsing and page layout can take one or two seconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797153</commentid>
    <comment_count>23</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-25 07:47:57 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:117
&gt; &gt; +int getGstBufferSize(GstBuffer* buffer)
&gt; 
&gt; unsigned int or gsize to be coherent with setGstBufferSize?

I used int because it&apos;s the type used throughout ResourceHandle, I guess I could also change setGstBufferSize to use it, instead? What do you prefer?
 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:139
&gt; &gt; +    GstMapInfo* mapInfo = static_cast&lt;GstMapInfo*&gt;(gst_mini_object_get_qdata(miniObject, g_quark_from_string(&quot;webkit-gst-map-info&quot;)));
&gt; 
&gt; What about having the string declared static and use g_quark_from_static_string()? The doc suggests this would be more efficient.

Sure!

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:296
&gt; &gt; +    GST_CALL_PARENT(G_OBJECT_CLASS, dispose, ((GObject* )(src)));
&gt; 
&gt; Is that a C-style cast? :P

I copied it from finalize, I blame the existing code! Should I fix that one too, on a separate commit? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797155</commentid>
    <comment_count>24</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-12-25 07:57:26 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; But if it only ever has a single ResourceHandle active on it at any given time, then this wouldn&apos;t be a problem; it would just end up reusing the same buffer for multiple consecutive requests, rather than reallocating a new one each time like we do now.

I&apos;ll give a try and see what the code looks like when it&apos;s done, I guess it might not be as intrusive as I&apos;m afraid it would.
 
&gt; As for why libsoup used 8K internally, there&apos;s no particular reason. Someone pulled that number out of a hat 10 years ago. It might not be optimal, although I&apos;m guessing &quot;one or more MBs&quot; is way too big; unless your main loop is taking up a lot of time somewhere, it shouldn&apos;t be possible for that much network data to get buffered up between reads.

So the case we were looking at was playing a 1080p movie stored locally. Apparently pushing lots of small chunks of data into the GST pipeline instead of fewer and bigger chunks hurts performance a bit. I will try to come up with some numbers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797160</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-12-25 10:10:04 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #20)
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:117
&gt; &gt; &gt; +int getGstBufferSize(GstBuffer* buffer)
&gt; &gt; 
&gt; &gt; unsigned int or gsize to be coherent with setGstBufferSize?
&gt; 
&gt; I used int because it&apos;s the type used throughout ResourceHandle, I guess I could also change setGstBufferSize to use it, instead? What do you prefer?
&gt; 

I don&apos;t have any preference as long as the API is coherent.

&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:296
&gt; &gt; &gt; +    GST_CALL_PARENT(G_OBJECT_CLASS, dispose, ((GObject* )(src)));
&gt; &gt; 
&gt; &gt; Is that a C-style cast? :P
&gt; 
&gt; I copied it from finalize, I blame the existing code! Should I fix that one too, on a separate commit? ;)

Oops! Yes please fix it in this patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801546</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-07 12:31:40 -0800</bug_when>
    <thetext>Any news on this one Gustavo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802460</commentid>
    <comment_count>27</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-08 11:56:20 -0800</bug_when>
    <thetext>o/ was out on vacations, back now, will post an updated patch soonish</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803224</commentid>
    <comment_count>28</comment_count>
      <attachid>181894</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-09 04:26:15 -0800</bug_when>
    <thetext>Created attachment 181894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803264</commentid>
    <comment_count>29</comment_count>
      <attachid>181894</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-09 05:54:40 -0800</bug_when>
    <thetext>Comment on attachment 181894
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:158
&gt; +    gst_mini_object_set_qdata(miniObject, g_quark_from_string(&quot;webkit-gst-map-info&quot;), mapInfo, 0);

Would it be possible to use g_quark_from_static_string here as well? The webkitGstMapInfoQuarkString could be a global variable and reused here I think.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:164
&gt; +    GstMapInfo* mapInfo = static_cast&lt;GstMapInfo*&gt;(gst_mini_object_steal_qdata(miniObject, g_quark_from_string(&quot;webkit-gst-map-info&quot;)));

Ditto :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806277</commentid>
    <comment_count>30</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-14 05:24:13 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Would it be possible to use g_quark_from_static_string here as well? The webkitGstMapInfoQuarkString could be a global variable and reused here I think.

Err, yep =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806278</commentid>
    <comment_count>31</comment_count>
      <attachid>182554</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-14 05:24:28 -0800</bug_when>
    <thetext>Created attachment 182554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808324</commentid>
    <comment_count>32</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-16 06:17:31 -0800</bug_when>
    <thetext>Committed r139877: &lt;http://trac.webkit.org/changeset/139877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808387</commentid>
    <comment_count>33</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-16 08:28:10 -0800</bug_when>
    <thetext>I rolled out the patch because it broke these API tests:

Tests failed (1): /unittests/testdownload
Tests that timed out (1): /WebKit2APITests/TestDownloads

I&apos;ll investigate and post a new patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808416</commentid>
    <comment_count>34</comment_count>
    <who name="János Badics">jbadics</who>
    <bug_when>2013-01-16 09:05:19 -0800</bug_when>
    <thetext>139877 made two tests crash on Qt:
http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html and
http/tests/security/video-poster-cross-origin-crash2.html .

Crash logs can be found at:
http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release/r139877%20(46929)/http/tests/security/mixedContent/insecure-audio-video-in-main-frame-crash-log.txt
http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release/r139883%20(46933)/http/tests/security/video-poster-cross-origin-crash2-crash-log.txt

Thank you for taking a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808761</commentid>
    <comment_count>35</comment_count>
      <attachid>183041</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-16 15:16:07 -0800</bug_when>
    <thetext>Created attachment 183041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808778</commentid>
    <comment_count>36</comment_count>
      <attachid>183041</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-16 15:27:01 -0800</bug_when>
    <thetext>Comment on attachment 183041
Patch

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

Found the problem. I think we need to improve the robustness and readability of the code that deals with cancellation and with the client. I would like to propose two follow-up patches, let me know if you agree:

1. Abolish usage of client as a local variable

That means always doing d-&gt;client() or handle-&gt;client() as appropriate. The client *may* change after a ResourceHandleClient callback, so that would help avoid using a stale client.

2. Add a helper isCancelled() method to ResourceHandleSoup that will always check d-&gt;m_cancelled || handle-&gt;client()

We have been bitten by the client not existing before, and were just bitten again. I couldn&apos;t remember any reason why we would prefer to check only for the explicit cancellation. Maybe the method could be called something else to get across that it&apos;s not just checking for cancellation, though. Something like shouldBail?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:701
&gt; +    // didReceiveResponse may cause the client to be changed.
&gt; +    client = d-&gt;client();

The WK2 test was timing out because the WebProcess crashed when calling getBuffer on the client (see bellow). The crash happened because the client used by this ResourceHandle had been changed, so client != d-&gt;client(), and the old one was presumably dead.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:703
&gt; +    if (d-&gt;m_cancelled || !client) {

The WK1 test was crashing at the same place as the WK2 test, but for a different reason: the client was set to 0 in didReceiveResponse, so we were doing an use-after-free bellow. This worked before the patch because client was no longer used in this function and because readCallback does check for the client not being there.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:719
&gt; +    d-&gt;m_buffer = client-&gt;getBuffer(READ_BUFFER_SIZE, &amp;d-&gt;m_bufferSize);

Both crashes happened here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808783</commentid>
    <comment_count>37</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-16 15:34:22 -0800</bug_when>
    <thetext>(In reply to comment #36)

&gt; Found the problem. I think we need to improve the robustness and readability of the code that deals with cancellation and with the client. I would like to propose two follow-up patches, let me know if you agree:

All your suggestions sound great. I&apos;m all for improving the readability and robustness of the ResourceHandleSoup code, as it seems to drift toward the byzantine after each cleanup and simplification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808810</commentid>
    <comment_count>38</comment_count>
      <attachid>183041</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 16:03:37 -0800</bug_when>
    <thetext>Comment on attachment 183041
Patch

Attachment 183041 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15914518

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809334</commentid>
    <comment_count>39</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-17 08:01:58 -0800</bug_when>
    <thetext>The chromium failure is a false positive I guess, since we&apos;re not touching any code it uses in theory. I realized, though, that my fixes are probably not enough to fix the qt crashes. Unfortunately the crash logs are pretty useless, I suppose there are no crash logs from a debug bot? I&apos;ll do a qt build if that&apos;s the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810621</commentid>
    <comment_count>40</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-18 08:19:28 -0800</bug_when>
    <thetext>+Ossy the buildbot lord :)
Is there a qt debug bot? We need a detailed stack trace for a crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811624</commentid>
    <comment_count>41</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-20 08:44:50 -0800</bug_when>
    <thetext>I am trying to build QtWebKit, but am hitting build failures. I guess I&apos;ll try building qt5 instead of installing from the PPA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811682</commentid>
    <comment_count>42</comment_count>
      <attachid>183688</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-20 14:37:18 -0800</bug_when>
    <thetext>Created attachment 183688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811874</commentid>
    <comment_count>43</comment_count>
      <attachid>183688</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 23:51:20 -0800</bug_when>
    <thetext>Comment on attachment 183688
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:182
&gt; +    gst_mini_object_set_qdata(miniObject, g_quark_from_static_string(&quot;webkit-gst-map-info&quot;), mapInfo, 0);

Not using webkitGstMapInfoQuarkString here?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:188
&gt; +    GstMapInfo* mapInfo = static_cast&lt;GstMapInfo*&gt;(gst_mini_object_steal_qdata(miniObject, g_quark_from_static_string(&quot;webkit-gst-map-info&quot;)));

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812344</commentid>
    <comment_count>44</comment_count>
      <attachid>183823</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-21 12:54:40 -0800</bug_when>
    <thetext>Created attachment 183823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812345</commentid>
    <comment_count>45</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-21 12:55:36 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/GStreamerVersioning.cpp:182
&gt; &gt; +    gst_mini_object_set_qdata(miniObject, g_quark_from_static_string(&quot;webkit-gst-map-info&quot;), mapInfo, 0);
&gt; 
&gt; Not using webkitGstMapInfoQuarkString here?

Oops, I noobed this change really bad at least twice, sorry bout that =(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813006</commentid>
    <comment_count>46</comment_count>
      <attachid>183823</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-22 06:42:18 -0800</bug_when>
    <thetext>Comment on attachment 183823
Patch

Clearing flags on attachment: 183823

Committed r140420: &lt;http://trac.webkit.org/changeset/140420&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813007</commentid>
    <comment_count>47</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-22 06:42:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813040</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-22 07:57:40 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 107557</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813051</commentid>
    <comment_count>49</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-22 08:18:53 -0800</bug_when>
    <thetext>Crashes in EFL. I think these may be caused by bad interaction between this patch and another one that was landed before that moved the allocation of the buffer around a bit, but I&apos;m pretty sure the cause is the same as the ones we were seeing before in GTK+, so I think I&apos;ll go ahead and make patches for my proposed refactorings before landing this again. Also, we should probably get gtk+ building in debug mode again before this.

crash log for WebProcess (pid &lt;unknown&gt;):
STDOUT: &lt;empty&gt;
STDERR: 1   0x7fca56c360b7
STDERR: 2   0x7fca598484a0
STDERR: 3   0x7fca56b353ea getGstBufferDataPointer(_GstBuffer*)
STDERR: 4   0x7fca56b411b2 StreamingClient::didReceiveData(WebCore::ResourceHandle*, char const*, int, int)
STDERR: 5   0x7fca56b55b12
STDERR: 6   0x7fca50fbf775
STDERR: 7   0x7fca50fd48dd g_simple_async_result_complete
STDERR: 8   0x7fca50fd4a0c
STDERR: 9   0x7fca51306e53 g_main_context_dispatch
STDERR: 10  0x7fca529fcaee
STDERR: 11  0x7fca529f6cb9
STDERR: 12  0x7fca529f7845
STDERR: 13  0x7fca529f7b47 ecore_main_loop_begin
STDERR: 14  0x7fca56b1e5e9 WebCore::RunLoop::run()
STDERR: 15  0x7fca5a80b93a WebProcessMainEfl
STDERR: 16  0x400804 main
STDERR: 17  0x7fca5983376d __libc_start_main
STDERR: 18  0x400729
STDERR: LEAK: 1 WebPage
STDERR: LEAK: 1 WebFrame
STDERR: LEAK: 4 JSLazyEventListener
STDERR: LEAK: 95 RenderObject
STDERR: LEAK: 1 Page
STDERR: LEAK: 1 Frame
STDERR: LEAK: 4 CachedResource
STDERR: LEAK: 1 SubresourceLoader
STDERR: LEAK: 326 WebCoreNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822440</commentid>
    <comment_count>50</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-01 00:43:13 -0800</bug_when>
    <thetext>Can we land this again Gustavo? I&apos;m not sure of the status of the patch across EFL, Qt and GTK :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824250</commentid>
    <comment_count>51</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-04 04:40:20 -0800</bug_when>
    <thetext>I finished my proposed refactorings now, so I&apos;ll build and test this patch on GTK+, Qt and EFL and hopefully land it today ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824811</commentid>
    <comment_count>52</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-04 15:16:57 -0800</bug_when>
    <thetext>OK, updated the patch to get the buffer for every call to read_async - there were some added to replace skip and whatnot, and ran tests in gtk, gtk-wk2, qt, efl. I think I have all bases covered, let&apos;s try to land this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824816</commentid>
    <comment_count>53</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-04 15:20:19 -0800</bug_when>
    <thetext>Committed r141821: &lt;http://trac.webkit.org/changeset/141821&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824963</commentid>
    <comment_count>54</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-02-04 17:55:21 -0800</bug_when>
    <thetext>Looks like this time it stuck ;)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180368</attachid>
            <date>2012-12-20 11:00:31 -0800</date>
            <delta_ts>2012-12-21 05:06:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20121220165746.patch</filename>
            <type>text/plain</type>
            <size>18092</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBiYjUwZjY5N2Q5YTUy
OGI1ZGZiYjMzYzgxYWI4M2ZlNjIxMWE5MS4uOWM4NzdmMmIyOWE5MWQ4MzIwOTdhZWM3MGUwZjMx
ZGQ2OWNhNTMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTEyLTIwICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUg
R1N0cmVhbWVyIG1lZGlhIGJhY2tlbmQgdG8gcHJvdmlkZSB0aGUgYnVmZmVyCisgICAgICAgIHRv
IHdoaWNoIHRoZSBTb3VwIG5ldHdvcmtpbmcgYmFja2VuZCB3aWxsIHVzZSB0byBkb3dubG9hZCBk
YXRhIHRvLiBUaGlzCisgICAgICAgIG1ha2VzIGNvcHlpbmcgbWVtb3J5IHVubmVjZXNzYXJ5IHdo
ZW4gUmVzb3VyY2VIYW5kbGUgaGFuZHMgZGF0YSBvdmVyIHRvCisgICAgICAgIHRoZSBtZWRpYSBw
bGF5ZXIncyBTdHJlYW1pbmdDbGllbnQuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5nZSwg
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcDoKKyAgICAgICAgKGdldEdzdEJ1ZmZl
clNpemUpOiBhYnN0cmFjdCBvYnRhaW5pbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciwgc28gdGhl
IGNvZGUKKyAgICAgICAgaXMgY2xlYW5lciB3aGlsZSBzdGlsbCB3b3JraW5nIGZvciBib3RoIEdT
VCAwLjEwIGFuZCAxLjAuCisgICAgICAgIChzZXRHc3RCdWZmZXJTaXplKTogZGl0dG8sIGJ1dCBm
b3Igc2V0dGluZyB0aGUgc2l6ZS4KKyAgICAgICAgKGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKTog
ZGl0dG8sIGJ1dCBmb3IgZ3JhYmJpbmcgdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50KTogbmV3IG1ldGhvZHMuCisgICAgICAgIChTdHJl
YW1pbmdDbGllbnQ6OndhbnRzR3N0QnVmZmVycyk6IE1ldGhvZCB0aGF0IHRlbGxzIFJlc291cmNl
SGFuZGxlIHdoZXRoZXIKKyAgICAgICAgdG8gcmVxdWVzdCBHc3RCdWZmZXIgb2JqZWN0cyBmcm9t
IHRoZSBjbGllbnQ7IGFsc28gdXNlZCB0byBkZWNpZGUgd2hldGhlciB0bworICAgICAgICB1c2Ug
ZGlkUmVjZWl2ZURhdGEgb3IgZGlkUmVjZWl2ZUdzdEJ1ZmZlci4KKyAgICAgICAgKFN0cmVhbWlu
Z0NsaWVudDo6ZGlkUmVjZWl2ZUdzdEJ1ZmZlcik6IE1ldGhvZCB1c2VkIGJ5IFJlc291cmNlSGFu
ZGxlIHRvIGhhbmQKKyAgICAgICAgdGhlIEdzdEJ1ZmZlciBiYWNrIHRvIHRoZSBTdHJlYW1pbmdD
bGllbnQsIGFmdGVyIGl0J3MgZG9uZSByZWFkaW5nLgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50
OjpnZXRCdWZmZXJGb3JEYXRhKTogTWV0aG9kIHVzZWQgYnkgUmVzb3VyY2VIYW5kbGUgdG8gb2J0
YWluCisgICAgICAgIHRoZSBHc3RCdWZmZXIuCisgICAgICAgIChTdHJlYW1pbmdDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKTogTm8gbG9uZ2VyIHVzZWQuIEFzc2VydCBpdCdzIG5vdCByZWFjaGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAg
ICAgKFJlc291cmNlSGFuZGxlQ2xpZW50KTogTmV3IHZpcnR1YWwgbWV0aG9kcyBhZGRlZCwgdXNl
ZCBieSB0aGUgR1N0cmVhbWVyCisgICAgICAgIGludGVncmF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OndhbnRzR3N0QnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6Z2V0QnVmZmVyRm9yRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUdzdEJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpjbGVhbnVwR3N0QnVmZmVyKTogQ2xlYXJzIGFsbCBwb2ludGVy
cyBpbnZvbHZlZCBpbiB0aGUgcmVhZCBidWZmZXIKKyAgICAgICAgZGFuY2UuCisgICAgICAgIChX
ZWJDb3JlOjpwcmVwYXJlR3N0QnVmZmVyKTogT2J0YWlucyB0aGUgYnVmZmVyIGZyb20gdGhlIGNs
aWVudCBhbmQgcG9pbnQgdGhlCisgICAgICAgIHJlYWQgYnVmZmVyIHVzZWQgYnkgUmVzb3VyY2VI
YW5kbGUgdG8gdGhlIGFwcHJvcHJpYXRlIHBsYWNlLgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFy
ZVJlYWRCdWZmZXIpOiBBYnN0cmFjdHMgdGhlIGNvbXBsaWNhdGlvbnMgYWRkZWQgYnkgYWRkaW5n
IHRoZQorICAgICAgICBpbnRlZ3JhdGlvbiwgZm9yIHJlYWRhYmlsaXR5LgorICAgICAgICAoV2Vi
Q29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKTogQ2xlYW51cCB0aGUgR3N0QnVmZmVy
IHN0dWZmLgorICAgICAgICAoV2ViQ29yZTo6bmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxi
YWNrKTogT2J0YWluIGEgYnVmZmVyIGZvciByZWFkaW5nIGludG8sCisgICAgICAgIGlmIHRoZSBj
bGllbnQgd2FudHMgR3N0QnVmZmVycy4KKyAgICAgICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2Fs
bGJhY2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6IERpdHRvLgor
CiAyMDEyLTEyLTE5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQuIEFkZCBuZXcgc3RyaW5ncyB0byBHVEsrJ3MgaW1wbGVtZW50YXRp
b24gb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAppbmRleCAyMjIyZDMyNWU5
YWNkM2YyMWVlY2Q5Mzg1MzcyZjc1NGRjOWJlNmY5Li5jOTdlYjViMmVjNjRkYzY1MGUyNzU3Zjc5
NDdiZjI2ZWY1NjYxMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCkBA
IC0xMTQsNiArMTE0LDM1IEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciog
YnVmZmVyKQogICAgIHJldHVybiBuZXdCdWZmZXI7CiB9CiAKK2dzaXplIGdldEdzdEJ1ZmZlclNp
emUoR3N0QnVmZmVyKiBidWZmZXIpCit7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBy
ZXR1cm4gZ3N0X2J1ZmZlcl9nZXRfc2l6ZShidWZmZXIpOworI2Vsc2UKKyAgICByZXR1cm4gR1NU
X0JVRkZFUl9TSVpFKGJ1ZmZlcik7CisjZW5kaWYKK30KKwordm9pZCBzZXRHc3RCdWZmZXJTaXpl
KEdzdEJ1ZmZlciogYnVmZmVyLCBnc2l6ZSBuZXdTaXplKQoreworI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCisgICAgZ3N0X2J1ZmZlcl9zZXRfc2l6ZShidWZmZXIsIHN0YXRpY19jYXN0PGdzc2l6
ZT4obmV3U2l6ZSkpOworI2Vsc2UKKyAgICBHU1RfQlVGRkVSX1NJWkUoYnVmZmVyKSA9IG5ld1Np
emU7CisjZW5kaWYKK30KKworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVy
KiBidWZmZXIpCit7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHc3RNaW5pT2JqZWN0
KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsK
KyAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9t
aW5pX29iamVjdF9nZXRfcWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0cmluZygid2Vi
a2l0LWdzdC1tYXAtaW5mbyIpKSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KG1hcEluZm8tPmRhdGEpOworI2Vsc2UKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlcikpOworI2VuZGlmCit9CisKIHZvaWQgc2V0R3N0RWxl
bWVudENsYXNzTWV0YWRhdGEoR3N0RWxlbWVudENsYXNzKiBlbGVtZW50Q2xhc3MsIGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IGNoYXIqIGxvbmdOYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwg
Y29uc3QgY2hhciogYXV0aG9yKQogewogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
VmVyc2lvbmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuaAppbmRleCA0MDg0NGY4YjkyMTNkMTA3MDEwYWMyZTk1YmMw
MTM4YjUzZmZjY2FlLi5hMmY0ODcwZmM5OGRjMzlkNDkxY2JjMzA2YmEyZjQ1MTFiN2Q2ZGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyVmVyc2lvbmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKQEAgLTM2LDYgKzM2LDkgQEAgR1JlZlB0
cjxHc3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBhZCopOwogYm9vbCBnZXRWaWRlb1Np
emVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZpZGVv
Rm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0
UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2VuZGlmCiBHc3RCdWZmZXIqIGNyZWF0
ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK2dzaXplIGdldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVy
Kik7Cit2b2lkIHNldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKiwgZ3NpemUgbmV3U2l6ZSk7Citj
aGFyKiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihHc3RCdWZmZXIqKTsKIHZvaWQgc2V0R3N0RWxl
bWVudENsYXNzTWV0YWRhdGEoR3N0RWxlbWVudENsYXNzKiwgY29uc3QgY2hhciogbmFtZSwgY29u
c3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBh
dXRob3IpOwogYm9vbCBnc3RPYmplY3RJc0Zsb2F0aW5nKEdzdE9iamVjdCopOwogdm9pZCBub3Rp
ZnlHc3RUYWdzT25QYWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEdzdFRhZ0xpc3QqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjgwNGQxZjdlMDU5
ZjMyNWI2ZjQ3ZjU5MzE0MThkMzc1ODMyYjVkNy4uZWI5YTNlYTRlMTJlYjA4MDNhMTMyZWI0N2Q5
ZWI3NDE5ZDFmZmRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKQEAgLTMyLDEwICszMiw5IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKLSAKICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgorI2luY2x1ZGUgPGdz
dC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KLQogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC01MSw2ICs1MCwxMSBAQCBj
bGFzcyBTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CisKKyAgICAgICAgdmlydHVhbCBib29sIHdhbnRzR3N0QnVmZmVycygpIHsgcmV0
dXJuIHRydWU7IH07CisgICAgICAgIHZpcnR1YWwgR3N0QnVmZmVyKiBnZXRCdWZmZXJGb3JEYXRh
KGdzaXplKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVHc3RCdWZmZXIoUmVzb3Vy
Y2VIYW5kbGUqLCBHc3RCdWZmZXIqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZp
bmlzaFRpbWUqLyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtODUyLDI2ICs4NTYsMjYgQEAgdm9pZCBTdHJl
YW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UKICAgICAgICAgbm90aWZ5R3N0VGFnc09uUGFkKEdTVF9FTEVNRU5UKG1f
c3JjKSwgbV9zcmMtPnByaXYtPnNyY3BhZCwgdGFncyk7CiB9CiAKLXZvaWQgU3RyZWFtaW5nQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoLCBpbnQpCit2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZUdz
dEJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBHc3RCdWZmZXIqIGJ1ZmZlcikKIHsKICAg
ICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CiAKLSAgICBHU1RfTE9H
X09CSkVDVChtX3NyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7CisgICAgR1NU
X0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBnZXRHc3RCdWZmZXJT
aXplKGJ1ZmZlcikpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHc3RNaW5pT2Jq
ZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVy
KTsKKyAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdz
dF9taW5pX29iamVjdF9zdGVhbF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RyaW5n
KCJ3ZWJraXQtZ3N0LW1hcC1pbmZvIikpKTsKKyAgICBnc3RfYnVmZmVyX3VubWFwKGJ1ZmZlciwg
bWFwSW5mbyk7CisjZW5kaWYKIAogICAgIGlmIChwcml2LT5zZWVrSUQgfHwgaGFuZGxlICE9IHBy
aXYtPnJlc291cmNlSGFuZGxlKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QobV9zcmMsICJT
ZWVrIGluIHByb2dyZXNzLCBpZ25vcmluZyBkYXRhIik7CisgICAgICAgIGdzdF9idWZmZXJfdW5y
ZWYoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdzdEJ1ZmZlciogYnVm
ZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKGxlbmd0aCk7Ci0KLSNpZmRlZiBHU1RfQVBJ
X1ZFUlNJT05fMQotICAgIGdzdF9idWZmZXJfZmlsbChidWZmZXIsIDAsIGRhdGEsIGxlbmd0aCk7
Ci0jZWxzZQotICAgIG1lbWNweShHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3Ro
KTsKLSNlbmRpZgogICAgIEdTVF9CVUZGRVJfT0ZGU0VUKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7
Ci0gICAgcHJpdi0+b2Zmc2V0ICs9IGxlbmd0aDsKKyAgICBwcml2LT5vZmZzZXQgKz0gZ2V0R3N0
QnVmZmVyU2l6ZShidWZmZXIpOwogICAgIEdTVF9CVUZGRVJfT0ZGU0VUX0VORChidWZmZXIpID0g
cHJpdi0+b2Zmc2V0OwogCiAgICAgR3N0Rmxvd1JldHVybiByZXQgPSBnc3RfYXBwX3NyY19wdXNo
X2J1ZmZlcihwcml2LT5hcHBzcmMsIGJ1ZmZlcik7CkBAIC04ODMsNiArODg3LDMyIEBAIHZvaWQg
U3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpCiAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JF
LCBGQUlMRUQsICgwKSwgKDApKTsKIH0KIAorR3N0QnVmZmVyKiBTdHJlYW1pbmdDbGllbnQ6Omdl
dEJ1ZmZlckZvckRhdGEoZ3NpemUgcmVxdWVzdGVkU2l6ZSkKK3sKKyNpZiBHU1RfQVBJX1ZFUlNJ
T05fMQorICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKHJl
cXVlc3RlZFNpemUpOworCisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IGdfc2xpY2VfbmV3KEdz
dE1hcEluZm8pOworICAgIGlmICghZ3N0X2J1ZmZlcl9tYXAoYnVmZmVyLCBtYXBJbmZvLCBHU1Rf
TUFQX1dSSVRFKSkgeworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIEdzdE1pbmlPYmplY3QqIG1pbmlPYmplY3QgPSByZWlu
dGVycHJldF9jYXN0PEdzdE1pbmlPYmplY3QqPihidWZmZXIpOworICAgIGdzdF9taW5pX29iamVj
dF9zZXRfcWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0cmluZygid2Via2l0LWdzdC1t
YXAtaW5mbyIpLCBtYXBJbmZvLCAwKTsKKworICAgIHJldHVybiBidWZmZXI7CisjZWxzZQorICAg
IHJldHVybiBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CisjZW5kaWYK
K30KKwordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkKK3sKKyAgICAvLyBXZSB1c2UgZGlkUmVjZWl2ZUdzdEJ1ZmZlciBpbnN0ZWFkLgorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKIHsKICAgICBXZWJLaXRXZWJTcmNQ
cml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggM2Q1NWQ4NjhhOTM2
YmNhODI3MDZmYTdiM2FlNTc1YmZiMmI0MjAyNi4uNjRlNTJkM2UzZWIyZmFhOGYxM2ZkYTE1NmU0
NjIzOTYwNmMxMTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzUsNiArMzUsMTEgQEAKICNpbmNsdWRl
IDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgogCisjaWYgVVNFKEdTVFJF
QU1FUikKKyNpbmNsdWRlIDxnbGliLmg+Cit0eXBlZGVmIHN0cnVjdCBfR3N0QnVmZmVyIEdzdEJ1
ZmZlcjsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQogI2lu
Y2x1ZGUgPENvbmRpdGlvbmFsTWFjcm9zLmg+CiAjZW5kaWYKQEAgLTgyLDYgKzg3LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhQXJy
YXkoUmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKSB7IH0KICNlbmRpZgogCisjaWYgVVNFKEdT
VFJFQU1FUikKKyAgICAgICAgdmlydHVhbCBib29sIHdhbnRzR3N0QnVmZmVycygpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgR3N0QnVmZmVyKiBnZXRCdWZmZXJGb3JEYXRhKGdz
aXplKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlR3N0QnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgR3N0QnVmZmVyKikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IGI3ZjZjOTU3
MzNhZjY4MzVmNDgzYjkyODYzMGE2NWI2MWU4ZmZjNjIuLjEzZjMzNGY5NmM3YWI2MDRhODdjODBh
ZDY3NDk3NzUwYzhmZmM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC01NCw2ICs1NCwxMCBAQAog
Y2xhc3MgRnJhbWU7CiAjZW5kaWYKIAorI2lmIFVTRShHU1RSRUFNRVIpCit0eXBlZGVmIHN0cnVj
dCBfR3N0QnVmZmVyIEdzdEJ1ZmZlcjsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9C
RUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFXZWJOZXR3b3JrSm9iOwpAQCAtMTEyLDkgKzExNiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICAsIG1fY2Fu
Y2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2J1ZmZlcigwKQorICAgICAgICAgICAgLCBt
X2J1ZmZlclNpemUoMCkKICAgICAgICAgICAgICwgbV9ib2R5U2l6ZSgwKQogICAgICAgICAgICAg
LCBtX2JvZHlEYXRhU2VudCgwKQogI2VuZGlmCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAg
ICAgICwgbV9nc3RCdWZmZXIoMCkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICAg
ICAgLCBtX2pvYigwKQogI2VuZGlmCkBAIC0xOTgsMTEgKzIwNiwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2RlZmVycmVkUmVzdWx0Owog
ICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsKICAgICAgICAgY2hhciog
bV9idWZmZXI7CisgICAgICAgIGdzaXplIG1fYnVmZmVyU2l6ZTsKICAgICAgICAgdW5zaWduZWQg
bG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50Owog
ICAgICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICAgICAgICAgU291
cFNlc3Npb24qIHNvdXBTZXNzaW9uKCk7CiAjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAg
ICAgICBHc3RCdWZmZXIqIG1fZ3N0QnVmZmVyOworI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAppbmRleCBhNDAzOTNkOGVjMDJhYmI0MzY1NjYzNGRmZjY4NGQ2MTVh
ZDliYmZhLi5jZmNlNDY2YmJkMDRjZjc1OGY0YzY2ZGY0OGE1NDM3NDRhYjk4OTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcApAQCAtNjYsNiArNjYsMTEgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9C
YXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBVU0UoR1NUUkVB
TUVSKQorI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKKyNpbmNsdWRlIDxnc3QvZ3N0
Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShCTE9CKQogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAj
aW5jbHVkZSAiQmxvYlJlZ2lzdHJ5SW1wbC5oIgpAQCAtNDU4LDYgKzQ2Myw2NCBAQCBzdGF0aWMg
dm9pZCB3cm90ZUJvZHlEYXRhQ2FsbGJhY2soU291cE1lc3NhZ2UqLCBTb3VwQnVmZmVyKiBidWZm
ZXIsIGdwb2ludGVyIGRhdAogICAgIGNsaWVudC0+ZGlkU2VuZERhdGEoaGFuZGxlLmdldCgpLCBp
bnRlcm5hbC0+bV9ib2R5RGF0YVNlbnQsIGludGVybmFsLT5tX2JvZHlTaXplKTsKIH0KIAorI2lm
IFVTRShHU1RSRUFNRVIpCitzdGF0aWMgdm9pZCBjbGVhbnVwR3N0QnVmZmVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGJvb2wgbmVlZHNVbnJlZiA9IGZhbHNlKQoreworICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisKKyAgICBpZiAobmVlZHNV
bnJlZikgeworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIEdzdE1pbmlPYmplY3Qq
IG1pbmlPYmplY3QgPSByZWludGVycHJldF9jYXN0PEdzdE1pbmlPYmplY3QqPihkLT5tX2dzdEJ1
ZmZlcik7CisKKyAgICAgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1h
cEluZm8qPihnc3RfbWluaV9vYmplY3Rfc3RlYWxfcWRhdGEobWluaU9iamVjdCwgZ19xdWFya19m
cm9tX3N0cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7CisgICAgICAgIGlmIChtYXBJbmZv
KQorICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChkLT5tX2dzdEJ1ZmZlciwgbWFwSW5mbyk7
CisjZW5kaWYKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihkLT5tX2dzdEJ1ZmZlcik7CisgICAg
fQorCisgICAgZC0+bV9nc3RCdWZmZXIgPSAwOworICAgIGQtPm1fYnVmZmVyID0gMDsKKyAgICBk
LT5tX2J1ZmZlclNpemUgPSAwOworfQorCitzdGF0aWMgdm9pZCBwcmVwYXJlR3N0QnVmZmVyKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50
ID0gZC0+Y2xpZW50KCk7CisKKyAgICBBU1NFUlQoY2xpZW50KTsKKyAgICBBU1NFUlQoY2xpZW50
LT53YW50c0dzdEJ1ZmZlcnMoKSk7CisKKyAgICBkLT5tX2dzdEJ1ZmZlciA9IGNsaWVudC0+Z2V0
QnVmZmVyRm9yRGF0YShSRUFEX0JVRkZFUl9TSVpFKTsKKyAgICBkLT5tX2J1ZmZlciA9IGdldEdz
dEJ1ZmZlckRhdGFQb2ludGVyKGQtPm1fZ3N0QnVmZmVyKTsKKyAgICBkLT5tX2J1ZmZlclNpemUg
PSBnZXRHc3RCdWZmZXJTaXplKGQtPm1fZ3N0QnVmZmVyKTsKK30KKworc3RhdGljIHZvaWQgcHJl
cGFyZVJlYWRCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworCisgICAgaWYgKGQtPmNs
aWVudCgpLT53YW50c0dzdEJ1ZmZlcnMoKSkgeworICAgICAgICBwcmVwYXJlR3N0QnVmZmVyKGhh
bmRsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZC0+bV9idWZmZXIgJiYg
ZC0+bV9idWZmZXJTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBkLT5tX2J1ZmZlciA9IHN0
YXRpY19jYXN0PGNoYXIqPihnX3NsaWNlX2FsbG9jKFJFQURfQlVGRkVSX1NJWkUpKTsKKyAgICBk
LT5tX2J1ZmZlclNpemUgPSBSRUFEX0JVRkZFUl9TSVpFOworfQorI2Vsc2UKK3N0YXRpYyB2b2lk
IHByZXBhcmVSZWFkQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBkLT5tX2J1
ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihnX3NsaWNlX2FsbG9jKFJFQURfQlVGRkVSX1NJWkUp
KTsKKyAgICBkLT5tX2J1ZmZlclNpemUgPSBSRUFEX0JVRkZFUl9TSVpFOworfQorI2VuZGlmIC8v
IFVTRShHU1RSRUFNRVIpCisKIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlv
bihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluZyA9IGZhbHNlKQogewog
ICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CkBA
IC00NzQsOSArNTM3LDE1IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlv
bihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluCiAgICAgICAgIGQtPm1f
c291cE1lc3NhZ2UuY2xlYXIoKTsKICAgICB9CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIGlm
IChkLT5tX2dzdEJ1ZmZlcikKKyAgICAgICAgY2xlYW51cEdzdEJ1ZmZlcihoYW5kbGUsIC8qIG5l
ZWRzVW5yZWYgKi8gdHJ1ZSk7CisjZW5kaWYKKwogICAgIGlmIChkLT5tX2J1ZmZlcikgewogICAg
ICAgICBnX3NsaWNlX2ZyZWUxKFJFQURfQlVGRkVSX1NJWkUsIGQtPm1fYnVmZmVyKTsKICAgICAg
ICAgZC0+bV9idWZmZXIgPSAwOworICAgICAgICBkLT5tX2J1ZmZlclNpemUgPSAwOwogICAgIH0K
IAogICAgIGlmIChkLT5tX3RpbWVvdXRTb3VyY2UpIHsKQEAgLTU0OCw3ICs2MTcsOSBAQCBzdGF0
aWMgdm9pZCBuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypzb3Vy
Y2UqLywgR0FzeW5jUmVzdWx0KgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19pbnB1
dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwg
UkVBRF9CVUZGRVJfU0laRSwKKyAgICBwcmVwYXJlUmVhZEJ1ZmZlcihoYW5kbGUuZ2V0KCkpOwor
CisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBk
LT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAogICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQs
IGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0K
IApAQCAtNTc4LDcgKzY0OSw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09i
amVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgZC0+bV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19zbGlj
ZV9hbGxvYyhSRUFEX0JVRkZFUl9TSVpFKSk7CisgICAgcHJlcGFyZVJlYWRCdWZmZXIoaGFuZGxl
LmdldCgpKTsKIAogICAgIGlmIChzb3VwTWVzc2FnZSkgewogICAgICAgICBpZiAoaGFuZGxlLT5z
aG91bGRDb250ZW50U25pZmYoKSAmJiBzb3VwTWVzc2FnZS0+c3RhdHVzX2NvZGUgIT0gU09VUF9T
VEFUVVNfTk9UX01PRElGSUVEKSB7CkBAIC02MTUsNyArNjg2LDcgQEAgc3RhdGljIHZvaWQgc2Vu
ZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVy
IGRhdGEpCiAgICAgfQogCiAgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0U3RyZWFtOwotICAg
IGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9i
dWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhk
LT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNl
bGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAKQEAgLTEyNjks
NiArMTM0MCwxNyBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jl
c3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgLy8gSXQncyBtYW5kYXRvcnkg
dG8gaGF2ZSBzZW50IGEgcmVzcG9uc2UgYmVmb3JlIHNlbmRpbmcgZGF0YQogICAgIEFTU0VSVCgh
ZC0+bV9yZXNwb25zZS5pc051bGwoKSk7CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgIGlmIChj
bGllbnQtPndhbnRzR3N0QnVmZmVycygpICYmIGQtPm1fZ3N0QnVmZmVyKSB7CisgICAgICAgIC8v
IFdlIG5lZWQgdG8gdXBkYXRlIEdzdEJ1ZmZlcidzIGtub3dsZWRnZSBvZiBob3cgbXVjaCBvZiB0
aGUgYnVmZmVyIGlzCisgICAgICAgIC8vIGFjdHVhbGx5IGluIHVzZS4KKyAgICAgICAgc2V0R3N0
QnVmZmVyU2l6ZShkLT5tX2dzdEJ1ZmZlciwgYnl0ZXNSZWFkKTsKKyAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlR3N0QnVmZmVyKGhhbmRsZS5nZXQoKSwgZC0+bV9nc3RCdWZmZXIpOworCisgICAg
ICAgIC8vIE93bmVyc2hpcCBvZiB0aGUgYnVmZmVyIGlzIGhhbmRlZCBvdmVyLCBubyBuZWVkIHRv
IHVucmVmLgorICAgICAgICBjbGVhbnVwR3N0QnVmZmVyKGhhbmRsZS5nZXQoKSk7CisgICAgfSBl
bHNlCisjZW5kaWYKICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKGhhbmRsZS5nZXQoKSwgZC0+
bV9idWZmZXIsIGJ5dGVzUmVhZCwgYnl0ZXNSZWFkKTsKIAogICAgIC8vIGRpZFJlY2VpdmVEYXRh
IG1heSBjYW5jZWwgdGhlIGxvYWQsIHdoaWNoIG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5j
ZS4KQEAgLTEyNzcsNyArMTM1OSwxMiBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVj
dCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRT
dHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLCBHX1BSSU9SSVRZX0RF
RkFVTFQsCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBpZiAoY2xpZW50LT53YW50c0dzdEJ1ZmZl
cnMoKSkKKyAgICAgICAgcHJlcGFyZUdzdEJ1ZmZlcihoYW5kbGUuZ2V0KCkpOworI2VuZGlmCisK
KyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQt
Pm1fYnVmZmVyLCBkLT5tX2J1ZmZlclNpemUsIEdfUFJJT1JJVFlfREVGQVVMVCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFj
aywgaGFuZGxlLmdldCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180502</attachid>
            <date>2012-12-21 04:53:08 -0800</date>
            <delta_ts>2012-12-21 18:37:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20121221105023.patch</filename>
            <type>text/plain</type>
            <size>18187</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBiYjUwZjY5N2Q5YTUy
OGI1ZGZiYjMzYzgxYWI4M2ZlNjIxMWE5MS4uNWQ3MDQ3MTY0Y2ZkZTg1YTFlMDk1ZjFmMWFmYmMy
MTQ4NzY3ODA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTEyLTIwICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUg
R1N0cmVhbWVyIG1lZGlhIGJhY2tlbmQgdG8gcHJvdmlkZSB0aGUgYnVmZmVyCisgICAgICAgIHRv
IHdoaWNoIHRoZSBTb3VwIG5ldHdvcmtpbmcgYmFja2VuZCB3aWxsIHVzZSB0byBkb3dubG9hZCBk
YXRhIHRvLiBUaGlzCisgICAgICAgIG1ha2VzIGNvcHlpbmcgbWVtb3J5IHVubmVjZXNzYXJ5IHdo
ZW4gUmVzb3VyY2VIYW5kbGUgaGFuZHMgZGF0YSBvdmVyIHRvCisgICAgICAgIHRoZSBtZWRpYSBw
bGF5ZXIncyBTdHJlYW1pbmdDbGllbnQuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5nZSwg
Y292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcDoKKyAgICAgICAgKGdldEdzdEJ1ZmZl
clNpemUpOiBhYnN0cmFjdCBvYnRhaW5pbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciwgc28gdGhl
IGNvZGUKKyAgICAgICAgaXMgY2xlYW5lciB3aGlsZSBzdGlsbCB3b3JraW5nIGZvciBib3RoIEdT
VCAwLjEwIGFuZCAxLjAuCisgICAgICAgIChzZXRHc3RCdWZmZXJTaXplKTogZGl0dG8sIGJ1dCBm
b3Igc2V0dGluZyB0aGUgc2l6ZS4KKyAgICAgICAgKGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKTog
ZGl0dG8sIGJ1dCBmb3IgZ3JhYmJpbmcgdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAgKHVubWFw
R3N0QnVmZmVyKTogQ29udmVuaWVuY2UgbWV0aG9kIHdoaWNoIHRha2VzIGNhcmUgb2YgdW5tYXBw
aW5nIHRoZSBidWZmZXIKKyAgICAgICAgYW5kIHByb3Blcmx5IGZyZWVpbmcgdGhlIEdzdE1hcElu
Zm8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNp
b25pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudCk6IG5ldyBtZXRo
b2RzLgorICAgICAgICAoU3RyZWFtaW5nQ2xpZW50Ojp3YW50c0dzdEJ1ZmZlcnMpOiBNZXRob2Qg
dGhhdCB0ZWxscyBSZXNvdXJjZUhhbmRsZSB3aGV0aGVyCisgICAgICAgIHRvIHJlcXVlc3QgR3N0
QnVmZmVyIG9iamVjdHMgZnJvbSB0aGUgY2xpZW50OyBhbHNvIHVzZWQgdG8gZGVjaWRlIHdoZXRo
ZXIgdG8KKyAgICAgICAgdXNlIGRpZFJlY2VpdmVEYXRhIG9yIGRpZFJlY2VpdmVHc3RCdWZmZXIu
CisgICAgICAgIChTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVHc3RCdWZmZXIpOiBNZXRob2Qg
dXNlZCBieSBSZXNvdXJjZUhhbmRsZSB0byBoYW5kCisgICAgICAgIHRoZSBHc3RCdWZmZXIgYmFj
ayB0byB0aGUgU3RyZWFtaW5nQ2xpZW50LCBhZnRlciBpdCdzIGRvbmUgcmVhZGluZy4KKyAgICAg
ICAgKFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyRm9yRGF0YSk6IE1ldGhvZCB1c2VkIGJ5IFJl
c291cmNlSGFuZGxlIHRvIG9idGFpbgorICAgICAgICB0aGUgR3N0QnVmZmVyLgorICAgICAgICAo
U3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6IE5vIGxvbmdlciB1c2VkLiBBc3NlcnQg
aXQncyBub3QgcmVhY2hlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50Lmg6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZUNsaWVudCk6IE5ldyB2aXJ0dWFs
IG1ldGhvZHMgYWRkZWQsIHVzZWQgYnkgdGhlIEdTdHJlYW1lcgorICAgICAgICBpbnRlZ3JhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50Ojp3YW50c0dzdEJ1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmdldEJ1ZmZlckZv
ckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVHc3RCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cEdzdEJ1ZmZlcik6
IENsZWFycyBhbGwgcG9pbnRlcnMgaW52b2x2ZWQgaW4gdGhlIHJlYWQgYnVmZmVyCisgICAgICAg
IGRhbmNlLgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFyZUdzdEJ1ZmZlcik6IE9idGFpbnMgdGhl
IGJ1ZmZlciBmcm9tIHRoZSBjbGllbnQgYW5kIHBvaW50IHRoZQorICAgICAgICByZWFkIGJ1ZmZl
ciB1c2VkIGJ5IFJlc291cmNlSGFuZGxlIHRvIHRoZSBhcHByb3ByaWF0ZSBwbGFjZS4KKyAgICAg
ICAgKFdlYkNvcmU6OnByZXBhcmVSZWFkQnVmZmVyKTogQWJzdHJhY3RzIHRoZSBjb21wbGljYXRp
b25zIGFkZGVkIGJ5IGFkZGluZyB0aGUKKyAgICAgICAgaW50ZWdyYXRpb24sIGZvciByZWFkYWJp
bGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OmNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbik6IENs
ZWFudXAgdGhlIEdzdEJ1ZmZlciBzdHVmZi4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRNdWx0aXBh
cnRSZXNwb25zZVBhcnRDYWxsYmFjayk6IE9idGFpbiBhIGJ1ZmZlciBmb3IgcmVhZGluZyBpbnRv
LAorICAgICAgICBpZiB0aGUgY2xpZW50IHdhbnRzIEdzdEJ1ZmZlcnMuCisgICAgICAgIChXZWJD
b3JlOjpzZW5kUmVxdWVzdENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpyZWFk
Q2FsbGJhY2spOiBEaXR0by4KKwogMjAxMi0xMi0xOSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z25zQGdub21lLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBBZGQgbmV3IHN0cmluZ3MgdG8g
R1RLKydzIGltcGxlbWVudGF0aW9uIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5j
cHAKaW5kZXggMjIyMmQzMjVlOWFjZDNmMjFlZWNkOTM4NTM3MmY3NTRkYzliZTZmOS4uZDE3MGUx
MWY1ZjNkZjYzNjQ1MWZlNWUyMzEyY2Q3MDQwNWM0Njk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJWZXJzaW9uaW5nLmNwcApAQCAtMTE0LDYgKzExNCw0NSBAQCBHc3RCdWZmZXIqIGNyZWF0ZUdz
dEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICByZXR1cm4gbmV3QnVmZmVyOwogfQogCitn
c2l6ZSBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCisgICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyNl
bHNlCisgICAgcmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworI2VuZGlmCit9CisKK3Zv
aWQgc2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgZ3NpemUgbmV3U2l6ZSkKK3sK
KyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGdzdF9idWZmZXJfc2V0X3NpemUoYnVmZmVy
LCBzdGF0aWNfY2FzdDxnc3NpemU+KG5ld1NpemUpKTsKKyNlbHNlCisgICAgR1NUX0JVRkZFUl9T
SVpFKGJ1ZmZlcikgPSBuZXdTaXplOworI2VuZGlmCit9CisKK2NoYXIqIGdldEdzdEJ1ZmZlckRh
dGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CisgICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWlu
aU9iamVjdCo+KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0
PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVh
cmtfZnJvbV9zdHJpbmcoIndlYmtpdC1nc3QtbWFwLWluZm8iKSkpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihtYXBJbmZvLT5kYXRhKTsKKyNlbHNlCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKKyNlbmRpZgor
fQorCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKK3ZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVm
ZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5m
byA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3Rfc3RlYWxfcWRhdGEo
bWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7
CisgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIsIG1hcEluZm8pOworICAgIGdfc2xpY2VfZnJl
ZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKK30KKyNlbmRpZgorCiB2b2lkIHNldEdzdEVsZW1lbnRD
bGFzc01ldGFkYXRhKEdzdEVsZW1lbnRDbGFzcyogZWxlbWVudENsYXNzLCBjb25zdCBjaGFyKiBu
YW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0
IGNoYXIqIGF1dGhvcikKIHsKICNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNp
b25pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJWZXJzaW9uaW5nLmgKaW5kZXggNDA4NDRmOGI5MjEzZDEwNzAxMGFjMmU5NWJjMDEzOGI1
M2ZmY2NhZS4uMTNmNDI1ZWRkOGY5ODg4Y2I3MDIzMGUxNzA5Njc3OTkxZGExZWM5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clZlcnNpb25pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCkBAIC0zNiw2ICszNiwxMiBAQCBHUmVmUHRyPEdz
dENhcHM+IHdlYmtpdEdzdEdldFBhZENhcHMoR3N0UGFkKik7CiBib29sIGdldFZpZGVvU2l6ZUFu
ZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJDb3JlOjpJbnRTaXplJiwgR3N0VmlkZW9Gb3Jt
YXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRp
b0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7CiAjZW5kaWYKIEdzdEJ1ZmZlciogY3JlYXRlR3N0
QnVmZmVyKEdzdEJ1ZmZlciopOworZ3NpemUgZ2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqKTsK
K3ZvaWQgc2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqLCBnc2l6ZSBuZXdTaXplKTsKK2NoYXIq
IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciopOworI2lmZGVmIEdTVF9BUElfVkVS
U0lPTl8xCit2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOworI2VuZGlmCiB2b2lkIHNl
dEdzdEVsZW1lbnRDbGFzc01ldGFkYXRhKEdzdEVsZW1lbnRDbGFzcyosIGNvbnN0IGNoYXIqIG5h
bWUsIGNvbnN0IGNoYXIqIGxvbmdOYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwgY29uc3Qg
Y2hhciogYXV0aG9yKTsKIGJvb2wgZ3N0T2JqZWN0SXNGbG9hdGluZyhHc3RPYmplY3QqKTsKIHZv
aWQgbm90aWZ5R3N0VGFnc09uUGFkKEdzdEVsZW1lbnQqLCBHc3RQYWQqLCBHc3RUYWdMaXN0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IGY4MDRk
MWY3ZTA1OWYzMjViNmY0N2Y1OTMxNDE4ZDM3NTgzMmI1ZDcuLjdhNDA3ZmZkZGIzNDcwMDU0NmRj
YWRiNWFiODc0NmQyYzlhY2EzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC0zMiwxMCArMzIsOSBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
SW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCi0gCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzcmMuaD4KKyNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvbWlzc2luZy1wbHVnaW5zLmg+
Ci0KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgpAQCAtNTEsNiArNTAs
MTEgQEAgY2xhc3MgU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50
IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxl
KiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCB3YW50c0dzdEJ1ZmZlcnMo
KSB7IHJldHVybiB0cnVlOyB9OworICAgICAgICB2aXJ0dWFsIEdzdEJ1ZmZlciogZ2V0QnVmZmVy
Rm9yRGF0YShnc2l6ZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlR3N0QnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgR3N0QnVmZmVyKik7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCwgaW50KTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3Vi
bGUgLypmaW5pc2hUaW1lKi8pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKQEAgLTg1MiwyNiArODU2LDI0IEBAIHZv
aWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlCiAgICAgICAgIG5vdGlmeUdzdFRhZ3NPblBhZChHU1RfRUxF
TUVOVChtX3NyYyksIG1fc3JjLT5wcml2LT5zcmNwYWQsIHRhZ3MpOwogfQogCi12b2lkIFN0cmVh
bWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50KQordm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJl
Y2VpdmVHc3RCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgR3N0QnVmZmVyKiBidWZmZXIp
CiB7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OwogCi0gICAg
R1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBsZW5ndGgpOwor
ICAgIEdTVF9MT0dfT0JKRUNUKG1fc3JjLCAiSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgZ2V0R3N0
QnVmZmVyU2l6ZShidWZmZXIpKTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgdW5t
YXBHc3RCdWZmZXIoYnVmZmVyKTsKKyNlbmRpZgogCiAgICAgaWYgKHByaXYtPnNlZWtJRCB8fCBo
YW5kbGUgIT0gcHJpdi0+cmVzb3VyY2VIYW5kbGUpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChtX3NyYywgIlNlZWsgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIGRhdGEiKTsKKyAgICAgICAgZ3N0
X2J1ZmZlcl91bnJlZihidWZmZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MobGVuZ3RoKTsKLQotI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1ZmZlcl9maWxsKGJ1ZmZlciwgMCwgZGF0
YSwgbGVuZ3RoKTsKLSNlbHNlCi0gICAgbWVtY3B5KEdTVF9CVUZGRVJfREFUQShidWZmZXIpLCBk
YXRhLCBsZW5ndGgpOwotI2VuZGlmCiAgICAgR1NUX0JVRkZFUl9PRkZTRVQoYnVmZmVyKSA9IHBy
aXYtPm9mZnNldDsKLSAgICBwcml2LT5vZmZzZXQgKz0gbGVuZ3RoOworICAgIHByaXYtPm9mZnNl
dCArPSBnZXRHc3RCdWZmZXJTaXplKGJ1ZmZlcik7CiAgICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5E
KGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CiAKICAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9h
cHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgYnVmZmVyKTsKQEAgLTg4Myw2ICs4ODUs
MzMgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGkKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Io
bV9zcmMsIENPUkUsIEZBSUxFRCwgKDApLCAoMCkpOwogfQogCitHc3RCdWZmZXIqIFN0cmVhbWlu
Z0NsaWVudDo6Z2V0QnVmZmVyRm9yRGF0YShnc2l6ZSByZXF1ZXN0ZWRTaXplKQoreworI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25l
d19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CisKKyAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0g
Z19zbGljZV9uZXcoR3N0TWFwSW5mbyk7CisgICAgaWYgKCFnc3RfYnVmZmVyX21hcChidWZmZXIs
IG1hcEluZm8sIEdTVF9NQVBfV1JJVEUpKSB7CisgICAgICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJ
bmZvLCBtYXBJbmZvKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVp
bnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAgICBnc3RfbWluaV9vYmpl
Y3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIndlYmtpdC1nc3Qt
bWFwLWluZm8iKSwgbWFwSW5mbywgMCk7CisKKyAgICByZXR1cm4gYnVmZmVyOworI2Vsc2UKKyAg
ICByZXR1cm4gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKHJlcXVlc3RlZFNpemUpOworI2VuZGlm
Cit9CisKK3ZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCkKK3sKKyAgICAvLyBXZSB1c2UgZGlkUmVjZWl2ZUdz
dEJ1ZmZlciBpbnN0ZWFkLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIFN0
cmVhbWluZ0NsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkK
IHsKICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKaW5kZXggM2Q1NWQ4NjhhOTM2YmNhODI3MDZmYTdiM2FlNTc1YmZiMmI0MjAyNi4uNjRlNTJk
M2UzZWIyZmFhOGYxM2ZkYTE1NmU0NjIzOTYwNmMxMTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzUs
NiArMzUsMTEgQEAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNl
bmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlIDxnbGliLmg+Cit0eXBlZGVmIHN0
cnVjdCBfR3N0QnVmZmVyIEdzdEJ1ZmZlcjsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENvbmRpdGlvbmFsTWFjcm9zLmg+CiAjZW5kaWYK
QEAgLTgyLDYgKzg3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoUmVzb3VyY2VIYW5kbGUqLCBDRkFycmF5UmVmKSB7IH0K
ICNlbmRpZgogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICAgICAgdmlydHVhbCBib29sIHdhbnRz
R3N0QnVmZmVycygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgR3N0QnVmZmVy
KiBnZXRCdWZmZXJGb3JEYXRhKGdzaXplKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlR3N0QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgR3N0QnVmZmVyKikgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oCmluZGV4IGI3ZjZjOTU3MzNhZjY4MzVmNDgzYjkyODYzMGE2NWI2MWU4ZmZjNjIuLjEz
ZjMzNGY5NmM3YWI2MDRhODdjODBhZDY3NDk3NzUwYzhmZmM0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CkBAIC01NCw2ICs1NCwxMCBAQAogY2xhc3MgRnJhbWU7CiAjZW5kaWYKIAorI2lmIFVTRShHU1RS
RUFNRVIpCit0eXBlZGVmIHN0cnVjdCBfR3N0QnVmZmVyIEdzdEJ1ZmZlcjsKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oUVQpCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFXZWJOZXR3b3JrSm9i
OwpAQCAtMTEyLDkgKzExNiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgVVNFKFNPVVAp
CiAgICAgICAgICAgICAsIG1fY2FuY2VsbGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX2J1ZmZl
cigwKQorICAgICAgICAgICAgLCBtX2J1ZmZlclNpemUoMCkKICAgICAgICAgICAgICwgbV9ib2R5
U2l6ZSgwKQogICAgICAgICAgICAgLCBtX2JvZHlEYXRhU2VudCgwKQogI2VuZGlmCisjaWYgVVNF
KEdTVFJFQU1FUikKKyAgICAgICAgICAgICwgbV9nc3RCdWZmZXIoMCkKKyNlbmRpZgogI2lmIFBM
QVRGT1JNKFFUKQogICAgICAgICAgICAgLCBtX2pvYigwKQogI2VuZGlmCkBAIC0xOTgsMTEgKzIw
NiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0
PiBtX2RlZmVycmVkUmVzdWx0OwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNv
dXJjZTsKICAgICAgICAgY2hhciogbV9idWZmZXI7CisgICAgICAgIGdzaXplIG1fYnVmZmVyU2l6
ZTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1bnNpZ25lZCBs
b25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1f
Y29udGV4dDsKICAgICAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCk7CiAjZW5kaWYKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBHc3RCdWZmZXIqIG1fZ3N0QnVmZmVyOworI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgQ3JlZGVu
dGlhbCBjcmVkZW50aWFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCBhNDAzOTNkOGVjMDJh
YmI0MzY1NjYzNGRmZjY4NGQ2MTVhZDliYmZhLi5lMTIzMDA4ZjljODIzOGYwYTNkNDIxZjgxZjgx
ZmM1ODRmMGQ0ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtNjYsNiArNjYsMTEgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcu
aCIKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShCTE9CKQogI2lu
Y2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiQmxvYlJlZ2lzdHJ5SW1wbC5oIgpAQCAtNDU4
LDYgKzQ2Myw2MCBAQCBzdGF0aWMgdm9pZCB3cm90ZUJvZHlEYXRhQ2FsbGJhY2soU291cE1lc3Nh
Z2UqLCBTb3VwQnVmZmVyKiBidWZmZXIsIGdwb2ludGVyIGRhdAogICAgIGNsaWVudC0+ZGlkU2Vu
ZERhdGEoaGFuZGxlLmdldCgpLCBpbnRlcm5hbC0+bV9ib2R5RGF0YVNlbnQsIGludGVybmFsLT5t
X2JvZHlTaXplKTsKIH0KIAorI2lmIFVTRShHU1RSRUFNRVIpCitzdGF0aWMgdm9pZCBjbGVhbnVw
R3N0QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgbmVlZHNVbnJlZiA9IGZhbHNl
KQoreworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFs
KCk7CisKKyAgICBpZiAobmVlZHNVbnJlZikgeworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisg
ICAgICAgIHVubWFwR3N0QnVmZmVyKGQtPm1fZ3N0QnVmZmVyKTsKKyNlbmRpZgorICAgICAgICBn
c3RfYnVmZmVyX3VucmVmKGQtPm1fZ3N0QnVmZmVyKTsKKyAgICB9CisKKyAgICBkLT5tX2dzdEJ1
ZmZlciA9IDA7CisgICAgZC0+bV9idWZmZXIgPSAwOworICAgIGQtPm1fYnVmZmVyU2l6ZSA9IDA7
Cit9CisKK3N0YXRpYyB2b2lkIHByZXBhcmVHc3RCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5h
bCgpOworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQgPSBkLT5jbGllbnQoKTsKKwor
ICAgIEFTU0VSVChjbGllbnQpOworICAgIEFTU0VSVChjbGllbnQtPndhbnRzR3N0QnVmZmVycygp
KTsKKworICAgIGQtPm1fZ3N0QnVmZmVyID0gY2xpZW50LT5nZXRCdWZmZXJGb3JEYXRhKFJFQURf
QlVGRkVSX1NJWkUpOworICAgIGQtPm1fYnVmZmVyID0gZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIo
ZC0+bV9nc3RCdWZmZXIpOworICAgIGQtPm1fYnVmZmVyU2l6ZSA9IGdldEdzdEJ1ZmZlclNpemUo
ZC0+bV9nc3RCdWZmZXIpOworfQorCitzdGF0aWMgdm9pZCBwcmVwYXJlUmVhZEJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7CisKKyAgICBpZiAoZC0+Y2xpZW50KCktPndhbnRzR3N0QnVm
ZmVycygpKSB7CisgICAgICAgIHByZXBhcmVHc3RCdWZmZXIoaGFuZGxlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChkLT5tX2J1ZmZlciAmJiBkLT5tX2J1ZmZlclNpemUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGQtPm1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGdf
c2xpY2VfYWxsb2MoUkVBRF9CVUZGRVJfU0laRSkpOworICAgIGQtPm1fYnVmZmVyU2l6ZSA9IFJF
QURfQlVGRkVSX1NJWkU7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgcHJlcGFyZVJlYWRCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBk
ID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIGQtPm1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGdfc2xpY2VfYWxsb2MoUkVBRF9CVUZGRVJfU0laRSkpOworICAgIGQtPm1fYnVmZmVy
U2l6ZSA9IFJFQURfQlVGRkVSX1NJWkU7Cit9CisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKKwog
c3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGJvb2wgaXNEZXN0cm95aW5nID0gZmFsc2UpCiB7CiAgICAgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKQEAgLTQ3NCw5ICs1MzMsMTUgQEAg
c3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGJvb2wgaXNEZXN0cm95aW4KICAgICAgICAgZC0+bV9zb3VwTWVzc2FnZS5jbGVhcigp
OwogICAgIH0KIAorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgaWYgKGQtPm1fZ3N0QnVmZmVyKQor
ICAgICAgICBjbGVhbnVwR3N0QnVmZmVyKGhhbmRsZSwgLyogbmVlZHNVbnJlZiAqLyB0cnVlKTsK
KyNlbmRpZgorCiAgICAgaWYgKGQtPm1fYnVmZmVyKSB7CiAgICAgICAgIGdfc2xpY2VfZnJlZTEo
UkVBRF9CVUZGRVJfU0laRSwgZC0+bV9idWZmZXIpOwogICAgICAgICBkLT5tX2J1ZmZlciA9IDA7
CisgICAgICAgIGQtPm1fYnVmZmVyU2l6ZSA9IDA7CiAgICAgfQogCiAgICAgaWYgKGQtPm1fdGlt
ZW91dFNvdXJjZSkgewpAQCAtNTQ4LDcgKzYxMyw5IEBAIHN0YXRpYyB2b2lkIG5leHRNdWx0aXBh
cnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5bmNSZXN1bHQq
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5j
KGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLAor
ICAgIHByZXBhcmVSZWFkQnVmZmVyKGhhbmRsZS5nZXQoKSk7CisKKyAgICBnX2lucHV0X3N0cmVh
bV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBkLT5tX2J1
ZmZlclNpemUsCiAgICAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwgZC0+bV9jYW5jZWxsYWJsZS5n
ZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCkBAIC01NzgsNyArNjQ1LDcg
QEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBk
LT5tX2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihnX3NsaWNlX2FsbG9jKFJFQURfQlVGRkVS
X1NJWkUpKTsKKyAgICBwcmVwYXJlUmVhZEJ1ZmZlcihoYW5kbGUuZ2V0KCkpOwogCiAgICAgaWYg
KHNvdXBNZXNzYWdlKSB7CiAgICAgICAgIGlmIChoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigp
ICYmIHNvdXBNZXNzYWdlLT5zdGF0dXNfY29kZSAhPSBTT1VQX1NUQVRVU19OT1RfTU9ESUZJRUQp
IHsKQEAgLTYxNSw3ICs2ODIsNyBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICB9CiAKICAg
ICBkLT5tX2lucHV0U3RyZWFtID0gaW5wdXRTdHJlYW07Ci0gICAgZ19pbnB1dF9zdHJlYW1fcmVh
ZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgUkVBRF9CVUZGRVJf
U0laRSwKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0
KCksIGQtPm1fYnVmZmVyLCBkLT5tX2J1ZmZlclNpemUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRD
YWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtMTI2OSw2ICsxMzM2LDE3IEBAIHN0YXRp
YyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwg
Z3BvaW50ZXIgZGF0YSkKICAgICAvLyBJdCdzIG1hbmRhdG9yeSB0byBoYXZlIHNlbnQgYSByZXNw
b25zZSBiZWZvcmUgc2VuZGluZyBkYXRhCiAgICAgQVNTRVJUKCFkLT5tX3Jlc3BvbnNlLmlzTnVs
bCgpKTsKIAorI2lmIFVTRShHU1RSRUFNRVIpCisgICAgaWYgKGNsaWVudC0+d2FudHNHc3RCdWZm
ZXJzKCkgJiYgZC0+bV9nc3RCdWZmZXIpIHsKKyAgICAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUg
R3N0QnVmZmVyJ3Mga25vd2xlZGdlIG9mIGhvdyBtdWNoIG9mIHRoZSBidWZmZXIgaXMKKyAgICAg
ICAgLy8gYWN0dWFsbHkgaW4gdXNlLgorICAgICAgICBzZXRHc3RCdWZmZXJTaXplKGQtPm1fZ3N0
QnVmZmVyLCBieXRlc1JlYWQpOworICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVHc3RCdWZmZXIo
aGFuZGxlLmdldCgpLCBkLT5tX2dzdEJ1ZmZlcik7CisKKyAgICAgICAgLy8gT3duZXJzaGlwIG9m
IHRoZSBidWZmZXIgaXMgaGFuZGVkIG92ZXIsIG5vIG5lZWQgdG8gdW5yZWYuCisgICAgICAgIGNs
ZWFudXBHc3RCdWZmZXIoaGFuZGxlLmdldCgpKTsKKyAgICB9IGVsc2UKKyNlbmRpZgogICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLmdldCgpLCBkLT5tX2J1ZmZlciwgYnl0ZXNSZWFk
LCBieXRlc1JlYWQpOwogCiAgICAgLy8gZGlkUmVjZWl2ZURhdGEgbWF5IGNhbmNlbCB0aGUgbG9h
ZCwgd2hpY2ggbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgpAQCAtMTI3Nyw3ICsxMzU1
LDEyIEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBh
c3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9i
dWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyNpZiBVU0UoR1NU
UkVBTUVSKQorICAgIGlmIChjbGllbnQtPndhbnRzR3N0QnVmZmVycygpKQorICAgICAgICBwcmVw
YXJlR3N0QnVmZmVyKGhhbmRsZS5nZXQoKSk7CisjZW5kaWYKKworICAgIGdfaW5wdXRfc3RyZWFt
X3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIGQtPm1fYnVm
ZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180582</attachid>
            <date>2012-12-21 18:37:32 -0800</date>
            <delta_ts>2012-12-23 05:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20121222003446.patch</filename>
            <type>text/plain</type>
            <size>17191</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQxYjM1ZDBmZTg3Mjkz
Y2M0MGM1ZGMzMzViMjViNzhjODJhZmUwMy4uZjQ3OTA0YjJjOThkYjdhNmQwMGEzMmE1YmQ3MWQz
M2E3YjRhNTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTIxICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUg
R1N0cmVhbWVyIG1lZGlhIGJhY2tlbmQgdG8gcHJvdmlkZSB0aGUgYnVmZmVyIHRvIHdoaWNoCisg
ICAgICAgIHRoZSBTb3VwIG5ldHdvcmtpbmcgYmFja2VuZCB3aWxsIHVzZSB0byBkb3dubG9hZCBk
YXRhIHRvLiBUaGlzIG1ha2VzIGNvcHlpbmcKKyAgICAgICAgbWVtb3J5IHVubmVjZXNzYXJ5IHdo
ZW4gUmVzb3VyY2VIYW5kbGUgaGFuZHMgZGF0YSBvdmVyIHRvIHRoZSBtZWRpYSBwbGF5ZXIncwor
ICAgICAgICBTdHJlYW1pbmdDbGllbnQuIFRoYW5rcyB0byBEYW4gV2luc2hpcCBmb3IgaGVscCBk
ZXNpZ25pbmcgdGhlIGludGVyZmFjZS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOgorICAgICAgICAoZ2V0R3N0QnVmZmVy
U2l6ZSk6IGFic3RyYWN0IG9idGFpbmluZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLCBzbyB0aGUg
Y29kZQorICAgICAgICBpcyBjbGVhbmVyIHdoaWxlIHN0aWxsIHdvcmtpbmcgZm9yIGJvdGggR1NU
IDAuMTAgYW5kIDEuMC4KKyAgICAgICAgKHNldEdzdEJ1ZmZlclNpemUpOiBkaXR0bywgYnV0IGZv
ciBzZXR0aW5nIHRoZSBzaXplLgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOiBk
aXR0bywgYnV0IGZvciBncmFiYmluZyB0aGUgZGF0YSBwb2ludGVyLgorICAgICAgICAobWFwR3N0
QnVmZmVyKTogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHRha2UgY2FyZSBvZiBtYXBwaW5nIHRoZSBi
dWZmZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gcHJvdmlkZSB0aGUgZGF0YSBwb2ludGVyIHRv
IFJlc291cmNlSGFuZGxlLgorICAgICAgICAodW5tYXBHc3RCdWZmZXIpOiBDb252ZW5pZW5jZSBt
ZXRob2Qgd2hpY2ggdGFrZXMgY2FyZSBvZiB1bm1hcHBpbmcgdGhlIGJ1ZmZlcgorICAgICAgICBh
bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgR3N0TWFwSW5mby4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50KTogTmV3IG1ldGhvZHMuCisgICAgICAgIChfV2ViS2l0V2Vi
U3JjUHJpdmF0ZSk6IFdlIG5vdyBzdG9yZSB0aGUgR3N0QnVmZmVyIHdlIHByb3ZpZGVkIHRoZSBk
YXRhIHBvaW50ZXIgZnJvbQorICAgICAgICBzbyB3ZSBjYW4gbGF0ZXIgdW5tYXAgaXQgYW5kIHB1
c2ggaXQgdG8gdGhlIHBpcGVsaW5lLgorICAgICAgICAod2ViS2l0V2ViU3JjRGlzcG9zZSk6IERl
YWwgd2l0aCB0aGUgR3N0QnVmZmVyIGluIGNhc2UgaXQgZXhpc3RzIHdoZW4gdGhlIHNvdXJjZSBp
cworICAgICAgICBkZXN0cm95ZWQuCisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogQWxzbyBj
bGVhciB0aGUgR3N0QnVmZmVyIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEpOiBIYW5kbGUgdGhlIGhhbmQtb3ZlciBvZiB0aGUgYnVmZmVyLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpnZXRCdWZmZXIpOiBQcm92aWRlIFJlc291cmNlSGFu
ZGxlIHdpdGggYSBuZXcgR3N0QnVmZmVyJ3MgZGF0YSBwb2ludGVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFJlc291cmNlSGFu
ZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpnZXRC
dWZmZXIpOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoaWNoIHJldHVybnMgYQorICAgICAgICBz
bGljZS1hbGxvY2F0ZWQgY2hhciBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgIChSZXNvdXJjZUhh
bmRsZUludGVybmFsKTogU3RvcmUgYWN0dWFsIGJ1ZmZlciBzaXplLCB3aGljaCBpcyBubyBsb25n
ZXIgYSBjb25zdGFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFudXBTb3VwUmVxdWVzdE9wZXJh
dGlvbik6IEZyZWUgdGhlIHJlYWQgYnVmZmVyIGlmIGl0IGV4aXN0cyBhbmQgaXMKKyAgICAgICAg
b3duZWQgYnkgdGhlIGhhbmRsZS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRNdWx0aXBhcnRSZXNw
b25zZVBhcnRDYWxsYmFjayk6IEZyZWUgcmVhZCBidWZmZXIgYW5kIGdldCBhIG5ldyBvbmUgZnJv
bQorICAgICAgICB0aGUgY2xpZW50IGJlZm9yZSByZWFkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
c2VuZFJlcXVlc3RDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxi
YWNrKTogRGl0dG8uCisKIDIwMTItMTItMjEgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290
IHdpdGggaXNUcmVlU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAppbmRl
eCAyMjIyZDMyNWU5YWNkM2YyMWVlY2Q5Mzg1MzcyZjc1NGRjOWJlNmY5Li5hZGQwNzZhMzY1Nzk4
M2NjNDMzMGRmYWFkMmMwYjY5MjVhYzkxNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNp
b25pbmcuY3BwCkBAIC0xMTQsNiArMTE0LDYyIEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVy
KEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVybiBuZXdCdWZmZXI7CiB9CiAKK2ludCBnZXRH
c3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisgICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyNlbHNlCisgICAg
cmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworI2VuZGlmCit9CisKK3ZvaWQgc2V0R3N0
QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgZ3NpemUgbmV3U2l6ZSkKK3sKKyNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorICAgIGdzdF9idWZmZXJfc2V0X3NpemUoYnVmZmVyLCBzdGF0aWNf
Y2FzdDxnc3NpemU+KG5ld1NpemUpKTsKKyNlbHNlCisgICAgR1NUX0JVRkZFUl9TSVpFKGJ1ZmZl
cikgPSBuZXdTaXplOworI2VuZGlmCit9CisKK2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVy
KEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR3N0
TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+
KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcElu
Zm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9z
dHJpbmcoIndlYmtpdC1nc3QtbWFwLWluZm8iKSkpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihtYXBJbmZvLT5kYXRhKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKKyNlbmRpZgorfQorCisjaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVy
KQoreworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsK
KyAgICBpZiAoIWdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01BUF9XUklURSkp
IHsKKyAgICAgICAgZ19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOworICAgICAgICBn
c3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
c3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0
Kj4oYnVmZmVyKTsKKyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIndlYmtpdC1nc3QtbWFwLWluZm8iKSwgbWFwSW5mbywgMCk7Cit9
CisKK3ZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWlu
aU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1
ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8q
Pihnc3RfbWluaV9vYmplY3Rfc3RlYWxfcWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0
cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7CisKKyAgICBpZiAoIW1hcEluZm8pCisgICAg
ICAgIHJldHVybjsKKworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKKyAg
ICBnX3NsaWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Cit9CisjZW5kaWYKKwogdm9pZCBz
ZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpCiB7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJWZXJzaW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCmluZGV4IDQwODQ0ZjhiOTIxM2QxMDcwMTBh
YzJlOTViYzAxMzhiNTNmZmNjYWUuLmUzYjQ5YWFlM2M0NDkxOGJiNzMzNmMxNzQyYjYyMjUwYjVi
NmM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaApAQCAtMzYsNiArMzYsMTMg
QEAgR1JlZlB0cjxHc3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBhZCopOwogYm9vbCBn
ZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYs
IEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBp
eGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2VuZGlmCiBHc3RCdWZm
ZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK2ludCBnZXRHc3RCdWZmZXJTaXplKEdz
dEJ1ZmZlciopOwordm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciosIGdzaXplIG5ld1Np
emUpOworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKik7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwordm9pZCB1
bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKKyNlbmRpZgogdm9pZCBzZXRHc3RFbGVtZW50Q2xh
c3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcik7
CiBib29sIGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0Kik7CiB2b2lkIG5vdGlmeUdzdFRh
Z3NPblBhZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgR3N0VGFnTGlzdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBmODA0ZDFmN2UwNTlmMzI1YjZm
NDdmNTkzMTQxOGQzNzU4MzJiNWQ3Li4zZDk2NGZhYzIxODZmYzdiMjJmYjlkMDQ3NmY3ZDVlYzcz
OGVjNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApA
QCAtMzIsMTAgKzMyLDkgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgotIAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisjaW5jbHVkZSA8Z3N0L2dzdC5o
PgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgotCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTUxLDYgKzUwLDkgQEAgY2xhc3MgU3Ry
ZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworCisgICAgICAgIHZpcnR1YWwgY2hhciogZ2V0QnVmZmVyKGludCwgaW50KiwgYm9vbCopOwor
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IGNoYXIqLCBpbnQsIGludCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CkBAIC04NCw2ICs4Niw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgZ3Vp
bnQgZW5vdWdoRGF0YUlEOwogICAgIGd1aW50IHNlZWtJRDsKIAorICAgIEdzdEJ1ZmZlciogYnVm
ZmVyOworCiAgICAgLy8gaWNlY2FzdCBzdHVmZgogICAgIGdib29sZWFuIGlyYWRpb01vZGU7CiAg
ICAgZ2NoYXIqIGlyYWRpb05hbWU7CkBAIC0xMTUsNiArMTE5LDcgQEAgR1NUX0RFQlVHX0NBVEVH
T1JZX1NUQVRJQyh3ZWJraXRfd2ViX3NyY19kZWJ1Zyk7CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIgaWZhY2VEYXRhKTsK
IAorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRGlzcG9zZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNTZXRQcm9wZXJ0eShHT2JqZWN0KiwgZ3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiwg
R1BhcmFtU3BlYyopOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVj
dCosIGd1aW50IHByb3BlcnR5SUQsIEdWYWx1ZSosIEdQYXJhbVNwZWMqKTsKQEAgLTE1MCw2ICsx
NTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNy
Y0NsYXNzKiBrbGFzcykKICAgICBHT2JqZWN0Q2xhc3MqIG9rbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KGtsYXNzKTsKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNT
KGtsYXNzKTsKIAorICAgIG9rbGFzcy0+ZGlzcG9zZSA9IHdlYktpdFdlYlNyY0Rpc3Bvc2U7CiAg
ICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYlNyY0ZpbmFsaXplOwogICAgIG9rbGFzcy0+
c2V0X3Byb3BlcnR5ID0gd2ViS2l0V2ViU3JjU2V0UHJvcGVydHk7CiAgICAgb2tsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eTsKQEAgLTI3NCw2ICsyODAsMjEgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAgICB3
ZWJLaXRXZWJTcmNTdG9wKHNyYywgZmFsc2UpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdF
QktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKKworICAgIGlmIChwcml2LT5idWZmZXIpIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQorICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCisgICAg
ICAgIGdfY2xlYXJfcG9pbnRlcigmcHJpdi0+YnVmZmVyLCBnc3Rfb2JqZWN0X3VucmVmKTsKKyAg
ICB9CisKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsICgoR09i
amVjdCogKShzcmMpKSk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JD
KG9iamVjdCk7CkBAIC0zNTQsNiArMzc1LDEzIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0
b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wgc2Vla2luZykKIAogICAgIHByaXYtPnBsYXllciA9
IDA7CiAKKyAgICBpZiAocHJpdi0+YnVmZmVyKSB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
KyAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+YnVmZmVyKTsKKyNlbmRpZgorICAgICAgICBn
X2NsZWFyX3BvaW50ZXIoJnByaXYtPmJ1ZmZlciwgZ3N0X29iamVjdF91bnJlZik7CisgICAgfQor
CiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7CiAgICAgaWYgKHByaXYtPm5lZWREYXRhSUQpCiAg
ICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5uZWVkRGF0YUlEKTsKQEAgLTg1NiwzMSArODg0
LDU2IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0
ZSogcHJpdiA9IG1fc3JjLT5wcml2OwogCi0gICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZl
ICVkIGJ5dGVzIG9mIGRhdGEiLCBsZW5ndGgpOworICAgIEFTU0VSVChwcml2LT5idWZmZXIpOwor
ICAgIEFTU0VSVChkYXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1ZmZlcikp
OworCisgICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBn
ZXRHc3RCdWZmZXJTaXplKHByaXYtPmJ1ZmZlcikpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9O
XzEKKyAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCiAKICAgICBpZiAo
cHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgewogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0
YSIpOworICAgICAgICBnX2NsZWFyX3BvaW50ZXIoJnByaXYtPmJ1ZmZlciwgZ3N0X2J1ZmZlcl91
bnJlZik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9
IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworICAgIC8vIFdlIG5lZWQgdG8gdXBk
YXRlIHRoZSBidWZmZXIncyBrbm93bGVkZ2Ugb2YgaG93IG11Y2ggZGF0YSBpdCBjYXJyaWVzLgor
ICAgIHNldEdzdEJ1ZmZlclNpemUocHJpdi0+YnVmZmVyLCBsZW5ndGgpOwogCi0jaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5n
dGgpOwotI2Vsc2UKLSAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxl
bmd0aCk7Ci0jZW5kaWYKLSAgICBHU1RfQlVGRkVSX09GRlNFVChidWZmZXIpID0gcHJpdi0+b2Zm
c2V0OworICAgIEdTVF9CVUZGRVJfT0ZGU0VUKHByaXYtPmJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7
CiAgICAgcHJpdi0+b2Zmc2V0ICs9IGxlbmd0aDsKLSAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQo
YnVmZmVyKSA9IHByaXYtPm9mZnNldDsKKyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQocHJpdi0+
YnVmZmVyKSA9IHByaXYtPm9mZnNldDsKIAotICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2Fw
cF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBidWZmZXIpOworICAgIEdzdEZsb3dSZXR1
cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBwcml2LT5idWZm
ZXIpOwogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19P
SyAmJiByZXQgIT0gR1NUX0ZMT1dfRU9TKQogI2Vsc2UKICAgICBpZiAocmV0ICE9IEdTVF9GTE9X
X09LICYmIHJldCAhPSBHU1RfRkxPV19VTkVYUEVDVEVEKQogI2VuZGlmCiAgICAgICAgIEdTVF9F
TEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDApKTsKKworICAgIHByaXYt
PmJ1ZmZlciA9IDA7Cit9CisKK2NoYXIqIFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyKGludCBy
ZXF1ZXN0ZWRTaXplLCBpbnQqIGFjdHVhbFNpemUsIGJvb2wqIGhhbmRsZU93bnNCdWZmZXIpCit7
CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OworCisgICAgQVNT
RVJUKCFwcml2LT5idWZmZXIpOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVy
X25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CisKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05f
MQorICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOworI2VuZGlmCisKKyAgICBwcml2LT5idWZmZXIg
PSBidWZmZXI7CisKKyAgICAqaGFuZGxlT3duc0J1ZmZlciA9IGZhbHNlOworICAgICphY3R1YWxT
aXplID0gZ2V0R3N0QnVmZmVyU2l6ZShidWZmZXIpOworICAgIHJldHVybiBnZXRHc3RCdWZmZXJE
YXRhUG9pbnRlcihidWZmZXIpOwogfQogCiB2b2lkIFN0cmVhbWluZ0NsaWVudDo6ZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCAzZDU1ZDg2
OGE5MzZiY2E4MjcwNmZhN2IzYWU1NzViZmIyYjQyMDI2Li5iODFmOTMzMWIwOWJiM2RmMmY5MmY1
MDRhY2E3NDM0NGFjNjdlOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgogI2VuZGlmCiAKKyNpZiBVU0Uo
U09VUCkKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDb25kaXRpb25hbE1hY3Jvcy5oPgogI2VuZGlmCkBA
IC04Miw2ICs4NiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YUFycmF5KFJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgeyB9CiAj
ZW5kaWYKIAorI2lmIFVTRShTT1VQKQorICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldEJ1ZmZlcihp
bnQgcmVxdWVzdGVkTGVuZ3RoLCBpbnQqIGFjdHVhbExlbmd0aCwgYm9vbCogaGFuZGxlT3duc0J1
ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgKmhhbmRsZU93bnNCdWZmZXIgPSB0cnVlOwor
ICAgICAgICAgICAgKmFjdHVhbExlbmd0aCA9IHJlcXVlc3RlZExlbmd0aDsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZ19zbGljZV9hbGxvYyhyZXF1ZXN0ZWRMZW5ndGgp
KTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmlu
ZGV4IGI3ZjZjOTU3MzNhZjY4MzVmNDgzYjkyODYzMGE2NWI2MWU4ZmZjNjIuLjc1OTI2NDU5MWVi
MTkzNjE0NzhiMDNmYjIwNTFmZjI5NzRlYmFiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMTIs
NiArMTEyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShTT1VQKQogICAgICAgICAg
ICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9idWZmZXIoMCkKKyAgICAg
ICAgICAgICwgbV9idWZmZXJTaXplKDApCisgICAgICAgICAgICAsIG1faGFuZGxlT3duc0J1ZmZl
cihmYWxzZSkKICAgICAgICAgICAgICwgbV9ib2R5U2l6ZSgwKQogICAgICAgICAgICAgLCBtX2Jv
ZHlEYXRhU2VudCgwKQogI2VuZGlmCkBAIC0xOTgsNiArMjAwLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBHUmVmUHRyPEdBc3luY1Jlc3VsdD4gbV9kZWZlcnJlZFJlc3VsdDsKICAg
ICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3RpbWVvdXRTb3VyY2U7CiAgICAgICAgIGNoYXIqIG1f
YnVmZmVyOworICAgICAgICBpbnQgbV9idWZmZXJTaXplOworICAgICAgICBib29sIG1faGFuZGxl
T3duc0J1ZmZlcjsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1
bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBSZWZQdHI8TmV0d29ya2luZ0Nv
bnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggYTQwMzkzZDhlYzAy
YWJiNDM2NTY2MzRkZmY2ODRkNjE1YWQ5YmJmYS4uM2M2MTA4Y2I2YTVlYTIzM2YxNzhiNTI0NjIx
ODEwYzQ5YmY3NTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTQ3NSw4ICs0NzUsMTEg
QEAgc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGJvb2wgaXNEZXN0cm95aW4KICAgICB9CiAKICAgICBpZiAoZC0+bV9idWZmZXIp
IHsKLSAgICAgICAgZ19zbGljZV9mcmVlMShSRUFEX0JVRkZFUl9TSVpFLCBkLT5tX2J1ZmZlcik7
CisgICAgICAgIGlmIChkLT5tX2hhbmRsZU93bnNCdWZmZXIpCisgICAgICAgICAgICBnX3NsaWNl
X2ZyZWUxKGQtPm1fYnVmZmVyU2l6ZSwgZC0+bV9idWZmZXIpOworCiAgICAgICAgIGQtPm1fYnVm
ZmVyID0gMDsKKyAgICAgICAgZC0+bV9idWZmZXJTaXplID0gMDsKICAgICB9CiAKICAgICBpZiAo
ZC0+bV90aW1lb3V0U291cmNlKSB7CkBAIC01NDgsNyArNTUxLDEyIEBAIHN0YXRpYyB2b2lkIG5l
eHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5
bmNSZXN1bHQqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX2lucHV0X3N0cmVhbV9y
ZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZF
Ul9TSVpFLAorICAgIGlmIChkLT5tX2hhbmRsZU93bnNCdWZmZXIgJiYgZC0+bV9idWZmZXIpCisg
ICAgICAgIGdfc2xpY2VfZnJlZTEoZC0+bV9idWZmZXJTaXplLCBkLT5tX2J1ZmZlcik7CisKKyAg
ICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVGRkVSX1NJWkUsICZkLT5t
X2J1ZmZlclNpemUsICZkLT5tX2hhbmRsZU93bnNCdWZmZXIpOworCisgICAgZ19pbnB1dF9zdHJl
YW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgZC0+bV9i
dWZmZXJTaXplLAogICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2VsbGFibGUu
Z2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtNTc4LDggKzU4Niw2
IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
ZC0+bV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19zbGljZV9hbGxvYyhSRUFEX0JVRkZF
Ul9TSVpFKSk7Ci0KICAgICBpZiAoc291cE1lc3NhZ2UpIHsKICAgICAgICAgaWYgKGhhbmRsZS0+
c2hvdWxkQ29udGVudFNuaWZmKCkgJiYgc291cE1lc3NhZ2UtPnN0YXR1c19jb2RlICE9IFNPVVBf
U1RBVFVTX05PVF9NT0RJRklFRCkgewogICAgICAgICAgICAgY29uc3QgY2hhciogc25pZmZlZFR5
cGUgPSBzb3VwX3JlcXVlc3RfZ2V0X2NvbnRlbnRfdHlwZShkLT5tX3NvdXBSZXF1ZXN0LmdldCgp
KTsKQEAgLTYxNSw3ICs2MjEsMTIgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhH
T2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgfQogCiAg
ICAgZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0U3RyZWFtOwotICAgIGdfaW5wdXRfc3RyZWFtX3Jl
YWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVS
X1NJWkUsCisKKyAgICBBU1NFUlQoIWQtPm1fYnVmZmVyKTsKKworICAgIGQtPm1fYnVmZmVyID0g
Y2xpZW50LT5nZXRCdWZmZXIoUkVBRF9CVUZGRVJfU0laRSwgJmQtPm1fYnVmZmVyU2l6ZSwgJmQt
Pm1faGFuZGxlT3duc0J1ZmZlcik7CisKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQt
Pm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBkLT5tX2J1ZmZlclNpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2Vs
bGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtMTI3Nyw3
ICsxMjg4LDEyIEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVz
dWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwg
ZC0+bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICBp
ZiAoZC0+bV9oYW5kbGVPd25zQnVmZmVyKQorICAgICAgICBnX3NsaWNlX2ZyZWUxKGQtPm1fYnVm
ZmVyU2l6ZSwgZC0+bV9idWZmZXIpOworCisgICAgZC0+bV9idWZmZXIgPSBjbGllbnQtPmdldEJ1
ZmZlcihSRUFEX0JVRkZFUl9TSVpFLCAmZC0+bV9idWZmZXJTaXplLCAmZC0+bV9oYW5kbGVPd25z
QnVmZmVyKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVh
bS5nZXQoKSwgZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxU
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwg
cmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180618</attachid>
            <date>2012-12-23 05:59:11 -0800</date>
            <delta_ts>2013-01-09 04:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20121223115624.patch</filename>
            <type>text/plain</type>
            <size>17141</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQxYjM1ZDBmZTg3Mjkz
Y2M0MGM1ZGMzMzViMjViNzhjODJhZmUwMy4uZjQ3OTA0YjJjOThkYjdhNmQwMGEzMmE1YmQ3MWQz
M2E3YjRhNTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTIxICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUg
R1N0cmVhbWVyIG1lZGlhIGJhY2tlbmQgdG8gcHJvdmlkZSB0aGUgYnVmZmVyIHRvIHdoaWNoCisg
ICAgICAgIHRoZSBTb3VwIG5ldHdvcmtpbmcgYmFja2VuZCB3aWxsIHVzZSB0byBkb3dubG9hZCBk
YXRhIHRvLiBUaGlzIG1ha2VzIGNvcHlpbmcKKyAgICAgICAgbWVtb3J5IHVubmVjZXNzYXJ5IHdo
ZW4gUmVzb3VyY2VIYW5kbGUgaGFuZHMgZGF0YSBvdmVyIHRvIHRoZSBtZWRpYSBwbGF5ZXIncwor
ICAgICAgICBTdHJlYW1pbmdDbGllbnQuIFRoYW5rcyB0byBEYW4gV2luc2hpcCBmb3IgaGVscCBk
ZXNpZ25pbmcgdGhlIGludGVyZmFjZS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOgorICAgICAgICAoZ2V0R3N0QnVmZmVy
U2l6ZSk6IGFic3RyYWN0IG9idGFpbmluZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLCBzbyB0aGUg
Y29kZQorICAgICAgICBpcyBjbGVhbmVyIHdoaWxlIHN0aWxsIHdvcmtpbmcgZm9yIGJvdGggR1NU
IDAuMTAgYW5kIDEuMC4KKyAgICAgICAgKHNldEdzdEJ1ZmZlclNpemUpOiBkaXR0bywgYnV0IGZv
ciBzZXR0aW5nIHRoZSBzaXplLgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOiBk
aXR0bywgYnV0IGZvciBncmFiYmluZyB0aGUgZGF0YSBwb2ludGVyLgorICAgICAgICAobWFwR3N0
QnVmZmVyKTogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHRha2UgY2FyZSBvZiBtYXBwaW5nIHRoZSBi
dWZmZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gcHJvdmlkZSB0aGUgZGF0YSBwb2ludGVyIHRv
IFJlc291cmNlSGFuZGxlLgorICAgICAgICAodW5tYXBHc3RCdWZmZXIpOiBDb252ZW5pZW5jZSBt
ZXRob2Qgd2hpY2ggdGFrZXMgY2FyZSBvZiB1bm1hcHBpbmcgdGhlIGJ1ZmZlcgorICAgICAgICBh
bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgR3N0TWFwSW5mby4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50KTogTmV3IG1ldGhvZHMuCisgICAgICAgIChfV2ViS2l0V2Vi
U3JjUHJpdmF0ZSk6IFdlIG5vdyBzdG9yZSB0aGUgR3N0QnVmZmVyIHdlIHByb3ZpZGVkIHRoZSBk
YXRhIHBvaW50ZXIgZnJvbQorICAgICAgICBzbyB3ZSBjYW4gbGF0ZXIgdW5tYXAgaXQgYW5kIHB1
c2ggaXQgdG8gdGhlIHBpcGVsaW5lLgorICAgICAgICAod2ViS2l0V2ViU3JjRGlzcG9zZSk6IERl
YWwgd2l0aCB0aGUgR3N0QnVmZmVyIGluIGNhc2UgaXQgZXhpc3RzIHdoZW4gdGhlIHNvdXJjZSBp
cworICAgICAgICBkZXN0cm95ZWQuCisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogQWxzbyBj
bGVhciB0aGUgR3N0QnVmZmVyIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEpOiBIYW5kbGUgdGhlIGhhbmQtb3ZlciBvZiB0aGUgYnVmZmVyLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpnZXRCdWZmZXIpOiBQcm92aWRlIFJlc291cmNlSGFu
ZGxlIHdpdGggYSBuZXcgR3N0QnVmZmVyJ3MgZGF0YSBwb2ludGVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFJlc291cmNlSGFu
ZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpnZXRC
dWZmZXIpOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoaWNoIHJldHVybnMgYQorICAgICAgICBz
bGljZS1hbGxvY2F0ZWQgY2hhciBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgIChSZXNvdXJjZUhh
bmRsZUludGVybmFsKTogU3RvcmUgYWN0dWFsIGJ1ZmZlciBzaXplLCB3aGljaCBpcyBubyBsb25n
ZXIgYSBjb25zdGFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFudXBTb3VwUmVxdWVzdE9wZXJh
dGlvbik6IEZyZWUgdGhlIHJlYWQgYnVmZmVyIGlmIGl0IGV4aXN0cyBhbmQgaXMKKyAgICAgICAg
b3duZWQgYnkgdGhlIGhhbmRsZS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRNdWx0aXBhcnRSZXNw
b25zZVBhcnRDYWxsYmFjayk6IEZyZWUgcmVhZCBidWZmZXIgYW5kIGdldCBhIG5ldyBvbmUgZnJv
bQorICAgICAgICB0aGUgY2xpZW50IGJlZm9yZSByZWFkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
c2VuZFJlcXVlc3RDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxi
YWNrKTogRGl0dG8uCisKIDIwMTItMTItMjEgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290
IHdpdGggaXNUcmVlU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAppbmRl
eCAyMjIyZDMyNWU5YWNkM2YyMWVlY2Q5Mzg1MzcyZjc1NGRjOWJlNmY5Li5hZGQwNzZhMzY1Nzk4
M2NjNDMzMGRmYWFkMmMwYjY5MjVhYzkxNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNp
b25pbmcuY3BwCkBAIC0xMTQsNiArMTE0LDYyIEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVy
KEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVybiBuZXdCdWZmZXI7CiB9CiAKK2ludCBnZXRH
c3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisgICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyNlbHNlCisgICAg
cmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworI2VuZGlmCit9CisKK3ZvaWQgc2V0R3N0
QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgZ3NpemUgbmV3U2l6ZSkKK3sKKyNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQorICAgIGdzdF9idWZmZXJfc2V0X3NpemUoYnVmZmVyLCBzdGF0aWNf
Y2FzdDxnc3NpemU+KG5ld1NpemUpKTsKKyNlbHNlCisgICAgR1NUX0JVRkZFUl9TSVpFKGJ1ZmZl
cikgPSBuZXdTaXplOworI2VuZGlmCit9CisKK2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVy
KEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR3N0
TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+
KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcElu
Zm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9z
dHJpbmcoIndlYmtpdC1nc3QtbWFwLWluZm8iKSkpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihtYXBJbmZvLT5kYXRhKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKKyNlbmRpZgorfQorCisjaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVy
KQoreworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsK
KyAgICBpZiAoIWdzdF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01BUF9XUklURSkp
IHsKKyAgICAgICAgZ19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOworICAgICAgICBn
c3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBH
c3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0
Kj4oYnVmZmVyKTsKKyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIndlYmtpdC1nc3QtbWFwLWluZm8iKSwgbWFwSW5mbywgMCk7Cit9
CisKK3ZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWlu
aU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1
ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8q
Pihnc3RfbWluaV9vYmplY3Rfc3RlYWxfcWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0
cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7CisKKyAgICBpZiAoIW1hcEluZm8pCisgICAg
ICAgIHJldHVybjsKKworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKKyAg
ICBnX3NsaWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Cit9CisjZW5kaWYKKwogdm9pZCBz
ZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2Ny
aXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpCiB7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJWZXJzaW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCmluZGV4IDQwODQ0ZjhiOTIxM2QxMDcwMTBh
YzJlOTViYzAxMzhiNTNmZmNjYWUuLmUzYjQ5YWFlM2M0NDkxOGJiNzMzNmMxNzQyYjYyMjUwYjVi
NmM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaApAQCAtMzYsNiArMzYsMTMg
QEAgR1JlZlB0cjxHc3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBhZCopOwogYm9vbCBn
ZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYs
IEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBp
eGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2VuZGlmCiBHc3RCdWZm
ZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK2ludCBnZXRHc3RCdWZmZXJTaXplKEdz
dEJ1ZmZlciopOwordm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciosIGdzaXplIG5ld1Np
emUpOworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKik7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciopOwordm9pZCB1
bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKKyNlbmRpZgogdm9pZCBzZXRHc3RFbGVtZW50Q2xh
c3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFy
KiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcik7
CiBib29sIGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0Kik7CiB2b2lkIG5vdGlmeUdzdFRh
Z3NPblBhZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgR3N0VGFnTGlzdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBmODA0ZDFmN2UwNTlmMzI1YjZm
NDdmNTkzMTQxOGQzNzU4MzJiNWQ3Li43MjllYTM1NDM3Yzg4MjZhMGQ3Njg4Y2FkNWEyNDA3NGEy
NTczNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApA
QCAtMzIsMTAgKzMyLDkgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgotIAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisjaW5jbHVkZSA8Z3N0L2dzdC5o
PgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgotCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTUxLDYgKzUwLDkgQEAgY2xhc3MgU3Ry
ZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworCisgICAgICAgIHZpcnR1YWwgY2hhciogZ2V0QnVmZmVyKGludCwgaW50KiwgYm9vbCopOwor
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IGNoYXIqLCBpbnQsIGludCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CkBAIC04NCw2ICs4Niw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgZ3Vp
bnQgZW5vdWdoRGF0YUlEOwogICAgIGd1aW50IHNlZWtJRDsKIAorICAgIEdzdEJ1ZmZlciogYnVm
ZmVyOworCiAgICAgLy8gaWNlY2FzdCBzdHVmZgogICAgIGdib29sZWFuIGlyYWRpb01vZGU7CiAg
ICAgZ2NoYXIqIGlyYWRpb05hbWU7CkBAIC0xMTUsNiArMTE5LDcgQEAgR1NUX0RFQlVHX0NBVEVH
T1JZX1NUQVRJQyh3ZWJraXRfd2ViX3NyY19kZWJ1Zyk7CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIgaWZhY2VEYXRhKTsK
IAorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRGlzcG9zZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNTZXRQcm9wZXJ0eShHT2JqZWN0KiwgZ3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiwg
R1BhcmFtU3BlYyopOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVj
dCosIGd1aW50IHByb3BlcnR5SUQsIEdWYWx1ZSosIEdQYXJhbVNwZWMqKTsKQEAgLTE1MCw2ICsx
NTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNy
Y0NsYXNzKiBrbGFzcykKICAgICBHT2JqZWN0Q2xhc3MqIG9rbGFzcyA9IEdfT0JKRUNUX0NMQVNT
KGtsYXNzKTsKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNT
KGtsYXNzKTsKIAorICAgIG9rbGFzcy0+ZGlzcG9zZSA9IHdlYktpdFdlYlNyY0Rpc3Bvc2U7CiAg
ICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYlNyY0ZpbmFsaXplOwogICAgIG9rbGFzcy0+
c2V0X3Byb3BlcnR5ID0gd2ViS2l0V2ViU3JjU2V0UHJvcGVydHk7CiAgICAgb2tsYXNzLT5nZXRf
cHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eTsKQEAgLTI3NCw2ICsyODAsMjIgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAgICB3
ZWJLaXRXZWJTcmNTdG9wKHNyYywgZmFsc2UpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdF
QktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNy
Yy0+cHJpdjsKKworICAgIGlmIChwcml2LT5idWZmZXIpIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJ
T05fMQorICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCisgICAg
ICAgIGdzdF9vYmplY3RfdW5yZWYocHJpdi0+YnVmZmVyKTsKKyAgICAgICAgcHJpdi0+YnVmZmVy
ID0gMDsKKyAgICB9CisKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bv
c2UsICgoR09iamVjdCogKShzcmMpKSk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Zp
bmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJ
VF9XRUJfU1JDKG9iamVjdCk7CkBAIC0zNTQsNiArMzc2LDE0IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wgc2Vla2luZykKIAogICAgIHByaXYt
PnBsYXllciA9IDA7CiAKKyAgICBpZiAocHJpdi0+YnVmZmVyKSB7CisjaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKKyAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+YnVmZmVyKTsKKyNlbmRpZgor
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPmJ1ZmZlcik7CisgICAgICAgIHByaXYtPmJ1
ZmZlciA9IDA7CisgICAgfQorCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7CiAgICAgaWYgKHBy
aXYtPm5lZWREYXRhSUQpCiAgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5uZWVkRGF0YUlE
KTsKQEAgLTg1NiwzMSArODg2LDU3IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpCiB7CiAgICAg
V2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OwogCi0gICAgR1NUX0xPR19P
QkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBsZW5ndGgpOworICAgIEFTU0VS
VChwcml2LT5idWZmZXIpOworICAgIEFTU0VSVChkYXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2lu
dGVyKHByaXYtPmJ1ZmZlcikpOworCisgICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVk
IGJ5dGVzIG9mIGRhdGEiLCBnZXRHc3RCdWZmZXJTaXplKHByaXYtPmJ1ZmZlcikpOworCisjaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIpOwor
I2VuZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJj
ZUhhbmRsZSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9n
cmVzcywgaWdub3JpbmcgZGF0YSIpOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHByaXYtPmJ1
ZmZlcik7CisgICAgICAgIHByaXYtPmJ1ZmZlciA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5n
dGgpOworICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBidWZmZXIncyBrbm93bGVkZ2Ugb2Yg
aG93IG11Y2ggZGF0YSBpdCBjYXJyaWVzLgorICAgIHNldEdzdEJ1ZmZlclNpemUocHJpdi0+YnVm
ZmVyLCBsZW5ndGgpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVy
X2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vsc2UKLSAgICBtZW1jcHkoR1NUX0JV
RkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0jZW5kaWYKLSAgICBHU1RfQlVGRkVS
X09GRlNFVChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIEdTVF9CVUZGRVJfT0ZGU0VUKHBy
aXYtPmJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CiAgICAgcHJpdi0+b2Zmc2V0ICs9IGxlbmd0aDsK
LSAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9IHByaXYtPm9mZnNldDsKKyAgICBH
U1RfQlVGRkVSX09GRlNFVF9FTkQocHJpdi0+YnVmZmVyKSA9IHByaXYtPm9mZnNldDsKIAotICAg
IEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3Jj
LCBidWZmZXIpOworICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZm
ZXIocHJpdi0+YXBwc3JjLCBwcml2LT5idWZmZXIpOwogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
CiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSyAmJiByZXQgIT0gR1NUX0ZMT1dfRU9TKQogI2Vs
c2UKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19VTkVYUEVD
VEVEKQogI2VuZGlmCiAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBGQUlM
RUQsICgwKSwgKDApKTsKKworICAgIHByaXYtPmJ1ZmZlciA9IDA7Cit9CisKK2NoYXIqIFN0cmVh
bWluZ0NsaWVudDo6Z2V0QnVmZmVyKGludCByZXF1ZXN0ZWRTaXplLCBpbnQqIGFjdHVhbFNpemUs
IGJvb2wqIGhhbmRsZU93bnNCdWZmZXIpCit7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJp
diA9IG1fc3JjLT5wcml2OworCisgICAgQVNTRVJUKCFwcml2LT5idWZmZXIpOworCisgICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7
CisKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOwor
I2VuZGlmCisKKyAgICBwcml2LT5idWZmZXIgPSBidWZmZXI7CisKKyAgICAqaGFuZGxlT3duc0J1
ZmZlciA9IGZhbHNlOworICAgICphY3R1YWxTaXplID0gZ2V0R3N0QnVmZmVyU2l6ZShidWZmZXIp
OworICAgIHJldHVybiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihidWZmZXIpOwogfQogCiB2b2lk
IFN0cmVhbWluZ0NsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaAppbmRleCAzZDU1ZDg2OGE5MzZiY2E4MjcwNmZhN2IzYWU1NzViZmIyYjQy
MDI2Li43M2U2OGZjMmMxNTdjOTQyZDM5NjVhZGJiOGJhYjk0YWEzNjViYzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNl
UHJpdi5oPgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDb25k
aXRpb25hbE1hY3Jvcy5oPgogI2VuZGlmCkBAIC04Miw2ICs4NiwxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KFJlc291cmNl
SGFuZGxlKiwgQ0ZBcnJheVJlZikgeyB9CiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQorICAgICAg
ICB2aXJ0dWFsIGNoYXIqIGdldEJ1ZmZlcihpbnQgcmVxdWVzdGVkTGVuZ3RoLCBpbnQqIGFjdHVh
bExlbmd0aCwgYm9vbCogaGFuZGxlT3duc0J1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAg
KmhhbmRsZU93bnNCdWZmZXIgPSB0cnVlOworICAgICAgICAgICAgKmFjdHVhbExlbmd0aCA9IHJl
cXVlc3RlZExlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oZ19t
YWxsb2MocmVxdWVzdGVkTGVuZ3RoKSk7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCBiN2Y2Yzk1NzMzYWY2ODM1ZjQ4M2I5Mjg2MzBhNjVi
NjFlOGZmYzYyLi43NTkyNjQ1OTFlYjE5MzYxNDc4YjAzZmIyMDUxZmYyOTc0ZWJhYjFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaApAQCAtMTEyLDYgKzExMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBVU0UoU09VUCkKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCiAgICAgICAgICAg
ICAsIG1fYnVmZmVyKDApCisgICAgICAgICAgICAsIG1fYnVmZmVyU2l6ZSgwKQorICAgICAgICAg
ICAgLCBtX2hhbmRsZU93bnNCdWZmZXIoZmFsc2UpCiAgICAgICAgICAgICAsIG1fYm9keVNpemUo
MCkKICAgICAgICAgICAgICwgbV9ib2R5RGF0YVNlbnQoMCkKICNlbmRpZgpAQCAtMTk4LDYgKzIw
MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+
IG1fZGVmZXJyZWRSZXN1bHQ7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90aW1lb3V0U291
cmNlOwogICAgICAgICBjaGFyKiBtX2J1ZmZlcjsKKyAgICAgICAgaW50IG1fYnVmZmVyU2l6ZTsK
KyAgICAgICAgYm9vbCBtX2hhbmRsZU93bnNCdWZmZXI7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bV9ib2R5U2l6ZTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlEYXRhU2VudDsKICAgICAg
ICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCmluZGV4IGE0MDM5M2Q4ZWMwMmFiYjQzNjU2NjM0ZGZmNjg0ZDYxNWFkOWJiZmEuLmQ5NDJj
OTdmZjU3M2FmNGQ4N2E1NzZiNWQ1ZDlmN2RhZTFlN2RmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCkBAIC00NzUsOCArNDc1LDExIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9w
ZXJhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluCiAgICAgfQog
CiAgICAgaWYgKGQtPm1fYnVmZmVyKSB7Ci0gICAgICAgIGdfc2xpY2VfZnJlZTEoUkVBRF9CVUZG
RVJfU0laRSwgZC0+bV9idWZmZXIpOworICAgICAgICBpZiAoZC0+bV9oYW5kbGVPd25zQnVmZmVy
KQorICAgICAgICAgICAgZ19mcmVlKGQtPm1fYnVmZmVyKTsKKwogICAgICAgICBkLT5tX2J1ZmZl
ciA9IDA7CisgICAgICAgIGQtPm1fYnVmZmVyU2l6ZSA9IDA7CiAgICAgfQogCiAgICAgaWYgKGQt
Pm1fdGltZW91dFNvdXJjZSkgewpAQCAtNTQ4LDcgKzU1MSwxMiBAQCBzdGF0aWMgdm9pZCBuZXh0
TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypzb3VyY2UqLywgR0FzeW5j
UmVzdWx0KgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19pbnB1dF9zdHJlYW1fcmVh
ZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgUkVBRF9CVUZGRVJf
U0laRSwKKyAgICBpZiAoZC0+bV9oYW5kbGVPd25zQnVmZmVyICYmIGQtPm1fYnVmZmVyKQorICAg
ICAgICBnX2ZyZWUoZC0+bV9idWZmZXIpOworCisgICAgZC0+bV9idWZmZXIgPSBjbGllbnQtPmdl
dEJ1ZmZlcihSRUFEX0JVRkZFUl9TSVpFLCAmZC0+bV9idWZmZXJTaXplLCAmZC0+bV9oYW5kbGVP
d25zQnVmZmVyKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0
cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwKICAgICAgICAgR19QUklP
UklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRs
ZS5nZXQoKSk7CiB9CiAKQEAgLTU3OCw4ICs1ODYsNiBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVz
dENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGQtPm1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KGdfc2xpY2VfYWxsb2MoUkVBRF9CVUZGRVJfU0laRSkpOwotCiAgICAgaWYgKHNvdXBN
ZXNzYWdlKSB7CiAgICAgICAgIGlmIChoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpICYmIHNv
dXBNZXNzYWdlLT5zdGF0dXNfY29kZSAhPSBTT1VQX1NUQVRVU19OT1RfTU9ESUZJRUQpIHsKICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIHNuaWZmZWRUeXBlID0gc291cF9yZXF1ZXN0X2dldF9jb250
ZW50X3R5cGUoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSk7CkBAIC02MTUsNyArNjIxLDEyIEBAIHN0
YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBncG9pbnRlciBkYXRhKQogICAgIH0KIAogICAgIGQtPm1faW5wdXRTdHJlYW0gPSBpbnB1
dFN0cmVhbTsKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0u
Z2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLAorCisgICAgQVNTRVJUKCFkLT5t
X2J1ZmZlcik7CisKKyAgICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVG
RkVSX1NJWkUsICZkLT5tX2J1ZmZlclNpemUsICZkLT5tX2hhbmRsZU93bnNCdWZmZXIpOworCisg
ICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5t
X2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ss
IGhhbmRsZS5nZXQoKSk7CiB9CiAKQEAgLTEyNzcsNyArMTI4OCwxMiBAQCBzdGF0aWMgdm9pZCBy
ZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVy
IGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFk
X2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9T
SVpFLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgaWYgKGQtPm1faGFuZGxlT3duc0J1ZmZlcikK
KyAgICAgICAgZ19mcmVlKGQtPm1fYnVmZmVyKTsKKworICAgIGQtPm1fYnVmZmVyID0gY2xpZW50
LT5nZXRCdWZmZXIoUkVBRF9CVUZGRVJfU0laRSwgJmQtPm1fYnVmZmVyU2l6ZSwgJmQtPm1faGFu
ZGxlT3duc0J1ZmZlcik7CisKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5w
dXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBkLT5tX2J1ZmZlclNpemUsIEdfUFJJT1JJVFlf
REVGQVVMVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fY2FuY2VsbGFibGUu
Z2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181894</attachid>
            <date>2013-01-09 04:26:15 -0800</date>
            <delta_ts>2013-01-14 05:24:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20130109102317.patch</filename>
            <type>text/plain</type>
            <size>17928</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQxYjM1ZDBmZTg3Mjkz
Y2M0MGM1ZGMzMzViMjViNzhjODJhZmUwMy4uZjQ3OTA0YjJjOThkYjdhNmQwMGEzMmE1YmQ3MWQz
M2E3YjRhNTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEyLTIxICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUg
R1N0cmVhbWVyIG1lZGlhIGJhY2tlbmQgdG8gcHJvdmlkZSB0aGUgYnVmZmVyIHRvIHdoaWNoCisg
ICAgICAgIHRoZSBTb3VwIG5ldHdvcmtpbmcgYmFja2VuZCB3aWxsIHVzZSB0byBkb3dubG9hZCBk
YXRhIHRvLiBUaGlzIG1ha2VzIGNvcHlpbmcKKyAgICAgICAgbWVtb3J5IHVubmVjZXNzYXJ5IHdo
ZW4gUmVzb3VyY2VIYW5kbGUgaGFuZHMgZGF0YSBvdmVyIHRvIHRoZSBtZWRpYSBwbGF5ZXIncwor
ICAgICAgICBTdHJlYW1pbmdDbGllbnQuIFRoYW5rcyB0byBEYW4gV2luc2hpcCBmb3IgaGVscCBk
ZXNpZ25pbmcgdGhlIGludGVyZmFjZS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOgorICAgICAgICAoZ2V0R3N0QnVmZmVy
U2l6ZSk6IGFic3RyYWN0IG9idGFpbmluZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLCBzbyB0aGUg
Y29kZQorICAgICAgICBpcyBjbGVhbmVyIHdoaWxlIHN0aWxsIHdvcmtpbmcgZm9yIGJvdGggR1NU
IDAuMTAgYW5kIDEuMC4KKyAgICAgICAgKHNldEdzdEJ1ZmZlclNpemUpOiBkaXR0bywgYnV0IGZv
ciBzZXR0aW5nIHRoZSBzaXplLgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOiBk
aXR0bywgYnV0IGZvciBncmFiYmluZyB0aGUgZGF0YSBwb2ludGVyLgorICAgICAgICAobWFwR3N0
QnVmZmVyKTogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHRha2UgY2FyZSBvZiBtYXBwaW5nIHRoZSBi
dWZmZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gcHJvdmlkZSB0aGUgZGF0YSBwb2ludGVyIHRv
IFJlc291cmNlSGFuZGxlLgorICAgICAgICAodW5tYXBHc3RCdWZmZXIpOiBDb252ZW5pZW5jZSBt
ZXRob2Qgd2hpY2ggdGFrZXMgY2FyZSBvZiB1bm1hcHBpbmcgdGhlIGJ1ZmZlcgorICAgICAgICBh
bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgR3N0TWFwSW5mby4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50KTogTmV3IG1ldGhvZHMuCisgICAgICAgIChfV2ViS2l0V2Vi
U3JjUHJpdmF0ZSk6IFdlIG5vdyBzdG9yZSB0aGUgR3N0QnVmZmVyIHdlIHByb3ZpZGVkIHRoZSBk
YXRhIHBvaW50ZXIgZnJvbQorICAgICAgICBzbyB3ZSBjYW4gbGF0ZXIgdW5tYXAgaXQgYW5kIHB1
c2ggaXQgdG8gdGhlIHBpcGVsaW5lLgorICAgICAgICAod2ViS2l0V2ViU3JjRGlzcG9zZSk6IERl
YWwgd2l0aCB0aGUgR3N0QnVmZmVyIGluIGNhc2UgaXQgZXhpc3RzIHdoZW4gdGhlIHNvdXJjZSBp
cworICAgICAgICBkZXN0cm95ZWQuCisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogQWxzbyBj
bGVhciB0aGUgR3N0QnVmZmVyIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEpOiBIYW5kbGUgdGhlIGhhbmQtb3ZlciBvZiB0aGUgYnVmZmVyLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpnZXRCdWZmZXIpOiBQcm92aWRlIFJlc291cmNlSGFu
ZGxlIHdpdGggYSBuZXcgR3N0QnVmZmVyJ3MgZGF0YSBwb2ludGVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFJlc291cmNlSGFu
ZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpnZXRC
dWZmZXIpOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoaWNoIHJldHVybnMgYQorICAgICAgICBz
bGljZS1hbGxvY2F0ZWQgY2hhciBwb2ludGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgIChSZXNvdXJjZUhh
bmRsZUludGVybmFsKTogU3RvcmUgYWN0dWFsIGJ1ZmZlciBzaXplLCB3aGljaCBpcyBubyBsb25n
ZXIgYSBjb25zdGFudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFudXBTb3VwUmVxdWVzdE9wZXJh
dGlvbik6IEZyZWUgdGhlIHJlYWQgYnVmZmVyIGlmIGl0IGV4aXN0cyBhbmQgaXMKKyAgICAgICAg
b3duZWQgYnkgdGhlIGhhbmRsZS4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRNdWx0aXBhcnRSZXNw
b25zZVBhcnRDYWxsYmFjayk6IEZyZWUgcmVhZCBidWZmZXIgYW5kIGdldCBhIG5ldyBvbmUgZnJv
bQorICAgICAgICB0aGUgY2xpZW50IGJlZm9yZSByZWFkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
c2VuZFJlcXVlc3RDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxi
YWNrKTogRGl0dG8uCisKIDIwMTItMTItMjEgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBkb2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290
IHdpdGggaXNUcmVlU2NvcGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAppbmRl
eCAyMjIyZDMyNWU5YWNkM2YyMWVlY2Q5Mzg1MzcyZjc1NGRjOWJlNmY5Li40OGI1MDAwOWY3YTBl
NzAxNTgzZWUyNTg3MWQ2NjQ3YWRjNmVmNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNp
b25pbmcuY3BwCkBAIC0xMTQsNiArMTE0LDYzIEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVy
KEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVybiBuZXdCdWZmZXI7CiB9CiAKK2ludCBnZXRH
c3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisgICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyNlbHNlCisgICAg
cmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworI2VuZGlmCit9CisKK3ZvaWQgc2V0R3N0
QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgaW50IG5ld1NpemUpCit7CisjaWZkZWYgR1NU
X0FQSV9WRVJTSU9OXzEKKyAgICBnc3RfYnVmZmVyX3NldF9zaXplKGJ1ZmZlciwgc3RhdGljX2Nh
c3Q8Z3NzaXplPihuZXdTaXplKSk7CisjZWxzZQorICAgIEdTVF9CVUZGRVJfU0laRShidWZmZXIp
ID0gc3RhdGljX2Nhc3Q8Z3NpemU+KG5ld1NpemUpOworI2VuZGlmCit9CisKK2NoYXIqIGdldEdz
dEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCisgICAgc3RhdGljIGNoYXIqIHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyA9
ICJ3ZWJraXQtZ3N0LW1hcC1pbmZvIjsKKyAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0g
cmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAgICBHc3RNYXBJbmZv
KiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29iamVjdF9nZXRf
cWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcod2Via2l0R3N0TWFw
SW5mb1F1YXJrU3RyaW5nKSkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPiht
YXBJbmZvLT5kYXRhKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKKyNlbmRpZgorfQorCisjaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdz
dE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsKKyAgICBpZiAoIWdz
dF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01BUF9XUklURSkpIHsKKyAgICAgICAg
Z19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOworICAgICAgICBnc3RfYnVmZmVyX3Vu
cmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RNaW5pT2JqZWN0
KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsK
KyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9z
dHJpbmcoIndlYmtpdC1nc3QtbWFwLWluZm8iKSwgbWFwSW5mbywgMCk7Cit9CisKK3ZvaWQgdW5t
YXBHc3RCdWZmZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgR3N0TWluaU9iamVjdCogbWlu
aU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAg
R3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9v
YmplY3Rfc3RlYWxfcWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0cmluZygid2Via2l0
LWdzdC1tYXAtaW5mbyIpKSk7CisKKyAgICBpZiAoIW1hcEluZm8pCisgICAgICAgIHJldHVybjsK
KworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKKyAgICBnX3NsaWNlX2Zy
ZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Cit9CisjZW5kaWYKKwogdm9pZCBzZXRHc3RFbGVtZW50
Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25z
dCBjaGFyKiBhdXRob3IpCiB7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJz
aW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyVmVyc2lvbmluZy5oCmluZGV4IDQwODQ0ZjhiOTIxM2QxMDcwMTBhYzJlOTViYzAxMzhi
NTNmZmNjYWUuLmE5ODNiMTA4NWVjMmVjNWRjNDE1ODQ3NTk0ZWI0ODkyMThlNmEyMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJWZXJzaW9uaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaApAQCAtMzYsNiArMzYsMTMgQEAgR1JlZlB0cjxH
c3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBhZCopOwogYm9vbCBnZXRWaWRlb1NpemVB
bmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9y
bWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0
aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2VuZGlmCiBHc3RCdWZmZXIqIGNyZWF0ZUdz
dEJ1ZmZlcihHc3RCdWZmZXIqKTsKK2ludCBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciopOwor
dm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciosIGludCBuZXdTaXplKTsKK2NoYXIqIGdl
dEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciopOworI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK3ZvaWQgdW5tYXBHc3RCdWZmZXIo
R3N0QnVmZmVyKik7CisjZW5kaWYKIHZvaWQgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRhdGEoR3N0
RWxlbWVudENsYXNzKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNv
bnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpOwogYm9vbCBnc3RPYmpl
Y3RJc0Zsb2F0aW5nKEdzdE9iamVjdCopOwogdm9pZCBub3RpZnlHc3RUYWdzT25QYWQoR3N0RWxl
bWVudCosIEdzdFBhZCosIEdzdFRhZ0xpc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjgwNGQxZjdlMDU5ZjMyNWI2ZjQ3ZjU5MzE0MThkMzc1
ODMyYjVkNy4uODEyMzlkNWMzYzBmYjhhY2E1ZjhmOTYwYWFhNmEwMzkwY2NiOTUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTMyLDEwICszMiw5
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSAKICNpbmNsdWRl
IDxnc3QvYXBwL2dzdGFwcHNyYy5oPgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxn
c3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KLQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HUmVmUHRyLmg+CkBAIC01MSw2ICs1MCw5IEBAIGNsYXNzIFN0cmVhbWluZ0NsaWVudCA6
IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgICAgICB2
aXJ0dWFsIGNoYXIqIGdldEJ1ZmZlcihpbnQsIGludCopOworCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwg
ZG91YmxlIC8qZmluaXNoVGltZSovKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC04NCw2ICs4Niw4IEBAIHN0
cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgZ3VpbnQgZW5vdWdoRGF0YUlEOwogICAg
IGd1aW50IHNlZWtJRDsKIAorICAgIEdzdEJ1ZmZlciogYnVmZmVyOworCiAgICAgLy8gaWNlY2Fz
dCBzdHVmZgogICAgIGdib29sZWFuIGlyYWRpb01vZGU7CiAgICAgZ2NoYXIqIGlyYWRpb05hbWU7
CkBAIC0xMTUsNiArMTE5LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfd2Vi
X3NyY19kZWJ1Zyk7CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdw
b2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIgaWZhY2VEYXRhKTsKIAorc3RhdGljIHZvaWQgd2ViS2l0
V2ViU3JjRGlzcG9zZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6
ZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0
KiwgZ3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiwgR1BhcmFtU3BlYyopOwogc3RhdGlj
IHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCosIGd1aW50IHByb3BlcnR5SUQs
IEdWYWx1ZSosIEdQYXJhbVNwZWMqKTsKQEAgLTE1MCw2ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNyY0NsYXNzKiBrbGFzcykKICAgICBH
T2JqZWN0Q2xhc3MqIG9rbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKICAgICBHc3RFbGVt
ZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKIAorICAgIG9rbGFz
cy0+ZGlzcG9zZSA9IHdlYktpdFdlYlNyY0Rpc3Bvc2U7CiAgICAgb2tsYXNzLT5maW5hbGl6ZSA9
IHdlYktpdFdlYlNyY0ZpbmFsaXplOwogICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0
V2ViU3JjU2V0UHJvcGVydHk7CiAgICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJLaXRXZWJT
cmNHZXRQcm9wZXJ0eTsKQEAgLTI3NCw2ICsyODAsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYywg
ZmFsc2UpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNEaXNwb3NlKEdPYmplY3QqIG9i
amVjdCkKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7
CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmIChw
cml2LT5idWZmZXIpIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgICAgICB1bm1hcEdz
dEJ1ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYo
cHJpdi0+YnVmZmVyKTsKKyAgICAgICAgcHJpdi0+YnVmZmVyID0gMDsKKyAgICB9CisKKyAgICBH
U1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKK30KKwog
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAg
IFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsKQEAgLTI4Myw3ICsz
MDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
CiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKIAotICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVD
VF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCogKShzcmMpKSk7CisgICAgR1NUX0NBTExfUEFS
RU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKG9iamVjdCkpOwogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
Y29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC0zNTQsNiArMzc2LDE0
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wg
c2Vla2luZykKIAogICAgIHByaXYtPnBsYXllciA9IDA7CiAKKyAgICBpZiAocHJpdi0+YnVmZmVy
KSB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJp
di0+YnVmZmVyKTsKKyNlbmRpZgorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPmJ1ZmZl
cik7CisgICAgICAgIHByaXYtPmJ1ZmZlciA9IDA7CisgICAgfQorCiAgICAgR1NUX09CSkVDVF9M
T0NLKHNyYyk7CiAgICAgaWYgKHByaXYtPm5lZWREYXRhSUQpCiAgICAgICAgIGdfc291cmNlX3Jl
bW92ZShwcml2LT5uZWVkRGF0YUlEKTsKQEAgLTg1NiwzMSArODg2LDU2IEBAIHZvaWQgU3RyZWFt
aW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5w
cml2OwogCi0gICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEi
LCBsZW5ndGgpOworICAgIEFTU0VSVChwcml2LT5idWZmZXIpOworICAgIEFTU0VSVChkYXRhID09
IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1ZmZlcikpOworCisgICAgR1NUX0xPR19P
QkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBnZXRHc3RCdWZmZXJTaXplKHBy
aXYtPmJ1ZmZlcikpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICB1bm1hcEdzdEJ1
ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEIHx8IGhh
bmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNU
KG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOworICAgICAgICBnc3Rf
YnVmZmVyX3VucmVmKHByaXYtPmJ1ZmZlcik7CisgICAgICAgIHByaXYtPmJ1ZmZlciA9IDA7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZm
ZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBi
dWZmZXIncyBrbm93bGVkZ2Ugb2YgaG93IG11Y2ggZGF0YSBpdCBjYXJyaWVzLgorICAgIHNldEdz
dEJ1ZmZlclNpemUocHJpdi0+YnVmZmVyLCBsZW5ndGgpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKLSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vs
c2UKLSAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0j
ZW5kaWYKLSAgICBHU1RfQlVGRkVSX09GRlNFVChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAg
IEdTVF9CVUZGRVJfT0ZGU0VUKHByaXYtPmJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CiAgICAgcHJp
di0+b2Zmc2V0ICs9IGxlbmd0aDsKLSAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9
IHByaXYtPm9mZnNldDsKKyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQocHJpdi0+YnVmZmVyKSA9
IHByaXYtPm9mZnNldDsKIAotICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVz
aF9idWZmZXIocHJpdi0+YXBwc3JjLCBidWZmZXIpOworICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0g
Z3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBwcml2LT5idWZmZXIpOwogI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSyAmJiByZXQg
IT0gR1NUX0ZMT1dfRU9TKQogI2Vsc2UKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJl
dCAhPSBHU1RfRkxPV19VTkVYUEVDVEVEKQogI2VuZGlmCiAgICAgICAgIEdTVF9FTEVNRU5UX0VS
Uk9SKG1fc3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDApKTsKKworICAgIHByaXYtPmJ1ZmZlciA9
IDA7Cit9CisKK2NoYXIqIFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyKGludCByZXF1ZXN0ZWRT
aXplLCBpbnQqIGFjdHVhbFNpemUpCit7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IG1fc3JjLT5wcml2OworCisgICAgQVNTRVJUKCFwcml2LT5idWZmZXIpOworCisgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CisK
KyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOworI2Vu
ZGlmCisKKyAgICBwcml2LT5idWZmZXIgPSBidWZmZXI7CisKKyAgICAqYWN0dWFsU2l6ZSA9IGdl
dEdzdEJ1ZmZlclNpemUoYnVmZmVyKTsKKyAgICByZXR1cm4gZ2V0R3N0QnVmZmVyRGF0YVBvaW50
ZXIoYnVmZmVyKTsKIH0KIAogdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggM2Q1NWQ4NjhhOTM2YmNh
ODI3MDZmYTdiM2FlNTc1YmZiMmI0MjAyNi4uOTBlNjMxZTEwODU3ZjliZTRlZGIyYTQ5Mzc5ZDRi
M2IxNmYwZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisj
aW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8Q29uZGl0aW9uYWxNYWNyb3MuaD4KICNlbmRpZgpAQCAtNjMsNyAr
NjcsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50IHsKICAgICBwdWJsaWM6CisjaWYgVVNFKFNPVVApCisgICAgICAgIFJlc291cmNl
SGFuZGxlQ2xpZW50KCk6IG1fYnVmZmVyKDApIHsgfQorCisgICAgICAgIHZpcnR1YWwgflJlc291
cmNlSGFuZGxlQ2xpZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fYnVmZmVyKSB7
CisgICAgICAgICAgICAgICAgZ19mcmVlKG1fYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtX2J1
ZmZlciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIHZpcnR1
YWwgflJlc291cmNlSGFuZGxlQ2xpZW50KCkgeyB9CisjZW5kaWYKIAogICAgICAgICAvLyByZXF1
ZXN0IG1heSBiZSBtb2RpZmllZAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgfQpAQCAtODIsNiArOTgsMTggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShSZXNv
dXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIHsgfQogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyAg
ICAgICAgdmlydHVhbCBjaGFyKiBnZXRCdWZmZXIoaW50IHJlcXVlc3RlZExlbmd0aCwgaW50KiBh
Y3R1YWxMZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICphY3R1YWxMZW5ndGggPSByZXF1
ZXN0ZWRMZW5ndGg7CisKKyAgICAgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MocmVxdWVzdGVkTGVuZ3Ro
KSk7CisKKyAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKKyAgICAgICAgfQorI2VuZGlmCisK
ICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNl
SGFuZGxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgeyB9CkBAIC0xMDcsNiArMTM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgdmlydHVhbCBBc3luY0ZpbGVTdHJlYW0qIGNyZWF0
ZUFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50KikgeyByZXR1cm4gMDsgfQogI2VuZGlm
CisKKyNpZiBVU0UoU09VUCkKK3ByaXZhdGU6CisgICAgICAgIGNoYXIqIG1fYnVmZmVyOworI2Vu
ZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCBiN2Y2Yzk1NzMzYWY2ODM1ZjQ4
M2I5Mjg2MzBhNjViNjFlOGZmYzYyLi43NzFjYzFlOGIxMmE0YTA5YThhMzVkMDZjMzVkNmQwMzYx
NTA0ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTEyLDYgKzExMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICNpZiBVU0UoU09VUCkKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2Up
CiAgICAgICAgICAgICAsIG1fYnVmZmVyKDApCisgICAgICAgICAgICAsIG1fYnVmZmVyU2l6ZSgw
KQogICAgICAgICAgICAgLCBtX2JvZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFT
ZW50KDApCiAjZW5kaWYKQEAgLTE5OCw2ICsxOTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2RlZmVycmVkUmVzdWx0OwogICAgICAgICBH
UmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsKICAgICAgICAgY2hhciogbV9idWZmZXI7
CisgICAgICAgIGludCBtX2J1ZmZlclNpemU7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9ib2R5
U2l6ZTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlEYXRhU2VudDsKICAgICAgICAgUmVm
UHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmlu
ZGV4IGE0MDM5M2Q4ZWMwMmFiYjQzNjU2NjM0ZGZmNjg0ZDYxNWFkOWJiZmEuLjQwMzk3NzRmZGE5
YjNhNTc5N2MyNDBlM2FlMzM0ODZhMmMyZjBhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBA
IC00NzUsOCArNDc1LDggQEAgc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9u
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNEZXN0cm95aW4KICAgICB9CiAKICAgICBp
ZiAoZC0+bV9idWZmZXIpIHsKLSAgICAgICAgZ19zbGljZV9mcmVlMShSRUFEX0JVRkZFUl9TSVpF
LCBkLT5tX2J1ZmZlcik7CiAgICAgICAgIGQtPm1fYnVmZmVyID0gMDsKKyAgICAgICAgZC0+bV9i
dWZmZXJTaXplID0gMDsKICAgICB9CiAKICAgICBpZiAoZC0+bV90aW1lb3V0U291cmNlKSB7CkBA
IC01NDgsNyArNTQ4LDkgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENh
bGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3luY1Jlc3VsdCoKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVh
bS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsCisgICAgZC0+bV9idWZmZXIg
PSBjbGllbnQtPmdldEJ1ZmZlcihSRUFEX0JVRkZFUl9TSVpFLCAmZC0+bV9idWZmZXJTaXplKTsK
KworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwg
ZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwKICAgICAgICAgR19QUklPUklUWV9ERUZBVUxU
LCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9
CiAKQEAgLTU3OCw4ICs1ODAsNiBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGQtPm1fYnVmZmVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KGdfc2xp
Y2VfYWxsb2MoUkVBRF9CVUZGRVJfU0laRSkpOwotCiAgICAgaWYgKHNvdXBNZXNzYWdlKSB7CiAg
ICAgICAgIGlmIChoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpICYmIHNvdXBNZXNzYWdlLT5z
dGF0dXNfY29kZSAhPSBTT1VQX1NUQVRVU19OT1RfTU9ESUZJRUQpIHsKICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHNuaWZmZWRUeXBlID0gc291cF9yZXF1ZXN0X2dldF9jb250ZW50X3R5cGUoZC0+
bV9zb3VwUmVxdWVzdC5nZXQoKSk7CkBAIC02MTUsNyArNjE1LDEyIEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRl
ciBkYXRhKQogICAgIH0KIAogICAgIGQtPm1faW5wdXRTdHJlYW0gPSBpbnB1dFN0cmVhbTsKLSAg
ICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1f
YnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLAorCisgICAgQVNTRVJUKCFkLT5tX2J1ZmZlcik7CisK
KyAgICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVGRkVSX1NJWkUsICZk
LT5tX2J1ZmZlclNpemUpOworCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lu
cHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxl
LmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAKQEAgLTEyNzcsNyArMTI4
Miw5IEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBh
c3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9i
dWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICBkLT5tX2J1
ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVGRkVSX1NJWkUsICZkLT5tX2J1ZmZlclNp
emUpOworCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdl
dCgpLCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLCBHX1BSSU9SSVRZX0RFRkFVTFQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFk
Q2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182554</attachid>
            <date>2013-01-14 05:24:28 -0800</date>
            <delta_ts>2013-01-16 15:16:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20130114112127.patch</filename>
            <type>text/plain</type>
            <size>18465</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQxYjM1ZDBmZTg3Mjkz
Y2M0MGM1ZGMzMzViMjViNzhjODJhZmUwMy4uNGMwZThlNDk3OTA1MWI0NDVkOGRmNTZiY2VlNTRh
Njg2YjIyZGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTEyLTIxICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUg
R1N0cmVhbWVyIG1lZGlhIGJhY2tlbmQgdG8gcHJvdmlkZSB0aGUgYnVmZmVyIHRvIHdoaWNoCisg
ICAgICAgIHRoZSBTb3VwIG5ldHdvcmtpbmcgYmFja2VuZCB3aWxsIHVzZSB0byBkb3dubG9hZCBk
YXRhIHRvLiBUaGlzIG1ha2VzIGNvcHlpbmcKKyAgICAgICAgbWVtb3J5IHVubmVjZXNzYXJ5IHdo
ZW4gUmVzb3VyY2VIYW5kbGUgaGFuZHMgZGF0YSBvdmVyIHRvIHRoZSBtZWRpYSBwbGF5ZXIncwor
ICAgICAgICBTdHJlYW1pbmdDbGllbnQuIFRoYW5rcyB0byBEYW4gV2luc2hpcCBmb3IgaGVscCBk
ZXNpZ25pbmcgdGhlIGludGVyZmFjZS4KKworICAgICAgICBObyBiZWhhdmlvdXIgY2hhbmdlLCBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwOgorICAgICAgICAoZ2V0R3N0QnVmZmVy
U2l6ZSk6IEFic3RyYWN0IG9idGFpbmluZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLCBzbyB0aGUg
Y29kZQorICAgICAgICBpcyBjbGVhbmVyIHdoaWxlIHN0aWxsIHdvcmtpbmcgZm9yIGJvdGggR1NU
IDAuMTAgYW5kIDEuMC4KKyAgICAgICAgKHNldEdzdEJ1ZmZlclNpemUpOiBEaXR0bywgYnV0IGZv
ciBzZXR0aW5nIHRoZSBzaXplLgorICAgICAgICAoZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIpOiBE
aXR0bywgYnV0IGZvciBncmFiYmluZyB0aGUgZGF0YSBwb2ludGVyLgorICAgICAgICAobWFwR3N0
QnVmZmVyKTogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHRha2UgY2FyZSBvZiBtYXBwaW5nIHRoZSBi
dWZmZXIgc28gdGhhdAorICAgICAgICB3ZSBjYW4gcHJvdmlkZSB0aGUgZGF0YSBwb2ludGVyIHRv
IFJlc291cmNlSGFuZGxlLgorICAgICAgICAodW5tYXBHc3RCdWZmZXIpOiBDb252ZW5pZW5jZSBt
ZXRob2Qgd2hpY2ggdGFrZXMgY2FyZSBvZiB1bm1hcHBpbmcgdGhlIGJ1ZmZlcgorICAgICAgICBh
bmQgcHJvcGVybHkgZnJlZWluZyB0aGUgR3N0TWFwSW5mby4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoU3RyZWFtaW5nQ2xpZW50KTogTmV3IG1ldGhvZHMuCisgICAgICAgIChfV2ViS2l0V2Vi
U3JjUHJpdmF0ZSk6IFdlIG5vdyBzdG9yZSB0aGUgR3N0QnVmZmVyIHdlIHByb3ZpZGVkIHRoZSBk
YXRhIHBvaW50ZXIgZnJvbQorICAgICAgICBzbyB3ZSBjYW4gbGF0ZXIgdW5tYXAgaXQgYW5kIHB1
c2ggaXQgdG8gdGhlIHBpcGVsaW5lLgorICAgICAgICAod2ViS2l0V2ViU3JjRGlzcG9zZSk6IERl
YWwgd2l0aCB0aGUgR3N0QnVmZmVyIGluIGNhc2UgaXQgZXhpc3RzIHdoZW4gdGhlIHNvdXJjZSBp
cworICAgICAgICBkZXN0cm95ZWQuCisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogQWxzbyBj
bGVhciB0aGUgR3N0QnVmZmVyIGluIHRoaXMgY2FzZS4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEpOiBIYW5kbGUgdGhlIGhhbmQtb3ZlciBvZiB0aGUgYnVmZmVyLgor
ICAgICAgICAoU3RyZWFtaW5nQ2xpZW50OjpnZXRCdWZmZXIpOiBQcm92aWRlIFJlc291cmNlSGFu
ZGxlIHdpdGggYSBuZXcgR3N0QnVmZmVyJ3MgZGF0YSBwb2ludGVyLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFJlc291cmNlSGFu
ZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNv
dXJjZUhhbmRsZUNsaWVudCk6IENvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgdGhlIGJ1ZmZlcgor
ICAgICAgICBtZW1iZXIgdmFyaWFibGUgdG8gMC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQpOiBEZXN0cnVjdG9yIHRvIGZyZWUg
dGhlIGJ1ZmZlciBpZiBpdAorICAgICAgICBoYXMgYmVlbiBhbGxvY2F0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6Z2V0QnVmZmVyKTogRGVmYXVsdCBpbXBsZW1l
bnRhdGlvbiB3aGljaCByZXR1cm5zIGEKKyAgICAgICAgbmV3bHkgYWxsb2NhdGVkIGNoYXIgcG9p
bnRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFu
ZGxlSW50ZXJuYWwpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6IFN0b3JlIGFj
dHVhbCBidWZmZXIgc2l6ZSwgd2hpY2ggaXMgbm8gbG9uZ2VyIGEgY29uc3RhbnQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24pOiBDbGVhciB0aGUgYnVmZmVy
IHBvaW50ZXIsIHRoZSBsaWZlLWN5Y2xlIG9mIHRoZQorICAgICAgICBidWZmZXIgaXMgaGFuZGxl
ZCBieSB0aGUgUmVzb3VyY2VIYW5kbGVDbGllbnQuCisgICAgICAgIChXZWJDb3JlOjpuZXh0TXVs
dGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2spOiBHZXQgYSBuZXcgYnVmZmVyIGZyb20gdGhlIGNs
aWVudCBiZWZvcmUgcmVhZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2FsbGJh
Y2spOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6IERpdHRvLgorCiAy
MDEyLTEyLTIxICBFbGxpb3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgZG9jdW1lbnRGcmFnbWVudElzU2hhZG93Um9vdCB3aXRoIGlzVHJlZVNjb3Bl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyVmVyc2lvbmluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKaW5kZXggMjIyMmQzMjVlOWFjZDNm
MjFlZWNkOTM4NTM3MmY3NTRkYzliZTZmOS4uODM3ZWMyODM4MWE0YzY3ZGIzNzcxYTFjODQ0MThk
ZWNlNjA0NjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcApAQCAtMjUs
NiArMjUsMTAgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CiAKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorY29uc3QgY2hhciogd2Via2l0R3N0
TWFwSW5mb1F1YXJrU3RyaW5nID0gIndlYmtpdC1nc3QtbWFwLWluZm8iOworI2VuZGlmCisKIHZv
aWQgd2Via2l0R3N0T2JqZWN0UmVmU2luayhHc3RPYmplY3QqIGdzdE9iamVjdCkKIHsKICNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQpAQCAtMTE0LDYgKzExOCw2MyBAQCBHc3RCdWZmZXIqIGNyZWF0
ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICByZXR1cm4gbmV3QnVmZmVyOwogfQog
CitpbnQgZ2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQorICAgIHJldHVybiBnc3RfYnVmZmVyX2dldF9zaXplKGJ1ZmZlcik7Cisj
ZWxzZQorICAgIHJldHVybiBHU1RfQlVGRkVSX1NJWkUoYnVmZmVyKTsKKyNlbmRpZgorfQorCit2
b2lkIHNldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKiBidWZmZXIsIGludCBuZXdTaXplKQorewor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgZ3N0X2J1ZmZlcl9zZXRfc2l6ZShidWZmZXIs
IHN0YXRpY19jYXN0PGdzc2l6ZT4obmV3U2l6ZSkpOworI2Vsc2UKKyAgICBHU1RfQlVGRkVSX1NJ
WkUoYnVmZmVyKSA9IHN0YXRpY19jYXN0PGdzaXplPihuZXdTaXplKTsKKyNlbmRpZgorfQorCitj
aGFyKiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyNpZmRl
ZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIHN0YXRpYyBjaGFyKiB3ZWJraXRHc3RNYXBJbmZvUXVh
cmtTdHJpbmcgPSAid2Via2l0LWdzdC1tYXAtaW5mbyI7CisgICAgR3N0TWluaU9iamVjdCogbWlu
aU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAg
R3N0TWFwSW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9v
YmplY3RfZ2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdl
YmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obWFwSW5mby0+ZGF0YSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7CisjZW5kaWYKK30KKworI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikK
K3sKKyAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gZ19zbGljZV9uZXcoR3N0TWFwSW5mbyk7Cisg
ICAgaWYgKCFnc3RfYnVmZmVyX21hcChidWZmZXIsIG1hcEluZm8sIEdTVF9NQVBfV1JJVEUpKSB7
CisgICAgICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKKyAgICAgICAgZ3N0
X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0
TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+
KGJ1ZmZlcik7CisgICAgZ3N0X21pbmlfb2JqZWN0X3NldF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpLCBtYXBJbmZvLCAw
KTsKK30KKwordm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBH
c3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0
Kj4oYnVmZmVyKTsKKyAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFw
SW5mbyo+KGdzdF9taW5pX29iamVjdF9zdGVhbF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zy
b21fc3RhdGljX3N0cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7CisKKyAgICBpZiAoIW1h
cEluZm8pCisgICAgICAgIHJldHVybjsKKworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBt
YXBJbmZvKTsKKyAgICBnX3NsaWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Cit9CisjZW5k
aWYKKwogdm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVs
ZW1lbnRDbGFzcywgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0
IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpCiB7CiAjaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCmluZGV4IDQwODQ0Zjhi
OTIxM2QxMDcwMTBhYzJlOTViYzAxMzhiNTNmZmNjYWUuLmE5ODNiMTA4NWVjMmVjNWRjNDE1ODQ3
NTk0ZWI0ODkyMThlNmEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaApAQCAt
MzYsNiArMzYsMTMgQEAgR1JlZlB0cjxHc3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBh
ZCopOwogYm9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29y
ZTo6SW50U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJh
dG9yLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2Vu
ZGlmCiBHc3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK2ludCBnZXRHc3RC
dWZmZXJTaXplKEdzdEJ1ZmZlciopOwordm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlcios
IGludCBuZXdTaXplKTsKK2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciop
OworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIq
KTsKK3ZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7CisjZW5kaWYKIHZvaWQgc2V0R3N0
RWxlbWVudENsYXNzTWV0YWRhdGEoR3N0RWxlbWVudENsYXNzKiwgY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFy
KiBhdXRob3IpOwogYm9vbCBnc3RPYmplY3RJc0Zsb2F0aW5nKEdzdE9iamVjdCopOwogdm9pZCBu
b3RpZnlHc3RUYWdzT25QYWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEdzdFRhZ0xpc3QqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjgwNGQxZjdl
MDU5ZjMyNWI2ZjQ3ZjU5MzE0MThkMzc1ODMyYjVkNy4uODEyMzlkNWMzYzBmYjhhY2E1ZjhmOTYw
YWFhNmEwMzkwY2NiOTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKQEAgLTMyLDEwICszMiw5IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKLSAKICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgorI2luY2x1ZGUg
PGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KLQog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC01MSw2ICs1MCw5IEBA
IGNsYXNzIFN0cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKworICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldEJ1ZmZlcihpbnQsIGludCop
OworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IGNoYXIqLCBpbnQsIGludCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jik7CkBAIC04NCw2ICs4Niw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAg
Z3VpbnQgZW5vdWdoRGF0YUlEOwogICAgIGd1aW50IHNlZWtJRDsKIAorICAgIEdzdEJ1ZmZlciog
YnVmZmVyOworCiAgICAgLy8gaWNlY2FzdCBzdHVmZgogICAgIGdib29sZWFuIGlyYWRpb01vZGU7
CiAgICAgZ2NoYXIqIGlyYWRpb05hbWU7CkBAIC0xMTUsNiArMTE5LDcgQEAgR1NUX0RFQlVHX0NB
VEVHT1JZX1NUQVRJQyh3ZWJraXRfd2ViX3NyY19kZWJ1Zyk7CiAKIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50ZXIgaWZhY2VEYXRh
KTsKIAorc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRGlzcG9zZShHT2JqZWN0Kik7CiBzdGF0aWMg
dm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiwgZ3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVl
KiwgR1BhcmFtU3BlYyopOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09i
amVjdCosIGd1aW50IHByb3BlcnR5SUQsIEdWYWx1ZSosIEdQYXJhbVNwZWMqKTsKQEAgLTE1MCw2
ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdl
YlNyY0NsYXNzKiBrbGFzcykKICAgICBHT2JqZWN0Q2xhc3MqIG9rbGFzcyA9IEdfT0JKRUNUX0NM
QVNTKGtsYXNzKTsKICAgICBHc3RFbGVtZW50Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NM
QVNTKGtsYXNzKTsKIAorICAgIG9rbGFzcy0+ZGlzcG9zZSA9IHdlYktpdFdlYlNyY0Rpc3Bvc2U7
CiAgICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdlYktpdFdlYlNyY0ZpbmFsaXplOwogICAgIG9rbGFz
cy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0V2ViU3JjU2V0UHJvcGVydHk7CiAgICAgb2tsYXNzLT5n
ZXRfcHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eTsKQEAgLTI3NCw2ICsyODAsMjIg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAg
ICB3ZWJLaXRXZWJTcmNTdG9wKHNyYywgZmFsc2UpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9
IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9
IHNyYy0+cHJpdjsKKworICAgIGlmIChwcml2LT5idWZmZXIpIHsKKyNpZmRlZiBHU1RfQVBJX1ZF
UlNJT05fMQorICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCisg
ICAgICAgIGdzdF9vYmplY3RfdW5yZWYocHJpdi0+YnVmZmVyKTsKKyAgICAgICAgcHJpdi0+YnVm
ZmVyID0gMDsKKyAgICB9CisKKyAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGRp
c3Bvc2UsIChvYmplY3QpKTsKK30KKwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9T
UkMob2JqZWN0KTsKQEAgLTI4Myw3ICszMDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNG
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKIAotICAg
IEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCogKShz
cmMpKSk7CisgICAgR1NUX0NBTExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKG9i
amVjdCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cHNwZWMpCkBAIC0zNTQsNiArMzc2LDE0IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3Ao
V2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wgc2Vla2luZykKIAogICAgIHByaXYtPnBsYXllciA9IDA7
CiAKKyAgICBpZiAocHJpdi0+YnVmZmVyKSB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAg
ICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+YnVmZmVyKTsKKyNlbmRpZgorICAgICAgICBnc3Rf
b2JqZWN0X3VucmVmKHByaXYtPmJ1ZmZlcik7CisgICAgICAgIHByaXYtPmJ1ZmZlciA9IDA7Cisg
ICAgfQorCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7CiAgICAgaWYgKHByaXYtPm5lZWREYXRh
SUQpCiAgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5uZWVkRGF0YUlEKTsKQEAgLTg1Niwz
MSArODg2LDU2IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpCiB7CiAgICAgV2ViS2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OwogCi0gICAgR1NUX0xPR19PQkpFQ1QobV9zcmMs
ICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBsZW5ndGgpOworICAgIEFTU0VSVChwcml2LT5idWZm
ZXIpOworICAgIEFTU0VSVChkYXRhID09IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1
ZmZlcikpOworCisgICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRh
dGEiLCBnZXRHc3RCdWZmZXJTaXplKHByaXYtPmJ1ZmZlcikpOworCisjaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKKyAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCiAKICAg
ICBpZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgewog
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3Jp
bmcgZGF0YSIpOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKHByaXYtPmJ1ZmZlcik7CisgICAg
ICAgIHByaXYtPmJ1ZmZlciA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHc3RC
dWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworICAgIC8v
IFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBidWZmZXIncyBrbm93bGVkZ2Ugb2YgaG93IG11Y2ggZGF0
YSBpdCBjYXJyaWVzLgorICAgIHNldEdzdEJ1ZmZlclNpemUocHJpdi0+YnVmZmVyLCBsZW5ndGgp
OwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKLSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVy
LCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vsc2UKLSAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1
ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0jZW5kaWYKLSAgICBHU1RfQlVGRkVSX09GRlNFVChidWZm
ZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIEdTVF9CVUZGRVJfT0ZGU0VUKHByaXYtPmJ1ZmZlcikg
PSBwcml2LT5vZmZzZXQ7CiAgICAgcHJpdi0+b2Zmc2V0ICs9IGxlbmd0aDsKLSAgICBHU1RfQlVG
RkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9IHByaXYtPm9mZnNldDsKKyAgICBHU1RfQlVGRkVSX09G
RlNFVF9FTkQocHJpdi0+YnVmZmVyKSA9IHByaXYtPm9mZnNldDsKIAotICAgIEdzdEZsb3dSZXR1
cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBidWZmZXIpOwor
ICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBw
c3JjLCBwcml2LT5idWZmZXIpOwogI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKHJl
dCAhPSBHU1RfRkxPV19PSyAmJiByZXQgIT0gR1NUX0ZMT1dfRU9TKQogI2Vsc2UKICAgICBpZiAo
cmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19VTkVYUEVDVEVEKQogI2VuZGlm
CiAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1fc3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDAp
KTsKKworICAgIHByaXYtPmJ1ZmZlciA9IDA7Cit9CisKK2NoYXIqIFN0cmVhbWluZ0NsaWVudDo6
Z2V0QnVmZmVyKGludCByZXF1ZXN0ZWRTaXplLCBpbnQqIGFjdHVhbFNpemUpCit7CisgICAgV2Vi
S2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OworCisgICAgQVNTRVJUKCFwcml2
LT5idWZmZXIpOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRf
YWxsb2MocmVxdWVzdGVkU2l6ZSk7CisKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIG1h
cEdzdEJ1ZmZlcihidWZmZXIpOworI2VuZGlmCisKKyAgICBwcml2LT5idWZmZXIgPSBidWZmZXI7
CisKKyAgICAqYWN0dWFsU2l6ZSA9IGdldEdzdEJ1ZmZlclNpemUoYnVmZmVyKTsKKyAgICByZXR1
cm4gZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoYnVmZmVyKTsKIH0KIAogdm9pZCBTdHJlYW1pbmdD
bGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKaW5kZXggM2Q1NWQ4NjhhOTM2YmNhODI3MDZmYTdiM2FlNTc1YmZiMmI0MjAyNi4uOTBlNjMx
ZTEwODU3ZjliZTRlZGIyYTQ5Mzc5ZDRiM2IxNmYwZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzUs
NiArMzUsMTAgQEAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNl
bmRpZgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q29uZGl0aW9uYWxNYWNy
b3MuaD4KICNlbmRpZgpAQCAtNjMsNyArNjcsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBwdWJsaWM6CisjaWYgVVNF
KFNPVVApCisgICAgICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KCk6IG1fYnVmZmVyKDApIHsgfQor
CisgICAgICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlQ2xpZW50KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZ19mcmVlKG1fYnVmZmVy
KTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyNlbHNlCiAgICAgICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlQ2xpZW50KCkgeyB9Cisj
ZW5kaWYKIAogICAgICAgICAvLyByZXF1ZXN0IG1heSBiZSBtb2RpZmllZAogICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgfQpAQCAt
ODIsNiArOTgsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGFBcnJheShSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIHsgfQogI2Vu
ZGlmCiAKKyNpZiBVU0UoU09VUCkKKyAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRCdWZmZXIoaW50
IHJlcXVlc3RlZExlbmd0aCwgaW50KiBhY3R1YWxMZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgICphY3R1YWxMZW5ndGggPSByZXF1ZXN0ZWRMZW5ndGg7CisKKyAgICAgICAgICAgIGlmICgh
bV9idWZmZXIpCisgICAgICAgICAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
Z19tYWxsb2MocmVxdWVzdGVkTGVuZ3RoKSk7CisKKyAgICAgICAgICAgIHJldHVybiBtX2J1ZmZl
cjsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CkBAIC0xMDcsNiArMTM1LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgdmlydHVh
bCBBc3luY0ZpbGVTdHJlYW0qIGNyZWF0ZUFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50
KikgeyByZXR1cm4gMDsgfQogI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKK3ByaXZhdGU6CisgICAg
ICAgIGNoYXIqIG1fYnVmZmVyOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApp
bmRleCBiN2Y2Yzk1NzMzYWY2ODM1ZjQ4M2I5Mjg2MzBhNjViNjFlOGZmYzYyLi43NzFjYzFlOGIx
MmE0YTA5YThhMzVkMDZjMzVkNmQwMzYxNTA0ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTEy
LDYgKzExMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoU09VUCkKICAgICAgICAg
ICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fYnVmZmVyKDApCisgICAg
ICAgICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICAgICAgICAgLCBtX2JvZHlTaXplKDApCiAg
ICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCiAjZW5kaWYKQEAgLTE5OCw2ICsxOTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdSZWZQdHI8R0FzeW5jUmVzdWx0PiBtX2Rl
ZmVycmVkUmVzdWx0OwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fdGltZW91dFNvdXJjZTsK
ICAgICAgICAgY2hhciogbV9idWZmZXI7CisgICAgICAgIGludCBtX2J1ZmZlclNpemU7CiAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbV9ib2R5U2l6ZTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2Jv
ZHlEYXRhU2VudDsKICAgICAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRleHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IGE0MDM5M2Q4ZWMwMmFiYjQzNjU2NjM0ZGZmNjg0
ZDYxNWFkOWJiZmEuLjQwMzk3NzRmZGE5YjNhNTc5N2MyNDBlM2FlMzM0ODZhMmMyZjBhZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC00NzUsOCArNDc1LDggQEAgc3RhdGljIHZvaWQgY2xl
YW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNE
ZXN0cm95aW4KICAgICB9CiAKICAgICBpZiAoZC0+bV9idWZmZXIpIHsKLSAgICAgICAgZ19zbGlj
ZV9mcmVlMShSRUFEX0JVRkZFUl9TSVpFLCBkLT5tX2J1ZmZlcik7CiAgICAgICAgIGQtPm1fYnVm
ZmVyID0gMDsKKyAgICAgICAgZC0+bV9idWZmZXJTaXplID0gMDsKICAgICB9CiAKICAgICBpZiAo
ZC0+bV90aW1lb3V0U291cmNlKSB7CkBAIC01NDgsNyArNTQ4LDkgQEAgc3RhdGljIHZvaWQgbmV4
dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3lu
Y1Jlc3VsdCoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfaW5wdXRfc3RyZWFtX3Jl
YWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVS
X1NJWkUsCisgICAgZC0+bV9idWZmZXIgPSBjbGllbnQtPmdldEJ1ZmZlcihSRUFEX0JVRkZFUl9T
SVpFLCAmZC0+bV9idWZmZXJTaXplKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMo
ZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwKICAg
ICAgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2Fs
bGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAKQEAgLTU3OCw4ICs1ODAsNiBAQCBzdGF0aWMgdm9p
ZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3Bv
aW50ZXIgZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGQtPm1fYnVmZmVyID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KGdfc2xpY2VfYWxsb2MoUkVBRF9CVUZGRVJfU0laRSkpOwotCiAg
ICAgaWYgKHNvdXBNZXNzYWdlKSB7CiAgICAgICAgIGlmIChoYW5kbGUtPnNob3VsZENvbnRlbnRT
bmlmZigpICYmIHNvdXBNZXNzYWdlLT5zdGF0dXNfY29kZSAhPSBTT1VQX1NUQVRVU19OT1RfTU9E
SUZJRUQpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNuaWZmZWRUeXBlID0gc291cF9yZXF1
ZXN0X2dldF9jb250ZW50X3R5cGUoZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSk7CkBAIC02MTUsNyAr
NjE1LDEyIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgIH0KIAogICAgIGQtPm1faW5wdXRT
dHJlYW0gPSBpbnB1dFN0cmVhbTsKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1f
aW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLAorCisgICAg
QVNTRVJUKCFkLT5tX2J1ZmZlcik7CisKKyAgICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVm
ZmVyKFJFQURfQlVGRkVSX1NJWkUsICZkLT5tX2J1ZmZlclNpemUpOworCisgICAgZ19pbnB1dF9z
dHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgZC0+
bV9idWZmZXJTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19QUklPUklUWV9E
RUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQo
KSk7CiB9CiAKQEAgLTEyNzcsNyArMTI4Miw5IEBAIHN0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhH
T2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9p
bnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJ
VFlfREVGQVVMVCwKKyAgICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVG
RkVSX1NJWkUsICZkLT5tX2J1ZmZlclNpemUpOworCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9h
c3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXpl
LCBHX1BSSU9SSVRZX0RFRkFVTFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5t
X2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183041</attachid>
            <date>2013-01-16 15:16:07 -0800</date>
            <delta_ts>2013-01-20 14:37:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20130116211308.patch</filename>
            <type>text/plain</type>
            <size>19975</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmY0NDRhNGQ1ZTlmYjk2
MmMyMDJjYmJiY2VkY2Q1NzU3MGE1NmQ5Mi4uYTIyNThmOGZhMGY2MDljZDc2NThiNGY2MmRkOWFj
ZTkxNzIzMGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMyw2ICszLDU3IEBACiAgICAgICAgIFtHU3RyZWFt
ZXJdW1NvdXBdIExldCBHU3RyZWFtZXIgcHJvdmlkZSB0aGUgYnVmZmVyIGRhdGEgaXMgZG93bmxv
YWRlZCB0bywgdG8gYXZvaWQgY29weWluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NTUyCiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUg
Tm9ybWFuZC4KKworICAgICAgICBNYWtlcyBpdCBwb3NzaWJsZSBmb3IgdGhlIEdTdHJlYW1lciBt
ZWRpYSBiYWNrZW5kIHRvIHByb3ZpZGUgdGhlIGJ1ZmZlciB0byB3aGljaAorICAgICAgICB0aGUg
U291cCBuZXR3b3JraW5nIGJhY2tlbmQgd2lsbCB1c2UgdG8gZG93bmxvYWQgZGF0YSB0by4gVGhp
cyBtYWtlcyBjb3B5aW5nCisgICAgICAgIG1lbW9yeSB1bm5lY2Vzc2FyeSB3aGVuIFJlc291cmNl
SGFuZGxlIGhhbmRzIGRhdGEgb3ZlciB0byB0aGUgbWVkaWEgcGxheWVyJ3MKKyAgICAgICAgU3Ry
ZWFtaW5nQ2xpZW50LiBUaGFua3MgdG8gRGFuIFdpbnNoaXAgZm9yIGhlbHAgZGVzaWduaW5nIHRo
ZSBpbnRlcmZhY2UuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5nZSwgY292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJWZXJzaW9uaW5nLmNwcDoKKyAgICAgICAgKGdldEdzdEJ1ZmZlclNpemUpOiBBYnN0
cmFjdCBvYnRhaW5pbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciwgc28gdGhlIGNvZGUKKyAgICAg
ICAgaXMgY2xlYW5lciB3aGlsZSBzdGlsbCB3b3JraW5nIGZvciBib3RoIEdTVCAwLjEwIGFuZCAx
LjAuCisgICAgICAgIChzZXRHc3RCdWZmZXJTaXplKTogRGl0dG8sIGJ1dCBmb3Igc2V0dGluZyB0
aGUgc2l6ZS4KKyAgICAgICAgKGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKTogRGl0dG8sIGJ1dCBm
b3IgZ3JhYmJpbmcgdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAgKG1hcEdzdEJ1ZmZlcik6IENv
bnZlbmllbmNlIG1ldGhvZCB0byB0YWtlIGNhcmUgb2YgbWFwcGluZyB0aGUgYnVmZmVyIHNvIHRo
YXQKKyAgICAgICAgd2UgY2FuIHByb3ZpZGUgdGhlIGRhdGEgcG9pbnRlciB0byBSZXNvdXJjZUhh
bmRsZS4KKyAgICAgICAgKHVubWFwR3N0QnVmZmVyKTogQ29udmVuaWVuY2UgbWV0aG9kIHdoaWNo
IHRha2VzIGNhcmUgb2YgdW5tYXBwaW5nIHRoZSBidWZmZXIKKyAgICAgICAgYW5kIHByb3Blcmx5
IGZyZWVpbmcgdGhlIEdzdE1hcEluZm8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFN0cmVh
bWluZ0NsaWVudCk6IE5ldyBtZXRob2RzLgorICAgICAgICAoX1dlYktpdFdlYlNyY1ByaXZhdGUp
OiBXZSBub3cgc3RvcmUgdGhlIEdzdEJ1ZmZlciB3ZSBwcm92aWRlZCB0aGUgZGF0YSBwb2ludGVy
IGZyb20KKyAgICAgICAgc28gd2UgY2FuIGxhdGVyIHVubWFwIGl0IGFuZCBwdXNoIGl0IHRvIHRo
ZSBwaXBlbGluZS4KKyAgICAgICAgKHdlYktpdFdlYlNyY0Rpc3Bvc2UpOiBEZWFsIHdpdGggdGhl
IEdzdEJ1ZmZlciBpbiBjYXNlIGl0IGV4aXN0cyB3aGVuIHRoZSBzb3VyY2UgaXMKKyAgICAgICAg
ZGVzdHJveWVkLgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6IEFsc28gY2xlYXIgdGhlIEdz
dEJ1ZmZlciBpbiB0aGlzIGNhc2UuCisgICAgICAgIChTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKTogSGFuZGxlIHRoZSBoYW5kLW92ZXIgb2YgdGhlIGJ1ZmZlci4KKyAgICAgICAgKFN0
cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyKTogUHJvdmlkZSBSZXNvdXJjZUhhbmRsZSB3aXRoIGEg
bmV3IEdzdEJ1ZmZlcidzIGRhdGEgcG9pbnRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChSZXNvdXJjZUhhbmRsZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVD
bGllbnQpOiBDb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIHRoZSBidWZmZXIKKyAgICAgICAgbWVt
YmVyIHZhcmlhYmxlIHRvIDAuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6flJlc291cmNlSGFuZGxlQ2xpZW50KTogRGVzdHJ1Y3RvciB0byBmcmVlIHRoZSBidWZmZXIg
aWYgaXQKKyAgICAgICAgaGFzIGJlZW4gYWxsb2NhdGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmdldEJ1ZmZlcik6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hp
Y2ggcmV0dXJucyBhCisgICAgICAgIG5ld2x5IGFsbG9jYXRlZCBjaGFyIHBvaW50ZXIuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFs
KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOiBTdG9yZSBhY3R1YWwgYnVmZmVy
IHNpemUsIHdoaWNoIGlzIG5vIGxvbmdlciBhIGNvbnN0YW50LgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKTogQ2xlYXIgdGhlIGJ1ZmZlciBwb2ludGVyLCB0
aGUgbGlmZS1jeWNsZSBvZiB0aGUKKyAgICAgICAgYnVmZmVyIGlzIGhhbmRsZWQgYnkgdGhlIFJl
c291cmNlSGFuZGxlQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6bmV4dE11bHRpcGFydFJlc3Bv
bnNlUGFydENhbGxiYWNrKTogR2V0IGEgbmV3IGJ1ZmZlciBmcm9tIHRoZSBjbGllbnQgYmVmb3Jl
IHJlYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVzdENhbGxiYWNrKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOiBEaXR0by4KKworMjAxMy0wMS0xNiAg
R3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CisK
KyAgICAgICAgW0dTdHJlYW1lcl1bU291cF0gTGV0IEdTdHJlYW1lciBwcm92aWRlIHRoZSBidWZm
ZXIgZGF0YSBpcyBkb3dubG9hZGVkIHRvLCB0byBhdm9pZCBjb3B5aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU1NTIKKwogICAgICAgICBSZXZl
cnRpbmcgMTM5ODc3LiBJdCBtYWRlIGEgY291cGxlIG9mIEFQSSB0ZXN0cyBmYWlsLgogCiAgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3Bw
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclZlcnNpb25pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCmluZGV4IDM0MGE2NDUyMDE5ZWUz
NWY3ZDBiZTJiNWU2NDNjMTk2OTJmMTc4OTkuLjUxMmI0ZTZhZWZmY2M5OWM5NzBlMmQyNTM3MmUz
MjExNDg0NGU4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSwgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MzEsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFubmVsLmg+CiAjZW5k
aWYKIAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCitjb25zdCBjaGFyKiB3ZWJraXRHc3RNYXBJ
bmZvUXVhcmtTdHJpbmcgPSAid2Via2l0LWdzdC1tYXAtaW5mbyI7CisjZW5kaWYKKwogdm9pZCB3
ZWJraXRHc3RPYmplY3RSZWZTaW5rKEdzdE9iamVjdCogZ3N0T2JqZWN0KQogewogI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCkBAIC0xMjEsNiArMTI2LDYyIEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0
QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVybiBuZXdCdWZmZXI7CiB9CiAKK2lu
dCBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCisgICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVmZmVyKTsKKyNlbHNl
CisgICAgcmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworI2VuZGlmCit9CisKK3ZvaWQg
c2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgaW50IG5ld1NpemUpCit7CisjaWZk
ZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc3RfYnVmZmVyX3NldF9zaXplKGJ1ZmZlciwgc3Rh
dGljX2Nhc3Q8Z3NzaXplPihuZXdTaXplKSk7CisjZWxzZQorICAgIEdTVF9CVUZGRVJfU0laRShi
dWZmZXIpID0gc3RhdGljX2Nhc3Q8Z3NpemU+KG5ld1NpemUpOworI2VuZGlmCit9CisKK2NoYXIq
IGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lmZGVmIEdT
VF9BUElfVkVSU0lPTl8xCisgICAgR3N0TWluaU9iamVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAgR3N0TWFwSW5mbyogbWFwSW5m
byA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhKG1p
bmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFy
a1N0cmluZykpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWFwSW5mby0+
ZGF0YSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihHU1RfQlVG
RkVSX0RBVEEoYnVmZmVyKSk7CisjZW5kaWYKK30KKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8x
Cit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBHc3RNYXBJbmZv
KiBtYXBJbmZvID0gZ19zbGljZV9uZXcoR3N0TWFwSW5mbyk7CisgICAgaWYgKCFnc3RfYnVmZmVy
X21hcChidWZmZXIsIG1hcEluZm8sIEdTVF9NQVBfV1JJVEUpKSB7CisgICAgICAgIGdfc2xpY2Vf
ZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZm
ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0TWluaU9iamVjdCogbWluaU9i
amVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAgZ3N0
X21pbmlfb2JqZWN0X3NldF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0
cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpLCBtYXBJbmZvLCAwKTsKK30KKwordm9pZCB1bm1h
cEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBHc3RNaW5pT2JqZWN0KiBtaW5p
T2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAgICBH
c3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29i
amVjdF9zdGVhbF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZygi
d2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7CisKKyAgICBpZiAoIW1hcEluZm8pCisgICAgICAgIHJl
dHVybjsKKworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZvKTsKKyAgICBnX3Ns
aWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Cit9CisjZW5kaWYKKwogdm9pZCBzZXRHc3RF
bGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRDbGFzcywgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
LCBjb25zdCBjaGFyKiBhdXRob3IpCiB7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJWZXJzaW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCmluZGV4IDIzYzM0NjcwMjdjNWJjOWY0MTI5YmI0ZDg0
M2I0MjgwNWExZWM2YjUuLmQ5YjhlMWUxNDYxZDVmY2RiZDAwYTQzNjk2ZDY1MTdiYWFmYmYyZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJWZXJzaW9uaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaApAQCAtMzYsNiArMzYsMTMgQEAgR1Jl
ZlB0cjxHc3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBhZCopOwogYm9vbCBnZXRWaWRl
b1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50U2l6ZSYsIEdzdFZp
ZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBpbnQmIHBpeGVsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2VuZGlmCiBHc3RCdWZmZXIqIGNy
ZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK2ludCBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZl
ciopOwordm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciosIGludCBuZXdTaXplKTsKK2No
YXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciopOworI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK3ZvaWQgdW5tYXBHc3RC
dWZmZXIoR3N0QnVmZmVyKik7CisjZW5kaWYKIHZvaWQgc2V0R3N0RWxlbWVudENsYXNzTWV0YWRh
dGEoR3N0RWxlbWVudENsYXNzKiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05h
bWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpOwogYm9vbCBn
c3RPYmplY3RJc0Zsb2F0aW5nKEdzdE9iamVjdCopOwogdm9pZCBub3RpZnlHc3RUYWdzT25QYWQo
R3N0RWxlbWVudCosIEdzdFBhZCosIEdzdFRhZ0xpc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjgwNGQxZjdlMDU5ZjMyNWI2ZjQ3ZjU5MzE0
MThkMzc1ODMyYjVkNy4uYTI4YzE2NTA4NzYyMDVhZDQxM2NjM2RlNjI2NDZiM2M5M2EyZjU4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBTZWJhc3RpYW4gRHLDtmdl
IDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTMgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDEwICszMyw5IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKLSAKICNpbmNsdWRlIDxn
c3QvYXBwL2dzdGFwcHNyYy5oPgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3Qv
cGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KLQogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HUmVmUHRyLmg+CkBAIC01MSw2ICs1MSw5IEBAIGNsYXNzIFN0cmVhbWluZ0NsaWVudCA6IHB1
YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgICAgICB2aXJ0
dWFsIGNoYXIqIGdldEJ1ZmZlcihpbnQsIGludCopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCBpbnQsIGludCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91
YmxlIC8qZmluaXNoVGltZSovKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkBAIC04NCw2ICs4Nyw4IEBAIHN0cnVj
dCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgZ3VpbnQgZW5vdWdoRGF0YUlEOwogICAgIGd1
aW50IHNlZWtJRDsKIAorICAgIEdzdEJ1ZmZlciogYnVmZmVyOworCiAgICAgLy8gaWNlY2FzdCBz
dHVmZgogICAgIGdib29sZWFuIGlyYWRpb01vZGU7CiAgICAgZ2NoYXIqIGlyYWRpb05hbWU7CkBA
IC0xMTUsNiArMTIwLDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3ZWJraXRfd2ViX3Ny
Y19kZWJ1Zyk7CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2lu
dGVyIGdJZmFjZSwgZ3BvaW50ZXIgaWZhY2VEYXRhKTsKIAorc3RhdGljIHZvaWQgd2ViS2l0V2Vi
U3JjRGlzcG9zZShHT2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShH
T2JqZWN0Kik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0Kiwg
Z3VpbnQgcHJvcGVydHlJRCwgY29uc3QgR1ZhbHVlKiwgR1BhcmFtU3BlYyopOwogc3RhdGljIHZv
aWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVjdCosIGd1aW50IHByb3BlcnR5SUQsIEdW
YWx1ZSosIEdQYXJhbVNwZWMqKTsKQEAgLTE1MCw2ICsxNTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktpdFdlYlNyY0NsYXNzKiBrbGFzcykKICAgICBHT2Jq
ZWN0Q2xhc3MqIG9rbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKICAgICBHc3RFbGVtZW50
Q2xhc3MqIGVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTKGtsYXNzKTsKIAorICAgIG9rbGFzcy0+
ZGlzcG9zZSA9IHdlYktpdFdlYlNyY0Rpc3Bvc2U7CiAgICAgb2tsYXNzLT5maW5hbGl6ZSA9IHdl
YktpdFdlYlNyY0ZpbmFsaXplOwogICAgIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2ViS2l0V2Vi
U3JjU2V0UHJvcGVydHk7CiAgICAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNH
ZXRQcm9wZXJ0eTsKQEAgLTI3NCw2ICsyODEsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9z
cmNfaW5pdChXZWJLaXRXZWJTcmMqIHNyYykKICAgICB3ZWJLaXRXZWJTcmNTdG9wKHNyYywgZmFs
c2UpOwogfQogCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNEaXNwb3NlKEdPYmplY3QqIG9iamVj
dCkKK3sKKyAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7Cisg
ICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKKworICAgIGlmIChwcml2
LT5idWZmZXIpIHsKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgICAgICB1bm1hcEdzdEJ1
ZmZlcihwcml2LT5idWZmZXIpOworI2VuZGlmCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYocHJp
di0+YnVmZmVyKTsKKyAgICAgICAgcHJpdi0+YnVmZmVyID0gMDsKKyAgICB9CisKKyAgICBHU1Rf
Q0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKK30KKwogc3Rh
dGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdl
YktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsKQEAgLTI4Myw3ICszMDYs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAK
ICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKIAotICAgIEdTVF9DQUxMX1BBUkVOVChHX09CSkVDVF9D
TEFTUywgZmluYWxpemUsICgoR09iamVjdCogKShzcmMpKSk7CisgICAgR1NUX0NBTExfUEFSRU5U
KEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKG9iamVjdCkpOwogfQogCiBzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29u
c3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC0zNTQsNiArMzc3LDE0IEBA
IHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJvb2wgc2Vl
a2luZykKIAogICAgIHByaXYtPnBsYXllciA9IDA7CiAKKyAgICBpZiAocHJpdi0+YnVmZmVyKSB7
CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+
YnVmZmVyKTsKKyNlbmRpZgorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHByaXYtPmJ1ZmZlcik7
CisgICAgICAgIHByaXYtPmJ1ZmZlciA9IDA7CisgICAgfQorCiAgICAgR1NUX09CSkVDVF9MT0NL
KHNyYyk7CiAgICAgaWYgKHByaXYtPm5lZWREYXRhSUQpCiAgICAgICAgIGdfc291cmNlX3JlbW92
ZShwcml2LT5uZWVkRGF0YUlEKTsKQEAgLTg1NiwzMSArODg3LDU2IEBAIHZvaWQgU3RyZWFtaW5n
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFy
KiBkYXRhLCBpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2
OwogCi0gICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBs
ZW5ndGgpOworICAgIEFTU0VSVChwcml2LT5idWZmZXIpOworICAgIEFTU0VSVChkYXRhID09IGdl
dEdzdEJ1ZmZlckRhdGFQb2ludGVyKHByaXYtPmJ1ZmZlcikpOworCisgICAgR1NUX0xPR19PQkpF
Q1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBnZXRHc3RCdWZmZXJTaXplKHByaXYt
PmJ1ZmZlcikpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICB1bm1hcEdzdEJ1ZmZl
cihwcml2LT5idWZmZXIpOworI2VuZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEIHx8IGhhbmRs
ZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKG1f
c3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOworICAgICAgICBnc3RfYnVm
ZmVyX3VucmVmKHByaXYtPmJ1ZmZlcik7CisgICAgICAgIHByaXYtPmJ1ZmZlciA9IDA7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJf
bmV3X2FuZF9hbGxvYyhsZW5ndGgpOworICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBidWZm
ZXIncyBrbm93bGVkZ2Ugb2YgaG93IG11Y2ggZGF0YSBpdCBjYXJyaWVzLgorICAgIHNldEdzdEJ1
ZmZlclNpemUocHJpdi0+YnVmZmVyLCBsZW5ndGgpOwogCi0jaWZkZWYgR1NUX0FQSV9WRVJTSU9O
XzEKLSAgICBnc3RfYnVmZmVyX2ZpbGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOwotI2Vsc2UK
LSAgICBtZW1jcHkoR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7Ci0jZW5k
aWYKLSAgICBHU1RfQlVGRkVSX09GRlNFVChidWZmZXIpID0gcHJpdi0+b2Zmc2V0OworICAgIEdT
VF9CVUZGRVJfT0ZGU0VUKHByaXYtPmJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CiAgICAgcHJpdi0+
b2Zmc2V0ICs9IGxlbmd0aDsKLSAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9IHBy
aXYtPm9mZnNldDsKKyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQocHJpdi0+YnVmZmVyKSA9IHBy
aXYtPm9mZnNldDsKIAotICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9i
dWZmZXIocHJpdi0+YXBwc3JjLCBidWZmZXIpOworICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0
X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBwcml2LT5idWZmZXIpOwogI2lmZGVm
IEdTVF9BUElfVkVSU0lPTl8xCiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSyAmJiByZXQgIT0g
R1NUX0ZMT1dfRU9TKQogI2Vsc2UKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAh
PSBHU1RfRkxPV19VTkVYUEVDVEVEKQogI2VuZGlmCiAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9S
KG1fc3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDApKTsKKworICAgIHByaXYtPmJ1ZmZlciA9IDA7
Cit9CisKK2NoYXIqIFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyKGludCByZXF1ZXN0ZWRTaXpl
LCBpbnQqIGFjdHVhbFNpemUpCit7CisgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IG1f
c3JjLT5wcml2OworCisgICAgQVNTRVJUKCFwcml2LT5idWZmZXIpOworCisgICAgR3N0QnVmZmVy
KiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MocmVxdWVzdGVkU2l6ZSk7CisKKyNp
ZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIG1hcEdzdEJ1ZmZlcihidWZmZXIpOworI2VuZGlm
CisKKyAgICBwcml2LT5idWZmZXIgPSBidWZmZXI7CisKKyAgICAqYWN0dWFsU2l6ZSA9IGdldEdz
dEJ1ZmZlclNpemUoYnVmZmVyKTsKKyAgICByZXR1cm4gZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIo
YnVmZmVyKTsKIH0KIAogdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqLCBkb3VibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggM2Q1NWQ4NjhhOTM2YmNhODI3
MDZmYTdiM2FlNTc1YmZiMmI0MjAyNi4uOTBlNjMxZTEwODU3ZjliZTRlZGIyYTQ5Mzc5ZDRiM2Ix
NmYwZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzUsNiArMzUsMTAgQEAKICNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisjaW5j
bHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdP
UkspCiAjaW5jbHVkZSA8Q29uZGl0aW9uYWxNYWNyb3MuaD4KICNlbmRpZgpAQCAtNjMsNyArNjcs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIFJlc291cmNlSGFuZGxl
Q2xpZW50IHsKICAgICBwdWJsaWM6CisjaWYgVVNFKFNPVVApCisgICAgICAgIFJlc291cmNlSGFu
ZGxlQ2xpZW50KCk6IG1fYnVmZmVyKDApIHsgfQorCisgICAgICAgIHZpcnR1YWwgflJlc291cmNl
SGFuZGxlQ2xpZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fYnVmZmVyKSB7Cisg
ICAgICAgICAgICAgICAgZ19mcmVlKG1fYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZl
ciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIHZpcnR1YWwg
flJlc291cmNlSGFuZGxlQ2xpZW50KCkgeyB9CisjZW5kaWYKIAogICAgICAgICAvLyByZXF1ZXN0
IG1heSBiZSBtb2RpZmllZAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
LypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgfQpAQCAtODIsNiArOTgsMTggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShSZXNvdXJj
ZUhhbmRsZSosIENGQXJyYXlSZWYpIHsgfQogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyAgICAg
ICAgdmlydHVhbCBjaGFyKiBnZXRCdWZmZXIoaW50IHJlcXVlc3RlZExlbmd0aCwgaW50KiBhY3R1
YWxMZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAgICphY3R1YWxMZW5ndGggPSByZXF1ZXN0
ZWRMZW5ndGg7CisKKyAgICAgICAgICAgIGlmICghbV9idWZmZXIpCisgICAgICAgICAgICAgICAg
bV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MocmVxdWVzdGVkTGVuZ3RoKSk7
CisKKyAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKKyAgICAgICAgfQorI2VuZGlmCisKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFu
ZGxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgeyB9CkBAIC0xMDcsNiArMTM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNp
ZiBFTkFCTEUoQkxPQikKICAgICAgICAgdmlydHVhbCBBc3luY0ZpbGVTdHJlYW0qIGNyZWF0ZUFz
eW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50KikgeyByZXR1cm4gMDsgfQogI2VuZGlmCisK
KyNpZiBVU0UoU09VUCkKK3ByaXZhdGU6CisgICAgICAgIGNoYXIqIG1fYnVmZmVyOworI2VuZGlm
CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCBiODQ5NTZiYTQyY2FhMzRiZTcxMDc3
MTcxZTIyYjA5Y2QzZmM0NGIyLi5hNDNhZmQ3YWI4MWIyMjYyMjExMDRhNmVmOGM3YTAxOGQwZTMx
YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTEzLDYgKzExMyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICNpZiBVU0UoU09VUCkKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCiAg
ICAgICAgICAgICAsIG1fYnVmZmVyKDApCisgICAgICAgICAgICAsIG1fYnVmZmVyU2l6ZSgwKQog
ICAgICAgICAgICAgLCBtX2JvZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50
KDApCiAgICAgICAgICAgICAsIG1fcmVkaXJlY3RDb3VudCgwKQpAQCAtMjAwLDYgKzIwMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgR1JlZlB0cjxHQXN5bmNSZXN1bHQ+IG1fZGVm
ZXJyZWRSZXN1bHQ7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90aW1lb3V0U291cmNlOwog
ICAgICAgICBjaGFyKiBtX2J1ZmZlcjsKKyAgICAgICAgaW50IG1fYnVmZmVyU2l6ZTsKICAgICAg
ICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9k
eURhdGFTZW50OwogICAgICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggYzdhYzAzNDU4MTU5MzE5MzZjODE5NjU1MGI5MmYy
ZTI3NTg3MmY5My4uOTRmODQ1ZjJiYTVjMmIyZGE3NjM1NDE1ZWY3OTI1OThjN2Q5NzAzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlSGFuZGxlU291cC5jcHAKQEAgLTU2MCw4ICs1NjAsOCBAQCBzdGF0aWMgdm9pZCBjbGVh
bnVwU291cFJlcXVlc3RPcGVyYXRpb24oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rl
c3Ryb3lpbgogICAgIH0KIAogICAgIGlmIChkLT5tX2J1ZmZlcikgewotICAgICAgICBnX3NsaWNl
X2ZyZWUxKFJFQURfQlVGRkVSX1NJWkUsIGQtPm1fYnVmZmVyKTsKICAgICAgICAgZC0+bV9idWZm
ZXIgPSAwOworICAgICAgICBkLT5tX2J1ZmZlclNpemUgPSAwOwogICAgIH0KIAogICAgIGlmIChk
LT5tX3RpbWVvdXRTb3VyY2UpIHsKQEAgLTYyOCwxMiArNjI4LDE3IEBAIHN0YXRpYyB2b2lkIG5l
eHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhHT2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5
bmNSZXN1bHQqCiAKICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCks
IGQtPm1fcmVzcG9uc2UpOwogCisgICAgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlIG1heSBjYXVzZSB0
aGUgY2xpZW50IHRvIGJlIGNoYW5nZWQuCisgICAgY2xpZW50ID0gZC0+Y2xpZW50KCk7CisKICAg
ICBpZiAoZC0+bV9jYW5jZWxsZWQgfHwgIWNsaWVudCkgewogICAgICAgICBjbGVhbnVwU291cFJl
cXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+
bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsCisgICAgZC0+bV9idWZmZXIgPSBjbGllbnQtPmdl
dEJ1ZmZlcihSRUFEX0JVRkZFUl9TSVpFLCAmZC0+bV9idWZmZXJTaXplKTsKKworICAgIGdfaW5w
dXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIs
IGQtPm1fYnVmZmVyU2l6ZSwKICAgICAgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNl
bGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAKQEAgLTY5Miwx
MyArNjk3LDE0IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBkYXRhKQogCiAgICAgY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UoaGFuZGxlLmdldCgpLCBkLT5tX3Jlc3BvbnNlKTsKIAotICAgIGlmIChkLT5t
X2NhbmNlbGxlZCkgeworICAgIC8vIGRpZFJlY2VpdmVSZXNwb25zZSBtYXkgY2F1c2UgdGhlIGNs
aWVudCB0byBiZSBjaGFuZ2VkLgorICAgIGNsaWVudCA9IGQtPmNsaWVudCgpOworCisgICAgaWYg
KGQtPm1fY2FuY2VsbGVkIHx8ICFjbGllbnQpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0
T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBk
LT5tX2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihnX3NsaWNlX2FsbG9jKFJFQURfQlVGRkVS
X1NJWkUpKTsKLQogICAgIGlmIChzb3VwTWVzc2FnZSAmJiBkLT5tX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpIHsKICAgICAgICAgZC0+bV9tdWx0aXBhcnRJbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihz
b3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV3KHNvdXBNZXNzYWdlLCBpbnB1dFN0cmVhbS5n
ZXQoKSkpOwogICAgICAgICBzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV4dF9wYXJ0X2Fz
eW5jKGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCksIEdfUFJJT1JJVFlfREVGQVVMVCwK
QEAgLTcwNyw3ICs3MTMsMTIgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2Jq
ZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgfQogCiAgICAg
ZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0U3RyZWFtOwotICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRf
YXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJ
WkUsCisKKyAgICBBU1NFUlQoIWQtPm1fYnVmZmVyKTsKKworICAgIGQtPm1fYnVmZmVyID0gY2xp
ZW50LT5nZXRCdWZmZXIoUkVBRF9CVUZGRVJfU0laRSwgJmQtPm1fYnVmZmVyU2l6ZSk7CisKKyAg
ICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1f
YnVmZmVyLCBkLT5tX2J1ZmZlclNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
X1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFjaywg
aGFuZGxlLmdldCgpKTsKIH0KIApAQCAtMTM1NywxMiArMTM2OCwxNCBAQCBzdGF0aWMgdm9pZCBy
ZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdwb2ludGVy
IGRhdGEpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShoYW5kbGUuZ2V0KCksIGQtPm1fYnVm
ZmVyLCBieXRlc1JlYWQsIGJ5dGVzUmVhZCk7CiAKICAgICAvLyBkaWRSZWNlaXZlRGF0YSBtYXkg
Y2FuY2VsIHRoZSBsb2FkLCB3aGljaCBtYXkgcmVsZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UuCi0g
ICAgaWYgKGQtPm1fY2FuY2VsbGVkIHx8ICFjbGllbnQpIHsKKyAgICBpZiAoZC0+bV9jYW5jZWxs
ZWQgfHwgIWhhbmRsZS0+Y2xpZW50KCkpIHsKICAgICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3Bl
cmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnX2lu
cHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVy
LCBSRUFEX0JVRkZFUl9TSVpFLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgZC0+bV9idWZmZXIg
PSBjbGllbnQtPmdldEJ1ZmZlcihSRUFEX0JVRkZFUl9TSVpFLCAmZC0+bV9idWZmZXJTaXplKTsK
KworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwg
ZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwgR19QUklPUklUWV9ERUZBVUxULAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVhZENhbGxi
YWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183688</attachid>
            <date>2013-01-20 14:37:18 -0800</date>
            <delta_ts>2013-01-21 12:54:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20130120203414.patch</filename>
            <type>text/plain</type>
            <size>20569</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZjRjYzYwMTdkZWYy
OThlNTczNjU1ZTA1ZmQ3OWY5MjgzYzJlZS4uYjNjNWViY2MyMGI3MTI2ZDhkYmViOGJjYWQ4YWQ0
ZjVhOTcxYzA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAxLTE2ICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFBoaWxpcHBlIE5vcm1hbmQuCisKKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgZm9yIHRo
ZSBHU3RyZWFtZXIgbWVkaWEgYmFja2VuZCB0byBwcm92aWRlIHRoZSBidWZmZXIgdG8gd2hpY2gK
KyAgICAgICAgdGhlIFNvdXAgbmV0d29ya2luZyBiYWNrZW5kIHdpbGwgdXNlIHRvIGRvd25sb2Fk
IGRhdGEgdG8uIFRoaXMgbWFrZXMgY29weWluZworICAgICAgICBtZW1vcnkgdW5uZWNlc3Nhcnkg
d2hlbiBSZXNvdXJjZUhhbmRsZSBoYW5kcyBkYXRhIG92ZXIgdG8gdGhlIG1lZGlhIHBsYXllcidz
CisgICAgICAgIFN0cmVhbWluZ0NsaWVudC4gVGhhbmtzIHRvIERhbiBXaW5zaGlwIGZvciBoZWxw
IGRlc2lnbmluZyB0aGUgaW50ZXJmYWNlLgorCisgICAgICAgIE5vIGJlaGF2aW91ciBjaGFuZ2Us
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHA6CisgICAgICAgIChjcmVhdGVHc3RC
dWZmZXJGb3JEYXRhKTogTmV3IGhlbHBlciB0byBjcmVhdGUgYSBHc3RCdWZmZXIgd2hlbgorICAg
ICAgICB3ZSBoYXZlIGEgZGF0YSBwb2ludGVyIGFuZCBhIGxlbmd0aC4KKyAgICAgICAgKGdldEdz
dEJ1ZmZlclNpemUpOiBBYnN0cmFjdCBvYnRhaW5pbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciwg
c28gdGhlIGNvZGUKKyAgICAgICAgaXMgY2xlYW5lciB3aGlsZSBzdGlsbCB3b3JraW5nIGZvciBi
b3RoIEdTVCAwLjEwIGFuZCAxLjAuCisgICAgICAgIChzZXRHc3RCdWZmZXJTaXplKTogRGl0dG8s
IGJ1dCBmb3Igc2V0dGluZyB0aGUgc2l6ZS4KKyAgICAgICAgKGdldEdzdEJ1ZmZlckRhdGFQb2lu
dGVyKTogRGl0dG8sIGJ1dCBmb3IgZ3JhYmJpbmcgdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAg
KG1hcEdzdEJ1ZmZlcik6IENvbnZlbmllbmNlIG1ldGhvZCB0byB0YWtlIGNhcmUgb2YgbWFwcGlu
ZyB0aGUgYnVmZmVyIHNvIHRoYXQKKyAgICAgICAgd2UgY2FuIHByb3ZpZGUgdGhlIGRhdGEgcG9p
bnRlciB0byBSZXNvdXJjZUhhbmRsZS4KKyAgICAgICAgKHVubWFwR3N0QnVmZmVyKTogQ29udmVu
aWVuY2UgbWV0aG9kIHdoaWNoIHRha2VzIGNhcmUgb2YgdW5tYXBwaW5nIHRoZSBidWZmZXIKKyAg
ICAgICAgYW5kIHByb3Blcmx5IGZyZWVpbmcgdGhlIEdzdE1hcEluZm8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudCk6IE5ldyBtZXRob2RzLgorICAgICAgICAoX1dl
YktpdFdlYlNyY1ByaXZhdGUpOiBXZSBub3cgc3RvcmUgdGhlIEdzdEJ1ZmZlciB3ZSBwcm92aWRl
ZCB0aGUgZGF0YSBwb2ludGVyIGZyb20KKyAgICAgICAgc28gd2UgY2FuIGxhdGVyIHVubWFwIGl0
IGFuZCBwdXNoIGl0IHRvIHRoZSBwaXBlbGluZS4KKyAgICAgICAgKHdlYktpdFdlYlNyY0Rpc3Bv
c2UpOiBEZWFsIHdpdGggdGhlIEdzdEJ1ZmZlciBpbiBjYXNlIGl0IGV4aXN0cyB3aGVuIHRoZSBz
b3VyY2UgaXMKKyAgICAgICAgZGVzdHJveWVkLgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6
IEFsc28gY2xlYXIgdGhlIEdzdEJ1ZmZlciBpbiB0aGlzIGNhc2UuCisgICAgICAgIChTdHJlYW1p
bmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKTogSGFuZGxlIHRoZSBoYW5kLW92ZXIgb2YgdGhlIGJ1
ZmZlci4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyKTogUHJvdmlkZSBSZXNv
dXJjZUhhbmRsZSB3aXRoIGEgbmV3IEdzdEJ1ZmZlcidzIGRhdGEgcG9pbnRlci4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChSZXNv
dXJjZUhhbmRsZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6UmVzb3VyY2VIYW5kbGVDbGllbnQpOiBDb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIHRoZSBi
dWZmZXIKKyAgICAgICAgbWVtYmVyIHZhcmlhYmxlIHRvIDAuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KTogRGVzdHJ1Y3RvciB0
byBmcmVlIHRoZSBidWZmZXIgaWYgaXQKKyAgICAgICAgaGFzIGJlZW4gYWxsb2NhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmdldEJ1ZmZlcik6IERlZmF1bHQg
aW1wbGVtZW50YXRpb24gd2hpY2ggcmV0dXJucyBhCisgICAgICAgIG5ld2x5IGFsbG9jYXRlZCBj
aGFyIHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNv
dXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOiBT
dG9yZSBhY3R1YWwgYnVmZmVyIHNpemUsIHdoaWNoIGlzIG5vIGxvbmdlciBhIGNvbnN0YW50Lgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKTogQ2xlYXIgdGhl
IGJ1ZmZlciBwb2ludGVyLCB0aGUgbGlmZS1jeWNsZSBvZiB0aGUKKyAgICAgICAgYnVmZmVyIGlz
IGhhbmRsZWQgYnkgdGhlIFJlc291cmNlSGFuZGxlQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6
bmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxiYWNrKTogR2V0IGEgbmV3IGJ1ZmZlciBmcm9t
IHRoZSBjbGllbnQgYmVmb3JlIHJlYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVz
dENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOiBEaXR0
by4KKwogMjAxMy0wMS0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBBdm9pZCBmaWxsaW5nIGEgcm91bmRlZCByZWN0IHdoZW4gcmFkaWkgYXJlIHpl
cm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAppbmRleCAzNDBhNjQ1MjAxOWVl
MzVmN2QwYmUyYjVlNjQzYzE5NjkyZjE3ODk5Li5kMmQwN2E0OWUzZTQwY2Q1NjI0MjgyMzY4Nzhj
NjM4YWI1ZTc2MzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTMxLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL211bHRpY2hhbm5lbC5oPgogI2Vu
ZGlmCiAKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorY29uc3QgY2hhciogd2Via2l0R3N0TWFw
SW5mb1F1YXJrU3RyaW5nID0gIndlYmtpdC1nc3QtbWFwLWluZm8iOworI2VuZGlmCisKIHZvaWQg
d2Via2l0R3N0T2JqZWN0UmVmU2luayhHc3RPYmplY3QqIGdzdE9iamVjdCkKIHsKICNpZmRlZiBH
U1RfQVBJX1ZFUlNJT05fMQpAQCAtMTIxLDYgKzEyNiw3NSBAQCBHc3RCdWZmZXIqIGNyZWF0ZUdz
dEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKICAgICByZXR1cm4gbmV3QnVmZmVyOwogfQogCitH
c3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlckZvckRhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKK3sKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxv
YyhsZW5ndGgpOworCisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc3RfYnVmZmVyX2Zp
bGwoYnVmZmVyLCAwLCBkYXRhLCBsZW5ndGgpOworI2Vsc2UKKyAgICBtZW1jcHkoR1NUX0JVRkZF
Ul9EQVRBKGJ1ZmZlciksIGRhdGEsIGxlbmd0aCk7CisjZW5kaWYKKworICAgIHJldHVybiBidWZm
ZXI7Cit9CisKK2ludCBnZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyKQoreworI2lm
ZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgcmV0dXJuIGdzdF9idWZmZXJfZ2V0X3NpemUoYnVm
ZmVyKTsKKyNlbHNlCisgICAgcmV0dXJuIEdTVF9CVUZGRVJfU0laRShidWZmZXIpOworI2VuZGlm
Cit9CisKK3ZvaWQgc2V0R3N0QnVmZmVyU2l6ZShHc3RCdWZmZXIqIGJ1ZmZlciwgaW50IG5ld1Np
emUpCit7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBnc3RfYnVmZmVyX3NldF9zaXpl
KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Z3NzaXplPihuZXdTaXplKSk7CisjZWxzZQorICAgIEdTVF9C
VUZGRVJfU0laRShidWZmZXIpID0gc3RhdGljX2Nhc3Q8Z3NpemU+KG5ld1NpemUpOworI2VuZGlm
Cit9CisKK2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZlciogYnVmZmVyKQor
eworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgR3N0TWluaU9iamVjdCogbWluaU9iamVj
dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZlcik7CisgICAgR3N0TWFw
SW5mbyogbWFwSW5mbyA9IHN0YXRpY19jYXN0PEdzdE1hcEluZm8qPihnc3RfbWluaV9vYmplY3Rf
Z2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKHdlYmtpdEdz
dE1hcEluZm9RdWFya1N0cmluZykpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4obWFwSW5mby0+ZGF0YSk7CisjZWxzZQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihHU1RfQlVGRkVSX0RBVEEoYnVmZmVyKSk7CisjZW5kaWYKK30KKworI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAg
ICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gZ19zbGljZV9uZXcoR3N0TWFwSW5mbyk7CisgICAgaWYg
KCFnc3RfYnVmZmVyX21hcChidWZmZXIsIG1hcEluZm8sIEdTVF9NQVBfV1JJVEUpKSB7CisgICAg
ICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKKyAgICAgICAgZ3N0X2J1ZmZl
cl91bnJlZihidWZmZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR3N0TWluaU9i
amVjdCogbWluaU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWluaU9iamVjdCo+KGJ1ZmZl
cik7CisgICAgZ3N0X21pbmlfb2JqZWN0X3NldF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zy
b21fc3RhdGljX3N0cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpLCBtYXBJbmZvLCAwKTsKK30K
Kwordm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBHc3RNaW5p
T2JqZWN0KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVm
ZmVyKTsKKyAgICBHc3RNYXBJbmZvKiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+
KGdzdF9taW5pX29iamVjdF9zdGVhbF9xZGF0YShtaW5pT2JqZWN0LCBnX3F1YXJrX2Zyb21fc3Rh
dGljX3N0cmluZygid2Via2l0LWdzdC1tYXAtaW5mbyIpKSk7CisKKyAgICBpZiAoIW1hcEluZm8p
CisgICAgICAgIHJldHVybjsKKworICAgIGdzdF9idWZmZXJfdW5tYXAoYnVmZmVyLCBtYXBJbmZv
KTsKKyAgICBnX3NsaWNlX2ZyZWUoR3N0TWFwSW5mbywgbWFwSW5mbyk7Cit9CisjZW5kaWYKKwog
dm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqIGVsZW1lbnRD
bGFzcywgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIq
IGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiBhdXRob3IpCiB7CiAjaWZkZWYgR1NUX0FQSV9WRVJT
SU9OXzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCmluZGV4IDIzYzM0NjcwMjdjNWJj
OWY0MTI5YmI0ZDg0M2I0MjgwNWExZWM2YjUuLjRmNDNlNjdjNTg3MzNjYTRhYjdjNTlkMTA2Nzgw
OGZjNzZhMDVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaApAQCAtMzYsNiAr
MzYsMTQgQEAgR1JlZlB0cjxHc3RDYXBzPiB3ZWJraXRHc3RHZXRQYWRDYXBzKEdzdFBhZCopOwog
Ym9vbCBnZXRWaWRlb1NpemVBbmRGb3JtYXRGcm9tQ2FwcyhHc3RDYXBzKiwgV2ViQ29yZTo6SW50
U2l6ZSYsIEdzdFZpZGVvRm9ybWF0JiwgaW50JiBwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yLCBp
bnQmIHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvciwgaW50JiBzdHJpZGUpOwogI2VuZGlmCiBH
c3RCdWZmZXIqIGNyZWF0ZUdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKK0dzdEJ1ZmZlciogY3JlYXRl
R3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKK2ludCBnZXRH
c3RCdWZmZXJTaXplKEdzdEJ1ZmZlciopOwordm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZl
ciosIGludCBuZXdTaXplKTsKK2NoYXIqIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKEdzdEJ1ZmZl
ciopOworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCit2b2lkIG1hcEdzdEJ1ZmZlcihHc3RCdWZm
ZXIqKTsKK3ZvaWQgdW5tYXBHc3RCdWZmZXIoR3N0QnVmZmVyKik7CisjZW5kaWYKIHZvaWQgc2V0
R3N0RWxlbWVudENsYXNzTWV0YWRhdGEoR3N0RWxlbWVudENsYXNzKiwgY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgY2hhciogbG9uZ05hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBj
aGFyKiBhdXRob3IpOwogYm9vbCBnc3RPYmplY3RJc0Zsb2F0aW5nKEdzdE9iamVjdCopOwogdm9p
ZCBub3RpZnlHc3RUYWdzT25QYWQoR3N0RWxlbWVudCosIEdzdFBhZCosIEdzdFRhZ0xpc3QqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggZjgwNGQx
ZjdlMDU5ZjMyNWI2ZjQ3ZjU5MzE0MThkMzc1ODMyYjVkNy4uNTJiMGU3MjI5NjVhOWI5YmRlM2M3
M2QyMDhiOTEyMWM5YTIyZTc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTMyLDEwICszMyw5IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKLSAKICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNyYy5oPgorI2luY2x1ZGUgPGdzdC9n
c3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KLQogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC01MSw2ICs1MSw5IEBAIGNsYXNz
IFN0cmVhbWluZ0NsaWVudCA6IHB1YmxpYyBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKKworICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldEJ1ZmZlcihpbnQsIGludCopOworCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBpbnQsIGludCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkBA
IC04NCw2ICs4Nyw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgZ3VpbnQg
ZW5vdWdoRGF0YUlEOwogICAgIGd1aW50IHNlZWtJRDsKIAorICAgIEdSZWZQdHI8R3N0QnVmZmVy
PiBidWZmZXI7CisKICAgICAvLyBpY2VjYXN0IHN0dWZmCiAgICAgZ2Jvb2xlYW4gaXJhZGlvTW9k
ZTsKICAgICBnY2hhciogaXJhZGlvTmFtZTsKQEAgLTExNSw2ICsxMjAsNyBAQCBHU1RfREVCVUdf
Q0FURUdPUllfU1RBVElDKHdlYmtpdF93ZWJfc3JjX2RlYnVnKTsKIAogc3RhdGljIHZvaWQgd2Vi
S2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRlciBpZmFjZURh
dGEpOwogCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNEaXNwb3NlKEdPYmplY3QqKTsKIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY0ZpbmFsaXplKEdPYmplY3QqKTsKIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqLCBndWludCBwcm9wZXJ0eUlELCBjb25zdCBHVmFs
dWUqLCBHUGFyYW1TcGVjKik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShH
T2JqZWN0KiwgZ3VpbnQgcHJvcGVydHlJRCwgR1ZhbHVlKiwgR1BhcmFtU3BlYyopOwpAQCAtMTUw
LDYgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2NsYXNzX2luaXQoV2ViS2l0
V2ViU3JjQ2xhc3MqIGtsYXNzKQogICAgIEdPYmplY3RDbGFzcyogb2tsYXNzID0gR19PQkpFQ1Rf
Q0xBU1Moa2xhc3MpOwogICAgIEdzdEVsZW1lbnRDbGFzcyogZWtsYXNzID0gR1NUX0VMRU1FTlRf
Q0xBU1Moa2xhc3MpOwogCisgICAgb2tsYXNzLT5kaXNwb3NlID0gd2ViS2l0V2ViU3JjRGlzcG9z
ZTsKICAgICBva2xhc3MtPmZpbmFsaXplID0gd2ViS2l0V2ViU3JjRmluYWxpemU7CiAgICAgb2ts
YXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eTsKICAgICBva2xhc3Mt
PmdldF9wcm9wZXJ0eSA9IHdlYktpdFdlYlNyY0dldFByb3BlcnR5OwpAQCAtMjc0LDYgKzI4MSwy
MSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYktpdFdlYlNyYyogc3JjKQog
ICAgIHdlYktpdFdlYlNyY1N0b3Aoc3JjLCBmYWxzZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsKKyAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2
ID0gc3JjLT5wcml2OworCisgICAgaWYgKHByaXYtPmJ1ZmZlcikgeworI2lmZGVmIEdTVF9BUElf
VkVSU0lPTl8xCisgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1ZmZlci5nZXQoKSk7Cisj
ZW5kaWYKKyAgICAgICAgcHJpdi0+YnVmZmVyLmNsZWFyKCk7CisgICAgfQorCisgICAgR1NUX0NB
TExfUEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBkaXNwb3NlLCAob2JqZWN0KSk7Cit9CisKIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJL
aXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CkBAIC0yODMsNyArMzA1LDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogCiAg
ICAgZ19mcmVlKHByaXYtPnVyaSk7CiAKLSAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xB
U1MsIGZpbmFsaXplLCAoKEdPYmplY3QqICkoc3JjKSkpOworICAgIEdTVF9DQUxMX1BBUkVOVChH
X09CSkVDVF9DTEFTUywgZmluYWxpemUsIChvYmplY3QpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
S2l0V2ViU3JjU2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQpAQCAtMzU0LDYgKzM3NiwxMyBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjLCBib29sIHNlZWtp
bmcpCiAKICAgICBwcml2LT5wbGF5ZXIgPSAwOwogCisgICAgaWYgKHByaXYtPmJ1ZmZlcikgewor
I2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1
ZmZlci5nZXQoKSk7CisjZW5kaWYKKyAgICAgICAgcHJpdi0+YnVmZmVyLmNsZWFyKCk7CisgICAg
fQorCiAgICAgR1NUX09CSkVDVF9MT0NLKHNyYyk7CiAgICAgaWYgKHByaXYtPm5lZWREYXRhSUQp
CiAgICAgICAgIGdfc291cmNlX3JlbW92ZShwcml2LT5uZWVkRGF0YUlEKTsKQEAgLTg1NiwyNSAr
ODg1LDMzIEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OwogCi0gICAgR1NUX0xPR19PQkpFQ1QobV9zcmMsICJI
YXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBsZW5ndGgpOworICAgIEdTVF9MT0dfT0JKRUNUKG1fc3Jj
LCAiSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgcHJpdi0+YnVmZmVyID8gZ2V0R3N0QnVmZmVyU2l6
ZShwcml2LT5idWZmZXIuZ2V0KCkpIDogbGVuZ3RoKTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lP
Tl8xCisgICAgaWYgKHByaXYtPmJ1ZmZlcikKKyAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+
YnVmZmVyLmdldCgpKTsKKyNlbmRpZgogCiAgICAgaWYgKHByaXYtPnNlZWtJRCB8fCBoYW5kbGUg
IT0gcHJpdi0+cmVzb3VyY2VIYW5kbGUpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChtX3Ny
YywgIlNlZWsgaW4gcHJvZ3Jlc3MsIGlnbm9yaW5nIGRhdGEiKTsKKyAgICAgICAgcHJpdi0+YnVm
ZmVyLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyhsZW5ndGgpOworICAgIEFTU0VSVCghcHJp
di0+YnVmZmVyIHx8IGRhdGEgPT0gZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIocHJpdi0+YnVmZmVy
LmdldCgpKSk7CiAKLSNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAgIGdzdF9idWZmZXJfZmls
bChidWZmZXIsIDAsIGRhdGEsIGxlbmd0aCk7Ci0jZWxzZQotICAgIG1lbWNweShHU1RfQlVGRkVS
X0RBVEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKLSNlbmRpZgotICAgIEdTVF9CVUZGRVJfT0ZG
U0VUKGJ1ZmZlcikgPSBwcml2LT5vZmZzZXQ7CisgICAgLy8gUG9ydHMgdXNpbmcgdGhlIEdTdHJl
YW1lciBiYWNrZW5kIGJ1dCBub3QgdGhlIHNvdXAgaW1wbGVtZW50YXRpb24gb2YgUmVzb3VyY2VI
YW5kbGUKKyAgICAvLyB3b24ndCBiZSB1c2luZyBidWZmZXJzIHByb3ZpZGVkIGJ5IHRoaXMgY2xp
ZW50LCB0aGUgYnVmZmVyIGlzIGNyZWF0ZWQgaGVyZSBpbiB0aGF0IGNhc2UuCisgICAgaWYgKCFw
cml2LT5idWZmZXIpCisgICAgICAgIHByaXYtPmJ1ZmZlciA9IGFkb3B0R1JlZihjcmVhdGVHc3RC
dWZmZXJGb3JEYXRhKGRhdGEsIGxlbmd0aCkpOworICAgIGVsc2UKKyAgICAgICAgc2V0R3N0QnVm
ZmVyU2l6ZShwcml2LT5idWZmZXIuZ2V0KCksIGxlbmd0aCk7CisKKyAgICBHU1RfQlVGRkVSX09G
RlNFVChwcml2LT5idWZmZXIuZ2V0KCkpID0gcHJpdi0+b2Zmc2V0OwogICAgIHByaXYtPm9mZnNl
dCArPSBsZW5ndGg7Ci0gICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgPSBwcml2LT5v
ZmZzZXQ7CisgICAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EKHByaXYtPmJ1ZmZlci5nZXQoKSkgPSBw
cml2LT5vZmZzZXQ7CiAKLSAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdzdF9hcHBfc3JjX3B1c2hf
YnVmZmVyKHByaXYtPmFwcHNyYywgYnVmZmVyKTsKKyAgICBHc3RGbG93UmV0dXJuIHJldCA9IGdz
dF9hcHBfc3JjX3B1c2hfYnVmZmVyKHByaXYtPmFwcHNyYywgcHJpdi0+YnVmZmVyLmxlYWtSZWYo
KSk7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09L
ICYmIHJldCAhPSBHU1RfRkxPV19FT1MpCiAjZWxzZQpAQCAtODgzLDYgKzkyMCwyNCBAQCB2b2lk
IFN0cmVhbWluZ0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaQogICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihtX3NyYywgQ09S
RSwgRkFJTEVELCAoMCksICgwKSk7CiB9CiAKK2NoYXIqIFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVm
ZmVyKGludCByZXF1ZXN0ZWRTaXplLCBpbnQqIGFjdHVhbFNpemUpCit7CisgICAgV2ViS2l0V2Vi
U3JjUHJpdmF0ZSogcHJpdiA9IG1fc3JjLT5wcml2OworCisgICAgQVNTRVJUKCFwcml2LT5idWZm
ZXIpOworCisgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2Mo
cmVxdWVzdGVkU2l6ZSk7CisKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIG1hcEdzdEJ1
ZmZlcihidWZmZXIpOworI2VuZGlmCisKKyAgICBwcml2LT5idWZmZXIgPSBhZG9wdEdSZWYoYnVm
ZmVyKTsKKworICAgICphY3R1YWxTaXplID0gZ2V0R3N0QnVmZmVyU2l6ZShidWZmZXIpOworICAg
IHJldHVybiBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihidWZmZXIpOworfQorCiB2b2lkIFN0cmVh
bWluZ0NsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSkKIHsK
ICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgK
aW5kZXggM2Q1NWQ4NjhhOTM2YmNhODI3MDZmYTdiM2FlNTc1YmZiMmI0MjAyNi4uOTBlNjMxZTEw
ODU3ZjliZTRlZGIyYTQ5Mzc5ZDRiM2IxNmYwZWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMzUsNiAr
MzUsMTAgQEAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4KICNlbmRp
ZgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q29uZGl0aW9uYWxNYWNyb3Mu
aD4KICNlbmRpZgpAQCAtNjMsNyArNjcsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
ICAgIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBwdWJsaWM6CisjaWYgVVNFKFNP
VVApCisgICAgICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KCk6IG1fYnVmZmVyKDApIHsgfQorCisg
ICAgICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlQ2xpZW50KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZ19mcmVlKG1fYnVmZmVyKTsK
KyAgICAgICAgICAgICAgICBtX2J1ZmZlciA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyNlbHNlCiAgICAgICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlQ2xpZW50KCkgeyB9CisjZW5k
aWYKIAogICAgICAgICAvLyByZXF1ZXN0IG1heSBiZSBtb2RpZmllZAogICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgLypyZWRpcmVjdFJlc3BvbnNlKi8pIHsgfQpAQCAtODIs
NiArOTgsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGFBcnJheShSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIHsgfQogI2VuZGlm
CiAKKyNpZiBVU0UoU09VUCkKKyAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRCdWZmZXIoaW50IHJl
cXVlc3RlZExlbmd0aCwgaW50KiBhY3R1YWxMZW5ndGgpCisgICAgICAgIHsKKyAgICAgICAgICAg
ICphY3R1YWxMZW5ndGggPSByZXF1ZXN0ZWRMZW5ndGg7CisKKyAgICAgICAgICAgIGlmICghbV9i
dWZmZXIpCisgICAgICAgICAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19t
YWxsb2MocmVxdWVzdGVkTGVuZ3RoKSk7CisKKyAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsK
KyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CkBAIC0xMDcsNiArMTM1LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgdmlydHVhbCBB
c3luY0ZpbGVTdHJlYW0qIGNyZWF0ZUFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50Kikg
eyByZXR1cm4gMDsgfQogI2VuZGlmCisKKyNpZiBVU0UoU09VUCkKK3ByaXZhdGU6CisgICAgICAg
IGNoYXIqIG1fYnVmZmVyOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRl
eCBiODQ5NTZiYTQyY2FhMzRiZTcxMDc3MTcxZTIyYjA5Y2QzZmM0NGIyLi5hNDNhZmQ3YWI4MWIy
MjYyMjExMDRhNmVmOGM3YTAxOGQwZTMxYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMTEzLDYg
KzExMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoU09VUCkKICAgICAgICAgICAg
ICwgbV9jYW5jZWxsZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fYnVmZmVyKDApCisgICAgICAg
ICAgICAsIG1fYnVmZmVyU2l6ZSgwKQogICAgICAgICAgICAgLCBtX2JvZHlTaXplKDApCiAgICAg
ICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCiAgICAgICAgICAgICAsIG1fcmVkaXJlY3RDb3Vu
dCgwKQpAQCAtMjAwLDYgKzIwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgR1Jl
ZlB0cjxHQXN5bmNSZXN1bHQ+IG1fZGVmZXJyZWRSZXN1bHQ7CiAgICAgICAgIEdSZWZQdHI8R1Nv
dXJjZT4gbV90aW1lb3V0U291cmNlOwogICAgICAgICBjaGFyKiBtX2J1ZmZlcjsKKyAgICAgICAg
aW50IG1fYnVmZmVyU2l6ZTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBtX2JvZHlTaXplOwogICAg
ICAgICB1bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBSZWZQdHI8TmV0d29y
a2luZ0NvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggYTY0YTQz
MDhjNzQyNGMxZDY1OTYwODgzMGY1YmQyYzJjMzVhNjUzNy4uNjliYWZiOWQwZjI3MDU0ZDMyYjgz
Mzc5YjQ1MTZlNWYwZmY4MmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTU2NSw4ICs1
NjUsOCBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbgogICAgIH0KIAogICAgIGlmIChkLT5tX2J1
ZmZlcikgewotICAgICAgICBnX3NsaWNlX2ZyZWUxKFJFQURfQlVGRkVSX1NJWkUsIGQtPm1fYnVm
ZmVyKTsKICAgICAgICAgZC0+bV9idWZmZXIgPSAwOworICAgICAgICBkLT5tX2J1ZmZlclNpemUg
PSAwOwogICAgIH0KIAogICAgIGlmIChkLT5tX3RpbWVvdXRTb3VyY2UpIHsKQEAgLTYzMywxMiAr
NjMzLDE3IEBAIHN0YXRpYyB2b2lkIG5leHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayhH
T2JqZWN0KiAvKnNvdXJjZSovLCBHQXN5bmNSZXN1bHQqCiAKICAgICBjbGllbnQtPmRpZFJlY2Vp
dmVSZXNwb25zZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOwogCisgICAgLy8gZGlkUmVj
ZWl2ZVJlc3BvbnNlIG1heSBjYXVzZSB0aGUgY2xpZW50IHRvIGJlIGNoYW5nZWQuCisgICAgY2xp
ZW50ID0gZC0+Y2xpZW50KCk7CisKICAgICBpZiAoZC0+bV9jYW5jZWxsZWQgfHwgIWNsaWVudCkg
ewogICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+
bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsCisgICAg
ZC0+bV9idWZmZXIgPSBjbGllbnQtPmdldEJ1ZmZlcihSRUFEX0JVRkZFUl9TSVpFLCAmZC0+bV9i
dWZmZXJTaXplKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0
cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwKICAgICAgICAgR19QUklP
UklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRs
ZS5nZXQoKSk7CiB9CiAKQEAgLTY5NywxMyArNzAyLDE0IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1
ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBkYXRh
KQogCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxlLmdldCgpLCBkLT5tX3Jl
c3BvbnNlKTsKIAotICAgIGlmIChkLT5tX2NhbmNlbGxlZCkgeworICAgIC8vIGRpZFJlY2VpdmVS
ZXNwb25zZSBtYXkgY2F1c2UgdGhlIGNsaWVudCB0byBiZSBjaGFuZ2VkLgorICAgIGNsaWVudCA9
IGQtPmNsaWVudCgpOworCisgICAgaWYgKGQtPm1fY2FuY2VsbGVkIHx8ICFjbGllbnQpIHsKICAg
ICAgICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBkLT5tX2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihn
X3NsaWNlX2FsbG9jKFJFQURfQlVGRkVSX1NJWkUpKTsKLQogICAgIGlmIChzb3VwTWVzc2FnZSAm
JiBkLT5tX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpIHsKICAgICAgICAgZC0+bV9tdWx0aXBhcnRJ
bnB1dFN0cmVhbSA9IGFkb3B0R1JlZihzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV3KHNv
dXBNZXNzYWdlLCBpbnB1dFN0cmVhbS5nZXQoKSkpOwogICAgICAgICBzb3VwX211bHRpcGFydF9p
bnB1dF9zdHJlYW1fbmV4dF9wYXJ0X2FzeW5jKGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0
KCksIEdfUFJJT1JJVFlfREVGQVVMVCwKQEAgLTcxMiw3ICs3MTgsMTIgQEAgc3RhdGljIHZvaWQg
c2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2lu
dGVyIGRhdGEpCiAgICAgfQogCiAgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0U3RyZWFtOwot
ICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+
bV9idWZmZXIsIFJFQURfQlVGRkVSX1NJWkUsCisKKyAgICBBU1NFUlQoIWQtPm1fYnVmZmVyKTsK
KworICAgIGQtPm1fYnVmZmVyID0gY2xpZW50LT5nZXRCdWZmZXIoUkVBRF9CVUZGRVJfU0laRSwg
JmQtPm1fYnVmZmVyU2l6ZSk7CisKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1f
aW5wdXRTdHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBkLT5tX2J1ZmZlclNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2VsbGFi
bGUuZ2V0KCksIHJlYWRDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtMTM2NSwxMiAr
MTM3NiwxNCBAQCBzdGF0aWMgdm9pZCByZWFkQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3Vs
dCogYXN5bmNSZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShoYW5kbGUuZ2V0KCksIGQtPm1fYnVmZmVyLCBieXRlc1JlYWQsIGJ5dGVzUmVhZCk7CiAKICAg
ICAvLyBkaWRSZWNlaXZlRGF0YSBtYXkgY2FuY2VsIHRoZSBsb2FkLCB3aGljaCBtYXkgcmVsZWFz
ZSB0aGUgbGFzdCByZWZlcmVuY2UuCi0gICAgaWYgKGQtPm1fY2FuY2VsbGVkIHx8ICFjbGllbnQp
IHsKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQgfHwgIWhhbmRsZS0+Y2xpZW50KCkpIHsKICAgICAg
ICAgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRT
dHJlYW0uZ2V0KCksIGQtPm1fYnVmZmVyLCBSRUFEX0JVRkZFUl9TSVpFLCBHX1BSSU9SSVRZX0RF
RkFVTFQsCisgICAgZC0+bV9idWZmZXIgPSBjbGllbnQtPmdldEJ1ZmZlcihSRUFEX0JVRkZFUl9T
SVpFLCAmZC0+bV9idWZmZXJTaXplKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMo
ZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwgR19Q
UklPUklUWV9ERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+bV9jYW5j
ZWxsYWJsZS5nZXQoKSwgcmVhZENhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183823</attachid>
            <date>2013-01-21 12:54:40 -0800</date>
            <delta_ts>2013-01-22 06:42:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105552-20130121185135.patch</filename>
            <type>text/plain</type>
            <size>20547</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ5NjMzYjZkYWY5YjRi
OGE3MjZmYWY3MWMyMmYyNjFmN2NiYjBkYi4uNDQ1MTQyNDI4ZjQyYWM4ZTg4ODEwZWJmMjAxYmMy
MjkzYzVkMmI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAxLTIxICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXVtTb3VwXSBMZXQgR1N0cmVhbWVyIHByb3ZpZGUgdGhlIGJ1ZmZlciBk
YXRhIGlzIGRvd25sb2FkZWQgdG8sIHRvIGF2b2lkIGNvcHlpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTU1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFBoaWxpcHBlIE5vcm1hbmQuCisKKyAgICAgICAgTWFrZXMgaXQgcG9zc2libGUgZm9yIHRo
ZSBHU3RyZWFtZXIgbWVkaWEgYmFja2VuZCB0byBwcm92aWRlIHRoZSBidWZmZXIgdG8gd2hpY2gK
KyAgICAgICAgdGhlIFNvdXAgbmV0d29ya2luZyBiYWNrZW5kIHdpbGwgdXNlIHRvIGRvd25sb2Fk
IGRhdGEgdG8uIFRoaXMgbWFrZXMgY29weWluZworICAgICAgICBtZW1vcnkgdW5uZWNlc3Nhcnkg
d2hlbiBSZXNvdXJjZUhhbmRsZSBoYW5kcyBkYXRhIG92ZXIgdG8gdGhlIG1lZGlhIHBsYXllcidz
CisgICAgICAgIFN0cmVhbWluZ0NsaWVudC4gVGhhbmtzIHRvIERhbiBXaW5zaGlwIGZvciBoZWxw
IGRlc2lnbmluZyB0aGUgaW50ZXJmYWNlLgorCisgICAgICAgIE5vIGJlaGF2aW91ciBjaGFuZ2Us
IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHA6CisgICAgICAgIChjcmVhdGVHc3RC
dWZmZXJGb3JEYXRhKTogTmV3IGhlbHBlciB0byBjcmVhdGUgYSBHc3RCdWZmZXIgd2hlbgorICAg
ICAgICB3ZSBoYXZlIGEgZGF0YSBwb2ludGVyIGFuZCBhIGxlbmd0aC4KKyAgICAgICAgKGdldEdz
dEJ1ZmZlclNpemUpOiBBYnN0cmFjdCBvYnRhaW5pbmcgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciwg
c28gdGhlIGNvZGUKKyAgICAgICAgaXMgY2xlYW5lciB3aGlsZSBzdGlsbCB3b3JraW5nIGZvciBi
b3RoIEdTVCAwLjEwIGFuZCAxLjAuCisgICAgICAgIChzZXRHc3RCdWZmZXJTaXplKTogRGl0dG8s
IGJ1dCBmb3Igc2V0dGluZyB0aGUgc2l6ZS4KKyAgICAgICAgKGdldEdzdEJ1ZmZlckRhdGFQb2lu
dGVyKTogRGl0dG8sIGJ1dCBmb3IgZ3JhYmJpbmcgdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAg
KG1hcEdzdEJ1ZmZlcik6IENvbnZlbmllbmNlIG1ldGhvZCB0byB0YWtlIGNhcmUgb2YgbWFwcGlu
ZyB0aGUgYnVmZmVyIHNvIHRoYXQKKyAgICAgICAgd2UgY2FuIHByb3ZpZGUgdGhlIGRhdGEgcG9p
bnRlciB0byBSZXNvdXJjZUhhbmRsZS4KKyAgICAgICAgKHVubWFwR3N0QnVmZmVyKTogQ29udmVu
aWVuY2UgbWV0aG9kIHdoaWNoIHRha2VzIGNhcmUgb2YgdW5tYXBwaW5nIHRoZSBidWZmZXIKKyAg
ICAgICAgYW5kIHByb3Blcmx5IGZyZWVpbmcgdGhlIEdzdE1hcEluZm8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudCk6IE5ldyBtZXRob2RzLgorICAgICAgICAoX1dl
YktpdFdlYlNyY1ByaXZhdGUpOiBXZSBub3cgc3RvcmUgdGhlIEdzdEJ1ZmZlciB3ZSBwcm92aWRl
ZCB0aGUgZGF0YSBwb2ludGVyIGZyb20KKyAgICAgICAgc28gd2UgY2FuIGxhdGVyIHVubWFwIGl0
IGFuZCBwdXNoIGl0IHRvIHRoZSBwaXBlbGluZS4KKyAgICAgICAgKHdlYktpdFdlYlNyY0Rpc3Bv
c2UpOiBEZWFsIHdpdGggdGhlIEdzdEJ1ZmZlciBpbiBjYXNlIGl0IGV4aXN0cyB3aGVuIHRoZSBz
b3VyY2UgaXMKKyAgICAgICAgZGVzdHJveWVkLgorICAgICAgICAod2ViS2l0V2ViU3JjU3RvcCk6
IEFsc28gY2xlYXIgdGhlIEdzdEJ1ZmZlciBpbiB0aGlzIGNhc2UuCisgICAgICAgIChTdHJlYW1p
bmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKTogSGFuZGxlIHRoZSBoYW5kLW92ZXIgb2YgdGhlIGJ1
ZmZlci4KKyAgICAgICAgKFN0cmVhbWluZ0NsaWVudDo6Z2V0QnVmZmVyKTogUHJvdmlkZSBSZXNv
dXJjZUhhbmRsZSB3aXRoIGEgbmV3IEdzdEJ1ZmZlcidzIGRhdGEgcG9pbnRlci4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgIChSZXNv
dXJjZUhhbmRsZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6UmVzb3VyY2VIYW5kbGVDbGllbnQpOiBDb25zdHJ1Y3RvciB0byBpbml0aWFsaXplIHRoZSBi
dWZmZXIKKyAgICAgICAgbWVtYmVyIHZhcmlhYmxlIHRvIDAuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KTogRGVzdHJ1Y3RvciB0
byBmcmVlIHRoZSBidWZmZXIgaWYgaXQKKyAgICAgICAgaGFzIGJlZW4gYWxsb2NhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmdldEJ1ZmZlcik6IERlZmF1bHQg
aW1wbGVtZW50YXRpb24gd2hpY2ggcmV0dXJucyBhCisgICAgICAgIG5ld2x5IGFsbG9jYXRlZCBj
aGFyIHBvaW50ZXIuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNv
dXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOiBT
dG9yZSBhY3R1YWwgYnVmZmVyIHNpemUsIHdoaWNoIGlzIG5vIGxvbmdlciBhIGNvbnN0YW50Lgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKTogQ2xlYXIgdGhl
IGJ1ZmZlciBwb2ludGVyLCB0aGUgbGlmZS1jeWNsZSBvZiB0aGUKKyAgICAgICAgYnVmZmVyIGlz
IGhhbmRsZWQgYnkgdGhlIFJlc291cmNlSGFuZGxlQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6
bmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENhbGxiYWNrKTogR2V0IGEgbmV3IGJ1ZmZlciBmcm9t
IHRoZSBjbGllbnQgYmVmb3JlIHJlYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpzZW5kUmVxdWVz
dENhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOiBEaXR0
by4KKwogMjAxMy0wMS0yMSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQ3Jhc2ggaW4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lclZlcnNpb25pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuY3BwCmluZGV4IDM0MGE2NDUyMDE5ZWUzNWY3
ZDBiZTJiNWU2NDNjMTk2OTJmMTc4OTkuLjI4MDI4OTRlODNkYWMwM2JkYjNiZWYzM2NjZWM3ZGVm
NzIwOWVkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5jcHAKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSwgUy5MLgorICogQ29weXJp
Z2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzEs
NiArMzIsMTAgQEAKICNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFubmVsLmg+CiAjZW5kaWYK
IAorI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCitjb25zdCBjaGFyKiB3ZWJraXRHc3RNYXBJbmZv
UXVhcmtTdHJpbmcgPSAid2Via2l0LWdzdC1tYXAtaW5mbyI7CisjZW5kaWYKKwogdm9pZCB3ZWJr
aXRHc3RPYmplY3RSZWZTaW5rKEdzdE9iamVjdCogZ3N0T2JqZWN0KQogewogI2lmZGVmIEdTVF9B
UElfVkVSU0lPTl8xCkBAIC0xMjEsNiArMTI2LDc1IEBAIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVm
ZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQogICAgIHJldHVybiBuZXdCdWZmZXI7CiB9CiAKK0dzdEJ1
ZmZlciogY3JlYXRlR3N0QnVmZmVyRm9yRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQoreworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKGxl
bmd0aCk7CisKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGdzdF9idWZmZXJfZmlsbChi
dWZmZXIsIDAsIGRhdGEsIGxlbmd0aCk7CisjZWxzZQorICAgIG1lbWNweShHU1RfQlVGRkVSX0RB
VEEoYnVmZmVyKSwgZGF0YSwgbGVuZ3RoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGJ1ZmZlcjsK
K30KKworaW50IGdldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKiBidWZmZXIpCit7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyAgICByZXR1cm4gZ3N0X2J1ZmZlcl9nZXRfc2l6ZShidWZmZXIp
OworI2Vsc2UKKyAgICByZXR1cm4gR1NUX0JVRkZFUl9TSVpFKGJ1ZmZlcik7CisjZW5kaWYKK30K
Kwordm9pZCBzZXRHc3RCdWZmZXJTaXplKEdzdEJ1ZmZlciogYnVmZmVyLCBpbnQgbmV3U2l6ZSkK
K3sKKyNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQorICAgIGdzdF9idWZmZXJfc2V0X3NpemUoYnVm
ZmVyLCBzdGF0aWNfY2FzdDxnc3NpemU+KG5ld1NpemUpKTsKKyNlbHNlCisgICAgR1NUX0JVRkZF
Ul9TSVpFKGJ1ZmZlcikgPSBzdGF0aWNfY2FzdDxnc2l6ZT4obmV3U2l6ZSk7CisjZW5kaWYKK30K
KworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIoR3N0QnVmZmVyKiBidWZmZXIpCit7Cisj
aWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICBHc3RNaW5pT2JqZWN0KiBtaW5pT2JqZWN0ID0g
cmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsKKyAgICBHc3RNYXBJbmZv
KiBtYXBJbmZvID0gc3RhdGljX2Nhc3Q8R3N0TWFwSW5mbyo+KGdzdF9taW5pX29iamVjdF9nZXRf
cWRhdGEobWluaU9iamVjdCwgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcod2Via2l0R3N0TWFw
SW5mb1F1YXJrU3RyaW5nKSkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPiht
YXBJbmZvLT5kYXRhKTsKKyNlbHNlCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKTsKKyNlbmRpZgorfQorCisjaWZkZWYgR1NUX0FQSV9W
RVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdz
dE1hcEluZm8qIG1hcEluZm8gPSBnX3NsaWNlX25ldyhHc3RNYXBJbmZvKTsKKyAgICBpZiAoIWdz
dF9idWZmZXJfbWFwKGJ1ZmZlciwgbWFwSW5mbywgR1NUX01BUF9XUklURSkpIHsKKyAgICAgICAg
Z19zbGljZV9mcmVlKEdzdE1hcEluZm8sIG1hcEluZm8pOworICAgICAgICBnc3RfYnVmZmVyX3Vu
cmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBHc3RNaW5pT2JqZWN0
KiBtaW5pT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RNaW5pT2JqZWN0Kj4oYnVmZmVyKTsK
KyAgICBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9z
dGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZyksIG1hcEluZm8sIDApOwor
fQorCit2b2lkIHVubWFwR3N0QnVmZmVyKEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIEdzdE1p
bmlPYmplY3QqIG1pbmlPYmplY3QgPSByZWludGVycHJldF9jYXN0PEdzdE1pbmlPYmplY3QqPihi
dWZmZXIpOworICAgIEdzdE1hcEluZm8qIG1hcEluZm8gPSBzdGF0aWNfY2FzdDxHc3RNYXBJbmZv
Kj4oZ3N0X21pbmlfb2JqZWN0X3N0ZWFsX3FkYXRhKG1pbmlPYmplY3QsIGdfcXVhcmtfZnJvbV9z
dGF0aWNfc3RyaW5nKHdlYmtpdEdzdE1hcEluZm9RdWFya1N0cmluZykpKTsKKworICAgIGlmICgh
bWFwSW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3N0X2J1ZmZlcl91bm1hcChidWZmZXIs
IG1hcEluZm8pOworICAgIGdfc2xpY2VfZnJlZShHc3RNYXBJbmZvLCBtYXBJbmZvKTsKK30KKyNl
bmRpZgorCiB2b2lkIHNldEdzdEVsZW1lbnRDbGFzc01ldGFkYXRhKEdzdEVsZW1lbnRDbGFzcyog
ZWxlbWVudENsYXNzLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29u
c3QgY2hhciogZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIqIGF1dGhvcikKIHsKICNpZmRlZiBHU1Rf
QVBJX1ZFUlNJT05fMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJWZXJzaW9uaW5nLmgKaW5kZXggMjNjMzQ2
NzAyN2M1YmM5ZjQxMjliYjRkODQzYjQyODA1YTFlYzZiNS4uNGY0M2U2N2M1ODczM2NhNGFiN2M1
OWQxMDY3ODA4ZmM3NmEwNWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclZlcnNpb25pbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyVmVyc2lvbmluZy5oCkBA
IC0zNiw2ICszNiwxNCBAQCBHUmVmUHRyPEdzdENhcHM+IHdlYmtpdEdzdEdldFBhZENhcHMoR3N0
UGFkKik7CiBib29sIGdldFZpZGVvU2l6ZUFuZEZvcm1hdEZyb21DYXBzKEdzdENhcHMqLCBXZWJD
b3JlOjpJbnRTaXplJiwgR3N0VmlkZW9Gb3JtYXQmLCBpbnQmIHBpeGVsQXNwZWN0UmF0aW9OdW1l
cmF0b3IsIGludCYgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBpbnQmIHN0cmlkZSk7CiAj
ZW5kaWYKIEdzdEJ1ZmZlciogY3JlYXRlR3N0QnVmZmVyKEdzdEJ1ZmZlciopOworR3N0QnVmZmVy
KiBjcmVhdGVHc3RCdWZmZXJGb3JEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwor
aW50IGdldEdzdEJ1ZmZlclNpemUoR3N0QnVmZmVyKik7Cit2b2lkIHNldEdzdEJ1ZmZlclNpemUo
R3N0QnVmZmVyKiwgaW50IG5ld1NpemUpOworY2hhciogZ2V0R3N0QnVmZmVyRGF0YVBvaW50ZXIo
R3N0QnVmZmVyKik7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKK3ZvaWQgbWFwR3N0QnVmZmVy
KEdzdEJ1ZmZlciopOwordm9pZCB1bm1hcEdzdEJ1ZmZlcihHc3RCdWZmZXIqKTsKKyNlbmRpZgog
dm9pZCBzZXRHc3RFbGVtZW50Q2xhc3NNZXRhZGF0YShHc3RFbGVtZW50Q2xhc3MqLCBjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBjaGFyKiBsb25nTmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24s
IGNvbnN0IGNoYXIqIGF1dGhvcik7CiBib29sIGdzdE9iamVjdElzRmxvYXRpbmcoR3N0T2JqZWN0
Kik7CiB2b2lkIG5vdGlmeUdzdFRhZ3NPblBhZChHc3RFbGVtZW50KiwgR3N0UGFkKiwgR3N0VGFn
TGlzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCBmODA0ZDFmN2UwNTlmMzI1YjZmNDdmNTkzMTQxOGQzNzU4MzJiNWQ3Li41MmIwZTcyMjk2NWE5
YjliZGUzYzczZDIwOGI5MTIxYzlhMjJlNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3Jh
LmNvLnVrPgorICogIENvcHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMzIsMTAgKzMzLDkgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgotIAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc3JjLmg+CisjaW5jbHVk
ZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9wYnV0aWxzL21pc3NpbmctcGx1Z2lucy5oPgot
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTUxLDYgKzUxLDkg
QEAgY2xhc3MgU3RyZWFtaW5nQ2xpZW50IDogcHVibGljIFJlc291cmNlSGFuZGxlQ2xpZW50IHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOworCisgICAgICAgIHZpcnR1YWwgY2hhciogZ2V0QnVmZmVyKGludCwgaW50
Kik7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciosIGludCwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgLypmaW5pc2hUaW1lKi8pOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKQEAgLTg0LDYgKzg3LDggQEAgc3RydWN0IF9XZWJLaXRXZWJTcmNQcml2YXRlIHsKICAg
ICBndWludCBlbm91Z2hEYXRhSUQ7CiAgICAgZ3VpbnQgc2Vla0lEOwogCisgICAgR1JlZlB0cjxH
c3RCdWZmZXI+IGJ1ZmZlcjsKKwogICAgIC8vIGljZWNhc3Qgc3R1ZmYKICAgICBnYm9vbGVhbiBp
cmFkaW9Nb2RlOwogICAgIGdjaGFyKiBpcmFkaW9OYW1lOwpAQCAtMTE1LDYgKzEyMCw3IEBAIEdT
VF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X3dlYl9zcmNfZGVidWcpOwogCiBzdGF0aWMg
dm9pZCB3ZWJLaXRXZWJTcmNVcmlIYW5kbGVySW5pdChncG9pbnRlciBnSWZhY2UsIGdwb2ludGVy
IGlmYWNlRGF0YSk7CiAKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0Rpc3Bvc2UoR09iamVjdCop
Owogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCopOwogc3RhdGljIHZv
aWQgd2ViS2l0V2ViU3JjU2V0UHJvcGVydHkoR09iamVjdCosIGd1aW50IHByb3BlcnR5SUQsIGNv
bnN0IEdWYWx1ZSosIEdQYXJhbVNwZWMqKTsKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0dldFBy
b3BlcnR5KEdPYmplY3QqLCBndWludCBwcm9wZXJ0eUlELCBHVmFsdWUqLCBHUGFyYW1TcGVjKik7
CkBAIC0xNTAsNiArMTU2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfY2xhc3NfaW5p
dChXZWJLaXRXZWJTcmNDbGFzcyoga2xhc3MpCiAgICAgR09iamVjdENsYXNzKiBva2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhrbGFzcyk7CiAgICAgR3N0RWxlbWVudENsYXNzKiBla2xhc3MgPSBHU1Rf
RUxFTUVOVF9DTEFTUyhrbGFzcyk7CiAKKyAgICBva2xhc3MtPmRpc3Bvc2UgPSB3ZWJLaXRXZWJT
cmNEaXNwb3NlOwogICAgIG9rbGFzcy0+ZmluYWxpemUgPSB3ZWJLaXRXZWJTcmNGaW5hbGl6ZTsK
ICAgICBva2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYktpdFdlYlNyY1NldFByb3BlcnR5OwogICAg
IG9rbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2ViS2l0V2ViU3JjR2V0UHJvcGVydHk7CkBAIC0yNzQs
NiArMjgxLDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2luaXQoV2ViS2l0V2ViU3Jj
KiBzcmMpCiAgICAgd2ViS2l0V2ViU3JjU3RvcChzcmMsIGZhbHNlKTsKIH0KIAorc3RhdGljIHZv
aWQgd2ViS2l0V2ViU3JjRGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0V2Vi
U3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhvYmplY3QpOworICAgIFdlYktpdFdlYlNyY1ByaXZh
dGUqIHByaXYgPSBzcmMtPnByaXY7CisKKyAgICBpZiAocHJpdi0+YnVmZmVyKSB7CisjaWZkZWYg
R1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+YnVmZmVyLmdl
dCgpKTsKKyNlbmRpZgorICAgICAgICBwcml2LT5idWZmZXIuY2xlYXIoKTsKKyAgICB9CisKKyAg
ICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKK30K
Kwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewog
ICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMob2JqZWN0KTsKQEAgLTI4Myw3
ICszMDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmpl
Y3QpCiAKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKIAotICAgIEdTVF9DQUxMX1BBUkVOVChHX09C
SkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCogKShzcmMpKSk7CisgICAgR1NUX0NBTExf
UEFSRU5UKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKG9iamVjdCkpOwogfQogCiBzdGF0aWMg
dm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJ
RCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCkBAIC0zNTQsNiArMzc2
LDEzIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMsIGJv
b2wgc2Vla2luZykKIAogICAgIHByaXYtPnBsYXllciA9IDA7CiAKKyAgICBpZiAocHJpdi0+YnVm
ZmVyKSB7CisjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKKyAgICAgICAgdW5tYXBHc3RCdWZmZXIo
cHJpdi0+YnVmZmVyLmdldCgpKTsKKyNlbmRpZgorICAgICAgICBwcml2LT5idWZmZXIuY2xlYXIo
KTsKKyAgICB9CisKICAgICBHU1RfT0JKRUNUX0xPQ0soc3JjKTsKICAgICBpZiAocHJpdi0+bmVl
ZERhdGFJRCkKICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHByaXYtPm5lZWREYXRhSUQpOwpAQCAt
ODU2LDI1ICs4ODUsMzMgQEAgdm9pZCBTdHJlYW1pbmdDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGkKIHsKICAgICBXZWJLaXRX
ZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CiAKLSAgICBHU1RfTE9HX09CSkVDVCht
X3NyYywgIkhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIGxlbmd0aCk7CisgICAgR1NUX0xPR19PQkpF
Q1QobV9zcmMsICJIYXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBwcml2LT5idWZmZXIgPyBnZXRHc3RC
dWZmZXJTaXplKHByaXYtPmJ1ZmZlci5nZXQoKSkgOiBsZW5ndGgpOworCisjaWZkZWYgR1NUX0FQ
SV9WRVJTSU9OXzEKKyAgICBpZiAocHJpdi0+YnVmZmVyKQorICAgICAgICB1bm1hcEdzdEJ1ZmZl
cihwcml2LT5idWZmZXIuZ2V0KCkpOworI2VuZGlmCiAKICAgICBpZiAocHJpdi0+c2Vla0lEIHx8
IGhhbmRsZSAhPSBwcml2LT5yZXNvdXJjZUhhbmRsZSkgewogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKG1fc3JjLCAiU2VlayBpbiBwcm9ncmVzcywgaWdub3JpbmcgZGF0YSIpOworICAgICAgICBw
cml2LT5idWZmZXIuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEdzdEJ1
ZmZlciogYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jKGxlbmd0aCk7CisgICAgQVNT
RVJUKCFwcml2LT5idWZmZXIgfHwgZGF0YSA9PSBnZXRHc3RCdWZmZXJEYXRhUG9pbnRlcihwcml2
LT5idWZmZXIuZ2V0KCkpKTsKIAotI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCi0gICAgZ3N0X2J1
ZmZlcl9maWxsKGJ1ZmZlciwgMCwgZGF0YSwgbGVuZ3RoKTsKLSNlbHNlCi0gICAgbWVtY3B5KEdT
VF9CVUZGRVJfREFUQShidWZmZXIpLCBkYXRhLCBsZW5ndGgpOwotI2VuZGlmCi0gICAgR1NUX0JV
RkZFUl9PRkZTRVQoYnVmZmVyKSA9IHByaXYtPm9mZnNldDsKKyAgICAvLyBQb3J0cyB1c2luZyB0
aGUgR1N0cmVhbWVyIGJhY2tlbmQgYnV0IG5vdCB0aGUgc291cCBpbXBsZW1lbnRhdGlvbiBvZiBS
ZXNvdXJjZUhhbmRsZQorICAgIC8vIHdvbid0IGJlIHVzaW5nIGJ1ZmZlcnMgcHJvdmlkZWQgYnkg
dGhpcyBjbGllbnQsIHRoZSBidWZmZXIgaXMgY3JlYXRlZCBoZXJlIGluIHRoYXQgY2FzZS4KKyAg
ICBpZiAoIXByaXYtPmJ1ZmZlcikKKyAgICAgICAgcHJpdi0+YnVmZmVyID0gYWRvcHRHUmVmKGNy
ZWF0ZUdzdEJ1ZmZlckZvckRhdGEoZGF0YSwgbGVuZ3RoKSk7CisgICAgZWxzZQorICAgICAgICBz
ZXRHc3RCdWZmZXJTaXplKHByaXYtPmJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKworICAgIEdTVF9C
VUZGRVJfT0ZGU0VUKHByaXYtPmJ1ZmZlci5nZXQoKSkgPSBwcml2LT5vZmZzZXQ7CiAgICAgcHJp
di0+b2Zmc2V0ICs9IGxlbmd0aDsKLSAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQoYnVmZmVyKSA9
IHByaXYtPm9mZnNldDsKKyAgICBHU1RfQlVGRkVSX09GRlNFVF9FTkQocHJpdi0+YnVmZmVyLmdl
dCgpKSA9IHByaXYtPm9mZnNldDsKIAotICAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gZ3N0X2FwcF9z
cmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBidWZmZXIpOworICAgIEdzdEZsb3dSZXR1cm4g
cmV0ID0gZ3N0X2FwcF9zcmNfcHVzaF9idWZmZXIocHJpdi0+YXBwc3JjLCBwcml2LT5idWZmZXIu
bGVha1JlZigpKTsKICNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQogICAgIGlmIChyZXQgIT0gR1NU
X0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9GTE9XX0VPUykKICNlbHNlCkBAIC04ODMsNiArOTIwLDI0
IEBAIHZvaWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpCiAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SKG1f
c3JjLCBDT1JFLCBGQUlMRUQsICgwKSwgKDApKTsKIH0KIAorY2hhciogU3RyZWFtaW5nQ2xpZW50
OjpnZXRCdWZmZXIoaW50IHJlcXVlc3RlZFNpemUsIGludCogYWN0dWFsU2l6ZSkKK3sKKyAgICBX
ZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gbV9zcmMtPnByaXY7CisKKyAgICBBU1NFUlQoIXBy
aXYtPmJ1ZmZlcik7CisKKyAgICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2Fu
ZF9hbGxvYyhyZXF1ZXN0ZWRTaXplKTsKKworI2lmZGVmIEdTVF9BUElfVkVSU0lPTl8xCisgICAg
bWFwR3N0QnVmZmVyKGJ1ZmZlcik7CisjZW5kaWYKKworICAgIHByaXYtPmJ1ZmZlciA9IGFkb3B0
R1JlZihidWZmZXIpOworCisgICAgKmFjdHVhbFNpemUgPSBnZXRHc3RCdWZmZXJTaXplKGJ1ZmZl
cik7CisgICAgcmV0dXJuIGdldEdzdEJ1ZmZlckRhdGFQb2ludGVyKGJ1ZmZlcik7Cit9CisKIHZv
aWQgU3RyZWFtaW5nQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91
YmxlKQogewogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBtX3NyYy0+cHJpdjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaAppbmRleCAzZDU1ZDg2OGE5MzZiY2E4MjcwNmZhN2IzYWU1NzViZmIyYjQyMDI2Li45
MGU2MzFlMTA4NTdmOWJlNGVkYjJhNDkzNzlkNGIzYjE2ZjBlZjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBA
IC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5o
PgogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDb25kaXRpb25h
bE1hY3Jvcy5oPgogI2VuZGlmCkBAIC02Myw3ICs2NywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogICAgIHB1YmxpYzoKKyNp
ZiBVU0UoU09VUCkKKyAgICAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQoKTogbV9idWZmZXIoMCkg
eyB9CisKKyAgICAgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDbGllbnQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgICAgICAgICBnX2ZyZWUobV9i
dWZmZXIpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyID0gMDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorI2Vsc2UKICAgICAgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSB7
IH0KKyNlbmRpZgogCiAgICAgICAgIC8vIHJlcXVlc3QgbWF5IGJlIG1vZGlmaWVkCiAgICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgeyB9
CkBAIC04Miw2ICs5OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KFJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgeyB9
CiAjZW5kaWYKIAorI2lmIFVTRShTT1VQKQorICAgICAgICB2aXJ0dWFsIGNoYXIqIGdldEJ1ZmZl
cihpbnQgcmVxdWVzdGVkTGVuZ3RoLCBpbnQqIGFjdHVhbExlbmd0aCkKKyAgICAgICAgeworICAg
ICAgICAgICAgKmFjdHVhbExlbmd0aCA9IHJlcXVlc3RlZExlbmd0aDsKKworICAgICAgICAgICAg
aWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgICAgICBtX2J1ZmZlciA9IHN0YXRpY19jYXN0PGNo
YXIqPihnX21hbGxvYyhyZXF1ZXN0ZWRMZW5ndGgpKTsKKworICAgICAgICAgICAgcmV0dXJuIG1f
YnVmZmVyOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KQEAgLTEwNyw2ICsx
MzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShCTE9CKQogICAgICAgICB2
aXJ0dWFsIEFzeW5jRmlsZVN0cmVhbSogY3JlYXRlQXN5bmNGaWxlU3RyZWFtKEZpbGVTdHJlYW1D
bGllbnQqKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKKworI2lmIFVTRShTT1VQKQorcHJpdmF0ZToK
KyAgICAgICAgY2hhciogbV9idWZmZXI7CisjZW5kaWYKICAgICB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oCmluZGV4IGI4NDk1NmJhNDJjYWEzNGJlNzEwNzcxNzFlMjJiMDljZDNmYzQ0YjIuLmE0M2Fm
ZDdhYjgxYjIyNjIyMTEwNGE2ZWY4YzdhMDE4ZDBlMzFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBA
IC0xMTMsNiArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShTT1VQKQogICAg
ICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKICAgICAgICAgICAgICwgbV9idWZmZXIoMCkK
KyAgICAgICAgICAgICwgbV9idWZmZXJTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keVNpemUo
MCkKICAgICAgICAgICAgICwgbV9ib2R5RGF0YVNlbnQoMCkKICAgICAgICAgICAgICwgbV9yZWRp
cmVjdENvdW50KDApCkBAIC0yMDAsNiArMjAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBHUmVmUHRyPEdBc3luY1Jlc3VsdD4gbV9kZWZlcnJlZFJlc3VsdDsKICAgICAgICAgR1Jl
ZlB0cjxHU291cmNlPiBtX3RpbWVvdXRTb3VyY2U7CiAgICAgICAgIGNoYXIqIG1fYnVmZmVyOwor
ICAgICAgICBpbnQgbV9idWZmZXJTaXplOwogICAgICAgICB1bnNpZ25lZCBsb25nIG1fYm9keVNp
emU7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9ib2R5RGF0YVNlbnQ7CiAgICAgICAgIFJlZlB0
cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRl
eCA3MTMwOTQ2YWUzZWJiYmNlZDA4OTJhMGU1OWFiOGUwOTkzMTM4MjA1Li5iZTA2ODQ4MTU4MDNm
MTYyM2UxNmM5ZTQ1Y2U3ODRlY2YxYmYxMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAt
NTY1LDggKzU2NSw4IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluCiAgICAgfQogCiAgICAgaWYg
KGQtPm1fYnVmZmVyKSB7Ci0gICAgICAgIGdfc2xpY2VfZnJlZTEoUkVBRF9CVUZGRVJfU0laRSwg
ZC0+bV9idWZmZXIpOwogICAgICAgICBkLT5tX2J1ZmZlciA9IDA7CisgICAgICAgIGQtPm1fYnVm
ZmVyU2l6ZSA9IDA7CiAgICAgfQogCiAgICAgaWYgKGQtPm1fdGltZW91dFNvdXJjZSkgewpAQCAt
NjMzLDEyICs2MzMsMTcgQEAgc3RhdGljIHZvaWQgbmV4dE11bHRpcGFydFJlc3BvbnNlUGFydENh
bGxiYWNrKEdPYmplY3QqIC8qc291cmNlKi8sIEdBc3luY1Jlc3VsdCoKIAogICAgIGNsaWVudC0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZS5nZXQoKSwgZC0+bV9yZXNwb25zZSk7CiAKKyAgICAv
LyBkaWRSZWNlaXZlUmVzcG9uc2UgbWF5IGNhdXNlIHRoZSBjbGllbnQgdG8gYmUgY2hhbmdlZC4K
KyAgICBjbGllbnQgPSBkLT5jbGllbnQoKTsKKwogICAgIGlmIChkLT5tX2NhbmNlbGxlZCB8fCAh
Y2xpZW50KSB7CiAgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9h
c3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgUkVBRF9CVUZGRVJfU0la
RSwKKyAgICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVGRkVSX1NJWkUs
ICZkLT5tX2J1ZmZlclNpemUpOworCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5t
X2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLAogICAgICAg
ICBHX1BSSU9SSVRZX0RFRkFVTFQsIGQtPm1fY2FuY2VsbGFibGUuZ2V0KCksIHJlYWRDYWxsYmFj
aywgaGFuZGxlLmdldCgpKTsKIH0KIApAQCAtNjY4LDcgKzY3Myw5IEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRl
ciBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZC0+bV9idWZmZXIgPSBzdGF0
aWNfY2FzdDxjaGFyKj4oZ19zbGljZV9hbGxvYyhSRUFEX0JVRkZFUl9TSVpFKSk7CisgICAgQVNT
RVJUKCFkLT5tX2J1ZmZlcik7CisKKyAgICBkLT5tX2J1ZmZlciA9IGNsaWVudC0+Z2V0QnVmZmVy
KFJFQURfQlVGRkVSX1NJWkUsICZkLT5tX2J1ZmZlclNpemUpOwogCiAgICAgaWYgKHNvdXBNZXNz
YWdlKSB7CiAgICAgICAgIGlmIChTT1VQX1NUQVRVU19JU19SRURJUkVDVElPTihzb3VwTWVzc2Fn
ZS0+c3RhdHVzX2NvZGUpICYmIHNob3VsZFJlZGlyZWN0KGhhbmRsZS5nZXQoKSkpIHsKQEAgLTcw
Miw3ICs3MDksMTAgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0Kiwg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAKICAgICBjbGllbnQtPmRpZFJl
Y2VpdmVSZXNwb25zZShoYW5kbGUuZ2V0KCksIGQtPm1fcmVzcG9uc2UpOwogCi0gICAgaWYgKGQt
Pm1fY2FuY2VsbGVkKSB7CisgICAgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlIG1heSBjYXVzZSB0aGUg
Y2xpZW50IHRvIGJlIGNoYW5nZWQuCisgICAgY2xpZW50ID0gZC0+Y2xpZW50KCk7CisKKyAgICBp
ZiAoZC0+bV9jYW5jZWxsZWQgfHwgIWNsaWVudCkgewogICAgICAgICBjbGVhbnVwU291cFJlcXVl
c3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcx
NSw3ICs3MjUsOCBAQCBzdGF0aWMgdm9pZCBzZW5kUmVxdWVzdENhbGxiYWNrKEdPYmplY3QqLCBH
QXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgZGF0YSkKICAgICB9CiAKICAgICBkLT5tX2lu
cHV0U3RyZWFtID0gaW5wdXRTdHJlYW07Ci0gICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhk
LT5tX2lucHV0U3RyZWFtLmdldCgpLCBkLT5tX2J1ZmZlciwgUkVBRF9CVUZGRVJfU0laRSwKKwor
ICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+
bV9idWZmZXIsIGQtPm1fYnVmZmVyU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdfUFJJT1JJVFlfREVGQVVMVCwgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVhZENhbGxiYWNr
LCBoYW5kbGUuZ2V0KCkpOwogfQogCkBAIC0xMzY4LDEyICsxMzc5LDE0IEBAIHN0YXRpYyB2b2lk
IHJlYWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50
ZXIgZGF0YSkKICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKGhhbmRsZS5nZXQoKSwgZC0+bV9i
dWZmZXIsIGJ5dGVzUmVhZCwgYnl0ZXNSZWFkKTsKIAogICAgIC8vIGRpZFJlY2VpdmVEYXRhIG1h
eSBjYW5jZWwgdGhlIGxvYWQsIHdoaWNoIG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZS4K
LSAgICBpZiAoZC0+bV9jYW5jZWxsZWQgfHwgIWNsaWVudCkgeworICAgIGlmIChkLT5tX2NhbmNl
bGxlZCB8fCAhaGFuZGxlLT5jbGllbnQoKSkgewogICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RP
cGVyYXRpb24oaGFuZGxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdf
aW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgZC0+bV9idWZm
ZXIsIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICBkLT5tX2J1ZmZl
ciA9IGNsaWVudC0+Z2V0QnVmZmVyKFJFQURfQlVGRkVSX1NJWkUsICZkLT5tX2J1ZmZlclNpemUp
OworCisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0U3RyZWFtLmdldCgp
LCBkLT5tX2J1ZmZlciwgZC0+bV9idWZmZXJTaXplLCBHX1BSSU9SSVRZX0RFRkFVTFQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2Fs
bGJhY2ssIGhhbmRsZS5nZXQoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>