<?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>151391</bug_id>
          
          <creation_ts>2015-11-18 10:06:07 -0800</creation_ts>
          <short_desc>[GLIB] Implement garbage collector timers</short_desc>
          <delta_ts>2015-12-31 16:21:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=142962</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>svillar</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1142856</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-18 10:06:07 -0800</bug_when>
    <thetext>While debugging bug #143261, looking at what ports do differently in JSC I&apos;ve noticed that GTK+ port doesn&apos;t implement the GC timers at all. Ports using CF and EFL port, using their own timers, do implement them, but other ports using GLib don&apos;t. I have no idea why we have never implemented them, but we should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142857</commentid>
    <comment_count>1</comment_count>
      <attachid>265749</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-18 10:08:13 -0800</bug_when>
    <thetext>Created attachment 265749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142885</commentid>
    <comment_count>2</comment_count>
      <attachid>265749</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-11-18 10:57:38 -0800</bug_when>
    <thetext>Comment on attachment 265749
Patch

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

Great work! I noticed this was missing yesterday too, so I&apos;m very happy that you fixed it. I just have a couple quick questions before I feel comfortable giving an r+...

&gt; Source/JavaScriptCore/heap/EdenGCActivityCallback.cpp:33
&gt; -#if USE(CF) || PLATFORM(EFL)
&gt; +#if USE(CF) || USE(GLIB)

Is USE(GLIB) also true for EFL? I wonder if it wouldn&apos;t be better to be more explicit here for the sake of code readability and leave this as:

#if USE(CF) || PLATFORM(EFL) || USE(GLIB)

&gt; Source/JavaScriptCore/heap/HeapTimer.cpp:155
&gt; +        if (g_source_get_ready_time(source) == -1)
&gt; +            return G_SOURCE_CONTINUE;

In what circumstances can this happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142891</commentid>
    <comment_count>3</comment_count>
      <attachid>265749</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-18 11:06:34 -0800</bug_when>
    <thetext>Comment on attachment 265749
Patch

It&apos;s a shame to have so much platform-specific timer code here. Would be nice just to migrate our shared timer abstraction from WebCore down into WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142894</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-11-18 11:09:33 -0800</bug_when>
    <thetext>Maybe you should take a look at https://bugs.webkit.org/show_bug.cgi?id=118067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142926</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-11-18 11:51:33 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Is USE(GLIB) also true for EFL?

Yes. Otherwise, they wouldn&apos;t have much fun trying to use libsoup etc. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143218</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-19 00:14:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 265749 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265749&amp;action=review
&gt; 
&gt; Great work! I noticed this was missing yesterday too, so I&apos;m very happy that
&gt; you fixed it. I just have a couple quick questions before I feel comfortable
&gt; giving an r+...
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/EdenGCActivityCallback.cpp:33
&gt; &gt; -#if USE(CF) || PLATFORM(EFL)
&gt; &gt; +#if USE(CF) || USE(GLIB)
&gt; 
&gt; Is USE(GLIB) also true for EFL? I wonder if it wouldn&apos;t be better to be more
&gt; explicit here for the sake of code readability and leave this as:

Yes, it&apos;s true.

&gt; #if USE(CF) || PLATFORM(EFL) || USE(GLIB)

Looks redundant to me, the fewer || the better IMO.

&gt; &gt; Source/JavaScriptCore/heap/HeapTimer.cpp:155
&gt; &gt; +        if (g_source_get_ready_time(source) == -1)
&gt; &gt; +            return G_SOURCE_CONTINUE;
&gt; 
&gt; In what circumstances can this happen?

If the timer is cancelled in a different thread right before being dispatched by the main context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143220</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-19 00:16:25 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 265749 [details]
&gt; Patch
&gt; 
&gt; It&apos;s a shame to have so much platform-specific timer code here. Would be
&gt; nice just to migrate our shared timer abstraction from WebCore down into WTF.

I thought exactly the same when writing the patch. I think RunLoop::Timer would work for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143223</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-19 00:19:11 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Maybe you should take a look at
&gt; https://bugs.webkit.org/show_bug.cgi?id=118067

I didn&apos;t know there was a bug for this already. The patch there has a lot of issues in any case, I can review it if you want, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143229</commentid>
    <comment_count>9</comment_count>
      <attachid>265749</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-19 00:51:09 -0800</bug_when>
    <thetext>Comment on attachment 265749
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/heap/EdenGCActivityCallback.cpp:33
&gt;&gt;&gt; +#if USE(CF) || USE(GLIB)
&gt;&gt; 
&gt;&gt; Is USE(GLIB) also true for EFL? I wonder if it wouldn&apos;t be better to be more explicit here for the sake of code readability and leave this as:
&gt;&gt; 
&gt;&gt; #if USE(CF) || PLATFORM(EFL) || USE(GLIB)
&gt; 
&gt; Yes, it&apos;s true.

Why USE(GLIB) then? It&apos;s true for both EFL and GTK, but the implementations of HeapTimer differ for the two ports.

Since all these classes are based on HeapTimer, I think the PLATFORM(EFL) || PLATFORM(GTK) should be used throughout this patch, instead of bundling them under USE(GLIB).

&gt; Source/JavaScriptCore/heap/HeapTimer.cpp:41
&gt;  #if PLATFORM(EFL)
&gt;  #include &lt;Ecore.h&gt;
&gt; +#elif USE(GLIB)
&gt; +#include &lt;glib.h&gt;
&gt;  #endif

Just one example, you end up doing this. It&apos;s counter-intuitive because PLATFORM(EFL) falls under USE(GLIB), but you still have to special-case it because of the different implementations.

&gt; Source/JavaScriptCore/heap/HeapTimer.cpp:174
&gt; +    g_source_attach(m_timer.get(), g_main_context_get_thread_default());

As it stands these timers only fire on main threads, since worker threads aren&apos;t run via a main loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143230</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-19 00:59:11 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 265749 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265749&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/heap/EdenGCActivityCallback.cpp:33
&gt; &gt;&gt;&gt; +#if USE(CF) || USE(GLIB)
&gt; &gt;&gt; 
&gt; &gt;&gt; Is USE(GLIB) also true for EFL? I wonder if it wouldn&apos;t be better to be more explicit here for the sake of code readability and leave this as:
&gt; &gt;&gt; 
&gt; &gt;&gt; #if USE(CF) || PLATFORM(EFL) || USE(GLIB)
&gt; &gt; 
&gt; &gt; Yes, it&apos;s true.
&gt; 
&gt; Why USE(GLIB) then? It&apos;s true for both EFL and GTK, but the implementations
&gt; of HeapTimer differ for the two ports.
&gt; 
&gt; Since all these classes are based on HeapTimer, I think the PLATFORM(EFL) ||
&gt; PLATFORM(GTK) should be used throughout this patch, instead of bundling them
&gt; under USE(GLIB).

Because this would work for any other port using glib, like WebKit4Wayland, EFL is the exception here, not glib.

&gt; &gt; Source/JavaScriptCore/heap/HeapTimer.cpp:41
&gt; &gt;  #if PLATFORM(EFL)
&gt; &gt;  #include &lt;Ecore.h&gt;
&gt; &gt; +#elif USE(GLIB)
&gt; &gt; +#include &lt;glib.h&gt;
&gt; &gt;  #endif
&gt; 
&gt; Just one example, you end up doing this. It&apos;s counter-intuitive because
&gt; PLATFORM(EFL) falls under USE(GLIB), but you still have to special-case it
&gt; because of the different implementations.

Yes, because EFL uses GLIB but its own timer implementation. The EFL implementation is specific to EFL, but the GLIB one is not specific to GTK.

&gt; &gt; Source/JavaScriptCore/heap/HeapTimer.cpp:174
&gt; &gt; +    g_source_attach(m_timer.get(), g_main_context_get_thread_default());
&gt; 
&gt; As it stands these timers only fire on main threads, since worker threads
&gt; aren&apos;t run via a main loop.

g_main_context_get_thread_default() will return the main thread context from threads not using a main loop in any case. But I could use the main context here to make it explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143240</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-19 01:34:15 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Comment on attachment 265749 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=265749&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/JavaScriptCore/heap/EdenGCActivityCallback.cpp:33
&gt; &gt; &gt;&gt;&gt; +#if USE(CF) || USE(GLIB)
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Is USE(GLIB) also true for EFL? I wonder if it wouldn&apos;t be better to be more explicit here for the sake of code readability and leave this as:
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; #if USE(CF) || PLATFORM(EFL) || USE(GLIB)
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes, it&apos;s true.
&gt; &gt; 
&gt; &gt; Why USE(GLIB) then? It&apos;s true for both EFL and GTK, but the implementations
&gt; &gt; of HeapTimer differ for the two ports.
&gt; &gt; 
&gt; &gt; Since all these classes are based on HeapTimer, I think the PLATFORM(EFL) ||
&gt; &gt; PLATFORM(GTK) should be used throughout this patch, instead of bundling them
&gt; &gt; under USE(GLIB).
&gt; 
&gt; Because this would work for any other port using glib, like WebKit4Wayland,
&gt; EFL is the exception here, not glib.
&gt; 

Makes me wish for USE(ECORE) then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144142</commentid>
    <comment_count>12</comment_count>
      <attachid>265749</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-23 01:25:18 -0800</bug_when>
    <thetext>Comment on attachment 265749
Patch

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

As the next step, WebCore::GCController should be updated so that PLATFORM(GTK) matches USE(CF), primarily to move the GCController&apos;s timer away from MainThreadSharedTimer.

&gt; Source/JavaScriptCore/heap/HeapTimer.cpp:171
&gt; +        static_cast&lt;HeapTimer*&gt;(userData)-&gt;timerDidFire();

What do you think of just writing out ::timerDidFire() in this lambda?

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:75
&gt; +    g_source_set_ready_time(m_timer.get(), g_get_monotonic_time() + (sweepTimeSlice * sweepTimeMultiplier));

You&apos;re adding 0.1 seconds to g_get_monotonic_time(), which returns microseconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144143</commentid>
    <comment_count>13</comment_count>
      <attachid>265749</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-23 01:38:56 -0800</bug_when>
    <thetext>Comment on attachment 265749
Patch

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

&gt;&gt; Source/JavaScriptCore/heap/HeapTimer.cpp:171
&gt;&gt; +        static_cast&lt;HeapTimer*&gt;(userData)-&gt;timerDidFire();
&gt; 
&gt; What do you think of just writing out ::timerDidFire() in this lambda?

We can&apos;t capture this in a lambda wrapping a c function pointer.

&gt;&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:75
&gt;&gt; +    g_source_set_ready_time(m_timer.get(), g_get_monotonic_time() + (sweepTimeSlice * sweepTimeMultiplier));
&gt; 
&gt; You&apos;re adding 0.1 seconds to g_get_monotonic_time(), which returns microseconds.

Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144168</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-23 05:26:20 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 265749 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265749&amp;action=review
&gt; 
&gt; As the next step, WebCore::GCController should be updated so that
&gt; PLATFORM(GTK) matches USE(CF), primarily to move the GCController&apos;s timer
&gt; away from MainThreadSharedTimer.
&gt;

Right, good point, we can do that in a follow up, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144169</commentid>
    <comment_count>15</comment_count>
      <attachid>266086</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-23 05:30:19 -0800</bug_when>
    <thetext>Created attachment 266086
Updated patch

Fixed the seconds/microseconds usage in IncrementalSweeper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144480</commentid>
    <comment_count>16</comment_count>
      <attachid>266086</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-26 02:03:17 -0800</bug_when>
    <thetext>Comment on attachment 266086
Updated patch

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

&gt; Source/JavaScriptCore/heap/GCActivityCallback.cpp:125
&gt; +void GCActivityCallback::scheduleTimer(double newDelay)

This method should assert that the passed-in delay is positive or zero.

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:77
&gt; +    gint64 targetTime = currentTime + std::min&lt;gint64&gt;(G_MAXINT64 - currentTime, delayDuration.count());

You still need to cast the duration to microseconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144481</commentid>
    <comment_count>17</comment_count>
      <attachid>266086</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-26 02:09:05 -0800</bug_when>
    <thetext>Comment on attachment 266086
Updated patch

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

&gt;&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:77
&gt;&gt; +    gint64 targetTime = currentTime + std::min&lt;gint64&gt;(G_MAXINT64 - currentTime, delayDuration.count());
&gt; 
&gt; You still need to cast the duration to microseconds.

Oh, right, I forgot the cast. Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144482</commentid>
    <comment_count>18</comment_count>
      <attachid>266175</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-26 03:34:42 -0800</bug_when>
    <thetext>Created attachment 266175
Updated patch

Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144495</commentid>
    <comment_count>19</comment_count>
      <attachid>266175</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-26 05:42:22 -0800</bug_when>
    <thetext>Comment on attachment 266175
Updated patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144497</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-11-26 05:53:02 -0800</bug_when>
    <thetext>Committed r192773: &lt;http://trac.webkit.org/changeset/192773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144546</commentid>
    <comment_count>21</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-11-26 19:15:30 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Because this would work for any other port using glib, like WebKit4Wayland,
&gt; EFL is the exception here, not glib.
&gt; 
&gt; &gt; &gt; Source/JavaScriptCore/heap/HeapTimer.cpp:41
&gt; &gt; &gt;  #if PLATFORM(EFL)
&gt; &gt; &gt;  #include &lt;Ecore.h&gt;
&gt; &gt; &gt; +#elif USE(GLIB)
&gt; &gt; &gt; +#include &lt;glib.h&gt;
&gt; &gt; &gt;  #endif
&gt; &gt; 
&gt; &gt; Just one example, you end up doing this. It&apos;s counter-intuitive because
&gt; &gt; PLATFORM(EFL) falls under USE(GLIB), but you still have to special-case it
&gt; &gt; because of the different implementations.
&gt; 
&gt; Yes, because EFL uses GLIB but its own timer implementation. The EFL
&gt; implementation is specific to EFL, but the GLIB one is not specific to GTK.
&gt; 

EFL port has been used GLIB to use libsoup, gstreamer and other minor functionalities. However our policy is to consider to use EFL library first if EFL supports the library we need to use. In this case we should keep PLATFORM(EFL) for timer because we implements it using ECore_Timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151810</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-12-31 16:21:00 -0800</bug_when>
    <thetext>*** Bug 118067 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265749</attachid>
            <date>2015-11-18 10:08:13 -0800</date>
            <delta_ts>2015-11-23 05:30:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>jsc-heap-timers-glib.diff</filename>
            <type>text/plain</type>
            <size>10563</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg5OGU5MmEuLjJhNWRjY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTExLTE4ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gSW1wbGVtZW50
IGdhcmJhZ2UgY29sbGVjdG9yIHRpbWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEdMaWIgaW1wbGVtZW50YXRpb24gdXNpbmcgR1NvdXJjZS4K
KworICAgICAgICAqIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgICog
aGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZp
dHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rp
dml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVs
ZVRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcik6
CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL0hlYXBU
aW1lci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBUaW1lcjo6SGVhcFRpbWVyKToKKyAgICAgICAg
KEpTQzo6SGVhcFRpbWVyOjp+SGVhcFRpbWVyKToKKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0
aW1lckRpZEZpcmUpOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmg6CisgICAgICAgICogaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBl
cjo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6Y2Fu
Y2VsVGltZXIpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6CisKIDIwMTUt
MTEtMTcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gVW50YW5nbGUgdGhlIGRlcGVuZGVuY2llcyBvbiBGVExBYmJyZXZpYXRpb25zIGEgYml0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNh
bGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCmluZGV4IDUwMGFkNTUuLjM0NzY0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKENGKSB8fCBQTEFURk9STShFRkwp
CisjaWYgVVNFKENGKSB8fCBVU0UoR0xJQikKIAogRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6RWRl
bkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNr
KGhlYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwCmluZGV4IDA3ZWJiYmQuLjZjM2Y5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKENGKSB8fCBQTEFURk9S
TShFRkwpCisjaWYgVVNFKENGKSB8fCBVU0UoR0xJQikKIAogI2lmICFQTEFURk9STShJT1MpCiBj
b25zdCBkb3VibGUgcGFnaW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFs
bG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2Vl
IGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCmluZGV4IGQzMjRiMzcuLjIxMzIzODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcApA
QCAtMzksMTMgKzM5LDE1IEBACiAKICNpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNlbGlmIFVTRShHTElCKQorI2luY2x1ZGUgPGdsaWIuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogYm9vbCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3Jl
YXRlR0NUaW1lciA9IHRydWU7CiAKLSNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBV
U0UoQ0YpIHx8IFVTRShHTElCKQogCiBjb25zdCBkb3VibGUgdGltZXJTbG9wID0gMi4wOyAvLyBG
dWRnZSBmYWN0b3IgdG8gYXZvaWQgcGVyZm9ybWFuY2UgY29zdCBvZiByZXNldHRpbmcgdGltZXIu
CiAKQEAgLTY0LDYgKzY2LDExIEBAIEdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgV1RG
Ojppc01haW5UaHJlYWQoKSkKIHsKIH0KKyNlbGlmIFVTRShHTElCKQorR0NBY3Rpdml0eUNhbGxi
YWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLT52bSgpKQoreworfQogI2VuZGlmCiAKIHZvaWQgR0NBY3Rpdml0eUNhbGxiYWNr
Ojpkb1dvcmsoKQpAQCAtMTE0LDYgKzEyMSwzMyBAQCB2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6
Y2FuY2VsVGltZXIoKQogICAgIG1fZGVsYXkgPSBzX2hvdXI7CiAgICAgc3RvcCgpOwogfQorI2Vs
aWYgVVNFKEdMSUIpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3Vi
bGUgbmV3RGVsYXkpCit7CisgICAgaWYgKG1fZGVsYXkgIT0gLTEgJiYgbmV3RGVsYXkgKiB0aW1l
clNsb3AgPiBtX2RlbGF5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlbGF5ID0gbmV3RGVs
YXk7CisgICAgaWYgKCFtX2RlbGF5KSB7CisgICAgICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1l
KG1fdGltZXIuZ2V0KCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBk
ZWxheUR1cmF0aW9uID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4obV9kZWxheSk7Cisg
ICAgYXV0byBzYWZlRGVsYXlEdXJhdGlvbiA9IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM6Om1h
eCgpOworICAgIGlmIChkZWxheUR1cmF0aW9uIDwgc2FmZURlbGF5RHVyYXRpb24pCisgICAgICAg
IHNhZmVEZWxheUR1cmF0aW9uID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJv
bm86Om1pY3Jvc2Vjb25kcz4oZGVsYXlEdXJhdGlvbik7CisgICAgZ2ludDY0IGN1cnJlbnRUaW1l
ID0gZ19nZXRfbW9ub3RvbmljX3RpbWUoKTsKKyAgICBnaW50NjQgdGFyZ2V0VGltZSA9IGN1cnJl
bnRUaW1lICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3VycmVudFRpbWUsIHNhZmVE
ZWxheUR1cmF0aW9uLmNvdW50KCkpOworICAgIEFTU0VSVCh0YXJnZXRUaW1lID49IGN1cnJlbnRU
aW1lKTsKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3RpbWVyLmdldCgpLCB0YXJnZXRU
aW1lKTsKK30KKwordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3sKKyAg
ICBtX2RlbGF5ID0gLTE7CisgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV90aW1lci5nZXQo
KSwgLTEpOworfQogI2VuZGlmCiAKIHZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0
ZShzaXplX3QgYnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0FjdGl2aXR5Q2FsbGJhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZp
dHlDYWxsYmFjay5oCmluZGV4IDczZDBlODkuLjU3YmQ5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCkBAIC04MSw2ICs4MSwxMyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICwgbV9kZWxheShzX2hvdXIpCiAgICAgewogICAgIH0KKyNlbGlm
IFVTRShHTElCKQorICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0pCisgICAgICAgIDogSGVh
cFRpbWVyKHZtKQorICAgICAgICAsIG1fZW5hYmxlZCh0cnVlKQorICAgICAgICAsIG1fZGVsYXko
LTEpCisgICAgeworICAgIH0KICNlbHNlCiAgICAgR0NBY3Rpdml0eUNhbGxiYWNrKFZNKiB2bSkK
ICAgICAgICAgOiBIZWFwVGltZXIodm0pCkBAIC05NSw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiBw
cm90ZWN0ZWQ6CiAgICAgR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwog
I2VuZGlmCi0jaWYgVVNFKENGKSB8fCBQTEFURk9STShFRkwpCisjaWYgVVNFKENGKSB8fCBVU0Uo
R0xJQikKIHByb3RlY3RlZDoKICAgICB2b2lkIGNhbmNlbFRpbWVyKCk7CiAgICAgdm9pZCBzY2hl
ZHVsZVRpbWVyKGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDg3
ZThiYjcuLjNjN2RmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zNDcs
NyArMzQ3LDcgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lmIFVT
RShDRikKICAgICAsIG1fc3dlZXBlcihzdGQ6Om1ha2VfdW5pcXVlPEluY3JlbWVudGFsU3dlZXBl
cj4odGhpcywgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKSkKICNlbHNlCi0gICAgLCBtX3N3ZWVwZXIo
c3RkOjptYWtlX3VuaXF1ZTxJbmNyZW1lbnRhbFN3ZWVwZXI+KHRoaXMtPnZtKCkpKQorICAgICwg
bV9zd2VlcGVyKHN0ZDo6bWFrZV91bmlxdWU8SW5jcmVtZW50YWxTd2VlcGVyPih0aGlzKSkKICNl
bmRpZgogICAgICwgbV9kZWZlcnJhbERlcHRoKDApCiAjaWYgVVNFKENGKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAKaW5kZXggMTVlNTQ4NC4uNGNkYTA0OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCkBAIC0zNiw2ICszNiw4IEBACiAK
ICNpZiBQTEFURk9STShFRkwpCiAjaW5jbHVkZSA8RWNvcmUuaD4KKyNlbGlmIFVTRShHTElCKQor
I2luY2x1ZGUgPGdsaWIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE0MCw2ICsx
NDIsNjEgQEAgYm9vbCBIZWFwVGltZXI6OnRpbWVyRXZlbnQodm9pZCogaW5mbykKICAgICAKICAg
ICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FOQ0VMOwogfQorCisjZWxpZiBVU0UoR0xJQikKKwor
c3RhdGljIEdTb3VyY2VGdW5jcyBoZWFwVGltZXJTb3VyY2VGdW5jdGlvbnMgPSB7CisgICAgbnVs
bHB0ciwgLy8gcHJlcGFyZQorICAgIG51bGxwdHIsIC8vIGNoZWNrCisgICAgLy8gZGlzcGF0Y2gK
KyAgICBbXShHU291cmNlKiBzb3VyY2UsIEdTb3VyY2VGdW5jIGNhbGxiYWNrLCBncG9pbnRlciB1
c2VyRGF0YSkgLT4gZ2Jvb2xlYW4KKyAgICB7CisgICAgICAgIGlmIChnX3NvdXJjZV9nZXRfcmVh
ZHlfdGltZShzb3VyY2UpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJ
TlVFOworICAgICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UsIC0xKTsKKyAgICAg
ICAgcmV0dXJuIGNhbGxiYWNrKHVzZXJEYXRhKTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8vIGZp
bmFsaXplCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9jYWxsYmFjaworICAgIG51bGxwdHIsIC8v
IGNsb3N1cmVfbWFyc2hhbGwKK307CisKK0hlYXBUaW1lcjo6SGVhcFRpbWVyKFZNKiB2bSkKKyAg
ICA6IG1fdm0odm0pCisgICAgLCBtX2FwaUxvY2soJnZtLT5hcGlMb2NrKCkpCisgICAgLCBtX3Rp
bWVyKGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJmhlYXBUaW1lclNvdXJjZUZ1bmN0aW9ucywgc2l6
ZW9mKEdTb3VyY2UpKSkpCit7CisgICAgZ19zb3VyY2Vfc2V0X25hbWUobV90aW1lci5nZXQoKSwg
IltKYXZhU2NyaXB0Q29yZV0gSGVhcFRpbWVyIik7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNr
KG1fdGltZXIuZ2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAg
ICAgIHN0YXRpY19jYXN0PEhlYXBUaW1lcio+KHVzZXJEYXRhKS0+dGltZXJEaWRGaXJlKCk7Cisg
ICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05USU5VRTsKKyAgICB9LCB0aGlzLCBudWxscHRyKTsK
KyAgICBnX3NvdXJjZV9hdHRhY2gobV90aW1lci5nZXQoKSwgZ19tYWluX2NvbnRleHRfZ2V0X3Ro
cmVhZF9kZWZhdWx0KCkpOworfQorCitIZWFwVGltZXI6On5IZWFwVGltZXIoKQoreworICAgIGdf
c291cmNlX2Rlc3Ryb3kobV90aW1lci5nZXQoKSk7Cit9CisKK3ZvaWQgSGVhcFRpbWVyOjp0aW1l
ckRpZEZpcmUoKQoreworICAgIG1fYXBpTG9jay0+bG9jaygpOworCisgICAgaWYgKCFtX2FwaUxv
Y2stPnZtKCkpIHsKKyAgICAgICAgLy8gVGhlIFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ug
c2hvdWxkIGp1c3QgZ2l2ZSB1cC4KKyAgICAgICAgbV9hcGlMb2NrLT51bmxvY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHsKKyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlciht
X3ZtKTsKKyAgICAgICAgZG9Xb3JrKCk7CisgICAgfQorCisgICAgbV9hcGlMb2NrLT51bmxvY2so
KTsKK30KKwogI2Vsc2UKIEhlYXBUaW1lcjo6SGVhcFRpbWVyKFZNKiB2bSkKICAgICA6IG1fdm0o
dm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCmluZGV4IGJiY2U1ZjkuLmFj
OTJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCkBAIC0zNCw4ICsz
NCwxMyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5k
aWYKIAorI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNMb2NrOwog
Y2xhc3MgVk07CiAKIGNsYXNzIEhlYXBUaW1lciB7CkBAIC02Niw2ICs3MSwxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgRWNvcmVfVGltZXIqIGFkZChkb3VibGUgZGVsYXksIHZvaWQqIGFnZW50KTsKICAg
ICB2b2lkIHN0b3AoKTsKICAgICBFY29yZV9UaW1lciogbV90aW1lcjsKKyNlbGlmIFVTRShHTElC
KQorICAgIHZvaWQgdGltZXJEaWRGaXJlKCk7CisgICAgUmVmUHRyPEpTTG9jaz4gbV9hcGlMb2Nr
OworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90aW1lcjsKICNlbmRpZgogICAgIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
CmluZGV4IGUwNzgzZDYuLjM3MDQ3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcApAQCAtMzUsMTQgKzM1LDE5IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCisjaWYg
VVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNFKENGKQorI2lmIFVTRShDRikgfHwgKFVTRShHTElC
KSAmJiAhUExBVEZPUk0oRUZMKSkKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVTbGlj
ZSA9IC4wMTsgLy8gc2Vjb25kcwogc3RhdGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVUb3RhbCA9
IC4xMDsKIHN0YXRpYyBjb25zdCBkb3VibGUgc3dlZXBUaW1lTXVsdGlwbGllciA9IDEuMCAvIHN3
ZWVwVGltZVRvdGFsOwogCisjaWYgVVNFKENGKQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1l
bnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBIZWFw
VGltZXIoaGVhcC0+dm0oKSwgcnVuTG9vcCkKICAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5t
X2Jsb2NrU25hcHNob3QpCkBAIC01OCw2ICs2MywyMyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBl
cjo6Y2FuY2VsVGltZXIoKQogewogICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1f
dGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQor
I2VsaWYgVVNFKEdMSUIpCitJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihI
ZWFwKiBoZWFwKQorICAgIDogSGVhcFRpbWVyKGhlYXAtPnZtKCkpCisgICAgLCBtX2Jsb2Nrc1Rv
U3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90KQoreworfQorCit2b2lkIEluY3JlbWVudGFsU3dl
ZXBlcjo6c2NoZWR1bGVUaW1lcigpCit7CisgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV90
aW1lci5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIChzd2VlcFRpbWVTbGljZSAqIHN3
ZWVwVGltZU11bHRpcGxpZXIpKTsKK30KKwordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNl
bFRpbWVyKCkKK3sKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3RpbWVyLmdldCgpLCAt
MSk7Cit9CisjZW5kaWYKIAogdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7CkBA
IC0xMTAsOCArMTMyLDggQEAgdm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2Vl
cGluZygpCiAKICNlbHNlCiAKLUluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVy
KFZNKiB2bSkKLSAgICA6IEhlYXBUaW1lcih2bSkKK0luY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVt
ZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCisgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIu
aAppbmRleCBhODZmZDFjLi4xMGZmYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAjaWYg
VVNFKENGKQogICAgIEpTX0VYUE9SVF9QUklWQVRFIEluY3JlbWVudGFsU3dlZXBlcihIZWFwKiwg
Q0ZSdW5Mb29wUmVmKTsKICNlbHNlCi0gICAgZXhwbGljaXQgSW5jcmVtZW50YWxTd2VlcGVyKFZN
Kik7CisgICAgZXhwbGljaXQgSW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqKTsKICNlbmRpZgogCiAg
ICAgdm9pZCBzdGFydFN3ZWVwaW5nKCk7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIHN3ZWVwTmV4dEJsb2NrKCk7CiAgICAgdm9pZCB3aWxsRmluaXNoU3dlZXBpbmcoKTsKIAot
I2lmIFVTRShDRikKKyNpZiBVU0UoQ0YpIHx8IChVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkp
CiBwcml2YXRlOgogICAgIHZvaWQgZG9Td2VlcChkb3VibGUgc3RhcnRUaW1lKTsKICAgICB2b2lk
IHNjaGVkdWxlVGltZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266086</attachid>
            <date>2015-11-23 05:30:19 -0800</date>
            <delta_ts>2015-11-26 03:34:42 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>jsc-timers-glib.diff</filename>
            <type>text/plain</type>
            <size>10830</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ2NjNmYzMuLmE0ZDJiMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTExLTE4ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gSW1wbGVtZW50
IGdhcmJhZ2UgY29sbGVjdG9yIHRpbWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEdMaWIgaW1wbGVtZW50YXRpb24gdXNpbmcgR1NvdXJjZS4K
KworICAgICAgICAqIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgICog
aGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZp
dHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rp
dml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVs
ZVRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcik6
CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL0hlYXBU
aW1lci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBUaW1lcjo6SGVhcFRpbWVyKToKKyAgICAgICAg
KEpTQzo6SGVhcFRpbWVyOjp+SGVhcFRpbWVyKToKKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0
aW1lckRpZEZpcmUpOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmg6CisgICAgICAgICogaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBl
cjo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6Y2Fu
Y2VsVGltZXIpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6CisKIDIwMTUt
MTEtMjMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjE5MjUzNik6IE51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3I6OnZpc2l0Q2hpbGRyZW4oKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKaW5kZXggMmJlNGU2Ny4uNzc3
NDA3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0
aXZpdHlDYWxsYmFjay5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LSNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBVU0UoQ0YpIHx8IFVTRShHTElCKQog
CiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhl
YXApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKaW5kZXggZmUyNjE1
Yi4uOTEwNTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdD
QWN0aXZpdHlDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLSNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKyNpZiBVU0UoQ0YpIHx8IFVTRShH
TElCKQogCiAjaWYgIVBMQVRGT1JNKElPUykKIGNvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0g
MC4xOyAvLyBUaW1lIGluIHNlY29uZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBp
dGVyYXRlIG92ZXIgYWxsIGJsb2NrcyB0byBzZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAK
aW5kZXggZDMyNGIzNy4uMjEzMjM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCkBAIC0zOSwxMyArMzksMTUgQEAKIAogI2lmIFBM
QVRGT1JNKEVGTCkKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2VsaWYgVVNFKEdMSUIp
CisjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBKU0MgewogCiBib29sIEdD
QWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRDcmVhdGVHQ1RpbWVyID0gdHJ1ZTsKIAotI2lmIFVT
RShDRikgfHwgUExBVEZPUk0oRUZMKQorI2lmIFVTRShDRikgfHwgVVNFKEdMSUIpCiAKIGNvbnN0
IGRvdWJsZSB0aW1lclNsb3AgPSAyLjA7IC8vIEZ1ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3Jt
YW5jZSBjb3N0IG9mIHJlc2V0dGluZyB0aW1lci4KIApAQCAtNjQsNiArNjYsMTEgQEAgR0NBY3Rp
dml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0
aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpLCBXVEY6OmlzTWFpblRocmVhZCgpKQogewogfQorI2Vs
aWYgVVNFKEdMSUIpCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
KiBoZWFwKQorICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCkpCit7Cit9CiAjZW5k
aWYKIAogdm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCkBAIC0xMTQsNiArMTIxLDMz
IEBAIHZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiAgICAgbV9kZWxheSA9
IHNfaG91cjsKICAgICBzdG9wKCk7CiB9CisjZWxpZiBVU0UoR0xJQikKK3ZvaWQgR0NBY3Rpdml0
eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3sKKyAgICBpZiAobV9k
ZWxheSAhPSAtMSAmJiBuZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1fZGVsYXkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZGVsYXkgPSBuZXdEZWxheTsKKyAgICBpZiAoIW1fZGVsYXkpIHsKKyAg
ICAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV90aW1lci5nZXQoKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGRlbGF5RHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6
ZHVyYXRpb248ZG91YmxlPihtX2RlbGF5KTsKKyAgICBhdXRvIHNhZmVEZWxheUR1cmF0aW9uID0g
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6bWF4KCk7CisgICAgaWYgKGRlbGF5RHVyYXRpb24g
PCBzYWZlRGVsYXlEdXJhdGlvbikKKyAgICAgICAgc2FmZURlbGF5RHVyYXRpb24gPSBzdGQ6OmNo
cm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihkZWxheUR1cmF0
aW9uKTsKKyAgICBnaW50NjQgY3VycmVudFRpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSgpOwor
ICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0gY3VycmVudFRpbWUgKyBzdGQ6Om1pbjxnaW50NjQ+KEdf
TUFYSU5UNjQgLSBjdXJyZW50VGltZSwgc2FmZURlbGF5RHVyYXRpb24uY291bnQoKSk7CisgICAg
QVNTRVJUKHRhcmdldFRpbWUgPj0gY3VycmVudFRpbWUpOworICAgIGdfc291cmNlX3NldF9yZWFk
eV90aW1lKG1fdGltZXIuZ2V0KCksIHRhcmdldFRpbWUpOworfQorCit2b2lkIEdDQWN0aXZpdHlD
YWxsYmFjazo6Y2FuY2VsVGltZXIoKQoreworICAgIG1fZGVsYXkgPSAtMTsKKyAgICBnX3NvdXJj
ZV9zZXRfcmVhZHlfdGltZShtX3RpbWVyLmdldCgpLCAtMSk7Cit9CiAjZW5kaWYKIAogdm9pZCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCBieXRlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgKaW5kZXggNzNkMGU4OS4u
NTdiZDk5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0
eUNhbGxiYWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNh
bGxiYWNrLmgKQEAgLTgxLDYgKzgxLDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX2RlbGF5
KHNfaG91cikKICAgICB7CiAgICAgfQorI2VsaWYgVVNFKEdMSUIpCisgICAgR0NBY3Rpdml0eUNh
bGxiYWNrKFZNKiB2bSkKKyAgICAgICAgOiBIZWFwVGltZXIodm0pCisgICAgICAgICwgbV9lbmFi
bGVkKHRydWUpCisgICAgICAgICwgbV9kZWxheSgtMSkKKyAgICB7CisgICAgfQogI2Vsc2UKICAg
ICBHQ0FjdGl2aXR5Q2FsbGJhY2soVk0qIHZtKQogICAgICAgICA6IEhlYXBUaW1lcih2bSkKQEAg
LTk1LDcgKzEwMiw3IEBAIHByb3RlY3RlZDoKIHByb3RlY3RlZDoKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCosIENGUnVuTG9vcFJlZik7CiAjZW5kaWYKLSNpZiBVU0UoQ0YpIHx8IFBMQVRG
T1JNKEVGTCkKKyNpZiBVU0UoQ0YpIHx8IFVTRShHTElCKQogcHJvdGVjdGVkOgogICAgIHZvaWQg
Y2FuY2VsVGltZXIoKTsKICAgICB2b2lkIHNjaGVkdWxlVGltZXIoZG91YmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggODdlOGJiNy4uM2M3ZGY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCBIZWFwOjpIZWFwKFZNKiB2
bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgVVNFKENGKQogICAgICwgbV9zd2VlcGVyKHN0ZDo6
bWFrZV91bmlxdWU8SW5jcmVtZW50YWxTd2VlcGVyPih0aGlzLCBDRlJ1bkxvb3BHZXRDdXJyZW50
KCkpKQogI2Vsc2UKLSAgICAsIG1fc3dlZXBlcihzdGQ6Om1ha2VfdW5pcXVlPEluY3JlbWVudGFs
U3dlZXBlcj4odGhpcy0+dm0oKSkpCisgICAgLCBtX3N3ZWVwZXIoc3RkOjptYWtlX3VuaXF1ZTxJ
bmNyZW1lbnRhbFN3ZWVwZXI+KHRoaXMpKQogI2VuZGlmCiAgICAgLCBtX2RlZmVycmFsRGVwdGgo
MCkKICNpZiBVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVGltZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcApp
bmRleCAxNWU1NDg0Li40Y2RhMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBU
aW1lci5jcHAKQEAgLTM2LDYgKzM2LDggQEAKIAogI2lmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRl
IDxFY29yZS5oPgorI2VsaWYgVVNFKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlmCiAK
IG5hbWVzcGFjZSBKU0MgewpAQCAtMTQwLDYgKzE0Miw2MSBAQCBib29sIEhlYXBUaW1lcjo6dGlt
ZXJFdmVudCh2b2lkKiBpbmZvKQogICAgIAogICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5D
RUw7CiB9CisKKyNlbGlmIFVTRShHTElCKQorCitzdGF0aWMgR1NvdXJjZUZ1bmNzIGhlYXBUaW1l
clNvdXJjZUZ1bmN0aW9ucyA9IHsKKyAgICBudWxscHRyLCAvLyBwcmVwYXJlCisgICAgbnVsbHB0
ciwgLy8gY2hlY2sKKyAgICAvLyBkaXNwYXRjaAorICAgIFtdKEdTb3VyY2UqIHNvdXJjZSwgR1Nv
dXJjZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbgorICAgIHsK
KyAgICAgICAgaWYgKGdfc291cmNlX2dldF9yZWFkeV90aW1lKHNvdXJjZSkgPT0gLTEpCisgICAg
ICAgICAgICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7CisgICAgICAgIGdfc291cmNlX3NldF9y
ZWFkeV90aW1lKHNvdXJjZSwgLTEpOworICAgICAgICByZXR1cm4gY2FsbGJhY2sodXNlckRhdGEp
OworICAgIH0sCisgICAgbnVsbHB0ciwgLy8gZmluYWxpemUKKyAgICBudWxscHRyLCAvLyBjbG9z
dXJlX2NhbGxiYWNrCisgICAgbnVsbHB0ciwgLy8gY2xvc3VyZV9tYXJzaGFsbAorfTsKKworSGVh
cFRpbWVyOjpIZWFwVGltZXIoVk0qIHZtKQorICAgIDogbV92bSh2bSkKKyAgICAsIG1fYXBpTG9j
aygmdm0tPmFwaUxvY2soKSkKKyAgICAsIG1fdGltZXIoYWRvcHRHUmVmKGdfc291cmNlX25ldygm
aGVhcFRpbWVyU291cmNlRnVuY3Rpb25zLCBzaXplb2YoR1NvdXJjZSkpKSkKK3sKKyAgICBnX3Nv
dXJjZV9zZXRfbmFtZShtX3RpbWVyLmdldCgpLCAiW0phdmFTY3JpcHRDb3JlXSBIZWFwVGltZXIi
KTsKKyAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sobV90aW1lci5nZXQoKSwgW10oZ3BvaW50ZXIg
dXNlckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SGVhcFRpbWVyKj4o
dXNlckRhdGEpLT50aW1lckRpZEZpcmUoKTsKKyAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJ
TlVFOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworICAgIGdfc291cmNlX2F0dGFjaChtX3RpbWVy
LmdldCgpLCBnX21haW5fY29udGV4dF9nZXRfdGhyZWFkX2RlZmF1bHQoKSk7Cit9CisKK0hlYXBU
aW1lcjo6fkhlYXBUaW1lcigpCit7CisgICAgZ19zb3VyY2VfZGVzdHJveShtX3RpbWVyLmdldCgp
KTsKK30KKwordm9pZCBIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSgpCit7CisgICAgbV9hcGlMb2Nr
LT5sb2NrKCk7CisKKyAgICBpZiAoIW1fYXBpTG9jay0+dm0oKSkgeworICAgICAgICAvLyBUaGUg
Vk0gaGFzIGJlZW4gZGVzdHJveWVkLCBzbyB3ZSBzaG91bGQganVzdCBnaXZlIHVwLgorICAgICAg
ICBtX2FwaUxvY2stPnVubG9jaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgewor
ICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fdm0pOworICAgICAgICBkb1dvcmsoKTsKKyAg
ICB9CisKKyAgICBtX2FwaUxvY2stPnVubG9jaygpOworfQorCiAjZWxzZQogSGVhcFRpbWVyOjpI
ZWFwVGltZXIoVk0qIHZtKQogICAgIDogbV92bSh2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFRpbWVyLmgKaW5kZXggYmJjZTVmOS4uYWM5MmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFRpbWVyLmgKQEAgLTM0LDggKzM0LDEzIEBACiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNlbmRpZgogCisjaWYgVVNFKEdMSUIpICYmICFQTEFU
Rk9STShFRkwpCisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2VuZGlmCisKIG5hbWVz
cGFjZSBKU0MgewogCitjbGFzcyBKU0xvY2s7CiBjbGFzcyBWTTsKIAogY2xhc3MgSGVhcFRpbWVy
IHsKQEAgLTY2LDYgKzcxLDEwIEBAIHByb3RlY3RlZDoKICAgICBFY29yZV9UaW1lciogYWRkKGRv
dWJsZSBkZWxheSwgdm9pZCogYWdlbnQpOwogICAgIHZvaWQgc3RvcCgpOwogICAgIEVjb3JlX1Rp
bWVyKiBtX3RpbWVyOworI2VsaWYgVVNFKEdMSUIpCisgICAgdm9pZCB0aW1lckRpZEZpcmUoKTsK
KyAgICBSZWZQdHI8SlNMb2NrPiBtX2FwaUxvY2s7CisgICAgR1JlZlB0cjxHU291cmNlPiBtX3Rp
bWVyOwogI2VuZGlmCiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKaW5kZXggZTA3ODNkNi4uNDc5OTNmMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
CkBAIC0zNSwxNCArMzUsMTkgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKKyNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkK
KyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0Uo
Q0YpCisjaWYgVVNFKENGKSB8fCAoVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpKQogCiBzdGF0
aWMgY29uc3QgZG91YmxlIHN3ZWVwVGltZVNsaWNlID0gLjAxOyAvLyBzZWNvbmRzCiBzdGF0aWMg
Y29uc3QgZG91YmxlIHN3ZWVwVGltZVRvdGFsID0gLjEwOwogc3RhdGljIGNvbnN0IGRvdWJsZSBz
d2VlcFRpbWVNdWx0aXBsaWVyID0gMS4wIC8gc3dlZXBUaW1lVG90YWw7CiAKKyNpZiBVU0UoQ0Yp
CiBJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1
bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpLCBydW5Mb29wKQog
ICAgICwgbV9ibG9ja3NUb1N3ZWVwKGhlYXAtPm1fYmxvY2tTbmFwc2hvdCkKQEAgLTU4LDYgKzYz
LDI3IEBAIHZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCiB7CiAgICAgQ0ZS
dW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBzX2RlY2FkZSk7CiB9CisjZWxpZiBVU0UoR0xJQikKK0luY3JlbWVudGFs
U3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXApCisgICAgOiBIZWFwVGltZXIo
aGVhcC0+dm0oKSkKKyAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3Qp
Cit7Cit9CisKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzY2hlZHVsZVRpbWVyKCkKK3sKKyAg
ICBhdXRvIGRlbGF5RHVyYXRpb24gPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihzd2Vl
cFRpbWVTbGljZSAqIHN3ZWVwVGltZU11bHRpcGxpZXIpOworICAgIGdpbnQ2NCBjdXJyZW50VGlt
ZSA9IGdfZ2V0X21vbm90b25pY190aW1lKCk7CisgICAgZ2ludDY0IHRhcmdldFRpbWUgPSBjdXJy
ZW50VGltZSArIHN0ZDo6bWluPGdpbnQ2ND4oR19NQVhJTlQ2NCAtIGN1cnJlbnRUaW1lLCBkZWxh
eUR1cmF0aW9uLmNvdW50KCkpOworICAgIEFTU0VSVCh0YXJnZXRUaW1lID49IGN1cnJlbnRUaW1l
KTsKKyAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3RpbWVyLmdldCgpLCB0YXJnZXRUaW1l
KTsKK30KKwordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKK3sKKyAgICBn
X3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3RpbWVyLmdldCgpLCAtMSk7Cit9CisjZW5kaWYKIAog
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvV29yaygpCiB7CkBAIC0xMTAsOCArMTM2LDggQEAg
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OndpbGxGaW5pc2hTd2VlcGluZygpCiAKICNlbHNlCiAK
LUluY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKFZNKiB2bSkKLSAgICA6IEhl
YXBUaW1lcih2bSkKK0luY3JlbWVudGFsU3dlZXBlcjo6SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAq
IGhlYXApCisgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAppbmRleCBhODZmZDFjLi4x
MGZmYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRh
bFN3ZWVwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3
ZWVwZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKENGKQogICAgIEpTX0VY
UE9SVF9QUklWQVRFIEluY3JlbWVudGFsU3dlZXBlcihIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICNl
bHNlCi0gICAgZXhwbGljaXQgSW5jcmVtZW50YWxTd2VlcGVyKFZNKik7CisgICAgZXhwbGljaXQg
SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydFN3ZWVw
aW5nKCk7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHN3ZWVwTmV4dEJsb2Nr
KCk7CiAgICAgdm9pZCB3aWxsRmluaXNoU3dlZXBpbmcoKTsKIAotI2lmIFVTRShDRikKKyNpZiBV
U0UoQ0YpIHx8IChVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkpCiBwcml2YXRlOgogICAgIHZv
aWQgZG9Td2VlcChkb3VibGUgc3RhcnRUaW1lKTsKICAgICB2b2lkIHNjaGVkdWxlVGltZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266175</attachid>
            <date>2015-11-26 03:34:42 -0800</date>
            <delta_ts>2015-11-26 05:42:22 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>jsc-gc-timers.diff</filename>
            <type>text/plain</type>
            <size>10886</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY0NGQ3NmIuLjRkMThhOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTExLTE4ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gSW1wbGVtZW50
IGdhcmJhZ2UgY29sbGVjdG9yIHRpbWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEdMaWIgaW1wbGVtZW50YXRpb24gdXNpbmcgR1NvdXJjZS4K
KworICAgICAgICAqIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgICog
aGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZp
dHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rp
dml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVs
ZVRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcik6
CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBoZWFwL0hlYXBU
aW1lci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBUaW1lcjo6SGVhcFRpbWVyKToKKyAgICAgICAg
KEpTQzo6SGVhcFRpbWVyOjp+SGVhcFRpbWVyKToKKyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0
aW1lckRpZEZpcmUpOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmg6CisgICAgICAgICogaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVw
ZXI6OkluY3JlbWVudGFsU3dlZXBlcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBl
cjo6c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6Y2Fu
Y2VsVGltZXIpOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmg6CisKIDIwMTUt
MTEtMjQgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlND
XSBzdXBwb3J0IENvbXB1dGVkIFByb3BlcnR5IE5hbWVzIGluIGRlc3RydWN0dXJpbmcgUGF0dGVy
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5jcHAKaW5kZXggMmJlNGU2Ny4uNzc3NDA3NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVG
TCkKKyNpZiBVU0UoQ0YpIHx8IFVTRShHTElCKQogCiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJh
Y2soaGVhcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAKaW5kZXggZmUyNjE1Yi4uOTEwNTFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBVU0UoQ0YpIHx8IFBMQVRG
T1JNKEVGTCkKKyNpZiBVU0UoQ0YpIHx8IFVTRShHTElCKQogCiAjaWYgIVBMQVRGT1JNKElPUykK
IGNvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1lIGluIHNlY29uZHMgdG8g
YWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBpdGVyYXRlIG92ZXIgYWxsIGJsb2NrcyB0byBz
ZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAKaW5kZXggZDMyNGIzNy4uNGMzN2IxOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
CkBAIC0zOSwxMyArMzksMTUgQEAKIAogI2lmIFBMQVRGT1JNKEVGTCkKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2VsaWYgVVNFKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBKU0MgewogCiBib29sIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRD
cmVhdGVHQ1RpbWVyID0gdHJ1ZTsKIAotI2lmIFVTRShDRikgfHwgUExBVEZPUk0oRUZMKQorI2lm
IFVTRShDRikgfHwgVVNFKEdMSUIpCiAKIGNvbnN0IGRvdWJsZSB0aW1lclNsb3AgPSAyLjA7IC8v
IEZ1ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3JtYW5jZSBjb3N0IG9mIHJlc2V0dGluZyB0aW1l
ci4KIApAQCAtNjQsNiArNjYsMTEgQEAgR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpLCBX
VEY6OmlzTWFpblRocmVhZCgpKQogewogfQorI2VsaWYgVVNFKEdMSUIpCitHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDogR0NBY3Rpdml0eUNh
bGxiYWNrKGhlYXAtPnZtKCkpCit7Cit9CiAjZW5kaWYKIAogdm9pZCBHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmRvV29yaygpCkBAIC0xMTQsNiArMTIxLDM0IEBAIHZvaWQgR0NBY3Rpdml0eUNhbGxiYWNr
OjpjYW5jZWxUaW1lcigpCiAgICAgbV9kZWxheSA9IHNfaG91cjsKICAgICBzdG9wKCk7CiB9Cisj
ZWxpZiBVU0UoR0xJQikKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRv
dWJsZSBuZXdEZWxheSkKK3sKKyAgICBBU1NFUlQobmV3RGVsYXkgPj0gMCk7CisgICAgaWYgKG1f
ZGVsYXkgIT0gLTEgJiYgbmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2RlbGF5ID0gbmV3RGVsYXk7CisgICAgaWYgKCFtX2RlbGF5KSB7Cisg
ICAgICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fdGltZXIuZ2V0KCksIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBkZWxheUR1cmF0aW9uID0gc3RkOjpjaHJvbm86
OmR1cmF0aW9uPGRvdWJsZT4obV9kZWxheSk7CisgICAgYXV0byBzYWZlRGVsYXlEdXJhdGlvbiA9
IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM6Om1heCgpOworICAgIGlmIChkZWxheUR1cmF0aW9u
IDwgc2FmZURlbGF5RHVyYXRpb24pCisgICAgICAgIHNhZmVEZWxheUR1cmF0aW9uID0gc3RkOjpj
aHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oZGVsYXlEdXJh
dGlvbik7CisgICAgZ2ludDY0IGN1cnJlbnRUaW1lID0gZ19nZXRfbW9ub3RvbmljX3RpbWUoKTsK
KyAgICBnaW50NjQgdGFyZ2V0VGltZSA9IGN1cnJlbnRUaW1lICsgc3RkOjptaW48Z2ludDY0PihH
X01BWElOVDY0IC0gY3VycmVudFRpbWUsIHNhZmVEZWxheUR1cmF0aW9uLmNvdW50KCkpOworICAg
IEFTU0VSVCh0YXJnZXRUaW1lID49IGN1cnJlbnRUaW1lKTsKKyAgICBnX3NvdXJjZV9zZXRfcmVh
ZHlfdGltZShtX3RpbWVyLmdldCgpLCB0YXJnZXRUaW1lKTsKK30KKwordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3sKKyAgICBtX2RlbGF5ID0gLTE7CisgICAgZ19zb3Vy
Y2Vfc2V0X3JlYWR5X3RpbWUobV90aW1lci5nZXQoKSwgLTEpOworfQogI2VuZGlmCiAKIHZvaWQg
R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0ZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCmluZGV4IDczZDBlODku
LjU3YmQ5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZp
dHlDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlD
YWxsYmFjay5oCkBAIC04MSw2ICs4MSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9kZWxh
eShzX2hvdXIpCiAgICAgewogICAgIH0KKyNlbGlmIFVTRShHTElCKQorICAgIEdDQWN0aXZpdHlD
YWxsYmFjayhWTSogdm0pCisgICAgICAgIDogSGVhcFRpbWVyKHZtKQorICAgICAgICAsIG1fZW5h
YmxlZCh0cnVlKQorICAgICAgICAsIG1fZGVsYXkoLTEpCisgICAgeworICAgIH0KICNlbHNlCiAg
ICAgR0NBY3Rpdml0eUNhbGxiYWNrKFZNKiB2bSkKICAgICAgICAgOiBIZWFwVGltZXIodm0pCkBA
IC05NSw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiBwcm90ZWN0ZWQ6CiAgICAgR0NBY3Rpdml0eUNh
bGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2VuZGlmCi0jaWYgVVNFKENGKSB8fCBQTEFU
Rk9STShFRkwpCisjaWYgVVNFKENGKSB8fCBVU0UoR0xJQikKIHByb3RlY3RlZDoKICAgICB2b2lk
IGNhbmNlbFRpbWVyKCk7CiAgICAgdm9pZCBzY2hlZHVsZVRpbWVyKGRvdWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDg3ZThiYjcuLjNjN2RmOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgSGVhcDo6SGVhcChWTSog
dm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogI2lmIFVTRShDRikKICAgICAsIG1fc3dlZXBlcihzdGQ6
Om1ha2VfdW5pcXVlPEluY3JlbWVudGFsU3dlZXBlcj4odGhpcywgQ0ZSdW5Mb29wR2V0Q3VycmVu
dCgpKSkKICNlbHNlCi0gICAgLCBtX3N3ZWVwZXIoc3RkOjptYWtlX3VuaXF1ZTxJbmNyZW1lbnRh
bFN3ZWVwZXI+KHRoaXMtPnZtKCkpKQorICAgICwgbV9zd2VlcGVyKHN0ZDo6bWFrZV91bmlxdWU8
SW5jcmVtZW50YWxTd2VlcGVyPih0aGlzKSkKICNlbmRpZgogICAgICwgbV9kZWZlcnJhbERlcHRo
KDApCiAjaWYgVVNFKENGKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAK
aW5kZXggMTVlNTQ4NC4uNGNkYTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcFRpbWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
VGltZXIuY3BwCkBAIC0zNiw2ICszNiw4IEBACiAKICNpZiBQTEFURk9STShFRkwpCiAjaW5jbHVk
ZSA8RWNvcmUuaD4KKyNlbGlmIFVTRShHTElCKQorI2luY2x1ZGUgPGdsaWIuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE0MCw2ICsxNDIsNjEgQEAgYm9vbCBIZWFwVGltZXI6OnRp
bWVyRXZlbnQodm9pZCogaW5mbykKICAgICAKICAgICByZXR1cm4gRUNPUkVfQ0FMTEJBQ0tfQ0FO
Q0VMOwogfQorCisjZWxpZiBVU0UoR0xJQikKKworc3RhdGljIEdTb3VyY2VGdW5jcyBoZWFwVGlt
ZXJTb3VyY2VGdW5jdGlvbnMgPSB7CisgICAgbnVsbHB0ciwgLy8gcHJlcGFyZQorICAgIG51bGxw
dHIsIC8vIGNoZWNrCisgICAgLy8gZGlzcGF0Y2gKKyAgICBbXShHU291cmNlKiBzb3VyY2UsIEdT
b3VyY2VGdW5jIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4KKyAgICB7
CisgICAgICAgIGlmIChnX3NvdXJjZV9nZXRfcmVhZHlfdGltZShzb3VyY2UpID09IC0xKQorICAg
ICAgICAgICAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworICAgICAgICBnX3NvdXJjZV9zZXRf
cmVhZHlfdGltZShzb3VyY2UsIC0xKTsKKyAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHVzZXJEYXRh
KTsKKyAgICB9LAorICAgIG51bGxwdHIsIC8vIGZpbmFsaXplCisgICAgbnVsbHB0ciwgLy8gY2xv
c3VyZV9jYWxsYmFjaworICAgIG51bGxwdHIsIC8vIGNsb3N1cmVfbWFyc2hhbGwKK307CisKK0hl
YXBUaW1lcjo6SGVhcFRpbWVyKFZNKiB2bSkKKyAgICA6IG1fdm0odm0pCisgICAgLCBtX2FwaUxv
Y2soJnZtLT5hcGlMb2NrKCkpCisgICAgLCBtX3RpbWVyKGFkb3B0R1JlZihnX3NvdXJjZV9uZXco
JmhlYXBUaW1lclNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdTb3VyY2UpKSkpCit7CisgICAgZ19z
b3VyY2Vfc2V0X25hbWUobV90aW1lci5nZXQoKSwgIltKYXZhU2NyaXB0Q29yZV0gSGVhcFRpbWVy
Iik7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKG1fdGltZXIuZ2V0KCksIFtdKGdwb2ludGVy
IHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIHN0YXRpY19jYXN0PEhlYXBUaW1lcio+
KHVzZXJEYXRhKS0+dGltZXJEaWRGaXJlKCk7CisgICAgICAgIHJldHVybiBHX1NPVVJDRV9DT05U
SU5VRTsKKyAgICB9LCB0aGlzLCBudWxscHRyKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV90aW1l
ci5nZXQoKSwgZ19tYWluX2NvbnRleHRfZ2V0X3RocmVhZF9kZWZhdWx0KCkpOworfQorCitIZWFw
VGltZXI6On5IZWFwVGltZXIoKQoreworICAgIGdfc291cmNlX2Rlc3Ryb3kobV90aW1lci5nZXQo
KSk7Cit9CisKK3ZvaWQgSGVhcFRpbWVyOjp0aW1lckRpZEZpcmUoKQoreworICAgIG1fYXBpTG9j
ay0+bG9jaygpOworCisgICAgaWYgKCFtX2FwaUxvY2stPnZtKCkpIHsKKyAgICAgICAgLy8gVGhl
IFZNIGhhcyBiZWVuIGRlc3Ryb3llZCwgc28gd2Ugc2hvdWxkIGp1c3QgZ2l2ZSB1cC4KKyAgICAg
ICAgbV9hcGlMb2NrLT51bmxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHsK
KyAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihtX3ZtKTsKKyAgICAgICAgZG9Xb3JrKCk7Cisg
ICAgfQorCisgICAgbV9hcGlMb2NrLT51bmxvY2soKTsKK30KKwogI2Vsc2UKIEhlYXBUaW1lcjo6
SGVhcFRpbWVyKFZNKiB2bSkKICAgICA6IG1fdm0odm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBUaW1lci5oCmluZGV4IGJiY2U1ZjkuLmFjOTJiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBUaW1lci5oCkBAIC0zNCw4ICszNCwxMyBAQAogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHTElCKSAmJiAhUExB
VEZPUk0oRUZMKQorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgSlNDIHsKIAorY2xhc3MgSlNMb2NrOwogY2xhc3MgVk07CiAKIGNsYXNzIEhlYXBUaW1l
ciB7CkBAIC02Niw2ICs3MSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgRWNvcmVfVGltZXIqIGFkZChk
b3VibGUgZGVsYXksIHZvaWQqIGFnZW50KTsKICAgICB2b2lkIHN0b3AoKTsKICAgICBFY29yZV9U
aW1lciogbV90aW1lcjsKKyNlbGlmIFVTRShHTElCKQorICAgIHZvaWQgdGltZXJEaWRGaXJlKCk7
CisgICAgUmVmUHRyPEpTTG9jaz4gbV9hcGlMb2NrOworICAgIEdSZWZQdHI8R1NvdXJjZT4gbV90
aW1lcjsKICNlbmRpZgogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCmluZGV4IGUwNzgzZDYuLjc3ZTBmYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNw
cApAQCAtMzUsMTQgKzM1LDE5IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCisjaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwp
CisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCi0jaWYgVVNF
KENGKQorI2lmIFVTRShDRikgfHwgKFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKSkKIAogc3Rh
dGljIGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVTbGljZSA9IC4wMTsgLy8gc2Vjb25kcwogc3RhdGlj
IGNvbnN0IGRvdWJsZSBzd2VlcFRpbWVUb3RhbCA9IC4xMDsKIHN0YXRpYyBjb25zdCBkb3VibGUg
c3dlZXBUaW1lTXVsdGlwbGllciA9IDEuMCAvIHN3ZWVwVGltZVRvdGFsOwogCisjaWYgVVNFKENG
KQogSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCogaGVhcCwgQ0ZS
dW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBIZWFwVGltZXIoaGVhcC0+dm0oKSwgcnVuTG9vcCkK
ICAgICAsIG1fYmxvY2tzVG9Td2VlcChoZWFwLT5tX2Jsb2NrU25hcHNob3QpCkBAIC01OCw2ICs2
MywyNyBAQCB2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQogewogICAgIENG
UnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQorI2VsaWYgVVNFKEdMSUIpCitJbmNyZW1lbnRh
bFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcihIZWFwKiBoZWFwKQorICAgIDogSGVhcFRpbWVy
KGhlYXAtPnZtKCkpCisgICAgLCBtX2Jsb2Nrc1RvU3dlZXAoaGVhcC0+bV9ibG9ja1NuYXBzaG90
KQoreworfQorCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6c2NoZWR1bGVUaW1lcigpCit7Cisg
ICAgYXV0byBkZWxheUR1cmF0aW9uID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oc3dlZXBU
aW1lU2xpY2UgKiBzd2VlcFRpbWVNdWx0aXBsaWVyKSk7CisgICAgZ2ludDY0IGN1cnJlbnRUaW1l
ID0gZ19nZXRfbW9ub3RvbmljX3RpbWUoKTsKKyAgICBnaW50NjQgdGFyZ2V0VGltZSA9IGN1cnJl
bnRUaW1lICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3VycmVudFRpbWUsIGRlbGF5
RHVyYXRpb24uY291bnQoKSk7CisgICAgQVNTRVJUKHRhcmdldFRpbWUgPj0gY3VycmVudFRpbWUp
OworICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fdGltZXIuZ2V0KCksIHRhcmdldFRpbWUp
OworfQorCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQoreworICAgIGdf
c291cmNlX3NldF9yZWFkeV90aW1lKG1fdGltZXIuZ2V0KCksIC0xKTsKK30KKyNlbmRpZgogCiB2
b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9Xb3JrKCkKIHsKQEAgLTExMCw4ICsxMzYsOCBAQCB2
b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6d2lsbEZpbmlzaFN3ZWVwaW5nKCkKIAogI2Vsc2UKIAot
SW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoVk0qIHZtKQotICAgIDogSGVh
cFRpbWVyKHZtKQorSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCog
aGVhcCkKKyAgICA6IEhlYXBUaW1lcihoZWFwLT52bSgpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCmluZGV4IGE4NmZkMWMuLjEw
ZmZiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFs
U3dlZXBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0YpCiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2Vs
c2UKLSAgICBleHBsaWNpdCBJbmNyZW1lbnRhbFN3ZWVwZXIoVk0qKTsKKyAgICBleHBsaWNpdCBJ
bmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCopOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0U3dlZXBp
bmcoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3dlZXBOZXh0QmxvY2so
KTsKICAgICB2b2lkIHdpbGxGaW5pc2hTd2VlcGluZygpOwogCi0jaWYgVVNFKENGKQorI2lmIFVT
RShDRikgfHwgKFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKSkKIHByaXZhdGU6CiAgICAgdm9p
ZCBkb1N3ZWVwKGRvdWJsZSBzdGFydFRpbWUpOwogICAgIHZvaWQgc2NoZWR1bGVUaW1lcigpOwo=
</data>
<flag name="review"
          id="291185"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>