<?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>123532</bug_id>
          
          <creation_ts>2013-10-30 14:25:01 -0700</creation_ts>
          <short_desc>Implement MemoryPressureHandler for Linux system</short_desc>
          <delta_ts>2016-06-30 07:48:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=155255</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>123611</blocked>
    
    <blocked>123612</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="ChangSeok Oh">changseok</reporter>
          <assigned_to name="ChangSeok Oh">changseok</assigned_to>
          <cc>bugzilla</cc>
    
    <cc>bunhere</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joone</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tomeu</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945184</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-10-30 14:25:01 -0700</bug_when>
    <thetext>Implement MemoryPressureHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945586</commentid>
    <comment_count>1</comment_count>
      <attachid>215660</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2013-10-31 10:58:25 -0700</bug_when>
    <thetext>Created attachment 215660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946549</commentid>
    <comment_count>2</comment_count>
      <attachid>215660</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-11-03 23:44:49 -0800</bug_when>
    <thetext>Comment on attachment 215660
Patch

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

Although having an implementation of the MemoryPressureHandler is nice I think a timer is not the right approach. I say this because in general, timers are very bad for embedded devices (the ones mostly suffering from OOM issues) because you&apos;d be waking up the CPU constantly, preventing it from entering into low powered modes.

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:176
&gt; +#endif

This is not correct, the soup cache is an on-disk cache so nothing related to memory usage, you shouldn&apos;t delete it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946565</commentid>
    <comment_count>3</comment_count>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-04 00:44:01 -0800</bug_when>
    <thetext>I would listen for memory.pressure_level notifications, available since 3.10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946632</commentid>
    <comment_count>4</comment_count>
      <attachid>215660</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-04 04:44:05 -0800</bug_when>
    <thetext>Comment on attachment 215660
Patch

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

I agree about the timer not being a good idea. Watching the memory pressure notification is good, but that limits us to a cgroups-contained process, right?

&gt; Source/WebCore/ChangeLog:8
&gt; +        Even there have been several discussions and trials to support early warning mechanism

Even though?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:110
&gt; +    size_t totalVirtualMemory = memTotal + swapTotal;
&gt; +    size_t freeVirtualMemory = memFree + buffers + cached + swapFree;

Not sure about using swap here, would be good to help avoid swapping at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946684</commentid>
    <comment_count>5</comment_count>
      <attachid>215660</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-04 08:27:05 -0800</bug_when>
    <thetext>Comment on attachment 215660
Patch

r- because of the disk cache stuff and because a timer is hurtful</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952563</commentid>
    <comment_count>6</comment_count>
      <attachid>217427</attachid>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-20 07:22:26 -0800</bug_when>
    <thetext>Created attachment 217427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952565</commentid>
    <comment_count>7</comment_count>
      <attachid>217427</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-20 07:26:27 -0800</bug_when>
    <thetext>Comment on attachment 217427
Patch

Attachment 217427 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/29968100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952567</commentid>
    <comment_count>8</comment_count>
      <attachid>217427</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-20 07:29:25 -0800</bug_when>
    <thetext>Comment on attachment 217427
Patch

Attachment 217427 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/30018091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952578</commentid>
    <comment_count>9</comment_count>
      <attachid>217433</attachid>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-20 07:44:07 -0800</bug_when>
    <thetext>Created attachment 217433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953018</commentid>
    <comment_count>10</comment_count>
      <attachid>217433</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-11-21 03:20:26 -0800</bug_when>
    <thetext>Comment on attachment 217433
Patch

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

Looking great, I have a few comments though

&gt; Source/WebCore/ChangeLog:9
&gt; +

Explanation missing here.

&gt; Source/WebKit/gtk/ChangeLog:7
&gt; +

A short description of the changes in WebKit/ is missing here

&gt; Source/WebCore/platform/MemoryPressureHandler.h:77
&gt; +    ThreadIdentifier m_threadId;

What are we using this for?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:64
&gt; +    int ret;

I&apos;d define &quot;ret&quot; when first used

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:100
&gt; +    fd = open(&quot;/sys/fs/cgroup/memory/cgroup.event_control&quot;, O_CLOEXEC | O_WRONLY);

Are this paths broadly available on recent versions of Linux?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:108
&gt; +    ret = snprintf(line, sizeof(line), &quot;%d %d low&quot;, m_eventFD, m_pressureLevelFD);

So we&apos;re emptying the caches as a result of low memory pressure level which means that &quot;the system is reclaiming memory for new allocations&quot;. Isn&apos;t it a bit overkill? Shouldn&apos;t we aim for medium ?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:186
&gt; +    malloc_trim(0);

This method is quite similar to Mac&apos;s implementation, I guess we could share most of it and implement the platform specific bits in the subclasses, maybe in a virtual ::releasePlatformMemory().

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:3902
&gt; +    memoryPressureHandler().install();

Shouldn&apos;t we do this also for efl?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953457</commentid>
    <comment_count>11</comment_count>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-21 23:48:05 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 217433 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217433&amp;action=review
&gt; 
&gt; Looking great, I have a few comments though
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +
&gt; 
&gt; Explanation missing here.

Ok.

&gt; &gt; Source/WebKit/gtk/ChangeLog:7
&gt; &gt; +
&gt; 
&gt; A short description of the changes in WebKit/ is missing here

Ok.

&gt; &gt; Source/WebCore/platform/MemoryPressureHandler.h:77
&gt; &gt; +    ThreadIdentifier m_threadId;
&gt; 
&gt; What are we using this for?

Not really needed, removing it.

&gt; &gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:64
&gt; &gt; +    int ret;
&gt; 
&gt; I&apos;d define &quot;ret&quot; when first used

Sounds good.

&gt; &gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:100
&gt; &gt; +    fd = open(&quot;/sys/fs/cgroup/memory/cgroup.event_control&quot;, O_CLOEXEC | O_WRONLY);
&gt; 
&gt; Are this paths broadly available on recent versions of Linux?

For the past few years, since: http://thread.gmane.org/gmane.linux.kernel/1013171

That&apos;s supposing that something in the system will have mounted the memory subsystem already. If not, the call to open() will fail and the handler won&apos;t be installed.

&gt; &gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:108
&gt; &gt; +    ret = snprintf(line, sizeof(line), &quot;%d %d low&quot;, m_eventFD, m_pressureLevelFD);
&gt; 
&gt; So we&apos;re emptying the caches as a result of low memory pressure level which means that &quot;the system is reclaiming memory for new allocations&quot;. Isn&apos;t it a bit overkill? Shouldn&apos;t we aim for medium ?

I&apos;m not sure on that, as it depends on how fast memory gets used.

&gt; &gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:186
&gt; &gt; +    malloc_trim(0);
&gt; 
&gt; This method is quite similar to Mac&apos;s implementation, I guess we could share most of it and implement the platform specific bits in the subclasses, maybe in a virtual ::releasePlatformMemory().

Good idea.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:3902
&gt; &gt; +    memoryPressureHandler().install();
&gt; 
&gt; Shouldn&apos;t we do this also for efl?

Will add it.

Thanks for the review, good stuff. Hope to send a revised version later today or on Monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954238</commentid>
    <comment_count>12</comment_count>
      <attachid>217869</attachid>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-26 03:27:38 -0800</bug_when>
    <thetext>Created attachment 217869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954239</commentid>
    <comment_count>13</comment_count>
      <attachid>217869</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-26 03:31:39 -0800</bug_when>
    <thetext>Comment on attachment 217869
Patch

Attachment 217869 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/37148033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954240</commentid>
    <comment_count>14</comment_count>
      <attachid>217870</attachid>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-26 03:33:17 -0800</bug_when>
    <thetext>Created attachment 217870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954241</commentid>
    <comment_count>15</comment_count>
      <attachid>217870</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-26 03:36:47 -0800</bug_when>
    <thetext>Comment on attachment 217870
Patch

Attachment 217870 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/37178034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954242</commentid>
    <comment_count>16</comment_count>
      <attachid>217871</attachid>
    <who name="Tomeu Vizoso">tomeu</who>
    <bug_when>2013-11-26 03:37:38 -0800</bug_when>
    <thetext>Created attachment 217871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954477</commentid>
    <comment_count>17</comment_count>
      <attachid>217871</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-11-27 01:47:22 -0800</bug_when>
    <thetext>Comment on attachment 217871
Patch

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

Patch looks awesome to me. Looking forward to having something like this aboard. I just added a last minute suggestion for the implementation of one method.

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:104
&gt; +        return;

What about having something like:

  m_installed = true;
  return;

closeFDsOnError:
  if (m_eventFD)
    close(m_eventFD);
  if (m_pressureLevelFD);
    close(m_pressureLevelFD);
  if (fd);
    close(fd);

at the end of the method? This way we could simplify these three error checking blocks with something like:

if (someFD == -1) {
  LOG_ERROR(whatever);
  goto closeFDsOnError;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967431</commentid>
    <comment_count>18</comment_count>
      <attachid>217871</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-13 11:42:26 -0800</bug_when>
    <thetext>Comment on attachment 217871
Patch

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

&gt; Source/WebCore/platform/MemoryPressureHandler.cpp:37
&gt; +#include &quot;CSSValuePool.h&quot;
&gt; +#include &quot;FontCache.h&quot;
&gt; +#include &quot;GCController.h&quot;
&gt; +#include &quot;MemoryCache.h&quot;
&gt; +#include &quot;PageCache.h&quot;
&gt; +#include &quot;ScrollingThread.h&quot;
&gt; +#include &quot;StorageThread.h&quot;
&gt; +#include &quot;WorkerThread.h&quot;

This is a blatant layering violation. This should not be included here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022254</commentid>
    <comment_count>19</comment_count>
      <attachid>234867</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-07-14 10:42:41 -0700</bug_when>
    <thetext>Created attachment 234867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1025924</commentid>
    <comment_count>20</comment_count>
      <attachid>234867</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-07-31 01:26:39 -0700</bug_when>
    <thetext>Comment on attachment 234867
Patch

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

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:29
&gt; +

We need OS(LINUX) guards in this file.

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:61
&gt; +        return String();

I don&apos;t think this is correct. We either allow a null FILE* so the ASSERT must be removed or we assume that FILE* is never null and then we don&apos;t need the if block (in that case we should probably use a reference instead of a pointer).

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:63
&gt; +    static const unsigned bufferSize = 128;

Where does this magic number come from?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:73
&gt; +        }

So for the case isASCIISpace(ch) == TRUE and index == 0, this is an infinite loop, isn&apos;t it?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:129
&gt; +        closeFDs();

The pattern of LOG_ERROR(); closeFDs() is repeated all over this function, what about having an logErrorAndCloseFDs() inline function?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:167
&gt; +        waitForThreadCompletion(m_threadID);

Does this mean that we&apos;ll block the main thread waiting for the listening thread to finish?

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:203
&gt; +    }

Why this extra block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026603</commentid>
    <comment_count>21</comment_count>
      <attachid>234867</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-08-04 00:00:47 -0700</bug_when>
    <thetext>Comment on attachment 234867
Patch

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

Thanks for the review. :)

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:29
&gt;&gt; +
&gt; 
&gt; We need OS(LINUX) guards in this file.

O.K

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:61
&gt;&gt; +        return String();
&gt; 
&gt; I don&apos;t think this is correct. We either allow a null FILE* so the ASSERT must be removed or we assume that FILE* is never null and then we don&apos;t need the if block (in that case we should probably use a reference instead of a pointer).

Simply removed the ASSERT(file);

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:63
&gt;&gt; +    static const unsigned bufferSize = 128;
&gt; 
&gt; Where does this magic number come from?

The nextToKen is taken from WebMemorySamplerLinux.cpp. So I just used the same value with that of the file. I think it&apos;s o.k to give enough buffer size here to fill a single line of &apos;proc/self/status&apos;.

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:73
&gt;&gt; +        }
&gt; 
&gt; So for the case isASCIISpace(ch) == TRUE and index == 0, this is an infinite loop, isn&apos;t it?

No, it isn&apos;t. Because fgetc returns a next character for each iteration and eventually it returns &apos;EOF&apos;.

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:129
&gt;&gt; +        closeFDs();
&gt; 
&gt; The pattern of LOG_ERROR(); closeFDs() is repeated all over this function, what about having an logErrorAndCloseFDs() inline function?

Yeap.

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:167
&gt;&gt; +        waitForThreadCompletion(m_threadID);
&gt; 
&gt; Does this mean that we&apos;ll block the main thread waiting for the listening thread to finish?

The uninstall() would be invoked after finishing the waiting thread so I don&apos;t think the main thread will not be stuck here. But I agree that the function name is a little confusing. Let&apos;s use detachThread() instead.

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:203
&gt;&gt; +    }
&gt; 
&gt; Why this extra block?

Just followed the convention of MemoryPressureHandler.cpp. But yeah you&apos;re right. that&apos;s not required here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026605</commentid>
    <comment_count>22</comment_count>
      <attachid>235967</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-08-04 00:14:44 -0700</bug_when>
    <thetext>Created attachment 235967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053176</commentid>
    <comment_count>23</comment_count>
      <attachid>242752</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-07 10:18:08 -0800</bug_when>
    <thetext>Created attachment 242752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053228</commentid>
    <comment_count>24</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-12-07 13:24:34 -0800</bug_when>
    <thetext>You&apos;re essentially disabling this at the install method aren&apos;t you? That doesn&apos;t make a lot of sense to me, why do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053329</commentid>
    <comment_count>25</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-08 02:02:07 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; You&apos;re essentially disabling this at the install method aren&apos;t you? That
&gt; doesn&apos;t make a lot of sense to me, why do that?

I thought it would be more safe not to break anything until the feature will be verified by each ports. I don&apos;t know any regression with the feature at least though, I just wanted to make sure. Let me remove the disabling &apos;return&apos; in a next iteration. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053717</commentid>
    <comment_count>26</comment_count>
      <attachid>242752</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-12-09 02:23:33 -0800</bug_when>
    <thetext>Comment on attachment 242752
Patch

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

Sorry for the late review. I have a few suggestions for the next version of the patch.

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:90
&gt; +        LOG_ERROR(&quot;Invalidate eventfd.\n&quot;);

This should use the MemoryPressure log channel. Ditto for all the rest of LOG_ERROR or printf() calls.

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:101
&gt; +    callOnMainThread(bind(&amp;MemoryPressureHandler::respondToMemoryPressure, &amp;memoryPressureHandler(), true));

I think it&apos;d be better to use a lambda here instead of the bind.

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:124
&gt; +#endif

I agree with Gustavo here, we either land the patch or discard it. But landing with the return does not make much sense to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053739</commentid>
    <comment_count>27</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2014-12-09 04:01:34 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; 
&gt; I agree with Gustavo here, we either land the patch or discard it. But
&gt; landing with the return does not make much sense to me.

I also think the same. If it turns out to be a problem we can revert it.

On the webkitgtk+ release and debug bots /sys/fs/cgroup/ is not mounted. (I don&apos;t know on the ARM and 32-bit GTK bots. kov?).

So I guess this is not going to be tested on the bots (at least as they are now deployed).

Also, on my machine /sys/fs/cgroup/ is mounted, but I don&apos;t have a /sys/fs/cgroup/memory/ dir.

Does this require systemd/cgmanager or a specific kernel version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053758</commentid>
    <comment_count>28</comment_count>
      <attachid>242913</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-09 05:41:08 -0800</bug_when>
    <thetext>Created attachment 242913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053759</commentid>
    <comment_count>29</comment_count>
      <attachid>242752</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-09 05:44:16 -0800</bug_when>
    <thetext>Comment on attachment 242752
Patch

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

Thanks for the all comments.

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:90
&gt;&gt; +        LOG_ERROR(&quot;Invalidate eventfd.\n&quot;);
&gt; 
&gt; This should use the MemoryPressure log channel. Ditto for all the rest of LOG_ERROR or printf() calls.

Done. All LOG_ERRORs and printf were replaced with LOG(MemoryPressure, ...)

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:101
&gt;&gt; +    callOnMainThread(bind(&amp;MemoryPressureHandler::respondToMemoryPressure, &amp;memoryPressureHandler(), true));
&gt; 
&gt; I think it&apos;d be better to use a lambda here instead of the bind.

Yup.

&gt;&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:124
&gt;&gt; +#endif
&gt; 
&gt; I agree with Gustavo here, we either land the patch or discard it. But landing with the return does not make much sense to me.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053764</commentid>
    <comment_count>30</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-09 05:51:59 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; 
&gt; &gt; I agree with Gustavo here, we either land the patch or discard it. But
&gt; &gt; landing with the return does not make much sense to me.
&gt; 
&gt; I also think the same. If it turns out to be a problem we can revert it.
&gt; 
&gt; On the webkitgtk+ release and debug bots /sys/fs/cgroup/ is not mounted. (I
&gt; don&apos;t know on the ARM and 32-bit GTK bots. kov?).
&gt; 
&gt; So I guess this is not going to be tested on the bots (at least as they are
&gt; now deployed).
&gt; 
&gt; Also, on my machine /sys/fs/cgroup/ is mounted, but I don&apos;t have a
&gt; /sys/fs/cgroup/memory/ dir.
&gt; 
&gt; Does this require systemd/cgmanager or a specific kernel version?

Did you install &apos;cgroup-bin&apos;? I think neither systemd nor cgmanager is not required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053771</commentid>
    <comment_count>31</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-09 06:45:37 -0800</bug_when>
    <thetext>O.K.. For those who want to try this feature, let me note more info that I know.
1. My system used is Ubuntu 14.10 (14.04 is also tested). Most of recent linux distrubtions support cgroup nowaday. So the kenel version is not that sensitive  I think.
2. Install the cgroup-bin package (ie, apt-get install cgroup-bin). Now you can see a buch of stuff under /sys/fs/cgroup/memory
3. That&apos;s all. Depeding on systems, /sys/fs/cgroup/memory/memory.pressure_level might not be readable with an unknown reason. If that&apos;s the case, just make it readable. (ie, sudo chmod +r /sys/fs/cgroup/memory/memory.pressure_level). Now you&apos;re ready to run/test. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053830</commentid>
    <comment_count>32</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-09 10:07:24 -0800</bug_when>
    <thetext>For those who are interested in this feature, I leave logs what we discussed on irc.

&lt;hadess&gt; changseok had some questions about what to use to get memory pressure information for apps
&lt;hadess&gt; in particular webkit
&lt;hadess&gt; changseok, around?
&lt;poettering&gt; hadess: simply story: the kernel interfaces suck
&lt;poettering&gt; hadess: there&apos;s no stable interface for this really
&lt;poettering&gt; hadess: you can watch the memcg thing, but it actually doesn&apos;t really do what you think it does
&lt;poettering&gt; hadess: and it will change when the new cgroup unified hierarchy is introduced
&lt;hadess&gt; poettering, will the new unified hierarchy be more useful to us?
&lt;poettering&gt; probably not initially
&lt;poettering&gt; sorry, the situation isn&apos;t great
&lt;hadess&gt; we&apos;d need another kernel feature, or is that something that systemd would handle?
&lt;poettering&gt; kernel
&lt;poettering&gt; systemd is not really involved, and shouldn&apos;t be
&lt;poettering&gt; i mean, you can do the memcg thing, but it&apos;s not reliable, will not get you all kinds of events, and use it defensively, so that nothing breaks if the interface is gone in the kernel
&lt;hadess&gt; poettering, right, that&apos;s what i was thinking
&lt;hadess&gt; poettering, we can revisit when the kernel interface has been implemented in a new that&apos;s more reliable
&lt;hadess&gt; s/new/way/
&lt;changseok&gt; hrm.. I see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053832</commentid>
    <comment_count>33</comment_count>
    <who name="Bastien Nocera">bugzilla</who>
    <bug_when>2014-12-09 10:10:54 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; For those who are interested in this feature, I leave logs what we discussed
&gt; on irc.
&lt;snip&gt;

Which just means that if the patch attached handles the absence of the file nicely, then it&apos;s probably good enough/better than nothing, and we can revisit once the kernel interface has been reworked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053839</commentid>
    <comment_count>34</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-09 10:29:36 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; For those who are interested in this feature, I leave logs what we discussed
&gt; &gt; on irc.
&gt; &lt;snip&gt;
&gt; 
&gt; Which just means that if the patch attached handles the absence of the file
&gt; nicely, then it&apos;s probably good enough/better than nothing, and we can
&gt; revisit once the kernel interface has been reworked.

Great! Then who can give this r+? Sergio, do you have any other concern?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054092</commentid>
    <comment_count>35</comment_count>
      <attachid>242913</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-12-10 01:56:31 -0800</bug_when>
    <thetext>Comment on attachment 242913
Patch

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

&gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:102
&gt; +        memoryPressureHandler().respondToMemoryPressure(true);

I think I didn&apos;t explain myself correctly. When I asked to move this to a lambda I was suggesting to move all the code in respondToMemoryPressure() to the lambda and remove the the method as it&apos;s only called from here AFAIK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054114</commentid>
    <comment_count>36</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-10 04:40:33 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Comment on attachment 242913 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=242913&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:102
&gt; &gt; +        memoryPressureHandler().respondToMemoryPressure(true);
&gt; 
&gt; I think I didn&apos;t explain myself correctly. When I asked to move this to a
&gt; lambda I was suggesting to move all the code in respondToMemoryPressure() to
&gt; the lambda and remove the the method as it&apos;s only called from here AFAIK.

Oh. I see. But the respondToMemoryPressure() is a common method shared with other port like Mac. Even though we can move code in the respondToMemoryPressure() to a lamda, we can&apos;t remove the method itself so that we leave the method empty. Do you really want it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054171</commentid>
    <comment_count>37</comment_count>
      <attachid>243029</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-10 09:12:40 -0800</bug_when>
    <thetext>Created attachment 243029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054438</commentid>
    <comment_count>38</comment_count>
      <attachid>243029</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2014-12-11 00:41:29 -0800</bug_when>
    <thetext>Comment on attachment 243029
Patch

Good job!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054759</commentid>
    <comment_count>39</comment_count>
      <attachid>243029</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2014-12-11 23:03:47 -0800</bug_when>
    <thetext>Comment on attachment 243029
Patch

Finally! Thanks for the review. Let&apos;s go forward =D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054791</commentid>
    <comment_count>40</comment_count>
      <attachid>243029</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 01:20:38 -0800</bug_when>
    <thetext>Comment on attachment 243029
Patch

Clearing flags on attachment: 243029

Committed r177216: &lt;http://trac.webkit.org/changeset/177216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054792</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-12 01:20:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215660</attachid>
            <date>2013-10-31 10:58:25 -0700</date>
            <delta_ts>2014-07-14 10:42:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20131101025823.patch</filename>
            <type>text/plain</type>
            <size>12115</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI1MmU5NGJkZjJiMzY0
YTVkNDczMTk4YzYxZGYzZjk3ZDMyMjMxNi4uZjU1NGExZmEyNTA4MTI5MWNjZWMwMjI1ZDM2OTQ3
ZjAwMTQ0OWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTEwLTMxICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW4gdGhlcmUgaGF2ZSBiZWVuIHNl
dmVyYWwgZGlzY3Vzc2lvbnMgYW5kIHRyaWFscyB0byBzdXBwb3J0IGVhcmx5IHdhcm5pbmcgbWVj
aGFuaXNtCisgICAgICAgIGZvciBPdXQgb2YgTWVtb3J5LCBMaW51eCBkb2Vzbid0IGhhdmUgYSBw
cm9wZXIgZXZlbnQgb3Igd2hhdGV2ZXIgZm9yIHRoZSBPT00geWV0IGFzIEkga25vdy4KKyAgICAg
ICAgU28gSSdkIGxpa2UgdG8gcHJvcG9zZSB1c2luZyBhIHRpbWVyIGNoZWNraW5nIG1lbW9yeSBz
dGF0dXMgcmVndWxhcmx5IGZvcgorICAgICAgICB0aGUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIG9u
IExpbnV4LiBUaGUgbG9naWMgaXMgcXVpdGUgc2ltcGxlLiBJZiB3ZSBpbnN0YWxsCisgICAgICAg
IE1lbW9yeVByZXNzdXJlSGFuZGxlciBhdCBiZWdpbmluZyBvZiB3ZWJ2aWV3LCBpdHMgdGltZXIg
Y2FsbGJhY2sgaXMgaW52b2tlZCByZWd1bGFybHkKKyAgICAgICAgKDEgc2Vjb25kIGFzIGRlZmF1
bHQpLiBUaGVuIHdlIGxvYWQgL3Byb2MvbWVtaW5mbyBhbmQgZ2F0aGVyIGFsbCBpbmZvcm1hdGlv
bnMgcmVsYXRlZCB3aXRoCisgICAgICAgIGxpbnV4IHZpcnR1YWwgbWVtb3J5LiBJZiBmcmVlIHZp
cnR1YWwgbWVtb3J5IGRyb3BzIHVuZGVyIDUlIG9mIHRvdGFsIHZpcnR1YWwgbWVtb3J5LAorICAg
ICAgICB3ZSBkcmFpbiBhbGwgY2FjaGVzLiBUaGlzIGNoYW5nZSBkb2Vzbid0IGluY2x1ZGUgdGhl
IGluc3RhbGwgY29kZS4gSXQgd291bGQgYmUgZGVhbHQKKyAgICAgICAgaW4gc2VwZXJhdGVkIGJ1
Z3MgdG8gYWRkIGl0IHdpdGggcG9ydCBjb25maWd1cmF0aW9uIG9wdGlvbiBjb25jdXJyZW50bHku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZCB5
ZXQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3Jt
RWZsLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om5leHRUb2tlbik6IHBhcnNlIHRva2VuIGZyb20gbWVt
aW5mby4gdGhpcyBjb21lcyBmcm9tIFdlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAKKyAgICAgICAg
KFdlYkNvcmU6Om5lZWRUb05vdGlmeU91dE9mTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjp1bmluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpob2xkT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KToKKwogMjAxMy0xMC0zMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTCBidWlsZCBm
aXg7IGdpdmUgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBzdHJ1Y3QgYSBkZWZhdWx0IGNv
bnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTljZmJmOWUzNzk3
ZWJjZTY5N2EyYmZjN2I0Y2Y1YmU0NTkzZWVmNS4uYmVhMmJmMTUzNzI3ZjZiNjI3NDJiNjgwM2M4
N2NlNTY4OTBjZTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01MzczLDYg
KzUzNzMsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCA0ZDc1Y2I0OWUwMjhiM2U1YjE3MjJjMDcwNzI4YzZhOGVkNzdk
ZjY5Li5hYWJhNmZiY2RkYzc2ZTgxNjVkMDI1MDgyYmVhYjc5M2IxYzExMTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtMTQ0LDYgKzE0NCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNh
aXJvLmNwcAogCiAgICAgcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcAorICAg
IHBsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcAogCiAgICAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNw
cAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcAppbmRleCA1ZThlN2NjM2ZjMjEwZjY2MGJlMGQ2YmExNzRiNTg4MDc0ZWRkOTJiLi40NDU5
ZjJjMmM4MzI0YTJlOTBhMzM4NGE4MWQzOWI1YmRhMDljNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTM2LDE0ICszNiwx
OCBAQCBNZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1lbW9yeVByZXNzdXJlSGFuZGxlcigpCiAgICAg
cmV0dXJuIHN0YXRpY01lbW9yeVByZXNzdXJlSGFuZGxlcjsKIH0KIAotTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKSAKK01lbW9yeVByZXNzdXJlSGFuZGxlcjo6
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKICAgICA6IG1faW5zdGFsbGVkKGZhbHNlKQogICAgICwg
bV9sYXN0UmVzcG9uZFRpbWUoMCkKICAgICAsIG1fbG93TWVtb3J5SGFuZGxlcihyZWxlYXNlTWVt
b3J5KQorI2lmIE9TKExJTlVYKQorICAgICwgbV9uZXh0RmlyZUludGVydmFsKDApCisgICAgLCBt
X3RpbWVyKHRoaXMsICZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRpbWVyRmlyZWQpCisjZW5kaWYK
IHsKIH0KIAotI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiAoIVBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSkgJiYgIU9TKExJTlVYKQogCiB2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpIHsgfQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnVuaW5zdGFsbCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaAppbmRleCA5NTBhZTg1MmRmZTA5MDhlYjM0Mzg5Y2ZjZmI2YjQyNmI5NGM3
OTRmLi4xOTBlYjU3MmM5ODI3N2M1ZTc2NmY1Nzk0YzIxODNiN2JkOGQwMWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtMjksNiAr
MjksMTAgQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
IAorI2lmIE9TKExJTlVYKQorI2luY2x1ZGUgIlRpbWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB0eXBlZGVmIHZvaWQgKCpMb3dNZW1vcnlIYW5kbGVyKShib29sIGNyaXRp
Y2FsKTsKQEAgLTYwLDYgKzY0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luc3RhbGxlZDsK
ICAgICB0aW1lX3QgbV9sYXN0UmVzcG9uZFRpbWU7CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xv
d01lbW9yeUhhbmRsZXI7CisKKyNpZiBPUyhMSU5VWCkKKyAgICB1bnNpZ25lZCBtX25leHRGaXJl
SW50ZXJ2YWw7CisgICAgVGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtX3RpbWVyOworICAg
IHZvaWQgdGltZXJGaXJlZChUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+Kik7CisjZW5kaWYK
IH07CiAgCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBtZW1vcnkgcHJlc3N1cmUg
b2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZmI3ZWM1YzkwYTI3
NWU0NGViYmQxY2Q2ZmY2MzM5YWRkYTVlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTAs
MCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaCIKKworI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIkZvbnRDYWNo
ZS5oIgorI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CisjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTdG9yYWdlVGhyZWFkLmgiCisj
aW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisK
KyNpZiBVU0UoU09VUCkKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIERpc2FibGUgbWVtb3J5IGV2ZW50IHJlY2VwdGlvbiBmb3Ig
YSBtaW5pbXVtIG9mIHNfbWluaW11bUhvbGRPZmZUaW1lCisvLyBzZWNvbmRzIGFmdGVyIGRyYWlu
aW5nIGNhY2hlcy4gRG9uJ3QgbGV0IHRoZSBkcmFpbmluZyBvY2N1ciBhbnkgc29vbmVyIHRoYW4K
Ky8vIHNfaG9sZE9mZk11bHRpcGxpZXIgdGltZXMgdGhlIGxhc3QgY2xlYW51cCBwcm9jZXNzaW5n
IHRpbWUuIEVmZmVjdGl2ZWx5CisvLyB0aGlzIGlzIDEgLyBzX2hvbGRPZmZNdWx0aXBsaWVyIHBl
cmNlbnQgb2YgdGhlIHRpbWUuCisvLyBUaGVzZSB2YWx1ZSBzZWVtcyByZWFzb25hYmxlIGFuZCB0
ZXN0aW5nIHZlcmlmaWVzIHRoYXQgaXQgdGhyb3R0bGVzIGZyZXF1ZW50CisvLyBkcmFpbmluZyBj
YWNoZXMsIGdyZWF0bHkgcmVkdWNpbmcgQ1BVIHVzYWdlLgorc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNfbWluaW11bUhvbGRPZmZUaW1lID0gNTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzX2hvbGRP
ZmZNdWx0aXBsaWVyID0gMjA7CitzdGF0aWMgY29uc3QgZG91YmxlIHNfbWVtb3J5U3RhdHVzUmVm
cmVzaEludGVydmFsID0gMS4wOyAvLyAxIHNlYworLy8gVGhpcyBpcyBhIHNvbWV3aGF0IGhldXJp
c3RpYyBmYWN0b3IuIElmIGZyZWUgbWVtb3J5IGRyb3BzIHVuZGVyIDUlIG9mIHdob2xlIHZpcnR1
YWwgbWVtb3J5CisvLyBXZSBkcmFpbiBhbGwgY2FjaGVkIHJlc291cmNlLgorc3RhdGljIGNvbnN0
IGRvdWJsZSBzX3JhdGlvT2ZJbnRvbGVyYW5jZSA9IDAuMDU7CisKK3N0YXRpYyBpbmxpbmUgU3Ry
aW5nIG5leHRUb2tlbihGSUxFKiBmaWxlKQoreworICAgIEFTU0VSVChmaWxlKTsKKyAgICBpZiAo
IWZpbGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBidWZmZXJTaXplID0gMTI4OworICAgIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVdID0gezAs
IH07CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IGJ1ZmZlclNp
emUpIHsKKyAgICAgICAgY2hhciBjaCA9IGZnZXRjKGZpbGUpOworICAgICAgICBpZiAoY2ggPT0g
RU9GIHx8IChpc0FTQ0lJU3BhY2UoY2gpICYmIGluZGV4KSkgLy8gQnJlYWsgb24gbm9uLWluaXRp
YWwgQVNDSUkgc3BhY2UuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFpc0FTQ0lJ
U3BhY2UoY2gpKSB7CisgICAgICAgICAgICBidWZmZXJbaW5kZXhdID0gY2g7CisgICAgICAgICAg
ICBpbmRleCsrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIp
OworfQorCitzdGF0aWMgYm9vbCBuZWVkVG9Ob3RpZnlPdXRPZk1lbW9yeSgpCit7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIG1lbUluZm9QYXRoID0gIi9wcm9jL21lbWluZm8iOworICAgIEZJTEUq
IGZpbGUgPSBmb3BlbihtZW1JbmZvUGF0aCwgInIiKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHNpemVfdCBtZW1Ub3RhbCA9IDAsIG1lbUZyZWUgPSAwLCBi
dWZmZXJzID0gMCwgY2FjaGVkID0gMCwgc3dhcFRvdGFsID0gMCwgc3dhcEZyZWUgPSAwOyAvLyBr
QgorICAgIFN0cmluZyB0b2tlbiA9IG5leHRUb2tlbihmaWxlKTsKKyAgICB3aGlsZSAoIXRva2Vu
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAodG9rZW4gPT0gIk1lbVRvdGFsOiIpCisgICAgICAg
ICAgICBtZW1Ub3RhbCA9IG5leHRUb2tlbihmaWxlKS50b0ludCgpOworICAgICAgICBlbHNlIGlm
ICh0b2tlbiA9PSAiTWVtRnJlZToiKQorICAgICAgICAgICAgbWVtRnJlZSA9IG5leHRUb2tlbihm
aWxlKS50b0ludCgpOworICAgICAgICBlbHNlIGlmICh0b2tlbiA9PSAiQnVmZmVyczoiKQorICAg
ICAgICAgICAgYnVmZmVycyA9IG5leHRUb2tlbihmaWxlKS50b0ludCgpOworICAgICAgICBlbHNl
IGlmICh0b2tlbiA9PSAiQ2FjaGVkOiIpCisgICAgICAgICAgICBjYWNoZWQgPSBuZXh0VG9rZW4o
ZmlsZSkudG9JbnQoKTsKKyAgICAgICAgZWxzZSBpZiAodG9rZW4gPT0gIlN3YXBUb3RhbDoiKQor
ICAgICAgICAgICAgc3dhcFRvdGFsID0gbmV4dFRva2VuKGZpbGUpLnRvSW50KCk7CisgICAgICAg
IGVsc2UgaWYgKHRva2VuID09ICJTd2FwRnJlZToiKQorICAgICAgICAgICAgc3dhcEZyZWUgPSBu
ZXh0VG9rZW4oZmlsZSkudG9JbnQoKTsKKworICAgICAgICB0b2tlbiA9IG5leHRUb2tlbihmaWxl
KTsKKyAgICB9CisgICAgZmNsb3NlKGZpbGUpOworCisgICAgc2l6ZV90IHRvdGFsVmlydHVhbE1l
bW9yeSA9IG1lbVRvdGFsICsgc3dhcFRvdGFsOworICAgIHNpemVfdCBmcmVlVmlydHVhbE1lbW9y
eSA9IG1lbUZyZWUgKyBidWZmZXJzICsgY2FjaGVkICsgc3dhcEZyZWU7CisKKyAgICByZXR1cm4g
ZnJlZVZpcnR1YWxNZW1vcnkgPCB0b3RhbFZpcnR1YWxNZW1vcnkgKiBzX3JhdGlvT2ZJbnRvbGVy
YW5jZTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRpbWVyRmlyZWQoVGltZXI8
TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiopCit7CisgICAgaWYgKCFuZWVkVG9Ob3RpZnlPdXRPZk1l
bW9yeSgpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgp
OworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAgaWYg
KG1faW5zdGFsbGVkIHx8IG1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fbmV4dEZpcmVJbnRlcnZhbCkKKyAgICAgICAgbV90aW1lci5zdGFydChzdGF0aWNf
Y2FzdDxkb3VibGU+KG1fbmV4dEZpcmVJbnRlcnZhbCksIHNfbWVtb3J5U3RhdHVzUmVmcmVzaElu
dGVydmFsKTsKKyAgICBlbHNlCisgICAgICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcoc19tZW1v
cnlTdGF0dXNSZWZyZXNoSW50ZXJ2YWwpOworCisgICAgbV9pbnN0YWxsZWQgPSB0cnVlOworfQor
Cit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKK3sKKyAgICBpZiAoIW1f
aW5zdGFsbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBt
X2luc3RhbGxlZCA9IGZhbHNlOworICAgIG1fbmV4dEZpcmVJbnRlcnZhbCA9IDA7Cit9CisKK3Zv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkIHNlY29uZHMpCit7Cisg
ICAgbV9uZXh0RmlyZUludGVydmFsID0gc2Vjb25kczsKKyAgICBtZW1vcnlQcmVzc3VyZUhhbmRs
ZXIoKS5pbnN0YWxsKCk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25k
VG9NZW1vcnlQcmVzc3VyZSgpCit7CisgICAgdW5pbnN0YWxsKCk7CisKKyAgICBkb3VibGUgc3Rh
cnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICBtX2xvd01lbW9y
eUhhbmRsZXIoZmFsc2UpOworCisgICAgdW5zaWduZWQgaG9sZE9mZlRpbWUgPSAobW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCkgLSBzdGFydFRpbWUpICogc19ob2xkT2ZmTXVsdGlwbGllcjsK
KworICAgIGhvbGRPZmYoc3RkOjptYXgoaG9sZE9mZlRpbWUsIHNfbWluaW11bUhvbGRPZmZUaW1l
KSk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KGJvb2wp
Cit7CisgICAgaW50IHNhdmVkUGFnZUNhY2hlQ2FwYWNpdHkgPSBwYWdlQ2FjaGUoKS0+Y2FwYWNp
dHkoKTsKKyAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoMCk7CisgICAgcGFnZUNhY2hlKCkt
PnNldENhcGFjaXR5KHNhdmVkUGFnZUNhY2hlQ2FwYWNpdHkpOworCisjaWYgVVNFKFNPVVApCisg
ICAgU291cFNlc3Npb24qIHNlc3Npb24gPSBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKKyAgICBTb3VwQ2FjaGUqIHNvdXBDYWNoZSA9IFNPVVBfQ0FDSEUoc291cF9zZXNzaW9uX2dl
dF9mZWF0dXJlKHNlc3Npb24sIFNPVVBfVFlQRV9DQUNIRSkpOworICAgIGlmIChzb3VwQ2FjaGUp
CisgICAgICAgIHNvdXBfY2FjaGVfY2xlYXIoc291cENhY2hlKTsKKyNlbmRpZgorCisgICAgZm9u
dENhY2hlKCktPnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworCisgICAgbWVtb3J5Q2FjaGUoKS0+
cHJ1bmVUb1BlcmNlbnRhZ2UoMCk7CisKKyAgICBjc3NWYWx1ZVBvb2woKS5kcmFpbigpOworCisg
ICAgZ2NDb250cm9sbGVyKCkuZGlzY2FyZEFsbENvbXBpbGVkQ29kZSgpOworCisgICAgLy8gRmFz
dE1hbGxvYyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBjYWNoZXMgdGhhdCBjYW4gb25s
eSBiZSBjbGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCisgICAgU3RvcmFnZVRocmVhZDo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CisjaWYgRU5BQkxFKFdP
UktFUlMpCisgICAgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFs
bFRocmVhZHMoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAg
U2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVl
TWVtb3J5KSk7CisjZW5kaWYKKyAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217427</attachid>
            <date>2013-11-20 07:22:26 -0800</date>
            <delta_ts>2013-11-20 07:44:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20131120162224.patch</filename>
            <type>text/plain</type>
            <size>12537</size>
            <attacher name="Tomeu Vizoso">tomeu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjliZGY4YWIyZTk5ZTA4
NGFmMjFhMDQ0ZGFmMWU2MjAxOTRkMDY2ZC4uYzFlOGY5MzhmYmRmZjE5Yjc2NWY2ODhlZTVlMWJh
YWQ5MGRkNjg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTExLTIwICBUb21l
dSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQsIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp3YWl0Rm9yRXZlbnRUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkpOgorCiAyMDEz
LTExLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2Fu
bm90IGFuaW1hdGUgInBvaW50cyIgYXR0cmlidXRlIGZvciA8c3ZnOnBvbHlnb24+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggMjM3NzExZDUwZTBiMDAxMTA1NGViODdiNTdkMDk1MTA5YTQwZmM3Ny4uNGZk
NTc2NTg1YTgxOTZkNzFiMTE0YTdmMDkyYzFiMjBiNzViOTZjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTExLTIwICBUb21ldSBWaXpvc28gIDx0b21ldS52aXpvc29A
Y29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2luaXQpOgorCiAyMDEzLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgTkVXUyBhbmQgVmVy
c2lvbnMubTQgZm9yIDIuMy4yIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAxMWEwZmM1YWZjNmZmODZiMzliZjNjZDQ0NDg3YjU3MWRkZWI4OThjLi5hMDkyZjMzYzQy
ZjYzZTdhNTkwN2E5OGI2ZmRkYjhiNzBhMjFkYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTQxOTYsNiArNDE5Niw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhh
c2guaCBcCkBAIC01NDA2LDYgKzU0MDcsNyBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGludXgvR2FtZXBhZERldmljZUxpbnV4LmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2Vu
dGVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAKaW5kZXggNWU4ZTdjYzNmYzIxMGY2NjBiZTBkNmJhMTc0YjU4ODA3NGVkZDkyYi4u
MWE5NzMxNDk1MWZjMjZiMmRjNjEyMjVlOGZhOTVmNWEyYWMyZGZhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsMTAgKzQxLDE2IEBAIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKICAgICA6IG1faW5zdGFsbGVk
KGZhbHNlKQogICAgICwgbV9sYXN0UmVzcG9uZFRpbWUoMCkKICAgICAsIG1fbG93TWVtb3J5SGFu
ZGxlcihyZWxlYXNlTWVtb3J5KQorI2lmIE9TKExJTlVYKQorICAgICwgbV9ldmVudEZEKDApCisg
ICAgLCBtX3ByZXNzdXJlTGV2ZWxGRCgwKQorICAgICwgbV90aHJlYWRJZCgwKQorICAgICwgbV9o
b2xkT2ZmVGltZXIodGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJGaXJlZCkKKyNl
bmRpZgogewogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQorI2lmICgh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpKSAmJiAhT1MoTElOVVgpCiAKIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6dW5pbnN0YWxsKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9y
eVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDk1MGFlODUyZGZlMDkwOGViMzQzODljZmNmYjZiNDI2
Yjk0Yzc5NGYuLjI0NTllNGM5NmNiYzQxYzMyYWMwMzQwYmFjNWQ3MDg2MTc4NDBjYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgUmFzcGJlcnJ5IFBpIEZvdW5kYXRp
b24KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjksMTEgQEAKIAog
I2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKworI2lmIE9TKExJTlVYKQorI2luY2x1ZGUgIlRpbWVyLmgiCisj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw5ICs2MywyMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKTsKICAgICBzdGF0aWMgdm9pZCBy
ZWxlYXNlTWVtb3J5KGJvb2wgY3JpdGljYWwpOwogCisjaWYgT1MoTElOVVgpCisgICAgc3RhdGlj
IHZvaWQgd2FpdEZvckV2ZW50VGhyZWFkKHZvaWQqIGRhdGEpOworI2VuZGlmCisKICAgICBib29s
IG1faW5zdGFsbGVkOwogICAgIHRpbWVfdCBtX2xhc3RSZXNwb25kVGltZTsKICAgICBMb3dNZW1v
cnlIYW5kbGVyIG1fbG93TWVtb3J5SGFuZGxlcjsKKworI2lmIE9TKExJTlVYKQorICAgIGludCBt
X2V2ZW50RkQ7CisgICAgaW50IG1fcHJlc3N1cmVMZXZlbEZEOworICAgIFRocmVhZElkZW50aWZp
ZXIgbV90aHJlYWRJZDsKKyAgICBUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1faG9sZE9m
ZlRpbWVyOworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+
Kik7CisjZW5kaWYKIH07CiAgCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBtZW1v
cnkgcHJlc3N1cmUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0
NzBhMDQ0OWQwOGRiZGYxOWJlMTA4MmQyMmY4NjgwNGQ4Njk1ZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51
eC5jcHAKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJh
c3BiZXJyeSBQaSBGb3VuZGF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaCIKKworI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIkZvbnRDYWNo
ZS5oIgorI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgi
CisjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCisj
aW5jbHVkZSAiU3RvcmFnZVRocmVhZC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2lu
Y2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8c3lzL2V2ZW50
ZmQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIERpc2FibGUg
bWVtb3J5IGV2ZW50IHJlY2VwdGlvbiBmb3IgYSBtaW5pbXVtIG9mIHNfbWluaW11bUhvbGRPZmZU
aW1lCisvLyBzZWNvbmRzIGFmdGVyIHJlY2VpdmluZyBhbiBldmVudC4gRG9uJ3QgbGV0IGV2ZW50
cyBmaXJlIGFueSBzb29uZXIgdGhhbgorLy8gc19ob2xkT2ZmTXVsdGlwbGllciB0aW1lcyB0aGUg
bGFzdCBjbGVhbnVwIHByb2Nlc3NpbmcgdGltZS4gRWZmZWN0aXZlbHkKKy8vIHRoaXMgaXMgMSAv
IHNfaG9sZE9mZk11bHRpcGxpZXIgcGVyY2VudCBvZiB0aGUgdGltZS4KKy8vIFRoZXNlIHZhbHVl
IHNlZW1zIHJlYXNvbmFibGUgYW5kIHRlc3RpbmcgdmVyaWZpZXMgdGhhdCBpdCB0aHJvdHRsZXMg
ZnJlcXVlbnQKKy8vIGxvdyBtZW1vcnkgZXZlbnRzLCBncmVhdGx5IHJlZHVjaW5nIENQVSB1c2Fn
ZS4KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21pbmltdW1Ib2xkT2ZmVGltZSA9IDU7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19ob2xkT2ZmTXVsdGlwbGllciA9IDIwOworCit2b2lkIE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6d2FpdEZvckV2ZW50VGhyZWFkKHZvaWQqIGRhdGEpCit7CisgICAg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKiBoYW5kbGVyID0gcmVpbnRlcnByZXRfY2FzdDxNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIqPihkYXRhKTsKKyAgICB1aW50NjRfdCByZXN1bHQ7CisgICAgaW50IHJl
dDsKKworICAgIGlmICghaGFuZGxlci0+bV9ldmVudEZEKQorICAgICAgICByZXR1cm47CisKKyAg
ICByZXQgPSByZWFkKGhhbmRsZXItPm1fZXZlbnRGRCwgJnJlc3VsdCwgc2l6ZW9mKHJlc3VsdCkp
OworICAgIGlmIChyZXQgPiAwKQorICAgICAgICBoYW5kbGVyLT5yZXNwb25kVG9NZW1vcnlQcmVz
c3VyZSgpOworICAgIGVsc2UKKyAgICAgICAgTE9HX0VSUk9SKCJmYWlsdXJlIHJlYWRpbmcgZnJv
bSBldmVudGZkOiAlZFxuIiwgcmV0KTsKKworICAgIGhhbmRsZXItPm1fdGhyZWFkSWQgPSAwOwor
fQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAgaW50IGZk
OworICAgIGNoYXIgbGluZVsxMDBdOworICAgIGludCByZXQ7CisKKyAgICBpZiAobV9pbnN0YWxs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZXZlbnRGRCA9IGV2ZW50ZmQoMCwgRUZEX0NM
T0VYRUMpOworICAgIGlmIChtX2V2ZW50RkQgPT0gLTEpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJl
dmVudGZkKCkgZmFpbGVkOiAlbSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9w
cmVzc3VyZUxldmVsRkQgPSBvcGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvbWVtb3J5LnByZXNz
dXJlX2xldmVsIiwgT19DTE9FWEVDIHwgT19SRE9OTFkpOworICAgIGlmIChtX3ByZXNzdXJlTGV2
ZWxGRCA9PSAtMSkgeworICAgICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBMT0dfRVJS
T1IoIm9wZW4oKSBmYWlsZWQgZm9yIG1lbW9yeS5wcmVzc3VyZV9sZXZlbDogJW1cbiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZmQgPSBvcGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1v
cnkvY2dyb3VwLmV2ZW50X2NvbnRyb2wiLCBPX0NMT0VYRUMgfCBPX1dST05MWSk7CisgICAgaWYg
KGZkID09IC0xKSB7CisgICAgICAgIGNsb3NlKG1fZXZlbnRGRCk7CisgICAgICAgIGNsb3NlKG1f
cHJlc3N1cmVMZXZlbEZEKTsKKyAgICAgICAgTE9HX0VSUk9SKCJvcGVuKCkgZmFpbGVkIGZvciBj
Z3JvdXAuZXZlbnRfY29udHJvbDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgcmV0ID0gc25wcmludGYobGluZSwgc2l6ZW9mKGxpbmUpLCAiJWQgJWQgbG93IiwgbV9ldmVu
dEZELCBtX3ByZXNzdXJlTGV2ZWxGRCk7CisgICAgcmV0ID0gd3JpdGUoZmQsIGxpbmUsIHN0cmxl
bihsaW5lKSArIDEpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgY2xvc2UobV9ldmVu
dEZEKTsKKyAgICAgICAgY2xvc2UobV9wcmVzc3VyZUxldmVsRkQpOworICAgICAgICBjbG9zZShm
ZCk7CisgICAgICAgIExPR19FUlJPUigiZmFpbHVyZSB3cml0aW5nIHRvIGNncm91cC5ldmVudF9j
b250cm9sOiAlbVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7
CisKKyAgICBtX3RocmVhZElkID0gY3JlYXRlVGhyZWFkKHdhaXRGb3JFdmVudFRocmVhZCwgdGhp
cywgIndhaXRGb3JFdmVudFRocmVhZCIpOworCisgICAgbV9pbnN0YWxsZWQgPSB0cnVlOworfQor
Cit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKK3sKKyAgICBpZiAoIW1f
aW5zdGFsbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9ldmVudEZEKQorICAgICAg
ICBjbG9zZShtX2V2ZW50RkQpOworCisgICAgaWYgKG1fcHJlc3N1cmVMZXZlbEZEKQorICAgICAg
ICBjbG9zZShtX3ByZXNzdXJlTGV2ZWxGRCk7CisKKyAgICBtX2luc3RhbGxlZCA9IGZhbHNlOwor
fQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJGaXJlZChUaW1lcjxNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI+KikKK3sKKyAgICBpbnN0YWxsKCk7Cit9CisKK3ZvaWQgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkIHNlY29uZHMpCit7CisgICAgbV9ob2xkT2Zm
VGltZXIuc3RhcnRPbmVTaG90KHNlY29uZHMpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKQoreworICAgIHVuaW5zdGFsbCgpOworCisg
ICAgZG91YmxlIHN0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCisg
ICAgbV9sb3dNZW1vcnlIYW5kbGVyKGZhbHNlKTsKKworICAgIHVuc2lnbmVkIGhvbGRPZmZUaW1l
ID0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gc3RhcnRUaW1lKSAqIHNfaG9sZE9m
Zk11bHRpcGxpZXI7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJk1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aG9sZE9mZiwgdGhpcywgc3RkOjptYXgoaG9sZE9mZlRpbWUsIHNfbWluaW11bUhv
bGRPZmZUaW1lKSkpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1l
bW9yeShib29sKQoreworICAgIGludCBzYXZlZFBhZ2VDYWNoZUNhcGFjaXR5ID0gcGFnZUNhY2hl
KCktPmNhcGFjaXR5KCk7CisKKyAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoMCk7CisgICAg
cGFnZUNhY2hlKCktPnNldENhcGFjaXR5KHNhdmVkUGFnZUNhY2hlQ2FwYWNpdHkpOworCisgICAg
Zm9udENhY2hlKCktPnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworCisgICAgbWVtb3J5Q2FjaGUo
KS0+cHJ1bmVUb1BlcmNlbnRhZ2UoMCk7CisKKyAgICBjc3NWYWx1ZVBvb2woKS5kcmFpbigpOwor
CisgICAgZ2NDb250cm9sbGVyKCkuZGlzY2FyZEFsbENvbXBpbGVkQ29kZSgpOworCisgICAgLy8g
RmFzdE1hbGxvYyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBjYWNoZXMgdGhhdCBjYW4g
b25seSBiZSBjbGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCisgICAgU3RvcmFnZVRocmVh
ZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CisjaWYgRU5BQkxF
KFdPUktFUlMpCisgICAgV29ya2VyVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJ
bkFsbFRocmVhZHMoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisg
ICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5KSk7CisjZW5kaWYKKyAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eSgpOworICAgIG1hbGxvY190cmltKDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZDY0NzdlODRl
Zjc3NDIwZDJmNzNiOWU1MjUwMGU0NDAxYjc4NGY5NS4uZDMxOWVlN2M0OTZmYjBjODA3NWRjMmE3
OTRjYTRjZmZkYmE5YzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcApAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5o
IgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5j
bHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGFnZUNhY2hlLmgiCkBAIC0zODk4LDYgKzM4OTksOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHByaXYtPmFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0ID0gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNyZWF0
ZSh3ZWJWaWV3KTsKICNlbmRpZgogCisgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkuaW5zdGFs
bCgpOworCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiZGlyZWN0aW9uLWNoYW5nZWQi
LCBHX0NBTExCQUNLKHdlYmtpdFdlYlZpZXdEaXJlY3Rpb25DaGFuZ2VkKSwgMCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217433</attachid>
            <date>2013-11-20 07:44:07 -0800</date>
            <delta_ts>2013-11-26 03:27:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20131120164405.patch</filename>
            <type>text/plain</type>
            <size>13144</size>
            <attacher name="Tomeu Vizoso">tomeu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjliZGY4YWIyZTk5ZTA4
NGFmMjFhMDQ0ZGFmMWU2MjAxOTRkMDY2ZC4uYTQ3NGUxZmE4MzBmNDE4MGNjZWVlZjFiOTkwNTU4
NDRhYjFlZGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTExLTIwICBUb21l
dSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQsIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVt
b3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJM
aW51eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojp3YWl0Rm9yRXZlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omhv
bGRPZmYpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25k
VG9NZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OnJlbGVhc2VNZW1vcnkpOgorCiAyMDEzLTExLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0
c0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2Fubm90IGFuaW1hdGUgInBvaW50cyIgYXR0cmlidXRl
IGZvciA8c3ZnOnBvbHlnb24+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMjM3NzExZDUwZTBiMDAxMTA1
NGViODdiNTdkMDk1MTA5YTQwZmM3Ny4uNGZkNTc2NTg1YTgxOTZkNzFiMTE0YTdmMDkyYzFiMjBi
NzViOTZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTExLTIwICBU
b21ldSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorCiAyMDEzLTExLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBVcGRhdGUgTkVXUyBhbmQgVmVyc2lvbnMubTQgZm9yIDIuMy4yIHJlbGVhc2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDdjZmRlYzc0YWY1MWUyZTY2MzdiN2I5Zjg0N2Q4ZjlmYjc5
ZTJkYzEuLmMwNDVmZTgzOWIwOThjNWRjMjFmMTA3YTg3M2Q0MjgzZTc0Zjk0ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yMDEzLDYgKzIwMTMsOCBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCiAgICAgcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHAKIAorICAgIHBsYXRmb3JtL2xpbnV4L01lbW9y
eVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcAorCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2
YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMTFhMGZjNWFmYzZmZjg2
YjM5YmYzY2Q0NDQ4N2I1NzFkZGViODk4Yy4uYTA5MmYzM2M0MmY2M2U3YTU5MDdhOThiNmZkZGI4
YjcwYTIxZGEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MTk2LDYgKzQx
OTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW4uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggXApAQCAtNTQwNiw2ICs1
NDA3LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51
eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDVlOGU3
Y2MzZmMyMTBmNjYwYmUwZDZiYTE3NGI1ODgwNzRlZGQ5MmIuLjFhOTczMTQ5NTFmYzI2YjJkYzYx
MjI1ZThmYTk1ZjVhMmFjMmRmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQwLDEwICs0MSwxNiBAQCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcigpCiAgICAgOiBtX2luc3RhbGxlZChmYWxzZSkKICAgICAsIG1fbGFz
dFJlc3BvbmRUaW1lKDApCiAgICAgLCBtX2xvd01lbW9yeUhhbmRsZXIocmVsZWFzZU1lbW9yeSkK
KyNpZiBPUyhMSU5VWCkKKyAgICAsIG1fZXZlbnRGRCgwKQorICAgICwgbV9wcmVzc3VyZUxldmVs
RkQoMCkKKyAgICAsIG1fdGhyZWFkSWQoMCkKKyAgICAsIG1faG9sZE9mZlRpbWVyKHRoaXMsICZN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnRpbWVyRmlyZWQpCisjZW5kaWYKIHsKIH0KIAotI2lmICFQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKKyNpZiAoIVBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKSkgJiYgIU9TKExJTlVYKQogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
aW5zdGFsbCgpIHsgfQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApp
bmRleCA5NTBhZTg1MmRmZTA5MDhlYjM0Mzg5Y2ZjZmI2YjQyNmI5NGM3OTRmLi4yNDU5ZTRjOTZj
YmM0MWMzMmFjMDM0MGJhYzVkNzA4NjE3ODQwY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI5LDExIEBACiAKICNpbmNsdWRlIDx0aW1lLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisK
KyNpZiBPUyhMSU5VWCkKKyNpbmNsdWRlICJUaW1lci5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTcsOSArNjMsMjEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRU
b01lbW9yeVByZXNzdXJlKCk7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZU1lbW9yeShib29sIGNy
aXRpY2FsKTsKIAorI2lmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdhaXRGb3JFdmVudFRo
cmVhZCh2b2lkKiBkYXRhKTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2luc3RhbGxlZDsKICAgICB0
aW1lX3QgbV9sYXN0UmVzcG9uZFRpbWU7CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xvd01lbW9y
eUhhbmRsZXI7CisKKyNpZiBPUyhMSU5VWCkKKyAgICBpbnQgbV9ldmVudEZEOworICAgIGludCBt
X3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSWQ7CisgICAg
VGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiBtX2hvbGRPZmZUaW1lcjsKKyAgICB2b2lkIHRp
bWVyRmlyZWQoVGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiopOworI2VuZGlmCiB9OwogIAog
Ly8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgbWVtb3J5IHByZXNzdXJlIG9iamVjdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJl
SGFuZGxlckxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVBy
ZXNzdXJlSGFuZGxlckxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDcwYTA0NDlkMDhkYmRmMTliZTEw
ODJkMjJmODY4MDRkODY5NWZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMTg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBSYXNwYmVycnkgUGkgRm91bmRhdGlv
bgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCisKKyNpbmNsdWRl
ICJDU1NWYWx1ZVBvb2wuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJHQ0Nv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIlBhZ2VDYWNo
ZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIlN0b3JhZ2VUaHJl
YWQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2lu
Y2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN5cy9ldmVudGZkLmg+CisjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBEaXNhYmxlIG1lbW9yeSBldmVudCByZWNlcHRp
b24gZm9yIGEgbWluaW11bSBvZiBzX21pbmltdW1Ib2xkT2ZmVGltZQorLy8gc2Vjb25kcyBhZnRl
ciByZWNlaXZpbmcgYW4gZXZlbnQuIERvbid0IGxldCBldmVudHMgZmlyZSBhbnkgc29vbmVyIHRo
YW4KKy8vIHNfaG9sZE9mZk11bHRpcGxpZXIgdGltZXMgdGhlIGxhc3QgY2xlYW51cCBwcm9jZXNz
aW5nIHRpbWUuIEVmZmVjdGl2ZWx5CisvLyB0aGlzIGlzIDEgLyBzX2hvbGRPZmZNdWx0aXBsaWVy
IHBlcmNlbnQgb2YgdGhlIHRpbWUuCisvLyBUaGVzZSB2YWx1ZSBzZWVtcyByZWFzb25hYmxlIGFu
ZCB0ZXN0aW5nIHZlcmlmaWVzIHRoYXQgaXQgdGhyb3R0bGVzIGZyZXF1ZW50CisvLyBsb3cgbWVt
b3J5IGV2ZW50cywgZ3JlYXRseSByZWR1Y2luZyBDUFUgdXNhZ2UuCitzdGF0aWMgY29uc3QgdW5z
aWduZWQgc19taW5pbXVtSG9sZE9mZlRpbWUgPSA1Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
aG9sZE9mZk11bHRpcGxpZXIgPSAyMDsKKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ondh
aXRGb3JFdmVudFRocmVhZCh2b2lkKiBkYXRhKQoreworICAgIE1lbW9yeVByZXNzdXJlSGFuZGxl
ciogaGFuZGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWVtb3J5UHJlc3N1cmVIYW5kbGVyKj4oZGF0
YSk7CisgICAgdWludDY0X3QgcmVzdWx0OworICAgIGludCByZXQ7CisKKyAgICBpZiAoIWhhbmRs
ZXItPm1fZXZlbnRGRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0ID0gcmVhZChoYW5kbGVy
LT5tX2V2ZW50RkQsICZyZXN1bHQsIHNpemVvZihyZXN1bHQpKTsKKyAgICBpZiAocmV0ID4gMCkK
KyAgICAgICAgaGFuZGxlci0+cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKTsKKyAgICBlbHNlCisg
ICAgICAgIExPR19FUlJPUigiZmFpbHVyZSByZWFkaW5nIGZyb20gZXZlbnRmZDogJWRcbiIsIHJl
dCk7CisKKyAgICBoYW5kbGVyLT5tX3RocmVhZElkID0gMDsKK30KKwordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6Omluc3RhbGwoKQoreworICAgIGludCBmZDsKKyAgICBjaGFyIGxpbmVbMTAw
XTsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKG1faW5zdGFsbGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2V2ZW50RkQgPSBldmVudGZkKDAsIEVGRF9DTE9FWEVDKTsKKyAgICBpZiAobV9l
dmVudEZEID09IC0xKSB7CisgICAgICAgIExPR19FUlJPUigiZXZlbnRmZCgpIGZhaWxlZDogJW0i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcHJlc3N1cmVMZXZlbEZEID0gb3Bl
bigiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L21lbW9yeS5wcmVzc3VyZV9sZXZlbCIsIE9fQ0xPRVhF
QyB8IE9fUkRPTkxZKTsKKyAgICBpZiAobV9wcmVzc3VyZUxldmVsRkQgPT0gLTEpIHsKKyAgICAg
ICAgY2xvc2UobV9ldmVudEZEKTsKKyAgICAgICAgTE9HX0VSUk9SKCJvcGVuKCkgZmFpbGVkIGZv
ciBtZW1vcnkucHJlc3N1cmVfbGV2ZWw6ICVtXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGZkID0gb3BlbigiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L2Nncm91cC5ldmVudF9jb250
cm9sIiwgT19DTE9FWEVDIHwgT19XUk9OTFkpOworICAgIGlmIChmZCA9PSAtMSkgeworICAgICAg
ICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBjbG9zZShtX3ByZXNzdXJlTGV2ZWxGRCk7Cisg
ICAgICAgIExPR19FUlJPUigib3BlbigpIGZhaWxlZCBmb3IgY2dyb3VwLmV2ZW50X2NvbnRyb2w6
ICVtXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJldCA9IHNucHJpbnRmKGxp
bmUsIHNpemVvZihsaW5lKSwgIiVkICVkIGxvdyIsIG1fZXZlbnRGRCwgbV9wcmVzc3VyZUxldmVs
RkQpOworICAgIHJldCA9IHdyaXRlKGZkLCBsaW5lLCBzdHJsZW4obGluZSkgKyAxKTsKKyAgICBp
ZiAocmV0ID09IC0xKSB7CisgICAgICAgIGNsb3NlKG1fZXZlbnRGRCk7CisgICAgICAgIGNsb3Nl
KG1fcHJlc3N1cmVMZXZlbEZEKTsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBMT0dfRVJS
T1IoImZhaWx1cmUgd3JpdGluZyB0byBjZ3JvdXAuZXZlbnRfY29udHJvbDogJW1cbiIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY2xvc2UoZmQpOworCisgICAgbV90aHJlYWRJZCA9
IGNyZWF0ZVRocmVhZCh3YWl0Rm9yRXZlbnRUaHJlYWQsIHRoaXMsICJ3YWl0Rm9yRXZlbnRUaHJl
YWQiKTsKKworICAgIG1faW5zdGFsbGVkID0gdHJ1ZTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnVuaW5zdGFsbCgpCit7CisgICAgaWYgKCFtX2luc3RhbGxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKG1fZXZlbnRGRCkKKyAgICAgICAgY2xvc2UobV9ldmVudEZEKTsK
KworICAgIGlmIChtX3ByZXNzdXJlTGV2ZWxGRCkKKyAgICAgICAgY2xvc2UobV9wcmVzc3VyZUxl
dmVsRkQpOworCisgICAgbV9pbnN0YWxsZWQgPSBmYWxzZTsKK30KKwordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnRpbWVyRmlyZWQoVGltZXI8TWVtb3J5UHJlc3N1cmVIYW5kbGVyPiopCit7
CisgICAgaW5zdGFsbCgpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9m
Zih1bnNpZ25lZCBzZWNvbmRzKQoreworICAgIG1faG9sZE9mZlRpbWVyLnN0YXJ0T25lU2hvdChz
ZWNvbmRzKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9y
eVByZXNzdXJlKCkKK3sKKyAgICB1bmluc3RhbGwoKTsKKworICAgIGRvdWJsZSBzdGFydFRpbWUg
PSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgIG1fbG93TWVtb3J5SGFuZGxl
cihmYWxzZSk7CisKKyAgICB1bnNpZ25lZCBob2xkT2ZmVGltZSA9IChtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSAtIHN0YXJ0VGltZSkgKiBzX2hvbGRPZmZNdWx0aXBsaWVyOworCisgICAg
Y2FsbE9uTWFpblRocmVhZChiaW5kKCZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYsIHRo
aXMsIHN0ZDo6bWF4KGhvbGRPZmZUaW1lLCBzX21pbmltdW1Ib2xkT2ZmVGltZSkpKTsKK30KKwor
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkKK3sKKyAgICBp
bnQgc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOworCisg
ICAgcGFnZUNhY2hlKCktPnNldENhcGFjaXR5KDApOworICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBh
Y2l0eShzYXZlZFBhZ2VDYWNoZUNhcGFjaXR5KTsKKworICAgIGZvbnRDYWNoZSgpLT5wdXJnZUlu
YWN0aXZlRm9udERhdGEoKTsKKworICAgIG1lbW9yeUNhY2hlKCktPnBydW5lVG9QZXJjZW50YWdl
KDApOworCisgICAgY3NzVmFsdWVQb29sKCkuZHJhaW4oKTsKKworICAgIGdjQ29udHJvbGxlcigp
LmRpc2NhcmRBbGxDb21waWxlZENvZGUoKTsKKworICAgIC8vIEZhc3RNYWxsb2MgaGFzIGxvY2st
ZnJlZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJlZCBmcm9t
IHRoZSB0aHJlYWQgaXRzZWxmLgorICAgIFN0b3JhZ2VUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIFdvcmtl
clRocmVhZDo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CisjZW5k
aWYKKyNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQorICAgIFNjcm9sbGluZ1RocmVhZDo6
ZGlzcGF0Y2goYmluZChXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSkpOworI2VuZGlm
CisgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKKyAgICBtYWxsb2NfdHJp
bSgwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGQ2NDc3ZTg0ZWY3NzQyMGQyZjczYjllNTI1MDBl
NDQwMWI3ODRmOTUuLmQzMTllZTdjNDk2ZmIwYzgwNzVkYzJhNzk0Y2E0Y2ZmZGJhOWMwNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTczLDYgKzcz
LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKICNpbmNsdWRlICJNYWluRnJh
bWUuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJl
SGFuZGxlci5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgpAQCAtMzg5
OCw2ICszODk5LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldykKICAgICBwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpjcmVhdGUod2ViVmlldyk7CiAjZW5kaWYK
IAorICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlcigpLmluc3RhbGwoKTsKKwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Qod2ViVmlldywgImRpcmVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh3ZWJraXRX
ZWJWaWV3RGlyZWN0aW9uQ2hhbmdlZCksIDApOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217869</attachid>
            <date>2013-11-26 03:27:38 -0800</date>
            <delta_ts>2013-11-26 03:33:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20131126122736.patch</filename>
            <type>text/plain</type>
            <size>18176</size>
            <attacher name="Tomeu Vizoso">tomeu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzMTRkMjA1NTRmM2U1
MjBhYTE1N2U4MjcwZGM2ZGFiODdlNmRjMy4uNzc1ZDFkNjA4NTMzOTkxOTA5Yjg1MTY1MzY1NzQx
MWM1MTJkOGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTExLTI2ICBUb21l
dSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXMgdGhlIHByZXNzdXJlX2xldmVs
IG1lY2hhbmlzbSBmcm9tIHRoZSBtZW1vcnkgc3Vic3lzdGVtIHRvIGdldAorICAgICAgICBub3Rp
ZmllZCBvZiB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZWFjaGVzIHRoZSAibG93IiBtZW1vcnkgcHJl
c3N1cmUKKyAgICAgICAgbGV2ZWwuIFNwbGl0cyBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVh
c2VNZW1vcnkgaW4gYQorICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBtZXRob2QgdG8gYXZv
aWQgZHVwbGljYXRpbmcgY29kZS4KKworICAgICAgICBGb3IgbW9yZSBkZXRhaWxzOgorCisgICAg
ICAgIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9tZW1v
cnkudHh0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCwgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlUGxh
dGZvcm1NZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpy
ZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp3YWl0
Rm9yRXZlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5p
bnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJl
bGVhc2VQbGF0Zm9ybU1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL01lbW9yeVByZXNz
dXJlSGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cmVsZWFzZVBsYXRmb3JtTWVtb3J5KToKKwogMjAxMy0xMS0yNiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFsbG93IHNob3dp
bmcgYSBjb250ZXh0IG1lbnUgb24gYWxsIG1vdXNlIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkZDdmY2E0NmFjMDNjOGM4M2FmNzFkNTJjZGJkY2NhODJlM2YxOWYyLi45NzY2MzJmZTgwNDdk
MDg2MWYzZmQ5MjE3MWVhZWY1ZDhmOGM3NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMTEtMjYgIFRvbWV1IFZpem9zbyAgPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZm9yIExpbnV4
IHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIzNTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zdGFsbCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW4gbmV3KCkuCisKKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxMy0xMS0y
MyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXgg
MjM3NzExZDUwZTBiMDAxMTA1NGViODdiNTdkMDk1MTA5YTQwZmM3Ny4uNWY2ZjdlMjdjMTdkODEw
Nzg3NDg1YzI4OTRkNDViMDU5MjYzNzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTExLTI2ICBUb21ldSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBz
eXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
c3RhbGwgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluIGluaXQoKS4KKworICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKwog
MjAxMy0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIFZlcnNpb25zLm00IGZvciAyLjMu
MiByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NGViYmIzM2ZlY2IzOWY4NzQ0YWVi
ZWU4MDU4MGJjYTFhN2QzNjRkLi5jYTg1M2MzNzA3MGYyOGJiZmY1MTEzMDllMjFlNTg1NGZkYzQ4
NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjAxNCw2ICsyMDE0LDggQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAog
ICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guY3BwCiAKKyAgICBwbGF0Zm9y
bS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKKwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGEx
MDk2OTAyODcwYzZjNjcxYTY1Njk2MGE1ODllYjNmYWE5ZWE4YWQuLjUyZTkzOWVkNWMxOTY5NDY4
OGIxMTZhZWM4YWE1ZmU2NzAxOWNkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNDE5Niw2ICs0MTk2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oIFwK
QEAgLTU0MDQsMTAgKzU0MDUsMTMgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFp
blRocmVhZFRhc2suaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRl
ci5oIFwKQEAgLTYwMzYsOCArNjA0MCw2IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL05vdEltcGxlbWVudGVkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcAppbmRleCA1ZThlN2NjM2ZjMjEwZjY2MGJlMGQ2YmExNzRiNTg4MDc0ZWRkOTJiLi41
MmMzMDE3ZTNkMjA4NDVjMTUzMWNmZjBhMGVjMGFjNmI3YmIyOTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNywxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogCisjaW5jbHVk
ZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJQYWdlQ2Fj
aGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTdG9yYWdlVGhy
ZWFkLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNyArNDksNDcgQEAgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQogICAgIDogbV9pbnN0YWxs
ZWQoZmFsc2UpCiAgICAgLCBtX2xhc3RSZXNwb25kVGltZSgwKQogICAgICwgbV9sb3dNZW1vcnlI
YW5kbGVyKHJlbGVhc2VNZW1vcnkpCisjaWYgT1MoTElOVVgpCisgICAgLCBtX2V2ZW50RkQoMCkK
KyAgICAsIG1fcHJlc3N1cmVMZXZlbEZEKDApCisgICAgLCBtX2hvbGRPZmZUaW1lcih0aGlzLCAm
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aW1lckZpcmVkKQorI2VuZGlmCiB7CiB9CiAKLSNpZiAh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgKCFQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPUykpICYmICFPUyhMSU5VWCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Omluc3RhbGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7
IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpIHsgfQot
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkgeyB9Cit2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZVBsYXRmb3JtTWVtb3J5KGJvb2wpIHsgfQog
CiAjZW5kaWYKIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9v
bCBjcml0aWNhbCkKK3sKKyAgICBpbnQgc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNo
ZSgpLT5jYXBhY2l0eSgpOworICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eSgwKTsKKyAgICBw
YWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSk7CisKKyAgICBm
b250Q2FjaGUoKS0+cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisKKyAgICBtZW1vcnlDYWNoZSgp
LT5wcnVuZVRvUGVyY2VudGFnZSgwKTsKKworICAgIGNzc1ZhbHVlUG9vbCgpLmRyYWluKCk7CisK
KyAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29tcGlsZWRDb2RlKCk7CisKKyAgICAvLyBG
YXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBv
bmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0c2VsZi4KKyAgICBTdG9yYWdlVGhyZWFk
OjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKKyAgICBXb3JrZXJU
aHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworI2lmIEVO
QUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChi
aW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KSk7CisjZW5kaWYKKyAgICBXVEY6
OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOworCisgICAgcmVsZWFzZVBsYXRmb3JtTWVt
b3J5KGNyaXRpY2FsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA5NTBhZTg1MmRm
ZTA5MDhlYjM0Mzg5Y2ZjZmI2YjQyNmI5NGM3OTRmLi5mN2VhZTZiNGU1NGE3N2YxOWNiNThiZWFi
MGQwZjlmOWUzMmVhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzMwLDEwIEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAKKyNpZiBPUyhMSU5VWCkKKyNpbmNsdWRlICJUaW1lci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB2b2lkICgqTG93TWVtb3J5SGFuZGxlciko
Ym9vbCBjcml0aWNhbCk7CkBAIC01NiwxMCArNjEsMjIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKTsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5
KGJvb2wgY3JpdGljYWwpOworICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VQbGF0Zm9ybU1lbW9yeShi
b29sIGNyaXRpY2FsKTsKKworI2lmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdhaXRGb3JF
dmVudFRocmVhZCh2b2lkKiBkYXRhKTsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2luc3RhbGxlZDsK
ICAgICB0aW1lX3QgbV9sYXN0UmVzcG9uZFRpbWU7CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xv
d01lbW9yeUhhbmRsZXI7CisKKyNpZiBPUyhMSU5VWCkKKyAgICBpbnQgbV9ldmVudEZEOworICAg
IGludCBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+
IG1faG9sZE9mZlRpbWVyOworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+Kik7CisjZW5kaWYKIH07CiAgCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGds
b2JhbCBtZW1vcnkgcHJlc3N1cmUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmYjQ2NGI5M2RjMzczZmQxNTYxNmFhNDRiMTU4MGRjNGYzZjFhMWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJMaW51eC5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaCIKKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bWFsbG9j
Lmg+CisjaW5jbHVkZSA8c3lzL2V2ZW50ZmQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIERpc2FibGUgbWVtb3J5IGV2ZW50IHJlY2VwdGlvbiBmb3IgYSBtaW5p
bXVtIG9mIHNfbWluaW11bUhvbGRPZmZUaW1lCisvLyBzZWNvbmRzIGFmdGVyIHJlY2VpdmluZyBh
biBldmVudC4gRG9uJ3QgbGV0IGV2ZW50cyBmaXJlIGFueSBzb29uZXIgdGhhbgorLy8gc19ob2xk
T2ZmTXVsdGlwbGllciB0aW1lcyB0aGUgbGFzdCBjbGVhbnVwIHByb2Nlc3NpbmcgdGltZS4gRWZm
ZWN0aXZlbHkKKy8vIHRoaXMgaXMgMSAvIHNfaG9sZE9mZk11bHRpcGxpZXIgcGVyY2VudCBvZiB0
aGUgdGltZS4KKy8vIFRoZXNlIHZhbHVlIHNlZW1zIHJlYXNvbmFibGUgYW5kIHRlc3RpbmcgdmVy
aWZpZXMgdGhhdCBpdCB0aHJvdHRsZXMgZnJlcXVlbnQKKy8vIGxvdyBtZW1vcnkgZXZlbnRzLCBn
cmVhdGx5IHJlZHVjaW5nIENQVSB1c2FnZS4KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21pbmlt
dW1Ib2xkT2ZmVGltZSA9IDU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc19ob2xkT2ZmTXVsdGlw
bGllciA9IDIwOworCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6d2FpdEZvckV2ZW50VGhy
ZWFkKHZvaWQqIGRhdGEpCit7CisgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyKiBoYW5kbGVyID0g
cmVpbnRlcnByZXRfY2FzdDxNZW1vcnlQcmVzc3VyZUhhbmRsZXIqPihkYXRhKTsKKyAgICB1aW50
NjRfdCByZXN1bHQ7CisKKyAgICBpZiAoIWhhbmRsZXItPm1fZXZlbnRGRCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW50IHJldCA9IHJlYWQoaGFuZGxlci0+bV9ldmVudEZELCAmcmVzdWx0LCBz
aXplb2YocmVzdWx0KSk7CisgICAgaWYgKHJldCA+IDApCisgICAgICAgIGhhbmRsZXItPnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKCk7CisgICAgZWxzZQorICAgICAgICBMT0dfRVJST1IoImZhaWx1
cmUgcmVhZGluZyBmcm9tIGV2ZW50ZmQ6ICVkXG4iLCByZXQpOworfQorCit2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAgaW50IGZkOworICAgIGNoYXIgbGluZVsx
MDBdOworICAgIGludCByZXQ7CisKKyAgICBpZiAobV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZXZlbnRGRCA9IGV2ZW50ZmQoMCwgRUZEX0NMT0VYRUMpOworICAgIGlmICht
X2V2ZW50RkQgPT0gLTEpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJldmVudGZkKCkgZmFpbGVkOiAl
bSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBv
cGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvbWVtb3J5LnByZXNzdXJlX2xldmVsIiwgT19DTE9F
WEVDIHwgT19SRE9OTFkpOworICAgIGlmIChtX3ByZXNzdXJlTGV2ZWxGRCA9PSAtMSkgeworICAg
ICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBMT0dfRVJST1IoIm9wZW4oKSBmYWlsZWQg
Zm9yIG1lbW9yeS5wcmVzc3VyZV9sZXZlbDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZmQgPSBvcGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvY2dyb3VwLmV2ZW50X2Nv
bnRyb2wiLCBPX0NMT0VYRUMgfCBPX1dST05MWSk7CisgICAgaWYgKGZkID09IC0xKSB7CisgICAg
ICAgIGNsb3NlKG1fZXZlbnRGRCk7CisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsK
KyAgICAgICAgTE9HX0VSUk9SKCJvcGVuKCkgZmFpbGVkIGZvciBjZ3JvdXAuZXZlbnRfY29udHJv
bDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmV0ID0gc25wcmludGYo
bGluZSwgc2l6ZW9mKGxpbmUpLCAiJWQgJWQgbG93IiwgbV9ldmVudEZELCBtX3ByZXNzdXJlTGV2
ZWxGRCk7CisgICAgcmV0ID0gd3JpdGUoZmQsIGxpbmUsIHN0cmxlbihsaW5lKSArIDEpOworICAg
IGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgY2xvc2UobV9ldmVudEZEKTsKKyAgICAgICAgY2xv
c2UobV9wcmVzc3VyZUxldmVsRkQpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIExPR19F
UlJPUigiZmFpbHVyZSB3cml0aW5nIHRvIGNncm91cC5ldmVudF9jb250cm9sOiAlbVxuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICBjcmVhdGVUaHJl
YWQod2FpdEZvckV2ZW50VGhyZWFkLCB0aGlzLCAid2FpdEZvckV2ZW50VGhyZWFkIik7CisKKyAg
ICBtX2luc3RhbGxlZCA9IHRydWU7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1
bmluc3RhbGwoKQoreworICAgIGlmICghbV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2V2ZW50RkQpCisgICAgICAgIGNsb3NlKG1fZXZlbnRGRCk7CisKKyAgICBpZiAo
bV9wcmVzc3VyZUxldmVsRkQpCisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsKKwor
ICAgIG1faW5zdGFsbGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojp0aW1lckZpcmVkKFRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4qKQoreworICAgIGluc3Rh
bGwoKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQg
c2Vjb25kcykKK3sKKyAgICBtX2hvbGRPZmZUaW1lci5zdGFydE9uZVNob3Qoc2Vjb25kcyk7Cit9
CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgp
Cit7CisgICAgdW5pbnN0YWxsKCk7CisKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICBtX2xvd01lbW9yeUhhbmRsZXIoZmFsc2UpOwor
CisgICAgdW5zaWduZWQgaG9sZE9mZlRpbWUgPSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgLSBzdGFydFRpbWUpICogc19ob2xkT2ZmTXVsdGlwbGllcjsKKworICAgIGNhbGxPbk1haW5U
aHJlYWQoYmluZCgmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmLCB0aGlzLCBzdGQ6Om1h
eChob2xkT2ZmVGltZSwgc19taW5pbXVtSG9sZE9mZlRpbWUpKSk7Cit9CisKK3ZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlUGxhdGZvcm1NZW1vcnkoYm9vbCkKK3sKKyAgICBtYWxs
b2NfdHJpbSgwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KaW5k
ZXggMjNmYjRmZWI2MmZjMTJiN2Y4NzI1YThiMTQ5NWQxMTRjODkwOTM3Yy4uZWQzYmQxYmMxZWNj
MmViZDFiMjMyNjE1ZmUwZjg3NGJmZDBkOTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCkBAIC0yNiwxNSAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9DU1NWYWx1ZVBvb2wuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR0NDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJQb29sLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGlu
Z1RocmVhZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9TdG9yYWdlVGhyZWFkLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dvcmtlclRocmVhZC5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4KQEAgLTE0
MiwzNCArMTM0LDE0IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSgpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAotdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkKK3ZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpyZWxlYXNlUGxhdGZvcm1NZW1vcnkoYm9vbCkKIHsKLSAgICBpbnQgc2F2ZWRQYWdl
Q2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwotICAgIHBhZ2VDYWNoZSgp
LT5zZXRDYXBhY2l0eSgwKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdl
Q2FjaGVDYXBhY2l0eSk7Ci0KICAgICBOU1VSTENhY2hlICpuc3VybENhY2hlID0gW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdOwogICAgIE5TVUludGVnZXIgc2F2ZWROc3VybENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSBbbnN1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV07CiAgICAgW25zdXJsQ2FjaGUg
c2V0TWVtb3J5Q2FwYWNpdHk6MF07CiAgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6
c2F2ZWROc3VybENhY2hlTWVtb3J5Q2FwYWNpdHldOwogCi0gICAgZm9udENhY2hlKCktPnB1cmdl
SW5hY3RpdmVGb250RGF0YSgpOwotCi0gICAgbWVtb3J5Q2FjaGUoKS0+cHJ1bmVUb1BlcmNlbnRh
Z2UoMCk7Ci0KICAgICBMYXllclBvb2w6OnNoYXJlZFBvb2woKS0+ZHJhaW4oKTsKLQotICAgIGNz
c1ZhbHVlUG9vbCgpLmRyYWluKCk7Ci0KLSAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29t
cGlsZWRDb2RlKCk7Ci0KLSAgICAvLyBGYXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNw
ZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0
c2VsZi4KLSAgICBTdG9yYWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFs
bFRocmVhZHMoKTsKLSAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eUluQWxsVGhyZWFkcygpOwotI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCi0gICAgU2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KSk7Ci0jZW5kaWYKLSAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApp
bmRleCBiZTJiYzRmMGJlNjE0MDMwZjI2Nzk3ODMwZDJjMjZhOWYyMGU0OGJlLi41YTRjMDQ1YjU5
OWZmMGIwNjFiMWU3NmE4YTNhMTMwNDRhZGYyM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTg1Nyw2ICs4NTcsOCBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBf
ZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIHBy
aXYtPmlzQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKICNlbmRpZgogCisgICAgbWVtb3J5UHJl
c3N1cmVIYW5kbGVyKCkuaW5zdGFsbCgpOworCiAgICAgcmV0dXJuIHByaXY7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBkNjQ3N2U4NGVmNzc0
MjBkMmY3M2I5ZTUyNTAwZTQ0MDFiNzg0Zjk1Li5kMzE5ZWU3YzQ5NmZiMGM4MDc1ZGMyYTc5NGNh
NGNmZmRiYTljMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgiCiAj
aW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRl
ICJNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdl
Q2FjaGUuaCIKQEAgLTM4OTgsNiArMzg5OSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcHJpdi0+YWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQgPSBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y3JlYXRlKHdl
YlZpZXcpOwogI2VuZGlmCiAKKyAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5pbnN0YWxsKCk7
CisKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJkaXJlY3Rpb24tY2hhbmdlZCIsIEdf
Q0FMTEJBQ0sod2Via2l0V2ViVmlld0RpcmVjdGlvbkNoYW5nZWQpLCAwKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217870</attachid>
            <date>2013-11-26 03:33:17 -0800</date>
            <delta_ts>2013-11-26 03:37:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20131126123312.patch</filename>
            <type>text/plain</type>
            <size>18390</size>
            <attacher name="Tomeu Vizoso">tomeu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzMTRkMjA1NTRmM2U1
MjBhYTE1N2U4MjcwZGM2ZGFiODdlNmRjMy4uNzc1ZDFkNjA4NTMzOTkxOTA5Yjg1MTY1MzY1NzQx
MWM1MTJkOGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTExLTI2ICBUb21l
dSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXMgdGhlIHByZXNzdXJlX2xldmVs
IG1lY2hhbmlzbSBmcm9tIHRoZSBtZW1vcnkgc3Vic3lzdGVtIHRvIGdldAorICAgICAgICBub3Rp
ZmllZCBvZiB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZWFjaGVzIHRoZSAibG93IiBtZW1vcnkgcHJl
c3N1cmUKKyAgICAgICAgbGV2ZWwuIFNwbGl0cyBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVh
c2VNZW1vcnkgaW4gYQorICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBtZXRob2QgdG8gYXZv
aWQgZHVwbGljYXRpbmcgY29kZS4KKworICAgICAgICBGb3IgbW9yZSBkZXRhaWxzOgorCisgICAg
ICAgIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9tZW1v
cnkudHh0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCwgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlUGxh
dGZvcm1NZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpy
ZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp3YWl0
Rm9yRXZlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5p
bnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJl
bGVhc2VQbGF0Zm9ybU1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL01lbW9yeVByZXNz
dXJlSGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cmVsZWFzZVBsYXRmb3JtTWVtb3J5KToKKwogMjAxMy0xMS0yNiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFsbG93IHNob3dp
bmcgYSBjb250ZXh0IG1lbnUgb24gYWxsIG1vdXNlIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkZDdmY2E0NmFjMDNjOGM4M2FmNzFkNTJjZGJkY2NhODJlM2YxOWYyLi45NzY2MzJmZTgwNDdk
MDg2MWYzZmQ5MjE3MWVhZWY1ZDhmOGM3NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMTEtMjYgIFRvbWV1IFZpem9zbyAgPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZm9yIExpbnV4
IHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIzNTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zdGFsbCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW4gbmV3KCkuCisKKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxMy0xMS0y
MyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXgg
MjM3NzExZDUwZTBiMDAxMTA1NGViODdiNTdkMDk1MTA5YTQwZmM3Ny4uNWY2ZjdlMjdjMTdkODEw
Nzg3NDg1YzI4OTRkNDViMDU5MjYzNzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTExLTI2ICBUb21ldSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBz
eXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
c3RhbGwgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluIGluaXQoKS4KKworICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKwog
MjAxMy0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIFZlcnNpb25zLm00IGZvciAyLjMu
MiByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NGViYmIzM2ZlY2IzOWY4NzQ0YWVi
ZWU4MDU4MGJjYTFhN2QzNjRkLi5jYTg1M2MzNzA3MGYyOGJiZmY1MTEzMDllMjFlNTg1NGZkYzQ4
NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjAxNCw2ICsyMDE0LDggQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAog
ICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guY3BwCiAKKyAgICBwbGF0Zm9y
bS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKKwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGEx
MDk2OTAyODcwYzZjNjcxYTY1Njk2MGE1ODllYjNmYWE5ZWE4YWQuLjUyZTkzOWVkNWMxOTY5NDY4
OGIxMTZhZWM4YWE1ZmU2NzAxOWNkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNDE5Niw2ICs0MTk2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oIFwK
QEAgLTU0MDQsMTAgKzU0MDUsMTMgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFp
blRocmVhZFRhc2suaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRl
ci5oIFwKQEAgLTYwMzYsOCArNjA0MCw2IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL05vdEltcGxlbWVudGVkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcAppbmRleCA1ZThlN2NjM2ZjMjEwZjY2MGJlMGQ2YmExNzRiNTg4MDc0ZWRkOTJiLi41
MmMzMDE3ZTNkMjA4NDVjMTUzMWNmZjBhMGVjMGFjNmI3YmIyOTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNywxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogCisjaW5jbHVk
ZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJQYWdlQ2Fj
aGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTdG9yYWdlVGhy
ZWFkLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNyArNDksNDcgQEAgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQogICAgIDogbV9pbnN0YWxs
ZWQoZmFsc2UpCiAgICAgLCBtX2xhc3RSZXNwb25kVGltZSgwKQogICAgICwgbV9sb3dNZW1vcnlI
YW5kbGVyKHJlbGVhc2VNZW1vcnkpCisjaWYgT1MoTElOVVgpCisgICAgLCBtX2V2ZW50RkQoMCkK
KyAgICAsIG1fcHJlc3N1cmVMZXZlbEZEKDApCisgICAgLCBtX2hvbGRPZmZUaW1lcih0aGlzLCAm
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aW1lckZpcmVkKQorI2VuZGlmCiB7CiB9CiAKLSNpZiAh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgKCFQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPUykpICYmICFPUyhMSU5VWCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Omluc3RhbGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7
IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpIHsgfQot
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkgeyB9Cit2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZVBsYXRmb3JtTWVtb3J5KGJvb2wpIHsgfQog
CiAjZW5kaWYKIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9v
bCBjcml0aWNhbCkKK3sKKyAgICBpbnQgc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNo
ZSgpLT5jYXBhY2l0eSgpOworICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eSgwKTsKKyAgICBw
YWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSk7CisKKyAgICBm
b250Q2FjaGUoKS0+cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisKKyAgICBtZW1vcnlDYWNoZSgp
LT5wcnVuZVRvUGVyY2VudGFnZSgwKTsKKworICAgIGNzc1ZhbHVlUG9vbCgpLmRyYWluKCk7CisK
KyAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29tcGlsZWRDb2RlKCk7CisKKyAgICAvLyBG
YXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBv
bmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0c2VsZi4KKyAgICBTdG9yYWdlVGhyZWFk
OjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKKyAgICBXb3JrZXJU
aHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworI2lmIEVO
QUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChi
aW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KSk7CisjZW5kaWYKKyAgICBXVEY6
OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOworCisgICAgcmVsZWFzZVBsYXRmb3JtTWVt
b3J5KGNyaXRpY2FsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA5NTBhZTg1MmRm
ZTA5MDhlYjM0Mzg5Y2ZjZmI2YjQyNmI5NGM3OTRmLi5mN2VhZTZiNGU1NGE3N2YxOWNiNThiZWFi
MGQwZjlmOWUzMmVhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzMwLDEwIEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAKKyNpZiBPUyhMSU5VWCkKKyNpbmNsdWRlICJUaW1lci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB2b2lkICgqTG93TWVtb3J5SGFuZGxlciko
Ym9vbCBjcml0aWNhbCk7CkBAIC01NiwxMCArNjEsMjIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKTsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5
KGJvb2wgY3JpdGljYWwpOworICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VQbGF0Zm9ybU1lbW9yeShi
b29sIGNyaXRpY2FsKTsKKworI2lmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdhaXRGb3JF
dmVudFRocmVhZCh2b2lkKiBkYXRhKTsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2luc3RhbGxlZDsK
ICAgICB0aW1lX3QgbV9sYXN0UmVzcG9uZFRpbWU7CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xv
d01lbW9yeUhhbmRsZXI7CisKKyNpZiBPUyhMSU5VWCkKKyAgICBpbnQgbV9ldmVudEZEOworICAg
IGludCBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+
IG1faG9sZE9mZlRpbWVyOworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+Kik7CisjZW5kaWYKIH07CiAgCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGds
b2JhbCBtZW1vcnkgcHJlc3N1cmUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmYjQ2NGI5M2RjMzczZmQxNTYxNmFhNDRiMTU4MGRjNGYzZjFhMWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJMaW51eC5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaCIKKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bWFsbG9j
Lmg+CisjaW5jbHVkZSA8c3lzL2V2ZW50ZmQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIERpc2FibGUgbWVtb3J5IGV2ZW50IHJlY2VwdGlvbiBmb3IgYSBtaW5p
bXVtIG9mIHNfbWluaW11bUhvbGRPZmZUaW1lCisvLyBzZWNvbmRzIGFmdGVyIHJlY2VpdmluZyBh
biBldmVudC4gRG9uJ3QgbGV0IGV2ZW50cyBmaXJlIGFueSBzb29uZXIgdGhhbgorLy8gc19ob2xk
T2ZmTXVsdGlwbGllciB0aW1lcyB0aGUgbGFzdCBjbGVhbnVwIHByb2Nlc3NpbmcgdGltZS4gRWZm
ZWN0aXZlbHkKKy8vIHRoaXMgaXMgMSAvIHNfaG9sZE9mZk11bHRpcGxpZXIgcGVyY2VudCBvZiB0
aGUgdGltZS4KKy8vIFRoZXNlIHZhbHVlIHNlZW1zIHJlYXNvbmFibGUgYW5kIHRlc3RpbmcgdmVy
aWZpZXMgdGhhdCBpdCB0aHJvdHRsZXMgZnJlcXVlbnQKKy8vIGxvdyBtZW1vcnkgZXZlbnRzLCBn
cmVhdGx5IHJlZHVjaW5nIENQVSB1c2FnZS4KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21pbmlt
dW1Ib2xkT2ZmVGltZSA9IDU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc19ob2xkT2ZmTXVsdGlw
bGllciA9IDIwOworCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6d2FpdEZvckV2ZW50VGhy
ZWFkKHZvaWQqIGRhdGEpCit7CisgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyKiBoYW5kbGVyID0g
cmVpbnRlcnByZXRfY2FzdDxNZW1vcnlQcmVzc3VyZUhhbmRsZXIqPihkYXRhKTsKKyAgICB1aW50
NjRfdCByZXN1bHQ7CisKKyAgICBpZiAoIWhhbmRsZXItPm1fZXZlbnRGRCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW50IHJldCA9IHJlYWQoaGFuZGxlci0+bV9ldmVudEZELCAmcmVzdWx0LCBz
aXplb2YocmVzdWx0KSk7CisgICAgaWYgKHJldCA+IDApCisgICAgICAgIGhhbmRsZXItPnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKCk7CisgICAgZWxzZQorICAgICAgICBMT0dfRVJST1IoImZhaWx1
cmUgcmVhZGluZyBmcm9tIGV2ZW50ZmQ6ICVkXG4iLCByZXQpOworfQorCit2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAgaW50IGZkOworICAgIGNoYXIgbGluZVsx
MDBdOworICAgIGludCByZXQ7CisKKyAgICBpZiAobV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZXZlbnRGRCA9IGV2ZW50ZmQoMCwgRUZEX0NMT0VYRUMpOworICAgIGlmICht
X2V2ZW50RkQgPT0gLTEpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJldmVudGZkKCkgZmFpbGVkOiAl
bSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBv
cGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvbWVtb3J5LnByZXNzdXJlX2xldmVsIiwgT19DTE9F
WEVDIHwgT19SRE9OTFkpOworICAgIGlmIChtX3ByZXNzdXJlTGV2ZWxGRCA9PSAtMSkgeworICAg
ICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBMT0dfRVJST1IoIm9wZW4oKSBmYWlsZWQg
Zm9yIG1lbW9yeS5wcmVzc3VyZV9sZXZlbDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZmQgPSBvcGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvY2dyb3VwLmV2ZW50X2Nv
bnRyb2wiLCBPX0NMT0VYRUMgfCBPX1dST05MWSk7CisgICAgaWYgKGZkID09IC0xKSB7CisgICAg
ICAgIGNsb3NlKG1fZXZlbnRGRCk7CisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsK
KyAgICAgICAgTE9HX0VSUk9SKCJvcGVuKCkgZmFpbGVkIGZvciBjZ3JvdXAuZXZlbnRfY29udHJv
bDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmV0ID0gc25wcmludGYo
bGluZSwgc2l6ZW9mKGxpbmUpLCAiJWQgJWQgbG93IiwgbV9ldmVudEZELCBtX3ByZXNzdXJlTGV2
ZWxGRCk7CisgICAgcmV0ID0gd3JpdGUoZmQsIGxpbmUsIHN0cmxlbihsaW5lKSArIDEpOworICAg
IGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgY2xvc2UobV9ldmVudEZEKTsKKyAgICAgICAgY2xv
c2UobV9wcmVzc3VyZUxldmVsRkQpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIExPR19F
UlJPUigiZmFpbHVyZSB3cml0aW5nIHRvIGNncm91cC5ldmVudF9jb250cm9sOiAlbVxuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICBjcmVhdGVUaHJl
YWQod2FpdEZvckV2ZW50VGhyZWFkLCB0aGlzLCAid2FpdEZvckV2ZW50VGhyZWFkIik7CisKKyAg
ICBtX2luc3RhbGxlZCA9IHRydWU7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1
bmluc3RhbGwoKQoreworICAgIGlmICghbV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2V2ZW50RkQpCisgICAgICAgIGNsb3NlKG1fZXZlbnRGRCk7CisKKyAgICBpZiAo
bV9wcmVzc3VyZUxldmVsRkQpCisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsKKwor
ICAgIG1faW5zdGFsbGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojp0aW1lckZpcmVkKFRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4qKQoreworICAgIGluc3Rh
bGwoKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQg
c2Vjb25kcykKK3sKKyAgICBtX2hvbGRPZmZUaW1lci5zdGFydE9uZVNob3Qoc2Vjb25kcyk7Cit9
CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgp
Cit7CisgICAgdW5pbnN0YWxsKCk7CisKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICBtX2xvd01lbW9yeUhhbmRsZXIoZmFsc2UpOwor
CisgICAgdW5zaWduZWQgaG9sZE9mZlRpbWUgPSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgLSBzdGFydFRpbWUpICogc19ob2xkT2ZmTXVsdGlwbGllcjsKKworICAgIGNhbGxPbk1haW5U
aHJlYWQoYmluZCgmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmLCB0aGlzLCBzdGQ6Om1h
eChob2xkT2ZmVGltZSwgc19taW5pbXVtSG9sZE9mZlRpbWUpKSk7Cit9CisKK3ZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlUGxhdGZvcm1NZW1vcnkoYm9vbCkKK3sKKyAgICBtYWxs
b2NfdHJpbSgwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KaW5k
ZXggMjNmYjRmZWI2MmZjMTJiN2Y4NzI1YThiMTQ5NWQxMTRjODkwOTM3Yy4uZWQzYmQxYmMxZWNj
MmViZDFiMjMyNjE1ZmUwZjg3NGJmZDBkOTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCkBAIC0yNiwxNSAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9DU1NWYWx1ZVBvb2wuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR0NDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJQb29sLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGlu
Z1RocmVhZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9TdG9yYWdlVGhyZWFkLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dvcmtlclRocmVhZC5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4KQEAgLTE0
MiwzNCArMTM0LDE0IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSgpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAotdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkKK3ZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpyZWxlYXNlUGxhdGZvcm1NZW1vcnkoYm9vbCkKIHsKLSAgICBpbnQgc2F2ZWRQYWdl
Q2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwotICAgIHBhZ2VDYWNoZSgp
LT5zZXRDYXBhY2l0eSgwKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdl
Q2FjaGVDYXBhY2l0eSk7Ci0KICAgICBOU1VSTENhY2hlICpuc3VybENhY2hlID0gW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdOwogICAgIE5TVUludGVnZXIgc2F2ZWROc3VybENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSBbbnN1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV07CiAgICAgW25zdXJsQ2FjaGUg
c2V0TWVtb3J5Q2FwYWNpdHk6MF07CiAgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6
c2F2ZWROc3VybENhY2hlTWVtb3J5Q2FwYWNpdHldOwogCi0gICAgZm9udENhY2hlKCktPnB1cmdl
SW5hY3RpdmVGb250RGF0YSgpOwotCi0gICAgbWVtb3J5Q2FjaGUoKS0+cHJ1bmVUb1BlcmNlbnRh
Z2UoMCk7Ci0KICAgICBMYXllclBvb2w6OnNoYXJlZFBvb2woKS0+ZHJhaW4oKTsKLQotICAgIGNz
c1ZhbHVlUG9vbCgpLmRyYWluKCk7Ci0KLSAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29t
cGlsZWRDb2RlKCk7Ci0KLSAgICAvLyBGYXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNw
ZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0
c2VsZi4KLSAgICBTdG9yYWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFs
bFRocmVhZHMoKTsKLSAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eUluQWxsVGhyZWFkcygpOwotI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCi0gICAgU2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KSk7Ci0jZW5kaWYKLSAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApp
bmRleCBiZTJiYzRmMGJlNjE0MDMwZjI2Nzk3ODMwZDJjMjZhOWYyMGU0OGJlLi5kMjUyYjM2OTI0
MTNiZGU4NDU5ZTg4ZWNmY2ZjZWQ5N2Y0NTAxMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIk1lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50RWZsLmgiCkBAIC04NTcs
NiArODU4LDggQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZf
bmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT5pc0NvbXBvc2l0
aW5nQWN0aXZlID0gZmFsc2U7CiAjZW5kaWYKIAorICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlcigp
Lmluc3RhbGwoKTsKKwogICAgIHJldHVybiBwcml2OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZDY0NzdlODRlZjc3NDIwZDJmNzNiOWU1MjUw
MGU0NDAxYjc4NGY5NS4uZDMxOWVlN2M0OTZmYjBjODA3NWRjMmE3OTRjYTRjZmZkYmE5YzA2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNzMsNiAr
NzMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2luY2x1ZGUgIk1haW5G
cmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC0z
ODk4LDYgKzM4OTksOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
ID0gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNyZWF0ZSh3ZWJWaWV3KTsKICNlbmRp
ZgogCisgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkuaW5zdGFsbCgpOworCiAgICAgZ19zaWdu
YWxfY29ubmVjdCh3ZWJWaWV3LCAiZGlyZWN0aW9uLWNoYW5nZWQiLCBHX0NBTExCQUNLKHdlYmtp
dFdlYlZpZXdEaXJlY3Rpb25DaGFuZ2VkKSwgMCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217871</attachid>
            <date>2013-11-26 03:37:38 -0800</date>
            <delta_ts>2014-07-14 10:42:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20131126123736.patch</filename>
            <type>text/plain</type>
            <size>18399</size>
            <attacher name="Tomeu Vizoso">tomeu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODkzMTRkMjA1NTRmM2U1
MjBhYTE1N2U4MjcwZGM2ZGFiODdlNmRjMy4uNzc1ZDFkNjA4NTMzOTkxOTA5Yjg1MTY1MzY1NzQx
MWM1MTJkOGNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTExLTI2ICBUb21l
dSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXMgdGhlIHByZXNzdXJlX2xldmVs
IG1lY2hhbmlzbSBmcm9tIHRoZSBtZW1vcnkgc3Vic3lzdGVtIHRvIGdldAorICAgICAgICBub3Rp
ZmllZCBvZiB3aGVuIHRoZSBhcHBsaWNhdGlvbiByZWFjaGVzIHRoZSAibG93IiBtZW1vcnkgcHJl
c3N1cmUKKyAgICAgICAgbGV2ZWwuIFNwbGl0cyBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVh
c2VNZW1vcnkgaW4gYQorICAgICAgICBwbGF0Zm9ybS1pbmRlcGVuZGVudCBtZXRob2QgdG8gYXZv
aWQgZHVwbGljYXRpbmcgY29kZS4KKworICAgICAgICBGb3IgbW9yZSBkZXRhaWxzOgorCisgICAg
ICAgIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9tZW1v
cnkudHh0CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCwgbm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlUGxh
dGZvcm1NZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpy
ZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp3YWl0
Rm9yRXZlbnRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5p
bnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJl
bGVhc2VQbGF0Zm9ybU1lbW9yeSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL01lbW9yeVByZXNz
dXJlSGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cmVsZWFzZVBsYXRmb3JtTWVtb3J5KToKKwogMjAxMy0xMS0yNiAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFsbG93IHNob3dp
bmcgYSBjb250ZXh0IG1lbnUgb24gYWxsIG1vdXNlIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkZDdmY2E0NmFjMDNjOGM4M2FmNzFkNTJjZGJkY2NhODJlM2YxOWYyLi45NzY2MzJmZTgwNDdk
MDg2MWYzZmQ5MjE3MWVhZWY1ZDhmOGM3NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMTEtMjYgIFRvbWV1IFZpem9zbyAgPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZm9yIExpbnV4
IHN5c3RlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIzNTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5zdGFsbCBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgaW4gbmV3KCkuCisKKyAgICAgICAgKiBld2sv
ZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxMy0xMS0y
MyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXgg
MjM3NzExZDUwZTBiMDAxMTA1NGViODdiNTdkMDk1MTA5YTQwZmM3Ny4uNWY2ZjdlMjdjMTdkODEw
Nzg3NDg1YzI4OTRkNDViMDU5MjYzNzg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTExLTI2ICBUb21ldSBWaXpvc28gIDx0b21ldS52aXpvc29AY29sbGFib3JhLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBz
eXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
c3RhbGwgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGluIGluaXQoKS4KKworICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKwog
MjAxMy0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE5FV1MgYW5kIFZlcnNpb25zLm00IGZvciAyLjMu
MiByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NGViYmIzM2ZlY2IzOWY4NzQ0YWVi
ZWU4MDU4MGJjYTFhN2QzNjRkLi5jYTg1M2MzNzA3MGYyOGJiZmY1MTEzMDllMjFlNTg1NGZkYzQ4
NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjAxNCw2ICsyMDE0LDggQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAog
ICAgIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guY3BwCiAKKyAgICBwbGF0Zm9y
bS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKKwogICAgIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGEx
MDk2OTAyODcwYzZjNjcxYTY1Njk2MGE1ODllYjNmYWE5ZWE4YWQuLjUyZTkzOWVkNWMxOTY5NDY4
OGIxMTZhZWM4YWE1ZmU2NzAxOWNkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpA
QCAtNDE5Niw2ICs0MTk2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oIFwK
QEAgLTU0MDQsMTAgKzU0MDUsMTMgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFp
blRocmVhZFRhc2suaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRl
ci5oIFwKQEAgLTYwMzYsOCArNjA0MCw2IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggXAotCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL05vdEltcGxlbWVudGVkLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmNwcAppbmRleCA1ZThlN2NjM2ZjMjEwZjY2MGJlMGQ2YmExNzRiNTg4MDc0ZWRkOTJiLi41
MmMzMDE3ZTNkMjA4NDVjMTUzMWNmZjBhMGVjMGFjNmI3YmIyOTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNywxNCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgogCisjaW5jbHVk
ZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJQYWdlQ2Fj
aGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTdG9yYWdlVGhy
ZWFkLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCwxNyArNDksNDcgQEAgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQogICAgIDogbV9pbnN0YWxs
ZWQoZmFsc2UpCiAgICAgLCBtX2xhc3RSZXNwb25kVGltZSgwKQogICAgICwgbV9sb3dNZW1vcnlI
YW5kbGVyKHJlbGVhc2VNZW1vcnkpCisjaWYgT1MoTElOVVgpCisgICAgLCBtX2V2ZW50RkQoMCkK
KyAgICAsIG1fcHJlc3N1cmVMZXZlbEZEKDApCisgICAgLCBtX2hvbGRPZmZUaW1lcih0aGlzLCAm
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp0aW1lckZpcmVkKQorI2VuZGlmCiB7CiB9CiAKLSNpZiAh
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCisjaWYgKCFQTEFURk9STShNQUMpIHx8IFBM
QVRGT1JNKElPUykpICYmICFPUyhMSU5VWCkKIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
Omluc3RhbGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7
IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgpIHsgfQot
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkgeyB9Cit2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZVBsYXRmb3JtTWVtb3J5KGJvb2wpIHsgfQog
CiAjZW5kaWYKIAordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9v
bCBjcml0aWNhbCkKK3sKKyAgICBpbnQgc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNo
ZSgpLT5jYXBhY2l0eSgpOworICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eSgwKTsKKyAgICBw
YWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdlQ2FjaGVDYXBhY2l0eSk7CisKKyAgICBm
b250Q2FjaGUoKS0+cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisKKyAgICBtZW1vcnlDYWNoZSgp
LT5wcnVuZVRvUGVyY2VudGFnZSgwKTsKKworICAgIGNzc1ZhbHVlUG9vbCgpLmRyYWluKCk7CisK
KyAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29tcGlsZWRDb2RlKCk7CisKKyAgICAvLyBG
YXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNwZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBv
bmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0c2VsZi4KKyAgICBTdG9yYWdlVGhyZWFk
OjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKKyAgICBXb3JrZXJU
aHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworI2lmIEVO
QUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChi
aW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KSk7CisjZW5kaWYKKyAgICBXVEY6
OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOworCisgICAgcmVsZWFzZVBsYXRmb3JtTWVt
b3J5KGNyaXRpY2FsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCA5NTBhZTg1MmRm
ZTA5MDhlYjM0Mzg5Y2ZjZmI2YjQyNmI5NGM3OTRmLi5mN2VhZTZiNGU1NGE3N2YxOWNiNThiZWFi
MGQwZjlmOWUzMmVhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzMwLDEwIEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAKKyNpZiBPUyhMSU5VWCkKKyNpbmNsdWRlICJUaW1lci5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiB2b2lkICgqTG93TWVtb3J5SGFuZGxlciko
Ym9vbCBjcml0aWNhbCk7CkBAIC01NiwxMCArNjEsMjIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoKTsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5
KGJvb2wgY3JpdGljYWwpOworICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VQbGF0Zm9ybU1lbW9yeShi
b29sIGNyaXRpY2FsKTsKKworI2lmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdhaXRGb3JF
dmVudFRocmVhZCh2b2lkKiBkYXRhKTsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2luc3RhbGxlZDsK
ICAgICB0aW1lX3QgbV9sYXN0UmVzcG9uZFRpbWU7CiAgICAgTG93TWVtb3J5SGFuZGxlciBtX2xv
d01lbW9yeUhhbmRsZXI7CisKKyNpZiBPUyhMSU5VWCkKKyAgICBpbnQgbV9ldmVudEZEOworICAg
IGludCBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+
IG1faG9sZE9mZlRpbWVyOworICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI+Kik7CisjZW5kaWYKIH07CiAgCiAvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGds
b2JhbCBtZW1vcnkgcHJlc3N1cmUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBmYjQ2NGI5M2RjMzczZmQxNTYxNmFhNDRiMTU4MGRjNGYzZjFhMWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhh
bmRsZXJMaW51eC5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaCIKKworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bWFsbG9j
Lmg+CisjaW5jbHVkZSA8c3lzL2V2ZW50ZmQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIERpc2FibGUgbWVtb3J5IGV2ZW50IHJlY2VwdGlvbiBmb3IgYSBtaW5p
bXVtIG9mIHNfbWluaW11bUhvbGRPZmZUaW1lCisvLyBzZWNvbmRzIGFmdGVyIHJlY2VpdmluZyBh
biBldmVudC4gRG9uJ3QgbGV0IGV2ZW50cyBmaXJlIGFueSBzb29uZXIgdGhhbgorLy8gc19ob2xk
T2ZmTXVsdGlwbGllciB0aW1lcyB0aGUgbGFzdCBjbGVhbnVwIHByb2Nlc3NpbmcgdGltZS4gRWZm
ZWN0aXZlbHkKKy8vIHRoaXMgaXMgMSAvIHNfaG9sZE9mZk11bHRpcGxpZXIgcGVyY2VudCBvZiB0
aGUgdGltZS4KKy8vIFRoZXNlIHZhbHVlIHNlZW1zIHJlYXNvbmFibGUgYW5kIHRlc3RpbmcgdmVy
aWZpZXMgdGhhdCBpdCB0aHJvdHRsZXMgZnJlcXVlbnQKKy8vIGxvdyBtZW1vcnkgZXZlbnRzLCBn
cmVhdGx5IHJlZHVjaW5nIENQVSB1c2FnZS4KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzX21pbmlt
dW1Ib2xkT2ZmVGltZSA9IDU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc19ob2xkT2ZmTXVsdGlw
bGllciA9IDIwOworCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6d2FpdEZvckV2ZW50VGhy
ZWFkKHZvaWQqIGRhdGEpCit7CisgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyKiBoYW5kbGVyID0g
cmVpbnRlcnByZXRfY2FzdDxNZW1vcnlQcmVzc3VyZUhhbmRsZXIqPihkYXRhKTsKKyAgICB1aW50
NjRfdCByZXN1bHQ7CisKKyAgICBpZiAoIWhhbmRsZXItPm1fZXZlbnRGRCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW50IHJldCA9IHJlYWQoaGFuZGxlci0+bV9ldmVudEZELCAmcmVzdWx0LCBz
aXplb2YocmVzdWx0KSk7CisgICAgaWYgKHJldCA+IDApCisgICAgICAgIGhhbmRsZXItPnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKCk7CisgICAgZWxzZQorICAgICAgICBMT0dfRVJST1IoImZhaWx1
cmUgcmVhZGluZyBmcm9tIGV2ZW50ZmQ6ICVkXG4iLCByZXQpOworfQorCit2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAgaW50IGZkOworICAgIGNoYXIgbGluZVsx
MDBdOworICAgIGludCByZXQ7CisKKyAgICBpZiAobV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZXZlbnRGRCA9IGV2ZW50ZmQoMCwgRUZEX0NMT0VYRUMpOworICAgIGlmICht
X2V2ZW50RkQgPT0gLTEpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJldmVudGZkKCkgZmFpbGVkOiAl
bSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBv
cGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvbWVtb3J5LnByZXNzdXJlX2xldmVsIiwgT19DTE9F
WEVDIHwgT19SRE9OTFkpOworICAgIGlmIChtX3ByZXNzdXJlTGV2ZWxGRCA9PSAtMSkgeworICAg
ICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBMT0dfRVJST1IoIm9wZW4oKSBmYWlsZWQg
Zm9yIG1lbW9yeS5wcmVzc3VyZV9sZXZlbDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgZmQgPSBvcGVuKCIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvY2dyb3VwLmV2ZW50X2Nv
bnRyb2wiLCBPX0NMT0VYRUMgfCBPX1dST05MWSk7CisgICAgaWYgKGZkID09IC0xKSB7CisgICAg
ICAgIGNsb3NlKG1fZXZlbnRGRCk7CisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsK
KyAgICAgICAgTE9HX0VSUk9SKCJvcGVuKCkgZmFpbGVkIGZvciBjZ3JvdXAuZXZlbnRfY29udHJv
bDogJW1cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmV0ID0gc25wcmludGYo
bGluZSwgc2l6ZW9mKGxpbmUpLCAiJWQgJWQgbG93IiwgbV9ldmVudEZELCBtX3ByZXNzdXJlTGV2
ZWxGRCk7CisgICAgcmV0ID0gd3JpdGUoZmQsIGxpbmUsIHN0cmxlbihsaW5lKSArIDEpOworICAg
IGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgY2xvc2UobV9ldmVudEZEKTsKKyAgICAgICAgY2xv
c2UobV9wcmVzc3VyZUxldmVsRkQpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIExPR19F
UlJPUigiZmFpbHVyZSB3cml0aW5nIHRvIGNncm91cC5ldmVudF9jb250cm9sOiAlbVxuIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICBjcmVhdGVUaHJl
YWQod2FpdEZvckV2ZW50VGhyZWFkLCB0aGlzLCAid2FpdEZvckV2ZW50VGhyZWFkIik7CisKKyAg
ICBtX2luc3RhbGxlZCA9IHRydWU7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1
bmluc3RhbGwoKQoreworICAgIGlmICghbV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2V2ZW50RkQpCisgICAgICAgIGNsb3NlKG1fZXZlbnRGRCk7CisKKyAgICBpZiAo
bV9wcmVzc3VyZUxldmVsRkQpCisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsKKwor
ICAgIG1faW5zdGFsbGVkID0gZmFsc2U7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojp0aW1lckZpcmVkKFRpbWVyPE1lbW9yeVByZXNzdXJlSGFuZGxlcj4qKQoreworICAgIGluc3Rh
bGwoKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQg
c2Vjb25kcykKK3sKKyAgICBtX2hvbGRPZmZUaW1lci5zdGFydE9uZVNob3Qoc2Vjb25kcyk7Cit9
CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZSgp
Cit7CisgICAgdW5pbnN0YWxsKCk7CisKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAgICBtX2xvd01lbW9yeUhhbmRsZXIoZmFsc2UpOwor
CisgICAgdW5zaWduZWQgaG9sZE9mZlRpbWUgPSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgLSBzdGFydFRpbWUpICogc19ob2xkT2ZmTXVsdGlwbGllcjsKKworICAgIGNhbGxPbk1haW5U
aHJlYWQoYmluZCgmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmLCB0aGlzLCBzdGQ6Om1h
eChob2xkT2ZmVGltZSwgc19taW5pbXVtSG9sZE9mZlRpbWUpKSk7Cit9CisKK3ZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlUGxhdGZvcm1NZW1vcnkoYm9vbCkKK3sKKyAgICBtYWxs
b2NfdHJpbSgwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0KaW5k
ZXggMjNmYjRmZWI2MmZjMTJiN2Y4NzI1YThiMTQ5NWQxMTRjODkwOTM3Yy4uZWQzYmQxYmMxZWNj
MmViZDFiMjMyNjE1ZmUwZjg3NGJmZDBkOTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL01lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tCkBAIC0yNiwxNSAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9DU1NWYWx1ZVBvb2wuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvR0NDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgotI2ltcG9y
dCA8V2ViQ29yZS9NZW1vcnlDYWNoZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTGF5ZXJQb29sLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGlu
Z1RocmVhZC5oPgotI2ltcG9ydCA8V2ViQ29yZS9TdG9yYWdlVGhyZWFkLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL1dvcmtlclRocmVhZC5oPgogI2ltcG9ydCA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1w
b3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9uYWwuaD4KQEAgLTE0
MiwzNCArMTM0LDE0IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1v
cnlQcmVzc3VyZSgpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAotdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoYm9vbCkKK3ZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpyZWxlYXNlUGxhdGZvcm1NZW1vcnkoYm9vbCkKIHsKLSAgICBpbnQgc2F2ZWRQYWdl
Q2FjaGVDYXBhY2l0eSA9IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwotICAgIHBhZ2VDYWNoZSgp
LT5zZXRDYXBhY2l0eSgwKTsKLSAgICBwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkoc2F2ZWRQYWdl
Q2FjaGVDYXBhY2l0eSk7Ci0KICAgICBOU1VSTENhY2hlICpuc3VybENhY2hlID0gW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdOwogICAgIE5TVUludGVnZXIgc2F2ZWROc3VybENhY2hlTWVtb3J5
Q2FwYWNpdHkgPSBbbnN1cmxDYWNoZSBtZW1vcnlDYXBhY2l0eV07CiAgICAgW25zdXJsQ2FjaGUg
c2V0TWVtb3J5Q2FwYWNpdHk6MF07CiAgICAgW25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6
c2F2ZWROc3VybENhY2hlTWVtb3J5Q2FwYWNpdHldOwogCi0gICAgZm9udENhY2hlKCktPnB1cmdl
SW5hY3RpdmVGb250RGF0YSgpOwotCi0gICAgbWVtb3J5Q2FjaGUoKS0+cHJ1bmVUb1BlcmNlbnRh
Z2UoMCk7Ci0KICAgICBMYXllclBvb2w6OnNoYXJlZFBvb2woKS0+ZHJhaW4oKTsKLQotICAgIGNz
c1ZhbHVlUG9vbCgpLmRyYWluKCk7Ci0KLSAgICBnY0NvbnRyb2xsZXIoKS5kaXNjYXJkQWxsQ29t
cGlsZWRDb2RlKCk7Ci0KLSAgICAvLyBGYXN0TWFsbG9jIGhhcyBsb2NrLWZyZWUgdGhyZWFkIHNw
ZWNpZmljIGNhY2hlcyB0aGF0IGNhbiBvbmx5IGJlIGNsZWFyZWQgZnJvbSB0aGUgdGhyZWFkIGl0
c2VsZi4KLSAgICBTdG9yYWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFs
bFRocmVhZHMoKTsKLSAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9y
eUluQWxsVGhyZWFkcygpOwotI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCi0gICAgU2Ny
b2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5KSk7Ci0jZW5kaWYKLSAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApp
bmRleCBiZTJiYzRmMGJlNjE0MDMwZjI2Nzk3ODMwZDJjMjZhOWYyMGU0OGJlLi5iMWI3NjZlMjVh
NjlkN2YwNGRmNzZhOGI3MzRiNGQ1ODE4MWRkZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIk1lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50RWZsLmgiCkBAIC04NTcs
NiArODU4LDggQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZf
bmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICBwcml2LT5pc0NvbXBvc2l0
aW5nQWN0aXZlID0gZmFsc2U7CiAjZW5kaWYKIAorICAgIFdlYkNvcmU6Om1lbW9yeVByZXNzdXJl
SGFuZGxlcigpLmluc3RhbGwoKTsKKwogICAgIHJldHVybiBwcml2OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZDY0NzdlODRlZjc3NDIwZDJm
NzNiOWU1MjUwMGU0NDAxYjc4NGY5NS4uZDMxOWVlN2M0OTZmYjBjODA3NWRjMmE3OTRjYTRjZmZk
YmE5YzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApA
QCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogI2luY2x1
ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hl
LmgiCkBAIC0zODk4LDYgKzM4OTksOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5p
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0ID0gQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmNyZWF0ZSh3ZWJWaWV3
KTsKICNlbmRpZgogCisgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkuaW5zdGFsbCgpOworCiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAiZGlyZWN0aW9uLWNoYW5nZWQiLCBHX0NBTExC
QUNLKHdlYmtpdFdlYlZpZXdEaXJlY3Rpb25DaGFuZ2VkKSwgMCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234867</attachid>
            <date>2014-07-14 10:42:41 -0700</date>
            <delta_ts>2014-08-04 00:14:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20140715024223.patch</filename>
            <type>text/plain</type>
            <size>13344</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJjZmYzMjFiNzgwYzhm
MmFiNDA1NTQ4MGMwMDkyMGUyYjAyZDIzNS4uZTI2MDQ4MGRjOGM1ZWNiN2ZhNzc0ODg1ZWZkYmI3
YjM3YjEzN2Y4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA3LTE0ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBpbXBs
ZW1lbnRhdGlvbiB0byBzdXBwb3J0IE1lbW9yeVByZXNzdXJlSGFuZGxlciBmb3IgbGludXggc3lz
dGVtLgorICAgICAgICBNb3N0IG9mIGN1cnJlbnQgbGludXggZGlzdHJpYnV0aW9ucyBzdXBwb3J0
IGNncm91cCwgc28gdGhhdCB3ZSB1c2UgdGhlIG1lbW9yeS5wcmVzc3VyZV9sZXZlbAorICAgICAg
ICBtZWNoYW5pc20gb2YgY2dyb3VwIHRvIGdldCBub3RpZmljYXRpb25zIHdoZW4gYW4gYXBwbGlj
YXRpb24gcmVhY2hlcyB0aGUgJ2xvdycgbWVtb3J5IHByZXNzdXJlIGxldmVsLgorICAgICAgICBU
aGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9tZXUncyBsYXN0IHBhdGNoIGFuZCBpbXByb3ZlZCBvbiB0
b3Agb2YgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGVuZ2luZSBiZWhhdmlv
ciBjaGFuZ2VkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4
dFRva2VuKTogdXRpbGl0eSB0byBleHRyYWN0IFZNIG51bWJlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6fk1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OndhaXRGb3JNZW1vcnlQcmVzc3VyZUV2
ZW50KTogcnVuIGluIGEgc2VwZXJhdGVkIHRocmVhZCB0byBsaXN0ZW4gJ2xvdycgbGV2ZWwgZXZl
bnQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmNsb3NlRkRzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZik6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cGxhdGZvcm1SZWxl
YXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVs
aWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZyk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSk6IHJlYWQgL3Byb2Mv
c2VsZi9zdGF0dXMgdG8gZ2V0IFZNIGFtb3VudCB1c2VkIGJ5IGN1cnJlbnQgcHJvY2Vzcy4KKwog
MjAxNC0wNy0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUGFydGl0aW9uIHRoZSBDU1MgcnVsZXMgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMg
ZmlsdGVyIG9mIHRoZSByaWdodG1vc3QgZnJhZ21lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MTQ4NzQ3MWZmOGZhZjc3ZGZhYWQ3N2I0Y2NmNmU2NDYyOWZiM2NmNC4uZTUyZTI2MmU1YTE2ZTQ4
YmZlODgyOTg4YzE1ZDg4MDMzOGJjMzIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxODIs
NiArMjE4Miw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xl
dmVsREJUcmFuc2FjdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJXcml0ZUJh
dGNoLmNwcAogCisgICAgcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXgu
Y3BwCisKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5jcHAKICAg
ICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCiAgICAgcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCBjZDc1NzVl
NWE3MTIzYWU3MDA3YjNiNTIyZDgzZTcwNzc4MmNhNzgzLi4xZTQwZTgyMzM2MDEwODljZmI1OGM0
NzAyY2FmZGQzNDY3YTFiMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQogICAgIHJldHVybiBzdGF0aWNNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI7CiB9CiAKLU1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyKCkgCitNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxl
cigpCiAgICAgOiBtX2luc3RhbGxlZChmYWxzZSkKICAgICAsIG1fbGFzdFJlc3BvbmRUaW1lKDAp
CiAgICAgLCBtX2xvd01lbW9yeUhhbmRsZXIocmVsZWFzZU1lbW9yeSkKQEAgLTY0LDYgKzY0LDEx
IEBAIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkKICAgICAs
IG1fY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSh0cnVlKQogICAgICwgbV9yZWxlYXNlTWVt
b3J5QmxvY2soMCkKICAgICAsIG1fb2JzZXJ2ZXIoMCkKKyNlbGlmIE9TKExJTlVYKQorICAgICwg
bV9ldmVudEZEKDApCisgICAgLCBtX3ByZXNzdXJlTGV2ZWxGRCgwKQorICAgICwgbV90aHJlYWRJ
RCgwKQorICAgICwgbV9ob2xkT2ZmVGltZXIodGhpcywgJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
aG9sZE9mZlRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKIH0KQEAgLTE0NCw3ICsxNDksNyBAQCB2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShib29sIGNyaXRpY2FsKQogICAg
IH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFP
UyhMSU5VWCkKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkgeyB9CiB2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6aG9sZE9mZih1bnNpZ25lZCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDI3NmQ5NWI5OWI5YmI1MGU1OGJi
NjdmZWIyMWU1OTc2NmZiYzNmYWQuLjE4YzA4NDk0NDQ4MjQ5NDhhOGRhMWU0MzY0MTFkMzZiYjY3
ODFiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUmFzcGJlcnJ5
IFBpIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDggQEAKIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2VsaWYgT1MoTElOVVgpCisjaW5jbHVk
ZSAiVGltZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OSw2ICs3Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTWVtb3J5UHJlc3N1cmUoKTsKICAgICBib29sIHNo
b3VsZFdhaXRGb3JNZW1vcnlDbGVhck1lc3NhZ2UoKTsKICAgICB2b2lkIHJlc3BvbmRUb01lbW9y
eVByZXNzdXJlSWZOZWVkZWQoKTsKKyNlbGlmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdh
aXRGb3JNZW1vcnlQcmVzc3VyZUV2ZW50KHZvaWQqKTsKICNlbmRpZgogCiAgICAgY2xhc3MgUmVs
aWVmTG9nZ2VyIHsKQEAgLTEyNyw2ICsxMzIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIChebV9y
ZWxlYXNlTWVtb3J5QmxvY2spKCk7CiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZl
cjsKICAgICBNdXRleCBtX29ic2VydmVyTXV0ZXg7CisjZWxpZiBPUyhMSU5VWCkKKyAgICBpbnQg
bV9ldmVudEZEOworICAgIGludCBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBXVEY6OlRocmVhZElk
ZW50aWZpZXIgbV90aHJlYWRJRDsKKyAgICBUaW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+IG1f
aG9sZE9mZlRpbWVyOworICAgIHZvaWQgaG9sZE9mZlRpbWVyRmlyZWQoVGltZXI8TWVtb3J5UHJl
c3N1cmVIYW5kbGVyPiopOworICAgIHZvaWQgY2xvc2VGRHMoKTsKICNlbmRpZgogfTsKICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFu
ZGxlckxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNz
dXJlSGFuZGxlckxpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTU0NTlmMTM0M2E1ZGRkMTVhNTExMTU0
NDNkYjJiMGViMjkxZDAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMjQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbi4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFu
ZGxlci5oIgorCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNs
dWRlIDxzeXMvZXZlbnRmZC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRGlzYWJsZSBtZW1vcnkgZXZl
bnQgcmVjZXB0aW9uIGZvciBhIG1pbmltdW0gb2Ygc19taW5pbXVtSG9sZE9mZlRpbWUKKy8vIHNl
Y29uZHMgYWZ0ZXIgcmVjZWl2aW5nIGFuIGV2ZW50LiBEb24ndCBsZXQgZXZlbnRzIGZpcmUgYW55
IHNvb25lciB0aGFuCisvLyBzX2hvbGRPZmZNdWx0aXBsaWVyIHRpbWVzIHRoZSBsYXN0IGNsZWFu
dXAgcHJvY2Vzc2luZyB0aW1lLiBFZmZlY3RpdmVseQorLy8gdGhpcyBpcyAxIC8gc19ob2xkT2Zm
TXVsdGlwbGllciBwZXJjZW50IG9mIHRoZSB0aW1lLgorLy8gVGhlc2UgdmFsdWUgc2VlbXMgcmVh
c29uYWJsZSBhbmQgdGVzdGluZyB2ZXJpZmllcyB0aGF0IGl0IHRocm90dGxlcyBmcmVxdWVudAor
Ly8gbG93IG1lbW9yeSBldmVudHMsIGdyZWF0bHkgcmVkdWNpbmcgQ1BVIHVzYWdlLgorc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHNfbWluaW11bUhvbGRPZmZUaW1lID0gNTsKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBzX2hvbGRPZmZNdWx0aXBsaWVyID0gMjA7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBz
X2Nncm91cE1lbW9yeVByZXNzdXJlTGV2ZWwgPSAiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L21lbW9y
eS5wcmVzc3VyZV9sZXZlbCI7CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBFdmVudENvbnRy
b2wgPSAiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L2Nncm91cC5ldmVudF9jb250cm9sIjsKK3N0YXRp
YyBjb25zdCBjaGFyKiBzX3Byb2Nlc3NTdGF0dXMgPSAiL3Byb2Mvc2VsZi9zdGF0dXMiOworCitz
dGF0aWMgaW5saW5lIFN0cmluZyBuZXh0VG9rZW4oRklMRSogZmlsZSkKK3sKKyAgICBBU1NFUlQo
ZmlsZSk7CisgICAgaWYgKCFmaWxlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgYnVmZmVyU2l6ZSA9IDEyODsKKyAgICBjaGFyIGJ1ZmZlclti
dWZmZXJTaXplXSA9IHswLCB9OworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB3aGlsZSAo
aW5kZXggPCBidWZmZXJTaXplKSB7CisgICAgICAgIGNoYXIgY2ggPSBmZ2V0YyhmaWxlKTsKKyAg
ICAgICAgaWYgKGNoID09IEVPRiB8fCAoaXNBU0NJSVNwYWNlKGNoKSAmJiBpbmRleCkpIC8vIEJy
ZWFrIG9uIG5vbi1pbml0aWFsIEFTQ0lJIHNwYWNlLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGlmICghaXNBU0NJSVNwYWNlKGNoKSkgeworICAgICAgICAgICAgYnVmZmVyW2luZGV4XSA9
IGNoOworICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBTdHJpbmcoYnVmZmVyKTsKK30KKworTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp+TWVtb3J5UHJl
c3N1cmVIYW5kbGVyKCkKK3sKKyAgICB1bmluc3RhbGwoKTsKK30KKwordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OndhaXRGb3JNZW1vcnlQcmVzc3VyZUV2ZW50KHZvaWQqKQoreworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGludCBldmVudEZEID0gbWVtb3J5UHJlc3N1cmVI
YW5kbGVyKCkubV9ldmVudEZEOworICAgIGlmICghZXZlbnRGRCkgeworICAgICAgICBMT0dfRVJS
T1IoIkludmFsaWRhdGUgZXZlbnRmZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdWludDY0X3QgYnVmZmVyOworICAgIGlmIChyZWFkKGV2ZW50RkQsICZidWZmZXIsIHNpemVv
ZihidWZmZXIpKSA8PSAwKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJlYWQgZXZl
bnRmZC5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWVtb3J5UHJlc3N1cmVI
YW5kbGVyKCkubV91bmRlck1lbW9yeVByZXNzdXJlID0gdHJ1ZTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKGJpbmQoJk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUs
ICZtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKSwgdHJ1ZSkpOworfQorCit2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6Y2xvc2VGRHMoKQoreworICAgIGlmIChtX2V2ZW50RkQpIHsKKyAgICAgICAg
Y2xvc2UobV9ldmVudEZEKTsKKyAgICAgICAgbV9ldmVudEZEID0gMDsKKyAgICB9CisgICAgaWYg
KG1fcHJlc3N1cmVMZXZlbEZEKSB7CisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsK
KyAgICAgICAgbV9wcmVzc3VyZUxldmVsRkQgPSAwOworICAgIH0KK30KKwordm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKQoreworICAgIGlmIChtX2luc3RhbGxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9ldmVudEZEID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyk7Cisg
ICAgaWYgKG1fZXZlbnRGRCA9PSAtMSkgeworICAgICAgICBMT0dfRVJST1IoImV2ZW50ZmQoKSBm
YWlsZWQ6ICVtIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3ByZXNzdXJlTGV2
ZWxGRCA9IG9wZW4oc19jZ3JvdXBNZW1vcnlQcmVzc3VyZUxldmVsLCBPX0NMT0VYRUMgfCBPX1JE
T05MWSk7CisgICAgaWYgKG1fcHJlc3N1cmVMZXZlbEZEID09IC0xKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIG9wZW4gbWVtb3J5LnByZXNzdXJlX2xldmVsLCBlcnJubyA6ICVtXG4i
KTsKKyAgICAgICAgY2xvc2VGRHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlu
dCBmZCA9IG9wZW4oc19jZ3JvdXBFdmVudENvbnRyb2wsIE9fQ0xPRVhFQyB8IE9fV1JPTkxZKTsK
KyAgICBpZiAoZmQgPT0gLTEpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBj
Z3JvdXAuZXZlbnRfY29udHJvbCwgZXJybm8gOiAlbVxuIik7CisgICAgICAgIGNsb3NlRkRzKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGFyIGxpbmVbMTI4XSA9IHswLCB9Owor
ICAgIGlmIChzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICIlZCAlZCBsb3ciLCBtX2V2ZW50
RkQsIG1fcHJlc3N1cmVMZXZlbEZEKSA8IDAKKyAgICAgICAgfHwgd3JpdGUoZmQsIGxpbmUsIHN0
cmxlbihsaW5lKSArIDEpIDwgMCkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byB3cml0
ZSBjZ3JvdXAuZXZlbnRfY29udHJvbCwgZXJybm8gOiAlbVxuIik7CisgICAgICAgIGNsb3NlRkRz
KCk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbG9z
ZShmZCk7CisKKyAgICBtX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKHdhaXRGb3JNZW1vcnlQcmVz
c3VyZUV2ZW50LCB0aGlzLCAiV2ViQ29yZTogTWVtb3J5UHJlc3N1cmVIYW5kbGVyIik7CisgICAg
aWYgKCFtX3RocmVhZElEKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBh
IHRocmVhZCBmb3IgTWVtb3J5UHJlc3N1cmVIYW5kbGVyLCBlcnJubyA6ICVtXG4iKTsKKyAgICAg
ICAgY2xvc2VGRHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdW5kZXJNZW1v
cnlQcmVzc3VyZSA9IGZhbHNlOworICAgIG1faW5zdGFsbGVkID0gdHJ1ZTsKK30KKwordm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCit7CisgICAgaWYgKCFtX2luc3RhbGxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdGhyZWFkSUQpIHsKKyAgICAgICAgd2Fp
dEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCk7CisgICAgICAgIG1fdGhyZWFkSUQgPSAw
OworICAgIH0KKworICAgIGNsb3NlRkRzKCk7CisgICAgbV9pbnN0YWxsZWQgPSBmYWxzZTsKK30K
Kwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKFRpbWVyPE1l
bW9yeVByZXNzdXJlSGFuZGxlcj4qKQoreworICAgIGluc3RhbGwoKTsKK30KKwordm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQgc2Vjb25kcykKK3sKKyAgICBtX2hv
bGRPZmZUaW1lci5zdGFydE9uZVNob3Qoc2Vjb25kcyk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShib29sIGNyaXRpY2FsKQoreworICAg
IHVuaW5zdGFsbCgpOworCisgICAgZG91YmxlIHN0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOworCisgICAgbV9sb3dNZW1vcnlIYW5kbGVyKGNyaXRpY2FsKTsKKworICAg
IHVuc2lnbmVkIGhvbGRPZmZUaW1lID0gKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0g
c3RhcnRUaW1lKSAqIHNfaG9sZE9mZk11bHRpcGxpZXI7CisKKyAgICBob2xkT2ZmKHN0ZDo6bWF4
KGhvbGRPZmZUaW1lLCBzX21pbmltdW1Ib2xkT2ZmVGltZSkpOworfQorCit2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KGJvb2wpCit7CisgICAgeworICAg
ICAgICBSZWxpZWZMb2dnZXIgbG9nKCJSdW4gbWFsbG9jX3RyaW0iKTsKKyAgICAgICAgbWFsbG9j
X3RyaW0oMCk7CisgICAgfQorfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVm
TG9nZ2VyOjpwbGF0Zm9ybUxvZygpCit7CisgICAgc2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBwbGF0
Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgaWYgKGN1cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nhc3Q8
c2l6ZV90PigtMSkgfHwgbV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEp
KSB7CisgICAgICAgIHByaW50ZigiJXMgKFVuYWJsZSB0byBnZXQgZGlydHkgbWVtb3J5IGluZm9y
bWF0aW9uIGZvciBwcm9jZXNzKVxuIiwgbV9sb2dTdHJpbmcpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc3NpemVfdCBtZW1vcnlEaWZmID0gY3VycmVudE1lbW9yeSAtIG1faW5pdGlh
bE1lbW9yeTsKKyAgICBpZiAobWVtb3J5RGlmZiA8IDApCisgICAgICAgIHByaW50ZigiUHJlc3N1
cmUgcmVsaWVmOiAlczogLWRpcnR5ICVsZCBieXRlcyAoZnJvbSAlbGQgdG8gJWxkKVxuIiwgbV9s
b2dTdHJpbmcsIChtZW1vcnlEaWZmICogLTEpLCBtX2luaXRpYWxNZW1vcnksIGN1cnJlbnRNZW1v
cnkpOworICAgIGVsc2UgaWYgKG1lbW9yeURpZmYgPiAwKQorICAgICAgICBwcmludGYoIlByZXNz
dXJlIHJlbGllZjogJXM6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWxkIHRvICVsZClcbiIsIG1f
bG9nU3RyaW5nLCBtZW1vcnlEaWZmLCBtX2luaXRpYWxNZW1vcnksIGN1cnJlbnRNZW1vcnkpOwor
ICAgIGVsc2UKKyAgICAgICAgcHJpbnRmKCJQcmVzc3VyZSByZWxpZWY6ICVzOiA9ZGlydHkgKGF0
ICVsZCBieXRlcylcbiIsIG1fbG9nU3RyaW5nLCBjdXJyZW50TWVtb3J5KTsKK30KKworc2l6ZV90
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdl
KCkKK3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19wcm9jZXNzU3RhdHVzLCAiciIpOworICAg
IGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOworCisg
ICAgc2l6ZV90IHZtU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOyAvLyBrQgorICAgIFN0
cmluZyB0b2tlbiA9IG5leHRUb2tlbihmaWxlKTsKKyAgICB3aGlsZSAoIXRva2VuLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAodG9rZW4gPT0gIlZtU2l6ZToiKSB7CisgICAgICAgICAgICB2bVNp
emUgPSBuZXh0VG9rZW4oZmlsZSkudG9JbnQoKSAqIEtCOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSBuZXh0VG9rZW4oZmlsZSk7CisgICAgfQorICAgIGZj
bG9zZShmaWxlKTsKKworICAgIHJldHVybiB2bVNpemU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235967</attachid>
            <date>2014-08-04 00:14:44 -0700</date>
            <delta_ts>2014-12-07 10:17:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20140804161430.patch</filename>
            <type>text/plain</type>
            <size>13329</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNmOTMxNTIxN2I2ZjA5
NDIxNDk4YmI5MDBhNmViOWVhNGY5NzkwNy4uMDU2MjM0ZTQ5MzQwN2JjNWNmMTk0MmVhMThlYzlm
ODk1ODM3ZGU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA4LTA0ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBpbXBs
ZW1lbnRhdGlvbiB0byBzdXBwb3J0IE1lbW9yeVByZXNzdXJlSGFuZGxlciBmb3IgbGludXggc3lz
dGVtLgorICAgICAgICBNb3N0IG9mIGN1cnJlbnQgbGludXggZGlzdHJpYnV0aW9ucyBzdXBwb3J0
IGNncm91cCwgc28gdGhhdCB3ZSB1c2UgdGhlIG1lbW9yeS5wcmVzc3VyZV9sZXZlbAorICAgICAg
ICBtZWNoYW5pc20gb2YgY2dyb3VwIHRvIGdldCBub3RpZmljYXRpb25zIHdoZW4gYW4gYXBwbGlj
YXRpb24gcmVhY2hlcyB0aGUgJ2xvdycgbWVtb3J5IHByZXNzdXJlIGxldmVsLgorICAgICAgICBU
aGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9tZXUncyBsYXN0IHBhdGNoIGFuZCBpbXByb3ZlZCBvbiB0
b3Agb2YgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGVuZ2luZSBiZWhhdmlv
ciBjaGFuZ2VkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGxhdGZv
cm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4
dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6fk1lbW9y
eVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OndhaXRGb3JNZW1vcnlQcmVzc3VyZUV2ZW50KTogcnVuIGluIGEgc2VwZXJhdGVkIHRocmVh
ZCB0byBsaXN0ZW4gJ2xvdycgbGV2ZWwgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OmxvZ0Vycm9yQW5kQ2xvc2VGRHMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3Jt
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9n
Z2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKTogcmVhZCAvcHJvYy9zZWxmL3N0YXR1cyB0byBnZXQg
Vk0gYW1vdW50IHVzZWQgYnkgY3VycmVudCBwcm9jZXNzLgorCiAyMDE0LTA3LTMxICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0ZWQgcjE3MTg1NCwgYmVj
YXVzZSBpdCBicm9rZSBidWlsZGluZyB3aXRoIHRoZSBPUyBYIDEwLjggU0RLLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA5NjUxNWQyM2U0OTk1YmVlYzYyZWMxNzQ3MTg3NTczNTM1ZjY2ZWRkLi5l
YTgzYmU3Mzc4ODUwZTA4NDExZDg5Yjk1ZmJiY2NiYmE2ZWMyOTcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjE4MSw2ICsyMTgxLDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAogICAgIHBsYXRmb3JtL2xldmVsZGIv
TGV2ZWxEQldyaXRlQmF0Y2guY3BwCiAKKyAgICBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJMaW51eC5jcHAKKwogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2VudGVyLmNwcAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
CmluZGV4IGNkNzU3NWU1YTcxMjNhZTcwMDdiM2I1MjJkODNlNzA3NzgyY2E3ODMuLjFlNDBlODIz
MzYwMTA4OWNmYjU4YzQ3MDJjYWZkZDM0NjdhMWIxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNTMsNyArNTMsNyBAQCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXImIG1lbW9yeVByZXNzdXJlSGFuZGxlcigpCiAgICAgcmV0dXJu
IHN0YXRpY01lbW9yeVByZXNzdXJlSGFuZGxlcjsKIH0KIAotTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIoKSAKK01lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyKCkKICAgICA6IG1faW5zdGFsbGVkKGZhbHNlKQogICAgICwgbV9sYXN0
UmVzcG9uZFRpbWUoMCkKICAgICAsIG1fbG93TWVtb3J5SGFuZGxlcihyZWxlYXNlTWVtb3J5KQpA
QCAtNjQsNiArNjQsMTEgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXIoKQogICAgICwgbV9jbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlKHRydWUpCiAgICAg
LCBtX3JlbGVhc2VNZW1vcnlCbG9jaygwKQogICAgICwgbV9vYnNlcnZlcigwKQorI2VsaWYgT1Mo
TElOVVgpCisgICAgLCBtX2V2ZW50RkQoMCkKKyAgICAsIG1fcHJlc3N1cmVMZXZlbEZEKDApCisg
ICAgLCBtX3RocmVhZElEKDApCisgICAgLCBtX2hvbGRPZmZUaW1lcih0aGlzLCAmTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpob2xkT2ZmVGltZXJGaXJlZCkKICNlbmRpZgogewogfQpAQCAtMTQ0LDcg
KzE0OSw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KGJvb2wg
Y3JpdGljYWwpCiAgICAgfQogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9S
TShDT0NPQSkgJiYgIU9TKExJTlVYKQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3Rh
bGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0KIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMjc2ZDk1
Yjk5YjliYjUwZTU4YmI2N2ZlYjIxZTU5NzY2ZmJjM2ZhZC4uYWNmYzA1ZjE4M2Y3NDdiZGE2OTdh
MzNiNmZiNTUxOTllMGNkYTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzMsOCBAQAogCiAjaWYgUExBVEZP
Uk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+CisjZWxpZiBPUyhM
SU5VWCkKKyNpbmNsdWRlICJUaW1lci5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTY5LDYgKzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJNZW1vcnlQcmVzc3VyZSgp
OwogICAgIGJvb2wgc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZSgpOwogICAgIHZvaWQg
cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmVJZk5lZWRlZCgpOworI2VsaWYgT1MoTElOVVgpCisgICAg
c3RhdGljIHZvaWQgd2FpdEZvck1lbW9yeVByZXNzdXJlRXZlbnQodm9pZCopOwogI2VuZGlmCiAK
ICAgICBjbGFzcyBSZWxpZWZMb2dnZXIgewpAQCAtMTI3LDYgKzEzMiwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgKF5tX3JlbGVhc2VNZW1vcnlCbG9jaykoKTsKICAgICBDRlJ1bkxvb3BPYnNlcnZl
clJlZiBtX29ic2VydmVyOwogICAgIE11dGV4IG1fb2JzZXJ2ZXJNdXRleDsKKyNlbGlmIE9TKExJ
TlVYKQorICAgIGludCBtX2V2ZW50RkQ7CisgICAgaW50IG1fcHJlc3N1cmVMZXZlbEZEOworICAg
IFdURjo6VGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFRpbWVyPE1lbW9yeVByZXNz
dXJlSGFuZGxlcj4gbV9ob2xkT2ZmVGltZXI7CisgICAgdm9pZCBob2xkT2ZmVGltZXJGaXJlZChU
aW1lcjxNZW1vcnlQcmVzc3VyZUhhbmRsZXI+Kik7CisgICAgdm9pZCBsb2dFcnJvckFuZENsb3Nl
RkRzKGNvbnN0IGNoYXIqIGVycm9yKTsKICNlbmRpZgogfTsKICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNmFhY2ZiZmJhNTU3YjgyYWFjMDAxNzc2ZDQ0NmY5NjIwYzM2OGJl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMjQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgorCisjaWYg
T1MoTElOVVgpCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHN5cy9ldmVudGZkLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxz
eXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBEaXNhYmxlIG1lbW9yeSBl
dmVudCByZWNlcHRpb24gZm9yIGEgbWluaW11bSBvZiBzX21pbmltdW1Ib2xkT2ZmVGltZQorLy8g
c2Vjb25kcyBhZnRlciByZWNlaXZpbmcgYW4gZXZlbnQuIERvbid0IGxldCBldmVudHMgZmlyZSBh
bnkgc29vbmVyIHRoYW4KKy8vIHNfaG9sZE9mZk11bHRpcGxpZXIgdGltZXMgdGhlIGxhc3QgY2xl
YW51cCBwcm9jZXNzaW5nIHRpbWUuIEVmZmVjdGl2ZWx5CisvLyB0aGlzIGlzIDEgLyBzX2hvbGRP
ZmZNdWx0aXBsaWVyIHBlcmNlbnQgb2YgdGhlIHRpbWUuCisvLyBUaGVzZSB2YWx1ZSBzZWVtcyBy
ZWFzb25hYmxlIGFuZCB0ZXN0aW5nIHZlcmlmaWVzIHRoYXQgaXQgdGhyb3R0bGVzIGZyZXF1ZW50
CisvLyBsb3cgbWVtb3J5IGV2ZW50cywgZ3JlYXRseSByZWR1Y2luZyBDUFUgdXNhZ2UuCitzdGF0
aWMgY29uc3QgdW5zaWduZWQgc19taW5pbXVtSG9sZE9mZlRpbWUgPSA1Oworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfaG9sZE9mZk11bHRpcGxpZXIgPSAyMDsKKworc3RhdGljIGNvbnN0IGNoYXIq
IHNfY2dyb3VwTWVtb3J5UHJlc3N1cmVMZXZlbCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvbWVt
b3J5LnByZXNzdXJlX2xldmVsIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBzX2Nncm91cEV2ZW50Q29u
dHJvbCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvY2dyb3VwLmV2ZW50X2NvbnRyb2wiOworc3Rh
dGljIGNvbnN0IGNoYXIqIHNfcHJvY2Vzc1N0YXR1cyA9ICIvcHJvYy9zZWxmL3N0YXR1cyI7CisK
K3N0YXRpYyBpbmxpbmUgU3RyaW5nIG5leHRUb2tlbihGSUxFKiBmaWxlKQoreworICAgIGlmICgh
ZmlsZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGJ1ZmZlclNpemUgPSAxMjg7CisgICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV0gPSB7MCwg
fTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgYnVmZmVyU2l6
ZSkgeworICAgICAgICBjaGFyIGNoID0gZmdldGMoZmlsZSk7CisgICAgICAgIGlmIChjaCA9PSBF
T0YgfHwgKGlzQVNDSUlTcGFjZShjaCkgJiYgaW5kZXgpKSAvLyBCcmVhayBvbiBub24taW5pdGlh
bCBBU0NJSSBzcGFjZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIWlzQVNDSUlT
cGFjZShjaCkpIHsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleF0gPSBjaDsKKyAgICAgICAgICAg
IGluZGV4Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7
Cit9CisKK01lbW9yeVByZXNzdXJlSGFuZGxlcjo6fk1lbW9yeVByZXNzdXJlSGFuZGxlcigpCit7
CisgICAgdW5pbnN0YWxsKCk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp3YWl0
Rm9yTWVtb3J5UHJlc3N1cmVFdmVudCh2b2lkKikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBpbnQgZXZlbnRGRCA9IG1lbW9yeVByZXNzdXJlSGFuZGxlcigpLm1fZXZlbnRG
RDsKKyAgICBpZiAoIWV2ZW50RkQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkYXRlIGV2
ZW50ZmQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGJ1ZmZl
cjsKKyAgICBpZiAocmVhZChldmVudEZELCAmYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPD0gMCkg
eworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZWFkIGV2ZW50ZmQuXG4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlcigpLm1fdW5kZXJN
ZW1vcnlQcmVzc3VyZSA9IHRydWU7CisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlLCAmbWVtb3J5UHJlc3N1cmVI
YW5kbGVyKCksIHRydWUpKTsKK30KKworaW5saW5lIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpsb2dFcnJvckFuZENsb3NlRkRzKGNvbnN0IGNoYXIqIGxvZykKK3sKKyAgICBpZiAobG9nKQor
ICAgICAgICBMT0dfRVJST1IoIiVzLCBlcnJvciA6ICVtXG4iLCBsb2cpOworCisgICAgaWYgKG1f
ZXZlbnRGRCkgeworICAgICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBtX2V2ZW50RkQg
PSAwOworICAgIH0KKyAgICBpZiAobV9wcmVzc3VyZUxldmVsRkQpIHsKKyAgICAgICAgY2xvc2Uo
bV9wcmVzc3VyZUxldmVsRkQpOworICAgICAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IDA7CisgICAg
fQorfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAgaWYg
KG1faW5zdGFsbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V2ZW50RkQgPSBldmVudGZk
KDAsIEVGRF9DTE9FWEVDKTsKKyAgICBpZiAobV9ldmVudEZEID09IC0xKSB7CisgICAgICAgIExP
R19FUlJPUigiZXZlbnRmZCgpIGZhaWxlZDogJW0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fcHJlc3N1cmVMZXZlbEZEID0gb3BlbihzX2Nncm91cE1lbW9yeVByZXNzdXJlTGV2
ZWwsIE9fQ0xPRVhFQyB8IE9fUkRPTkxZKTsKKyAgICBpZiAobV9wcmVzc3VyZUxldmVsRkQgPT0g
LTEpIHsKKyAgICAgICAgbG9nRXJyb3JBbmRDbG9zZUZEcygiRmFpbGVkIHRvIG9wZW4gbWVtb3J5
LnByZXNzdXJlX2xldmVsIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgZmQg
PSBvcGVuKHNfY2dyb3VwRXZlbnRDb250cm9sLCBPX0NMT0VYRUMgfCBPX1dST05MWSk7CisgICAg
aWYgKGZkID09IC0xKSB7CisgICAgICAgIGxvZ0Vycm9yQW5kQ2xvc2VGRHMoIkZhaWxlZCB0byBv
cGVuIGNncm91cC5ldmVudF9jb250cm9sIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjaGFyIGxpbmVbMTI4XSA9IHswLCB9OworICAgIGlmIChzbnByaW50ZihsaW5lLCBzaXplb2Yo
bGluZSksICIlZCAlZCBsb3ciLCBtX2V2ZW50RkQsIG1fcHJlc3N1cmVMZXZlbEZEKSA8IDAKKyAg
ICAgICAgfHwgd3JpdGUoZmQsIGxpbmUsIHN0cmxlbihsaW5lKSArIDEpIDwgMCkgeworICAgICAg
ICBsb2dFcnJvckFuZENsb3NlRkRzKCJGYWlsZWQgdG8gd3JpdGUgY2dyb3VwLmV2ZW50X2NvbnRy
b2wiKTsKKyAgICAgICAgY2xvc2UoZmQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNs
b3NlKGZkKTsKKworICAgIG1fdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQod2FpdEZvck1lbW9yeVBy
ZXNzdXJlRXZlbnQsIHRoaXMsICJXZWJDb3JlOiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIiKTsKKyAg
ICBpZiAoIW1fdGhyZWFkSUQpIHsKKyAgICAgICAgbG9nRXJyb3JBbmRDbG9zZUZEcygiRmFpbGVk
IHRvIGNyZWF0ZSBhIHRocmVhZCBmb3IgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBmYWxzZTsKKyAg
ICBtX2luc3RhbGxlZCA9IHRydWU7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1
bmluc3RhbGwoKQoreworICAgIGlmICghbV9pbnN0YWxsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX3RocmVhZElEKSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3RocmVhZElEKTsK
KyAgICAgICAgbV90aHJlYWRJRCA9IDA7CisgICAgfQorCisgICAgbG9nRXJyb3JBbmRDbG9zZUZE
cyhudWxscHRyKTsKKyAgICBtX2luc3RhbGxlZCA9IGZhbHNlOworfQorCit2b2lkIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQoVGltZXI8TWVtb3J5UHJlc3N1cmVIYW5k
bGVyPiopCit7CisgICAgaW5zdGFsbCgpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6aG9sZE9mZih1bnNpZ25lZCBzZWNvbmRzKQoreworICAgIG1faG9sZE9mZlRpbWVyLnN0YXJ0
T25lU2hvdChzZWNvbmRzKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKGJvb2wgY3JpdGljYWwpCit7CisgICAgdW5pbnN0YWxsKCk7CisK
KyAgICBkb3VibGUgc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisK
KyAgICBtX2xvd01lbW9yeUhhbmRsZXIoY3JpdGljYWwpOworCisgICAgdW5zaWduZWQgaG9sZE9m
ZlRpbWUgPSAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBzdGFydFRpbWUpICogc19o
b2xkT2ZmTXVsdGlwbGllcjsKKworICAgIGhvbGRPZmYoc3RkOjptYXgoaG9sZE9mZlRpbWUsIHNf
bWluaW11bUhvbGRPZmZUaW1lKSk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpw
bGF0Zm9ybVJlbGVhc2VNZW1vcnkoYm9vbCkKK3sKKyAgICBSZWxpZWZMb2dnZXIgbG9nKCJSdW4g
bWFsbG9jX3RyaW0iKTsKKyAgICBtYWxsb2NfdHJpbSgwKTsKK30KKwordm9pZCBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKQoreworICAgIHNpemVfdCBj
dXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgpOworICAgIGlmIChjdXJyZW50TWVt
b3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1faW5pdGlhbE1lbW9yeSA9PSBzdGF0
aWNfY2FzdDxzaXplX3Q+KC0xKSkgeworICAgICAgICBwcmludGYoIiVzIChVbmFibGUgdG8gZ2V0
IGRpcnR5IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2VzcylcbiIsIG1fbG9nU3RyaW5nKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNzaXplX3QgbWVtb3J5RGlmZiA9IGN1cnJl
bnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7CisgICAgaWYgKG1lbW9yeURpZmYgPCAwKQorICAg
ICAgICBwcmludGYoIlByZXNzdXJlIHJlbGllZjogJXM6IC1kaXJ0eSAlbGQgYnl0ZXMgKGZyb20g
JWxkIHRvICVsZClcbiIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFs
TWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKKyAg
ICAgICAgcHJpbnRmKCJQcmVzc3VyZSByZWxpZWY6ICVzOiArZGlydHkgJWxkIGJ5dGVzIChmcm9t
ICVsZCB0byAlbGQpXG4iLCBtX2xvZ1N0cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5
LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlCisgICAgICAgIHByaW50ZigiUHJlc3N1cmUgcmVs
aWVmOiAlczogPWRpcnR5IChhdCAlbGQgYnl0ZXMpXG4iLCBtX2xvZ1N0cmluZywgY3VycmVudE1l
bW9yeSk7Cit9CisKK3NpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6
cGxhdGZvcm1NZW1vcnlVc2FnZSgpCit7CisgICAgRklMRSogZmlsZSA9IGZvcGVuKHNfcHJvY2Vz
c1N0YXR1cywgInIiKTsKKyAgICBpZiAoIWZpbGUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KC0xKTsKKworICAgIHNpemVfdCB2bVNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KC0xKTsgLy8gS0IKKyAgICBTdHJpbmcgdG9rZW4gPSBuZXh0VG9rZW4oZmlsZSk7CisgICAgd2hp
bGUgKCF0b2tlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHRva2VuID09ICJWbVNpemU6Iikg
eworICAgICAgICAgICAgdm1TaXplID0gbmV4dFRva2VuKGZpbGUpLnRvSW50KCkgKiBLQjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHRva2VuID0gbmV4dFRva2VuKGZp
bGUpOworICAgIH0KKyAgICBmY2xvc2UoZmlsZSk7CisKKyAgICByZXR1cm4gdm1TaXplOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBPUyhMSU5VWCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242752</attachid>
            <date>2014-12-07 10:18:08 -0800</date>
            <delta_ts>2014-12-09 05:40:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20141207191844.patch</filename>
            <type>text/plain</type>
            <size>13895</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIyYjZiYzUyN2E3ODAx
YjZjOWVmNTA4ZDM1OTNmZDJhMTQ4OWNhZC4uNjVhMDUxZTg4OTQyN2U2OTg1NTcyMjdhODQzYzQz
Yjk0Nzg3YjM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTEyLTA3ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBpbXBs
ZW1lbnRhdGlvbiB0byBzdXBwb3J0IE1lbW9yeVByZXNzdXJlSGFuZGxlciBmb3IgbGludXggc3lz
dGVtLgorICAgICAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9tZXUncyBsYXN0IHBhdGNoIGFu
ZCBpbXByb3ZlZCBvbiB0b3Agb2YgaXQuCisgICAgICAgIE1vc3Qgb2YgY3VycmVudCBsaW51eCBk
aXN0cmlidXRpb25zIHN1cHBvcnQgY2dyb3VwLCBzbyB0aGF0IHdlIHVzZSB0aGUgbWVtb3J5LnBy
ZXNzdXJlX2xldmVsCisgICAgICAgIG1lY2hhbmlzbSBvZiBjZ3JvdXAgdG8gZ2V0IG5vdGlmaWNh
dGlvbnMgd2hlbiBhbiBhcHBsaWNhdGlvbiByZWFjaGVzIHRoZSAnbG93JyBtZW1vcnkKKyAgICAg
ICAgcHJlc3N1cmUgbGV2ZWwuIEN1cnJlbnRseSB0aGlzIGZlYXR1cmUgaXMgZXhwZXJpbWVudGFs
IGFuZCB1bmRlciBkZXZlbG9waW5nIHNvIGl0IHdvdWxkIGJlCisgICAgICAgIGJsb2NrZWQgZm9y
IGEgd2hpbGUuIFBsZWFzZSBzZWUgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGVuZ2luZSBiZWhhdmlvciBjaGFuZ2VkLgor
CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21h
a2U6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6fk1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OndhaXRGb3JNZW1vcnlQcmVzc3VyZUV2ZW50KTogcnVu
IGluIGEgc2VwZXJhdGVkIHRocmVhZAorICAgICAgICB0byBsaXN0ZW4gJ2xvdycgbGV2ZWwgZXZl
bnQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmxvZ0Vycm9yQW5k
Q2xvc2VGRHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0
YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxs
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2Zm
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVt
b3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpw
bGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTG9nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKTog
cmVhZCAvcHJvYy9zZWxmL3N0YXR1cworICAgICAgICB0byBnZXQgVk0gYW1vdW50IHVzZWQgYnkg
Y3VycmVudCBwcm9jZXNzLgorCiAyMDE0LTEyLTA2ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVVJUQkYgYWZ0ZXIgcjE3NjkxNS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1FZmwuY21ha2UKaW5kZXggZWY3ZTc3ZmRhZTMzZWVkY2IzYjBhOGNjZGFkNGNlYTAzMWVlZGZm
ZC4uMTFhNTE4ODE2ODJiY2I5MGEyYTUyZWJmZWJjMWIyMTM5MGQ3NzZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKQEAgLTIxMSw2ICsyMTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCiAKICAgICBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXguY3BwCisgICAgcGxh
dGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCiAKICAgICBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjVmZWM3ZGEwOTAyMzlhMTMzMzFjOTc1Y2Nh
MDU1YWIwMmVkMzg1Ny4uNTEzZDYwMjRlNDlhZTdmYzk5ODYwMTI1MjkxNmIyNzJjMzU1OWVkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE1NSw2ICsxNTUsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXgu
Y3BwCisgICAgcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCiAK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuY3BwCmluZGV4IDEyZjkxMTM2YWM4NGM4MzQyNmYxYzRjNDNmNmYwM2VhN2U0MDJi
ZWIuLjE4NmVkNDQyOTIxNGE3YTM4OWQyYWY5MTI4MWM3MGNiYjU3Njk1MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjQs
NiArNjQsMTEgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXIo
KQogICAgICwgbV9jbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlKHRydWUpCiAgICAgLCBtX3Jl
bGVhc2VNZW1vcnlCbG9jaygwKQogICAgICwgbV9vYnNlcnZlcigwKQorI2VsaWYgT1MoTElOVVgp
CisgICAgLCBtX2V2ZW50RkQoMCkKKyAgICAsIG1fcHJlc3N1cmVMZXZlbEZEKDApCisgICAgLCBt
X3RocmVhZElEKDApCisgICAgLCBtX2hvbGRPZmZUaW1lcigqdGhpcywgJk1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKIH0KQEAgLTE0NCw3ICsxNDks
NyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShib29sIGNyaXRp
Y2FsKQogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKKyNpZiAhUExBVEZPUk0oQ09D
T0EpICYmICFPUyhMSU5VWCkKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKCkg
eyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkgeyB9CiB2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZih1bnNpZ25lZCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4IDE4OWY0ODgzNWVj
NDRiZGU3ZTkxZWNlY2Y0OWExMzBiZDI0ZDU2OTUuLjJjYWNhNGU0YjVjOWNjOTA4ZGU2MDE5YjJl
OThlM2QyNmZkMzY0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9y
eVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
UmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDggQEAKIAogI2lmIFBMQVRGT1JNKElP
UykKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2VsaWYgT1MoTElOVVgp
CisjaW5jbHVkZSAiVGltZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
OSw2ICs3Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyTWVtb3J5
UHJlc3N1cmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZFdhaXRGb3JNZW1vcnlD
bGVhck1lc3NhZ2UoKTsKICAgICB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlSWZOZWVkZWQo
KTsKKyNlbGlmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdhaXRGb3JNZW1vcnlQcmVzc3Vy
ZUV2ZW50KHZvaWQqKTsKICNlbmRpZgogCiAgICAgY2xhc3MgUmVsaWVmTG9nZ2VyIHsKQEAgLTEy
Nyw5ICsxMzIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIChebV9yZWxlYXNlTWVtb3J5QmxvY2sp
KCk7CiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlcjsKICAgICBNdXRleCBtX29i
c2VydmVyTXV0ZXg7CisjZWxpZiBPUyhMSU5VWCkKKyAgICBpbnQgbV9ldmVudEZEOworICAgIGlu
dCBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBXVEY6OlRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJ
RDsKKyAgICBUaW1lciBtX2hvbGRPZmZUaW1lcjsKKyAgICB2b2lkIGhvbGRPZmZUaW1lckZpcmVk
KCk7CisgICAgdm9pZCBsb2dFcnJvckFuZENsb3NlRkRzKGNvbnN0IGNoYXIqIGVycm9yKTsKICNl
bmRpZgogfTsKLSAKKwogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9iYWwgbWVtb3J5IHBy
ZXNzdXJlIG9iamVjdC4KIFdFQkNPUkVfRVhQT1JUIE1lbW9yeVByZXNzdXJlSGFuZGxlciYgbWVt
b3J5UHJlc3N1cmVIYW5kbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NGE1NzI2OTU5NTNmZTI4YjM5NGE1Yjc4MjdhMzM5ODhiZjQzOTExCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
TGludXguY3BwCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAy
MDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgorCisjaWYgT1MoTElOVVgpCisKKyNp
bmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN5cy9ldmVu
dGZkLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBEaXNhYmxlIG1lbW9yeSBldmVudCByZWNlcHRpb24g
Zm9yIGEgbWluaW11bSBvZiBzX21pbmltdW1Ib2xkT2ZmVGltZQorLy8gc2Vjb25kcyBhZnRlciBy
ZWNlaXZpbmcgYW4gZXZlbnQuIERvbid0IGxldCBldmVudHMgZmlyZSBhbnkgc29vbmVyIHRoYW4K
Ky8vIHNfaG9sZE9mZk11bHRpcGxpZXIgdGltZXMgdGhlIGxhc3QgY2xlYW51cCBwcm9jZXNzaW5n
IHRpbWUuIEVmZmVjdGl2ZWx5CisvLyB0aGlzIGlzIDEgLyBzX2hvbGRPZmZNdWx0aXBsaWVyIHBl
cmNlbnQgb2YgdGhlIHRpbWUuCisvLyBUaGVzZSB2YWx1ZSBzZWVtcyByZWFzb25hYmxlIGFuZCB0
ZXN0aW5nIHZlcmlmaWVzIHRoYXQgaXQgdGhyb3R0bGVzIGZyZXF1ZW50CisvLyBsb3cgbWVtb3J5
IGV2ZW50cywgZ3JlYXRseSByZWR1Y2luZyBDUFUgdXNhZ2UuCitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc19taW5pbXVtSG9sZE9mZlRpbWUgPSA1Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNfaG9s
ZE9mZk11bHRpcGxpZXIgPSAyMDsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNfY2dyb3VwTWVtb3J5
UHJlc3N1cmVMZXZlbCA9ICIvc3lzL2ZzL2Nncm91cC9tZW1vcnkvbWVtb3J5LnByZXNzdXJlX2xl
dmVsIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBzX2Nncm91cEV2ZW50Q29udHJvbCA9ICIvc3lzL2Zz
L2Nncm91cC9tZW1vcnkvY2dyb3VwLmV2ZW50X2NvbnRyb2wiOworc3RhdGljIGNvbnN0IGNoYXIq
IHNfcHJvY2Vzc1N0YXR1cyA9ICIvcHJvYy9zZWxmL3N0YXR1cyI7CisKK3N0YXRpYyBpbmxpbmUg
U3RyaW5nIG5leHRUb2tlbihGSUxFKiBmaWxlKQoreworICAgIGlmICghZmlsZSkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGJ1ZmZlclNpemUg
PSAxMjg7CisgICAgY2hhciBidWZmZXJbYnVmZmVyU2l6ZV0gPSB7MCwgfTsKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisgICAgd2hpbGUgKGluZGV4IDwgYnVmZmVyU2l6ZSkgeworICAgICAgICBj
aGFyIGNoID0gZmdldGMoZmlsZSk7CisgICAgICAgIGlmIChjaCA9PSBFT0YgfHwgKGlzQVNDSUlT
cGFjZShjaCkgJiYgaW5kZXgpKSAvLyBCcmVhayBvbiBub24taW5pdGlhbCBBU0NJSSBzcGFjZS4K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIWlzQVNDSUlTcGFjZShjaCkpIHsKKyAg
ICAgICAgICAgIGJ1ZmZlcltpbmRleF0gPSBjaDsKKyAgICAgICAgICAgIGluZGV4Kys7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlcik7Cit9CisKK01lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6fk1lbW9yeVByZXNzdXJlSGFuZGxlcigpCit7CisgICAgdW5pbnN0YWxs
KCk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp3YWl0Rm9yTWVtb3J5UHJlc3N1
cmVFdmVudCh2b2lkKikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBpbnQg
ZXZlbnRGRCA9IG1lbW9yeVByZXNzdXJlSGFuZGxlcigpLm1fZXZlbnRGRDsKKyAgICBpZiAoIWV2
ZW50RkQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkYXRlIGV2ZW50ZmQuXG4iKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGJ1ZmZlcjsKKyAgICBpZiAocmVh
ZChldmVudEZELCAmYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPD0gMCkgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byByZWFkIGV2ZW50ZmQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlcigpLm1fdW5kZXJNZW1vcnlQcmVzc3VyZSA9
IHRydWU7CisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlLCAmbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCksIHRydWUp
KTsKK30KKworaW5saW5lIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpsb2dFcnJvckFuZENs
b3NlRkRzKGNvbnN0IGNoYXIqIGxvZykKK3sKKyAgICBpZiAobG9nKQorICAgICAgICBMT0dfRVJS
T1IoIiVzLCBlcnJvciA6ICVtXG4iLCBsb2cpOworCisgICAgaWYgKG1fZXZlbnRGRCkgeworICAg
ICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBtX2V2ZW50RkQgPSAwOworICAgIH0KKyAg
ICBpZiAobV9wcmVzc3VyZUxldmVsRkQpIHsKKyAgICAgICAgY2xvc2UobV9wcmVzc3VyZUxldmVs
RkQpOworICAgICAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IDA7CisgICAgfQorfQorCit2b2lkIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShFRkwpCisgICAgLy8gRklYTUU6IE1lbW9yeVByZXNzdXJlSGFuZGxlciBpcyBleHBl
cmltZW50YWwsIHNvIHdlIHByZXZlbnQgaXQgZnJvbSBydW5uaW5nIGZvciBhIHdoaWxlLgorICAg
IHJldHVybjsKKyNlbmRpZgorICAgIGlmIChtX2luc3RhbGxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9ldmVudEZEID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyk7CisgICAgaWYgKG1fZXZl
bnRGRCA9PSAtMSkgeworICAgICAgICBMT0dfRVJST1IoImV2ZW50ZmQoKSBmYWlsZWQ6ICVtIik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IG9wZW4o
c19jZ3JvdXBNZW1vcnlQcmVzc3VyZUxldmVsLCBPX0NMT0VYRUMgfCBPX1JET05MWSk7CisgICAg
aWYgKG1fcHJlc3N1cmVMZXZlbEZEID09IC0xKSB7CisgICAgICAgIGxvZ0Vycm9yQW5kQ2xvc2VG
RHMoIkZhaWxlZCB0byBvcGVuIG1lbW9yeS5wcmVzc3VyZV9sZXZlbCIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaW50IGZkID0gb3BlbihzX2Nncm91cEV2ZW50Q29udHJvbCwgT19D
TE9FWEVDIHwgT19XUk9OTFkpOworICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICBsb2dFcnJv
ckFuZENsb3NlRkRzKCJGYWlsZWQgdG8gb3BlbiBjZ3JvdXAuZXZlbnRfY29udHJvbCIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hhciBsaW5lWzEyOF0gPSB7MCwgfTsKKyAgICBp
ZiAoc25wcmludGYobGluZSwgc2l6ZW9mKGxpbmUpLCAiJWQgJWQgbG93IiwgbV9ldmVudEZELCBt
X3ByZXNzdXJlTGV2ZWxGRCkgPCAwCisgICAgICAgIHx8IHdyaXRlKGZkLCBsaW5lLCBzdHJsZW4o
bGluZSkgKyAxKSA8IDApIHsKKyAgICAgICAgbG9nRXJyb3JBbmRDbG9zZUZEcygiRmFpbGVkIHRv
IHdyaXRlIGNncm91cC5ldmVudF9jb250cm9sIik7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjbG9zZShmZCk7CisKKyAgICBtX3RocmVhZElEID0gY3Jl
YXRlVGhyZWFkKHdhaXRGb3JNZW1vcnlQcmVzc3VyZUV2ZW50LCB0aGlzLCAiV2ViQ29yZTogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyIik7CisgICAgaWYgKCFtX3RocmVhZElEKSB7CisgICAgICAgIGxv
Z0Vycm9yQW5kQ2xvc2VGRHMoIkZhaWxlZCB0byBjcmVhdGUgYSB0aHJlYWQgZm9yIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV91bmRlck1l
bW9yeVByZXNzdXJlID0gZmFsc2U7CisgICAgbV9pbnN0YWxsZWQgPSB0cnVlOworfQorCit2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKK3sKKyAgICBpZiAoIW1faW5zdGFs
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV90aHJlYWRJRCkgeworICAgICAgICBk
ZXRhY2hUaHJlYWQobV90aHJlYWRJRCk7CisgICAgICAgIG1fdGhyZWFkSUQgPSAwOworICAgIH0K
KworICAgIGxvZ0Vycm9yQW5kQ2xvc2VGRHMobnVsbHB0cik7CisgICAgbV9pbnN0YWxsZWQgPSBm
YWxzZTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVk
KCkKK3sKKyAgICBpbnN0YWxsKCk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpo
b2xkT2ZmKHVuc2lnbmVkIHNlY29uZHMpCit7CisgICAgbV9ob2xkT2ZmVGltZXIuc3RhcnRPbmVT
aG90KHNlY29uZHMpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRv
TWVtb3J5UHJlc3N1cmUoYm9vbCBjcml0aWNhbCkKK3sKKyAgICB1bmluc3RhbGwoKTsKKworICAg
IGRvdWJsZSBzdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAg
IG1fbG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCk7CisKKyAgICB1bnNpZ25lZCBob2xkT2ZmVGlt
ZSA9IChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIHN0YXJ0VGltZSkgKiBzX2hvbGRP
ZmZNdWx0aXBsaWVyOworCisgICAgaG9sZE9mZihzdGQ6Om1heChob2xkT2ZmVGltZSwgc19taW5p
bXVtSG9sZE9mZlRpbWUpKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRm
b3JtUmVsZWFzZU1lbW9yeShib29sKQoreworICAgIFJlbGllZkxvZ2dlciBsb2coIlJ1biBtYWxs
b2NfdHJpbSIpOworICAgIG1hbGxvY190cmltKDApOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZygpCit7CisgICAgc2l6ZV90IGN1cnJl
bnRNZW1vcnkgPSBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgaWYgKGN1cnJlbnRNZW1vcnkg
PT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkgfHwgbV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19j
YXN0PHNpemVfdD4oLTEpKSB7CisgICAgICAgIHByaW50ZigiJXMgKFVuYWJsZSB0byBnZXQgZGly
dHkgbWVtb3J5IGluZm9ybWF0aW9uIGZvciBwcm9jZXNzKVxuIiwgbV9sb2dTdHJpbmcpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgc3NpemVfdCBtZW1vcnlEaWZmID0gY3VycmVudE1l
bW9yeSAtIG1faW5pdGlhbE1lbW9yeTsKKyAgICBpZiAobWVtb3J5RGlmZiA8IDApCisgICAgICAg
IHByaW50ZigiUHJlc3N1cmUgcmVsaWVmOiAlczogLWRpcnR5ICVsZCBieXRlcyAoZnJvbSAlbGQg
dG8gJWxkKVxuIiwgbV9sb2dTdHJpbmcsIChtZW1vcnlEaWZmICogLTEpLCBtX2luaXRpYWxNZW1v
cnksIGN1cnJlbnRNZW1vcnkpOworICAgIGVsc2UgaWYgKG1lbW9yeURpZmYgPiAwKQorICAgICAg
ICBwcmludGYoIlByZXNzdXJlIHJlbGllZjogJXM6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWxk
IHRvICVsZClcbiIsIG1fbG9nU3RyaW5nLCBtZW1vcnlEaWZmLCBtX2luaXRpYWxNZW1vcnksIGN1
cnJlbnRNZW1vcnkpOworICAgIGVsc2UKKyAgICAgICAgcHJpbnRmKCJQcmVzc3VyZSByZWxpZWY6
ICVzOiA9ZGlydHkgKGF0ICVsZCBieXRlcylcbiIsIG1fbG9nU3RyaW5nLCBjdXJyZW50TWVtb3J5
KTsKK30KKworc2l6ZV90IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0
Zm9ybU1lbW9yeVVzYWdlKCkKK3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19wcm9jZXNzU3Rh
dHVzLCAiciIpOworICAgIGlmICghZmlsZSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4oLTEpOworCisgICAgc2l6ZV90IHZtU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEp
OyAvLyBLQgorICAgIFN0cmluZyB0b2tlbiA9IG5leHRUb2tlbihmaWxlKTsKKyAgICB3aGlsZSAo
IXRva2VuLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAodG9rZW4gPT0gIlZtU2l6ZToiKSB7Cisg
ICAgICAgICAgICB2bVNpemUgPSBuZXh0VG9rZW4oZmlsZSkudG9JbnQoKSAqIEtCOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSBuZXh0VG9rZW4oZmlsZSk7
CisgICAgfQorICAgIGZjbG9zZShmaWxlKTsKKworICAgIHJldHVybiB2bVNpemU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE9TKExJTlVYKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242913</attachid>
            <date>2014-12-09 05:41:08 -0800</date>
            <delta_ts>2014-12-10 09:12:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20141209144147.patch</filename>
            <type>text/plain</type>
            <size>13642</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVlM2Y0ZGE0ZTdhNGEz
MDQ4YWIzMWU4Y2I5YTEyMTA1MmZkNWM0ZS4uM2RmMzc1MzI5MWE1MDZlNTU2NGUwODMzNTUzZWY0
M2MyNDU5ZjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTEyLTA5ICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBpbXBs
ZW1lbnRhdGlvbiB0byBzdXBwb3J0IE1lbW9yeVByZXNzdXJlSGFuZGxlciBmb3IgbGludXggc3lz
dGVtLgorICAgICAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9tZXUncyBsYXN0IHBhdGNoIGFu
ZCBpbXByb3ZlZCBvbiB0b3Agb2YgaXQuCisgICAgICAgIE1vc3Qgb2YgY3VycmVudCBsaW51eCBk
aXN0cmlidXRpb25zIHN1cHBvcnQgY2dyb3VwLCBzbyB0aGF0IHdlIHVzZSB0aGUgbWVtb3J5LnBy
ZXNzdXJlX2xldmVsCisgICAgICAgIG1lY2hhbmlzbSBvZiBjZ3JvdXAgdG8gZ2V0IG5vdGlmaWNh
dGlvbnMgd2hlbiBhbiBhcHBsaWNhdGlvbiByZWFjaGVzIHRoZSAnbG93JyBtZW1vcnkKKyAgICAg
ICAgcHJlc3N1cmUgbGV2ZWwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGVuZ2lu
ZSBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJMaW51eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6fk1lbW9yeVByZXNzdXJlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OndhaXRGb3JNZW1v
cnlQcmVzc3VyZUV2ZW50KTogcnVuIGluIGEgc2VwZXJhdGVkIHRocmVhZAorICAgICAgICB0byBs
aXN0ZW4gJ2xvdycgbGV2ZWwgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OmxvZ0Vycm9yQW5kQ2xvc2VGRHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpob2xkT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpw
bGF0Zm9ybU1lbW9yeVVzYWdlKTogcmVhZCAvcHJvYy9zZWxmL3N0YXR1cworICAgICAgICB0byBn
ZXQgVk0gYW1vdW50IHVzZWQgYnkgY3VycmVudCBwcm9jZXNzLgorCiAyMDE0LTEyLTA4ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFJlc291
cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBl
ZjdlNzdmZGFlMzNlZWRjYjNiMGE4Y2NkYWQ0Y2VhMDMxZWVkZmZkLi4xMWE1MTg4MTY4MmJjYjkw
YTJhNTJlYmZlYmMxYjIxMzkwZDc3NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAt
MjExLDYgKzIxMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKIAogICAgIHBsYXRmb3Jt
L2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAKKyAgICBwbGF0Zm9ybS9saW51eC9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQppbmRleCAxNjUwMjJjOTU5Y2ExMzNmOWY1MmM1NTVhN2I0YWIzMzE0ZDI3OGQ5Li45NzU0
OWEyZmQxZTZlYzIzZDFlMzY2ZGQwYTQ1YmMzYzMzMDViZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQpAQCAtMTU1LDYgKzE1NSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKIAog
ICAgIHBsYXRmb3JtL2xpbnV4L0dhbWVwYWREZXZpY2VMaW51eC5jcHAKKyAgICBwbGF0Zm9ybS9s
aW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKIAogICAgIHBsYXRmb3JtL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKaW5kZXgg
MTJmOTExMzZhYzg0YzgzNDI2ZjFjNGM0M2Y2ZjAzZWE3ZTQwMmJlYi4uMTg2ZWQ0NDI5MjE0YTdh
Mzg5ZDJhZjkxMjgxYzcwY2JiNTc2OTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCkBAIC02NCw2ICs2NCwxMSBAQCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcigpCiAgICAgLCBtX2NsZWFyUHJl
c3N1cmVPbk1lbW9yeVJlbGVhc2UodHJ1ZSkKICAgICAsIG1fcmVsZWFzZU1lbW9yeUJsb2NrKDAp
CiAgICAgLCBtX29ic2VydmVyKDApCisjZWxpZiBPUyhMSU5VWCkKKyAgICAsIG1fZXZlbnRGRCgw
KQorICAgICwgbV9wcmVzc3VyZUxldmVsRkQoMCkKKyAgICAsIG1fdGhyZWFkSUQoMCkKKyAgICAs
IG1faG9sZE9mZlRpbWVyKCp0aGlzLCAmTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmVGlt
ZXJGaXJlZCkKICNlbmRpZgogewogfQpAQCAtMTQ0LDcgKzE0OSw3IEBAIHZvaWQgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KGJvb2wgY3JpdGljYWwpCiAgICAgfQogfQogCi0j
aWYgIVBMQVRGT1JNKENPQ09BKQorI2lmICFQTEFURk9STShDT0NPQSkgJiYgIU9TKExJTlVYKQog
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3RhbGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Ojpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMTg5ZjQ4ODM1ZWM0NGJkZTdlOTFlY2VjZjQ5YTEz
MGJkMjRkNTY5NS4uMmNhY2E0ZTRiNWM5Y2M5MDhkZTYwMTliMmU5OGUzZDI2ZmQzNjQ1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBSYXNwYmVycnkgUGkgRm91bmRh
dGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsNiArMzMsOCBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmg+CisjZWxpZiBPUyhMSU5VWCkKKyNpbmNsdWRlICJUaW1lci5o
IgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY5LDYgKzcyLDggQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJNZW1vcnlQcmVzc3VyZSgpOwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZSgpOwogICAg
IHZvaWQgcmVzcG9uZFRvTWVtb3J5UHJlc3N1cmVJZk5lZWRlZCgpOworI2VsaWYgT1MoTElOVVgp
CisgICAgc3RhdGljIHZvaWQgd2FpdEZvck1lbW9yeVByZXNzdXJlRXZlbnQodm9pZCopOwogI2Vu
ZGlmCiAKICAgICBjbGFzcyBSZWxpZWZMb2dnZXIgewpAQCAtMTI3LDkgKzEzMiwxNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgKF5tX3JlbGVhc2VNZW1vcnlCbG9jaykoKTsKICAgICBDRlJ1bkxvb3BP
YnNlcnZlclJlZiBtX29ic2VydmVyOwogICAgIE11dGV4IG1fb2JzZXJ2ZXJNdXRleDsKKyNlbGlm
IE9TKExJTlVYKQorICAgIGludCBtX2V2ZW50RkQ7CisgICAgaW50IG1fcHJlc3N1cmVMZXZlbEZE
OworICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOworICAgIFRpbWVyIG1faG9s
ZE9mZlRpbWVyOworICAgIHZvaWQgaG9sZE9mZlRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGxvZ0Vy
cm9yQW5kQ2xvc2VGRHMoY29uc3QgY2hhciogZXJyb3IpOwogI2VuZGlmCiB9OwotIAorCiAvLyBG
dW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBtZW1vcnkgcHJlc3N1cmUgb2JqZWN0LgogV0VC
Q09SRV9FWFBPUlQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyJiBtZW1vcnlQcmVzc3VyZUhhbmRsZXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVt
b3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNTM3ZjM4MmM4ZDUzOGRl
YzA2MTJiYThjOWIzYTk2OGU3MzkyMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTAsMCAr
MSwyNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFJhc3BiZXJyeSBQaSBGb3Vu
ZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLmgiCisKKyNpZiBPUyhMSU5VWCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8c3lz
L2V2ZW50ZmQuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRGlzYWJsZSBtZW1vcnkgZXZlbnQgcmVjZXB0
aW9uIGZvciBhIG1pbmltdW0gb2Ygc19taW5pbXVtSG9sZE9mZlRpbWUKKy8vIHNlY29uZHMgYWZ0
ZXIgcmVjZWl2aW5nIGFuIGV2ZW50LiBEb24ndCBsZXQgZXZlbnRzIGZpcmUgYW55IHNvb25lciB0
aGFuCisvLyBzX2hvbGRPZmZNdWx0aXBsaWVyIHRpbWVzIHRoZSBsYXN0IGNsZWFudXAgcHJvY2Vz
c2luZyB0aW1lLiBFZmZlY3RpdmVseQorLy8gdGhpcyBpcyAxIC8gc19ob2xkT2ZmTXVsdGlwbGll
ciBwZXJjZW50IG9mIHRoZSB0aW1lLgorLy8gVGhlc2UgdmFsdWUgc2VlbXMgcmVhc29uYWJsZSBh
bmQgdGVzdGluZyB2ZXJpZmllcyB0aGF0IGl0IHRocm90dGxlcyBmcmVxdWVudAorLy8gbG93IG1l
bW9yeSBldmVudHMsIGdyZWF0bHkgcmVkdWNpbmcgQ1BVIHVzYWdlLgorc3RhdGljIGNvbnN0IHVu
c2lnbmVkIHNfbWluaW11bUhvbGRPZmZUaW1lID0gNTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBz
X2hvbGRPZmZNdWx0aXBsaWVyID0gMjA7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzX2Nncm91cE1l
bW9yeVByZXNzdXJlTGV2ZWwgPSAiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L21lbW9yeS5wcmVzc3Vy
ZV9sZXZlbCI7CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBFdmVudENvbnRyb2wgPSAiL3N5
cy9mcy9jZ3JvdXAvbWVtb3J5L2Nncm91cC5ldmVudF9jb250cm9sIjsKK3N0YXRpYyBjb25zdCBj
aGFyKiBzX3Byb2Nlc3NTdGF0dXMgPSAiL3Byb2Mvc2VsZi9zdGF0dXMiOworCitzdGF0aWMgaW5s
aW5lIFN0cmluZyBuZXh0VG9rZW4oRklMRSogZmlsZSkKK3sKKyAgICBpZiAoIWZpbGUpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBidWZmZXJT
aXplID0gMTI4OworICAgIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVdID0gezAsIH07CisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IGJ1ZmZlclNpemUpIHsKKyAgICAg
ICAgY2hhciBjaCA9IGZnZXRjKGZpbGUpOworICAgICAgICBpZiAoY2ggPT0gRU9GIHx8IChpc0FT
Q0lJU3BhY2UoY2gpICYmIGluZGV4KSkgLy8gQnJlYWsgb24gbm9uLWluaXRpYWwgQVNDSUkgc3Bh
Y2UuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFpc0FTQ0lJU3BhY2UoY2gpKSB7
CisgICAgICAgICAgICBidWZmZXJbaW5kZXhdID0gY2g7CisgICAgICAgICAgICBpbmRleCsrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIpOworfQorCitNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6On5NZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQoreworICAgIHVuaW5z
dGFsbCgpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6d2FpdEZvck1lbW9yeVBy
ZXNzdXJlRXZlbnQodm9pZCopCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
aW50IGV2ZW50RkQgPSBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5tX2V2ZW50RkQ7CisgICAgaWYg
KCFldmVudEZEKSB7CisgICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIkludmFsaWRhdGUgZXZl
bnRmZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGJ1ZmZlcjsK
KyAgICBpZiAocmVhZChldmVudEZELCAmYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPD0gMCkgewor
ICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJGYWlsZWQgdG8gcmVhZCBldmVudGZkLiIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkubV91
bmRlck1lbW9yeVByZXNzdXJlID0gdHJ1ZTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtdIHsKKyAg
ICAgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCkucmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUodHJ1
ZSk7CisgICAgfSk7Cit9CisKK2lubGluZSB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bG9n
RXJyb3JBbmRDbG9zZUZEcyhjb25zdCBjaGFyKiBsb2cpCit7CisgICAgaWYgKGxvZykKKyAgICAg
ICAgTE9HKE1lbW9yeVByZXNzdXJlLCAiJXMsIGVycm9yIDogJW0iLCBsb2cpOworCisgICAgaWYg
KG1fZXZlbnRGRCkgeworICAgICAgICBjbG9zZShtX2V2ZW50RkQpOworICAgICAgICBtX2V2ZW50
RkQgPSAwOworICAgIH0KKyAgICBpZiAobV9wcmVzc3VyZUxldmVsRkQpIHsKKyAgICAgICAgY2xv
c2UobV9wcmVzc3VyZUxldmVsRkQpOworICAgICAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IDA7Cisg
ICAgfQorfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbCgpCit7CisgICAg
aWYgKG1faW5zdGFsbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2V2ZW50RkQgPSBldmVu
dGZkKDAsIEVGRF9DTE9FWEVDKTsKKyAgICBpZiAobV9ldmVudEZEID09IC0xKSB7CisgICAgICAg
IExPRyhNZW1vcnlQcmVzc3VyZSwgImV2ZW50ZmQoKSBmYWlsZWQ6ICVtIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3ByZXNzdXJlTGV2ZWxGRCA9IG9wZW4oc19jZ3JvdXBNZW1v
cnlQcmVzc3VyZUxldmVsLCBPX0NMT0VYRUMgfCBPX1JET05MWSk7CisgICAgaWYgKG1fcHJlc3N1
cmVMZXZlbEZEID09IC0xKSB7CisgICAgICAgIGxvZ0Vycm9yQW5kQ2xvc2VGRHMoIkZhaWxlZCB0
byBvcGVuIG1lbW9yeS5wcmVzc3VyZV9sZXZlbCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaW50IGZkID0gb3BlbihzX2Nncm91cEV2ZW50Q29udHJvbCwgT19DTE9FWEVDIHwgT19X
Uk9OTFkpOworICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICBsb2dFcnJvckFuZENsb3NlRkRz
KCJGYWlsZWQgdG8gb3BlbiBjZ3JvdXAuZXZlbnRfY29udHJvbCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2hhciBsaW5lWzEyOF0gPSB7MCwgfTsKKyAgICBpZiAoc25wcmludGYo
bGluZSwgc2l6ZW9mKGxpbmUpLCAiJWQgJWQgbG93IiwgbV9ldmVudEZELCBtX3ByZXNzdXJlTGV2
ZWxGRCkgPCAwCisgICAgICAgIHx8IHdyaXRlKGZkLCBsaW5lLCBzdHJsZW4obGluZSkgKyAxKSA8
IDApIHsKKyAgICAgICAgbG9nRXJyb3JBbmRDbG9zZUZEcygiRmFpbGVkIHRvIHdyaXRlIGNncm91
cC5ldmVudF9jb250cm9sIik7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjbG9zZShmZCk7CisKKyAgICBtX3RocmVhZElEID0gY3JlYXRlVGhyZWFkKHdh
aXRGb3JNZW1vcnlQcmVzc3VyZUV2ZW50LCB0aGlzLCAiV2ViQ29yZTogTWVtb3J5UHJlc3N1cmVI
YW5kbGVyIik7CisgICAgaWYgKCFtX3RocmVhZElEKSB7CisgICAgICAgIGxvZ0Vycm9yQW5kQ2xv
c2VGRHMoIkZhaWxlZCB0byBjcmVhdGUgYSB0aHJlYWQgZm9yIE1lbW9yeVByZXNzdXJlSGFuZGxl
ciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV91bmRlck1lbW9yeVByZXNzdXJl
ID0gZmFsc2U7CisgICAgbV9pbnN0YWxsZWQgPSB0cnVlOworfQorCit2b2lkIE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkKK3sKKyAgICBpZiAoIW1faW5zdGFsbGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV90aHJlYWRJRCkgeworICAgICAgICBkZXRhY2hUaHJlYWQo
bV90aHJlYWRJRCk7CisgICAgICAgIG1fdGhyZWFkSUQgPSAwOworICAgIH0KKworICAgIGxvZ0Vy
cm9yQW5kQ2xvc2VGRHMobnVsbHB0cik7CisgICAgbV9pbnN0YWxsZWQgPSBmYWxzZTsKK30KKwor
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmZUaW1lckZpcmVkKCkKK3sKKyAgICBp
bnN0YWxsKCk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2ln
bmVkIHNlY29uZHMpCit7CisgICAgbV9ob2xkT2ZmVGltZXIuc3RhcnRPbmVTaG90KHNlY29uZHMp
OworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmUoYm9vbCBjcml0aWNhbCkKK3sKKyAgICB1bmluc3RhbGwoKTsKKworICAgIGRvdWJsZSBzdGFy
dFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgIG1fbG93TWVtb3J5
SGFuZGxlcihjcml0aWNhbCk7CisKKyAgICB1bnNpZ25lZCBob2xkT2ZmVGltZSA9IChtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIHN0YXJ0VGltZSkgKiBzX2hvbGRPZmZNdWx0aXBsaWVy
OworCisgICAgaG9sZE9mZihzdGQ6Om1heChob2xkT2ZmVGltZSwgc19taW5pbXVtSG9sZE9mZlRp
bWUpKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRmb3JtUmVsZWFzZU1l
bW9yeShib29sKQoreworICAgIFJlbGllZkxvZ2dlciBsb2coIlJ1biBtYWxsb2NfdHJpbSIpOwor
ICAgIG1hbGxvY190cmltKDApOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVs
aWVmTG9nZ2VyOjpwbGF0Zm9ybUxvZygpCit7CisgICAgc2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBw
bGF0Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgaWYgKGN1cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PigtMSkgfHwgbV9pbml0aWFsTWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4o
LTEpKSB7CisgICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIiVzIChVbmFibGUgdG8gZ2V0IGRp
cnR5IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2VzcykiLCBtX2xvZ1N0cmluZyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzc2l6ZV90IG1lbW9yeURpZmYgPSBjdXJyZW50TWVt
b3J5IC0gbV9pbml0aWFsTWVtb3J5OworICAgIGlmIChtZW1vcnlEaWZmIDwgMCkKKyAgICAgICAg
TE9HKE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVsaWVmOiAlczogLWRpcnR5ICVsZCBieXRl
cyAoZnJvbSAlbGQgdG8gJWxkKSIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9p
bml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4g
MCkKKyAgICAgICAgTE9HKE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVsaWVmOiAlczogK2Rp
cnR5ICVsZCBieXRlcyAoZnJvbSAlbGQgdG8gJWxkKSIsIG1fbG9nU3RyaW5nLCBtZW1vcnlEaWZm
LCBtX2luaXRpYWxNZW1vcnksIGN1cnJlbnRNZW1vcnkpOworICAgIGVsc2UKKyAgICAgICAgTE9H
KE1lbW9yeVByZXNzdXJlLCAiUHJlc3N1cmUgcmVsaWVmOiAlczogPWRpcnR5IChhdCAlbGQgYnl0
ZXMpIiwgbV9sb2dTdHJpbmcsIGN1cnJlbnRNZW1vcnkpOworfQorCitzaXplX3QgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQoreworICAg
IEZJTEUqIGZpbGUgPSBmb3BlbihzX3Byb2Nlc3NTdGF0dXMsICJyIik7CisgICAgaWYgKCFmaWxl
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7CisKKyAgICBzaXplX3Qg
dm1TaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7IC8vIEtCCisgICAgU3RyaW5nIHRva2Vu
ID0gbmV4dFRva2VuKGZpbGUpOworICAgIHdoaWxlICghdG9rZW4uaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmICh0b2tlbiA9PSAiVm1TaXplOiIpIHsKKyAgICAgICAgICAgIHZtU2l6ZSA9IG5leHRU
b2tlbihmaWxlKS50b0ludCgpICogS0I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICB0b2tlbiA9IG5leHRUb2tlbihmaWxlKTsKKyAgICB9CisgICAgZmNsb3NlKGZpbGUp
OworCisgICAgcmV0dXJuIHZtU2l6ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gT1MoTElOVVgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243029</attachid>
            <date>2014-12-10 09:12:40 -0800</date>
            <delta_ts>2014-12-12 01:20:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123532-20141210181316.patch</filename>
            <type>text/plain</type>
            <size>13706</size>
            <attacher name="ChangSeok Oh">changseok</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjZGViYWMyZjVlMTdm
YmVhYjA0ZjVkNzBjMDJjY2Y2ZjA3ODk2OC4uODBhY2MxMDY3Y2I2ZTI0ZWY1ODg1YjBhNDBhNzg3
ZTA0MmRkOTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE0LTEyLTEwICBDaGFu
Z1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyIGZvciBMaW51eCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzUzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYW4gaW5pdGlhbCBpbXBs
ZW1lbnRhdGlvbiB0byBzdXBwb3J0IE1lbW9yeVByZXNzdXJlSGFuZGxlciBmb3IgbGludXggc3lz
dGVtLgorICAgICAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9tZXUncyBsYXN0IHBhdGNoIGFu
ZCBpbXByb3ZlZCBvbiB0b3Agb2YgaXQuCisgICAgICAgIE1vc3Qgb2YgY3VycmVudCBsaW51eCBk
aXN0cmlidXRpb25zIHN1cHBvcnQgY2dyb3VwLCBzbyB0aGF0IHdlIHVzZSB0aGUgbWVtb3J5LnBy
ZXNzdXJlX2xldmVsCisgICAgICAgIG1lY2hhbmlzbSBvZiBjZ3JvdXAgdG8gZ2V0IG5vdGlmaWNh
dGlvbnMgd2hlbiBhbiBhcHBsaWNhdGlvbiByZWFjaGVzIHRoZSAnbG93JyBtZW1vcnkKKyAgICAg
ICAgcHJlc3N1cmUgbGV2ZWwuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIG5vIGVuZ2lu
ZSBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
TWVtb3J5UHJlc3N1cmVIYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXJMaW51eC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6bmV4dFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6fk1lbW9yeVByZXNzdXJlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OndhaXRGb3JNZW1v
cnlQcmVzc3VyZUV2ZW50KTogcnVuIGluIGEgc2VwZXJhdGVkIHRocmVhZAorICAgICAgICB0byBs
aXN0ZW4gJ2xvdycgbGV2ZWwgZXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OmxvZ0Vycm9yQW5kQ2xvc2VGRHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6dW5pbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpob2xkT2ZmKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTG9nKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpw
bGF0Zm9ybU1lbW9yeVVzYWdlKTogcmVhZCAvcHJvYy9zZWxmL3N0YXR1cworICAgICAgICB0byBn
ZXQgVk0gYW1vdW50IHVzZWQgYnkgY3VycmVudCBwcm9jZXNzLgorCiAyMDE0LTEyLTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsaW5n
IHRvIGFuY2hvciB0YWdzIGRvZXMgbm90aGluZyBpbiB2ZXJ0aWNhbC1ybCB3cml0aW5nIG1vZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZWY3ZTc3ZmRhZTMzZWVkY2IzYjBhOGNjZGFk
NGNlYTAzMWVlZGZmZC4uMTFhNTE4ODE2ODJiY2I5MGEyYTUyZWJmZWJjMWIyMTM5MGQ3NzZmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIxMSw2ICsyMTEsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9saW51eC9HYW1lcGFkRGV2aWNlTGludXgu
Y3BwCisgICAgcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCiAK
ICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3Ry
ZWFtZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMTY1MDIyYzk1OWNhMTMz
ZjlmNTJjNTU1YTdiNGFiMzMxNGQyNzhkOS4uOTc1NDlhMmZkMWU2ZWMyM2QxZTM2NmRkMGE0NWJj
M2MzMzA1YmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTE1NSw2ICsxNTUsNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCiAKICAgICBwbGF0Zm9ybS9saW51eC9HYW1lcGFk
RGV2aWNlTGludXguY3BwCisgICAgcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
TGludXguY3BwCiAKICAgICBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJl
YW1DZW50ZXJHU3RyZWFtZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDEyZjkxMTM2YWM4NGM4MzQyNmYxYzRjNDNm
NmYwM2VhN2U0MDJiZWIuLjE4NmVkNDQyOTIxNGE3YTM4OWQyYWY5MTI4MWM3MGNiYjU3Njk1MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmNwcApAQCAtNjQsNiArNjQsMTEgQEAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpNZW1vcnlQcmVz
c3VyZUhhbmRsZXIoKQogICAgICwgbV9jbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlKHRydWUp
CiAgICAgLCBtX3JlbGVhc2VNZW1vcnlCbG9jaygwKQogICAgICwgbV9vYnNlcnZlcigwKQorI2Vs
aWYgT1MoTElOVVgpCisgICAgLCBtX2V2ZW50RkQoMCkKKyAgICAsIG1fcHJlc3N1cmVMZXZlbEZE
KDApCisgICAgLCBtX3RocmVhZElEKDApCisgICAgLCBtX2hvbGRPZmZUaW1lcigqdGhpcywgJk1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZlRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKIH0KQEAg
LTE0NCw3ICsxNDksNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9y
eShib29sIGNyaXRpY2FsKQogICAgIH0KIH0KIAotI2lmICFQTEFURk9STShDT0NPQSkKKyNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFPUyhMSU5VWCkKIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjppbnN0YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dW5pbnN0YWxsKCkg
eyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9mZih1bnNpZ25lZCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmluZGV4
IDE4OWY0ODgzNWVjNDRiZGU3ZTkxZWNlY2Y0OWExMzBiZDI0ZDU2OTUuLjJjYWNhNGU0YjVjOWNj
OTA4ZGU2MDE5YjJlOThlM2QyNmZkMzY0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgUmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDggQEAKIAogI2lm
IFBMQVRGT1JNKElPUykKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2Vs
aWYgT1MoTElOVVgpCisjaW5jbHVkZSAiVGltZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02OSw2ICs3Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyTWVtb3J5UHJlc3N1cmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZFdh
aXRGb3JNZW1vcnlDbGVhck1lc3NhZ2UoKTsKICAgICB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNz
dXJlSWZOZWVkZWQoKTsKKyNlbGlmIE9TKExJTlVYKQorICAgIHN0YXRpYyB2b2lkIHdhaXRGb3JN
ZW1vcnlQcmVzc3VyZUV2ZW50KHZvaWQqKTsKICNlbmRpZgogCiAgICAgY2xhc3MgUmVsaWVmTG9n
Z2VyIHsKQEAgLTEyNyw5ICsxMzIsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIChebV9yZWxlYXNl
TWVtb3J5QmxvY2spKCk7CiAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlcjsKICAg
ICBNdXRleCBtX29ic2VydmVyTXV0ZXg7CisjZWxpZiBPUyhMSU5VWCkKKyAgICBpbnQgbV9ldmVu
dEZEOworICAgIGludCBtX3ByZXNzdXJlTGV2ZWxGRDsKKyAgICBXVEY6OlRocmVhZElkZW50aWZp
ZXIgbV90aHJlYWRJRDsKKyAgICBUaW1lciBtX2hvbGRPZmZUaW1lcjsKKyAgICB2b2lkIGhvbGRP
ZmZUaW1lckZpcmVkKCk7CisgICAgdm9pZCBsb2dFcnJvckFuZENsb3NlRkRzKGNvbnN0IGNoYXIq
IGVycm9yKTsKICNlbmRpZgogfTsKLSAKKwogLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSBnbG9i
YWwgbWVtb3J5IHByZXNzdXJlIG9iamVjdC4KIFdFQkNPUkVfRVhQT1JUIE1lbW9yeVByZXNzdXJl
SGFuZGxlciYgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZDMwZTI5NTM4ZmFhZTU0NDQ0OWRiYzNhOTMxNTA1OTJhZjM0ZmIxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJl
c3N1cmVIYW5kbGVyTGludXguY3BwCkBAIC0wLDAgKzEsMjQxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbi4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIgorCisjaWYgT1Mo
TElOVVgpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKKyNpbmNsdWRlIDxmY250bC5oPgorI2lu
Y2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN5cy9ldmVudGZkLmg+CisjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRGlzYWJsZSBtZW1vcnkgZXZlbnQgcmVj
ZXB0aW9uIGZvciBhIG1pbmltdW0gb2Ygc19taW5pbXVtSG9sZE9mZlRpbWUKKy8vIHNlY29uZHMg
YWZ0ZXIgcmVjZWl2aW5nIGFuIGV2ZW50LiBEb24ndCBsZXQgZXZlbnRzIGZpcmUgYW55IHNvb25l
ciB0aGFuCisvLyBzX2hvbGRPZmZNdWx0aXBsaWVyIHRpbWVzIHRoZSBsYXN0IGNsZWFudXAgcHJv
Y2Vzc2luZyB0aW1lLiBFZmZlY3RpdmVseQorLy8gdGhpcyBpcyAxIC8gc19ob2xkT2ZmTXVsdGlw
bGllciBwZXJjZW50IG9mIHRoZSB0aW1lLgorLy8gVGhlc2UgdmFsdWUgc2VlbXMgcmVhc29uYWJs
ZSBhbmQgdGVzdGluZyB2ZXJpZmllcyB0aGF0IGl0IHRocm90dGxlcyBmcmVxdWVudAorLy8gbG93
IG1lbW9yeSBldmVudHMsIGdyZWF0bHkgcmVkdWNpbmcgQ1BVIHVzYWdlLgorc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfbWluaW11bUhvbGRPZmZUaW1lID0gNTsKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzX2hvbGRPZmZNdWx0aXBsaWVyID0gMjA7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzX2Nncm91
cE1lbW9yeVByZXNzdXJlTGV2ZWwgPSAiL3N5cy9mcy9jZ3JvdXAvbWVtb3J5L21lbW9yeS5wcmVz
c3VyZV9sZXZlbCI7CitzdGF0aWMgY29uc3QgY2hhciogc19jZ3JvdXBFdmVudENvbnRyb2wgPSAi
L3N5cy9mcy9jZ3JvdXAvbWVtb3J5L2Nncm91cC5ldmVudF9jb250cm9sIjsKK3N0YXRpYyBjb25z
dCBjaGFyKiBzX3Byb2Nlc3NTdGF0dXMgPSAiL3Byb2Mvc2VsZi9zdGF0dXMiOworCitzdGF0aWMg
aW5saW5lIFN0cmluZyBuZXh0VG9rZW4oRklMRSogZmlsZSkKK3sKKyAgICBpZiAoIWZpbGUpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBidWZm
ZXJTaXplID0gMTI4OworICAgIGNoYXIgYnVmZmVyW2J1ZmZlclNpemVdID0gezAsIH07CisgICAg
dW5zaWduZWQgaW5kZXggPSAwOworICAgIHdoaWxlIChpbmRleCA8IGJ1ZmZlclNpemUpIHsKKyAg
ICAgICAgY2hhciBjaCA9IGZnZXRjKGZpbGUpOworICAgICAgICBpZiAoY2ggPT0gRU9GIHx8IChp
c0FTQ0lJU3BhY2UoY2gpICYmIGluZGV4KSkgLy8gQnJlYWsgb24gbm9uLWluaXRpYWwgQVNDSUkg
c3BhY2UuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCFpc0FTQ0lJU3BhY2UoY2gp
KSB7CisgICAgICAgICAgICBidWZmZXJbaW5kZXhdID0gY2g7CisgICAgICAgICAgICBpbmRleCsr
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIpOworfQorCitN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6On5NZW1vcnlQcmVzc3VyZUhhbmRsZXIoKQoreworICAgIHVu
aW5zdGFsbCgpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6d2FpdEZvck1lbW9y
eVByZXNzdXJlRXZlbnQodm9pZCopCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgaW50IGV2ZW50RkQgPSBtZW1vcnlQcmVzc3VyZUhhbmRsZXIoKS5tX2V2ZW50RkQ7CisgICAg
aWYgKCFldmVudEZEKSB7CisgICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIkludmFsaWRhdGUg
ZXZlbnRmZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGJ1ZmZl
cjsKKyAgICBpZiAocmVhZChldmVudEZELCAmYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPD0gMCkg
eworICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJGYWlsZWQgdG8gcmVhZCBldmVudGZkLiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyKCku
bV91bmRlck1lbW9yeVByZXNzdXJlID0gdHJ1ZTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQo
Jk1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUsICZtZW1vcnlQ
cmVzc3VyZUhhbmRsZXIoKSwgdHJ1ZSkpOworfQorCitpbmxpbmUgdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OmxvZ0Vycm9yQW5kQ2xvc2VGRHMoY29uc3QgY2hhciogbG9nKQoreworICAgIGlm
IChsb2cpCisgICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIiVzLCBlcnJvciA6ICVtIiwgbG9n
KTsKKworICAgIGlmIChtX2V2ZW50RkQpIHsKKyAgICAgICAgY2xvc2UobV9ldmVudEZEKTsKKyAg
ICAgICAgbV9ldmVudEZEID0gMDsKKyAgICB9CisgICAgaWYgKG1fcHJlc3N1cmVMZXZlbEZEKSB7
CisgICAgICAgIGNsb3NlKG1fcHJlc3N1cmVMZXZlbEZEKTsKKyAgICAgICAgbV9wcmVzc3VyZUxl
dmVsRkQgPSAwOworICAgIH0KK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6Omluc3Rh
bGwoKQoreworICAgIGlmIChtX2luc3RhbGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9l
dmVudEZEID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyk7CisgICAgaWYgKG1fZXZlbnRGRCA9PSAt
MSkgeworICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJldmVudGZkKCkgZmFpbGVkOiAlbSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wcmVzc3VyZUxldmVsRkQgPSBvcGVu
KHNfY2dyb3VwTWVtb3J5UHJlc3N1cmVMZXZlbCwgT19DTE9FWEVDIHwgT19SRE9OTFkpOworICAg
IGlmIChtX3ByZXNzdXJlTGV2ZWxGRCA9PSAtMSkgeworICAgICAgICBsb2dFcnJvckFuZENsb3Nl
RkRzKCJGYWlsZWQgdG8gb3BlbiBtZW1vcnkucHJlc3N1cmVfbGV2ZWwiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGludCBmZCA9IG9wZW4oc19jZ3JvdXBFdmVudENvbnRyb2wsIE9f
Q0xPRVhFQyB8IE9fV1JPTkxZKTsKKyAgICBpZiAoZmQgPT0gLTEpIHsKKyAgICAgICAgbG9nRXJy
b3JBbmRDbG9zZUZEcygiRmFpbGVkIHRvIG9wZW4gY2dyb3VwLmV2ZW50X2NvbnRyb2wiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoYXIgbGluZVsxMjhdID0gezAsIH07CisgICAg
aWYgKHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiVkICVkIGxvdyIsIG1fZXZlbnRGRCwg
bV9wcmVzc3VyZUxldmVsRkQpIDwgMAorICAgICAgICB8fCB3cml0ZShmZCwgbGluZSwgc3RybGVu
KGxpbmUpICsgMSkgPCAwKSB7CisgICAgICAgIGxvZ0Vycm9yQW5kQ2xvc2VGRHMoIkZhaWxlZCB0
byB3cml0ZSBjZ3JvdXAuZXZlbnRfY29udHJvbCIpOworICAgICAgICBjbG9zZShmZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgY2xvc2UoZmQpOworCisgICAgbV90aHJlYWRJRCA9IGNy
ZWF0ZVRocmVhZCh3YWl0Rm9yTWVtb3J5UHJlc3N1cmVFdmVudCwgdGhpcywgIldlYkNvcmU6IE1l
bW9yeVByZXNzdXJlSGFuZGxlciIpOworICAgIGlmICghbV90aHJlYWRJRCkgeworICAgICAgICBs
b2dFcnJvckFuZENsb3NlRkRzKCJGYWlsZWQgdG8gY3JlYXRlIGEgdGhyZWFkIGZvciBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdW5kZXJN
ZW1vcnlQcmVzc3VyZSA9IGZhbHNlOworICAgIG1faW5zdGFsbGVkID0gdHJ1ZTsKK30KKwordm9p
ZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgpCit7CisgICAgaWYgKCFtX2luc3Rh
bGxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fdGhyZWFkSUQpIHsKKyAgICAgICAg
ZGV0YWNoVGhyZWFkKG1fdGhyZWFkSUQpOworICAgICAgICBtX3RocmVhZElEID0gMDsKKyAgICB9
CisKKyAgICBsb2dFcnJvckFuZENsb3NlRkRzKG51bGxwdHIpOworICAgIG1faW5zdGFsbGVkID0g
ZmFsc2U7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmVGltZXJGaXJl
ZCgpCit7CisgICAgaW5zdGFsbCgpOworfQorCit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
aG9sZE9mZih1bnNpZ25lZCBzZWNvbmRzKQoreworICAgIG1faG9sZE9mZlRpbWVyLnN0YXJ0T25l
U2hvdChzZWNvbmRzKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRU
b01lbW9yeVByZXNzdXJlKGJvb2wgY3JpdGljYWwpCit7CisgICAgdW5pbnN0YWxsKCk7CisKKyAg
ICBkb3VibGUgc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAg
bV9sb3dNZW1vcnlIYW5kbGVyKGNyaXRpY2FsKTsKKyAgICB1bnNpZ25lZCBob2xkT2ZmVGltZSA9
IChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIHN0YXJ0VGltZSkgKiBzX2hvbGRPZmZN
dWx0aXBsaWVyOworICAgIGhvbGRPZmYoc3RkOjptYXgoaG9sZE9mZlRpbWUsIHNfbWluaW11bUhv
bGRPZmZUaW1lKSk7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9ybVJl
bGVhc2VNZW1vcnkoYm9vbCkKK3sKKyAgICBSZWxpZWZMb2dnZXIgbG9nKCJSdW4gbWFsbG9jX3Ry
aW0iKTsKKyAgICBtYWxsb2NfdHJpbSgwKTsKK30KKwordm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1Mb2coKQoreworICAgIHNpemVfdCBjdXJyZW50TWVt
b3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgpOworICAgIGlmIChjdXJyZW50TWVtb3J5ID09IHN0
YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1faW5pdGlhbE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KC0xKSkgeworICAgICAgICBMT0coTWVtb3J5UHJlc3N1cmUsICIlcyAoVW5hYmxlIHRv
IGdldCBkaXJ0eSBtZW1vcnkgaW5mb3JtYXRpb24gZm9yIHByb2Nlc3MpIiwgbV9sb2dTdHJpbmcp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3NpemVfdCBtZW1vcnlEaWZmID0gY3Vy
cmVudE1lbW9yeSAtIG1faW5pdGlhbE1lbW9yeTsKKyAgICBpZiAobWVtb3J5RGlmZiA8IDApCisg
ICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIlByZXNzdXJlIHJlbGllZjogJXM6IC1kaXJ0eSAl
bGQgYnl0ZXMgKGZyb20gJWxkIHRvICVsZCkiLCBtX2xvZ1N0cmluZywgKG1lbW9yeURpZmYgKiAt
MSksIG1faW5pdGlhbE1lbW9yeSwgY3VycmVudE1lbW9yeSk7CisgICAgZWxzZSBpZiAobWVtb3J5
RGlmZiA+IDApCisgICAgICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIlByZXNzdXJlIHJlbGllZjog
JXM6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJWxkIHRvICVsZCkiLCBtX2xvZ1N0cmluZywgbWVt
b3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKKyAgICBlbHNlCisgICAg
ICAgIExPRyhNZW1vcnlQcmVzc3VyZSwgIlByZXNzdXJlIHJlbGllZjogJXM6ID1kaXJ0eSAoYXQg
JWxkIGJ5dGVzKSIsIG1fbG9nU3RyaW5nLCBjdXJyZW50TWVtb3J5KTsKK30KKworc2l6ZV90IE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkK
K3sKKyAgICBGSUxFKiBmaWxlID0gZm9wZW4oc19wcm9jZXNzU3RhdHVzLCAiciIpOworICAgIGlm
ICghZmlsZSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOworCisgICAg
c2l6ZV90IHZtU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOyAvLyBLQgorICAgIFN0cmlu
ZyB0b2tlbiA9IG5leHRUb2tlbihmaWxlKTsKKyAgICB3aGlsZSAoIXRva2VuLmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAodG9rZW4gPT0gIlZtU2l6ZToiKSB7CisgICAgICAgICAgICB2bVNpemUg
PSBuZXh0VG9rZW4oZmlsZSkudG9JbnQoKSAqIEtCOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgdG9rZW4gPSBuZXh0VG9rZW4oZmlsZSk7CisgICAgfQorICAgIGZjbG9z
ZShmaWxlKTsKKworICAgIHJldHVybiB2bVNpemU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIE9TKExJTlVYKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>