<?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>20746</bug_id>
          
          <creation_ts>2008-09-09 07:38:32 -0700</creation_ts>
          <short_desc>Port WebKit to Qt on Windows CE</short_desc>
          <delta_ts>2009-09-22 06:06:44 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Joerg Bornemann">joerg.bornemann</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90654</commentid>
    <comment_count>0</comment_count>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-09 07:38:32 -0700</bug_when>
    <thetext>This bug report collects the patches for the Qt for Windows CE port of WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90655</commentid>
    <comment_count>1</comment_count>
      <attachid>23293</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-09 07:40:18 -0700</bug_when>
    <thetext>Created attachment 23293
This patch adds the PLATFORM_WINCE macro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90656</commentid>
    <comment_count>2</comment_count>
      <attachid>23294</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-09 07:44:25 -0700</bug_when>
    <thetext>Created attachment 23294
Main part of the Windows CE port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90657</commentid>
    <comment_count>3</comment_count>
      <attachid>23295</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-09 07:45:00 -0700</bug_when>
    <thetext>Created attachment 23295
This patch from George Staikos implements currentThreadStackBase on CE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90658</commentid>
    <comment_count>4</comment_count>
      <attachid>23296</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-09 07:45:46 -0700</bug_when>
    <thetext>Created attachment 23296
Change DateMath.cpp to not use errno with strtol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90659</commentid>
    <comment_count>5</comment_count>
      <attachid>23297</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-09 07:46:31 -0700</bug_when>
    <thetext>Created attachment 23297
Fix compilation on Windows CE when using some C string functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90687</commentid>
    <comment_count>6</comment_count>
      <attachid>23293</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-09-09 13:39:32 -0700</bug_when>
    <thetext>Comment on attachment 23293
This patch adds the PLATFORM_WINCE macro

I think that using WIN_CE for the macro name may be slightly clearer, though WINCE may more accurately reflect the emotions associated with Windows CE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90774</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-09-10 11:17:20 -0700</bug_when>
    <thetext>Simon, is there some reason that you did not change the macro to WIN_CE like I suggested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90780</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-10 12:11:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Simon, is there some reason that you did not change the macro to WIN_CE like I
&gt; suggested?

I misunderstood your comment halfway joking, sorry. We can change it to WIN_CE, but the main reason why we called it WINCE is because it seemed the most consistent option.

All the other platform macros use two underscores in their name, only WIN_OS has three.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90783</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-09-10 12:30:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Simon, is there some reason that you did not change the macro to WIN_CE like I
&gt; &gt; suggested?
&gt; 
&gt; I misunderstood your comment halfway joking, sorry. We can change it to WIN_CE,
&gt; but the main reason why we called it WINCE is because it seemed the most
&gt; consistent option.
&gt; 
&gt; All the other platform macros use two underscores in their name, only WIN_OS
&gt; has three.

As far as I&apos;m aware, all of our other platform macros are a single word so there would be nowhere to put an underscore.  On the other hand, Windows CE is two words.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90826</commentid>
    <comment_count>10</comment_count>
      <attachid>23338</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-11 00:25:11 -0700</bug_when>
    <thetext>Created attachment 23338
Make the Qt port of WebKit compile on Windows CE (updated for WINCE -&gt; WIN_CE)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90827</commentid>
    <comment_count>11</comment_count>
      <attachid>23339</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-11 00:26:20 -0700</bug_when>
    <thetext>Created attachment 23339
Implemented currentThreadStackBase() on Windows CE. (updated WINCE -&gt; WIN_CE)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90828</commentid>
    <comment_count>12</comment_count>
      <attachid>23340</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-11 00:27:40 -0700</bug_when>
    <thetext>Created attachment 23340
Fix compilation on Windows CE when using some C string functions (updated for WINCE -&gt; WIN_CE)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90829</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-11 00:28:32 -0700</bug_when>
    <thetext>Committed WINCE -&gt; WIN_CE change in r36328 and updated all the patches that used the macro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90831</commentid>
    <comment_count>14</comment_count>
      <attachid>23293</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-09-11 00:32:03 -0700</bug_when>
    <thetext>Comment on attachment 23293
This patch adds the PLATFORM_WINCE macro

Clearing review flag since it&apos;s been landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91239</commentid>
    <comment_count>15</comment_count>
      <attachid>23339</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-15 14:35:02 -0700</bug_when>
    <thetext>Comment on attachment 23339
Implemented currentThreadStackBase() on Windows CE. (updated WINCE -&gt; WIN_CE)

What&apos;s with the #if 1 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91241</commentid>
    <comment_count>16</comment_count>
      <attachid>23296</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-15 14:39:45 -0700</bug_when>
    <thetext>Comment on attachment 23296
Change DateMath.cpp to not use errno with strtol

Seems cleaner would be to just have a wrapper function which handled using errno or not and returned a bool.  We are generally against Macros in WebKit code (as they make things harder to read and debug).

Here would be an example:

static bool parseLong(const char* string, char*&amp; stopPosition, long maxLength)
{
#if HAVE(ERRNO)
   strtol(string, stopPosition, maxLength);
   return (errno = 0);
#else
  // wince path
#endif
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91242</commentid>
    <comment_count>17</comment_count>
      <attachid>23340</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-15 14:40:45 -0700</bug_when>
    <thetext>Comment on attachment 23340
Fix compilation on Windows CE when using some C string functions (updated for WINCE -&gt; WIN_CE)

I&apos;d like aroben or darin to look at this, as they&apos;re more versed on the status/purpose of StringExtras.  The change in general looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91246</commentid>
    <comment_count>18</comment_count>
      <attachid>23338</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-15 14:55:57 -0700</bug_when>
    <thetext>Comment on attachment 23338
Make the Qt port of WebKit compile on Windows CE (updated for WINCE -&gt; WIN_CE)

In general this looks OK. I can&apos;t say I&apos;ve given this the most thorough review.  The patch is a bit too big. :(

Tab:
+    time_t timet = mktime(&amp;tmtime);

This feels strange, that generally the check is a compile check except for WIN_CE:
+#if COMPILER(MSVC7) || COMPILER(MINGW) || PLATFORM(WIN_CE)

Makes me wonder which set of checks is wrong...

Again, should the MSVC one be WIN_OS instead?
+#if COMPILER(MSVC) &amp;&amp; !PLATFORM(WIN_CE)


It seems you do this in a couple places:

+#if PLATFORM(WIN_CE)
+        /* On Windows CE there&apos;s no abort() and on regular Windows
+           abort() exits with exit code 3. */
+        exit(3);
+#else
         abort();
+#endif

Maybe abort() should just be defined as an inline in some high-level header?

Again, this seems strange, but maybe this is the best check to go with?
+#if !COMPILER(MSVC7) &amp;&amp; !PLATFORM(WIN_CE)

Seems this should be an #else clause on the above HAVE(ERRNO_H):
+#if PLATFORM(WIN_CE)
+#define NO_ERRNO
+#endif
or?  Are there platforms which have errno but not in ERRNO_H?

I&apos;m not sure whether we&apos;d generally try to convert such a file to WebKit style or not:
+++ b/JavaScriptCore/os-wince/ce_time.cpp
probably not.  The license on that file looks fine.

Redundant, since you included it in Assertions.h as well:
+
+#if PLATFORM(WIN_CE)
+#include &lt;windows.h&gt;
+#endif
+

Again, seems like the MSVC checks shoudl really be WIN_OS checks:
+#if COMPILER(MSVC) &amp;&amp; !PLATFORM(WIN_CE)
 #ifndef WINVER

Is there any cleaner way to do this?  In Chromium, we avoid including windows.h in any header.  I assume you&apos;d probably want to do the same.  I think we avoid including it to avoid compile slowness or object file bloat.  But maybe I&apos;m misinformed.

If you defined this in FastMalloc.h instead of FastMalloc.cpp, all .cpp files in WebCore would get access to your abort() function:
+#if PLATFORM(WIN_CE)
+/* On Windows CE there&apos;s no abort() and on regular Windows
+   abort() exits with exit code 3. */
+static void abort()
+{
+    exit(3);
+}
+#endif

I&apos;m somewhat confused by this statement:
+/* PLATFORM(WIN_CE) &amp;&amp; PLATFORM(QT)
+   We can not determine the endianess at compile time. For
+   Qt for Windows CE the endianess is specified in the
+   device specific makespec
+*/

Why did you add:
+#define HAVE_SYS_TYPES_H 1
in 3 places in Platform.h?

Another place that I wonder why 2 of these are compiler checks and one is an OS check:
+#if COMPILER(MINGW) || COMPILER(MSVC7) || PLATFORM(WIN_CE)

I guess I&apos;ll r- this, requesting a second revision (possibly broken into smaller pieces).  I guess an alternative would be to find someone more windows-savvy who&apos;d like to review the whole thing for you. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91339</commentid>
    <comment_count>19</comment_count>
      <attachid>23466</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-16 01:54:16 -0700</bug_when>
    <thetext>Created attachment 23466
Implemented currentThreadStackBase() on Windows CE. (updated)

Removed the unused code block (inside the #if 1 ... #else ... #endif).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91342</commentid>
    <comment_count>20</comment_count>
      <attachid>23468</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-16 02:20:18 -0700</bug_when>
    <thetext>Created attachment 23468
Change DateMath.cpp to not use errno with strtol (updated)

Updated patch 23296 to use a function instead of a macro to wrap strtol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91343</commentid>
    <comment_count>21</comment_count>
      <attachid>23468</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-16 02:33:27 -0700</bug_when>
    <thetext>Comment on attachment 23468
Change DateMath.cpp to not use errno with strtol (updated)

ooops wrong patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91344</commentid>
    <comment_count>22</comment_count>
      <attachid>23469</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-16 02:36:01 -0700</bug_when>
    <thetext>Created attachment 23469
Change DateMath.cpp to not use errno with strtol (updated)

Updated patch 23296 to use a function instead of a macro to wrap strtol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91348</commentid>
    <comment_count>23</comment_count>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-16 04:49:43 -0700</bug_when>
    <thetext>(In reply to comment #18)

&gt; Tab:
&gt; +    time_t timet = mktime(&amp;tmtime);

Will fix this.
 
&gt; This feels strange, that generally the check is a compile check except for
&gt; WIN_CE:
&gt; +#if COMPILER(MSVC7) || COMPILER(MINGW) || PLATFORM(WIN_CE)
&gt; 
&gt; Makes me wonder which set of checks is wrong...

We&apos;ve discussed this check too. Actually PLATFORM(WIN_CE) is both, a platform check and a compiler check. For Windows CE MSVC uses a different compiler (and different includes) than for Windows 32. We could add a MSVC_CE compiler define which is always defined if PLATFORM(WINCE) and COMPILER(MSVC). But since there&apos;s only one serious Windows CE compiler available, we didn&apos;t bother...

&gt; It seems you do this in a couple places:
&gt; 
&gt; +#if PLATFORM(WIN_CE)
&gt; +        /* On Windows CE there&apos;s no abort() and on regular Windows
&gt; +           abort() exits with exit code 3. */
&gt; +        exit(3);
&gt; +#else
&gt;          abort();
&gt; +#endif
&gt; 
&gt; Maybe abort() should just be defined as an inline in some high-level header?

There are only two files where we do this:
JavaScriptCore/kjs/collector.cpp and 
JavaScriptCore/wtf/FastMalloc.cpp
Do we really want to infest the global namespace with an abort definition?

&gt; Seems this should be an #else clause on the above HAVE(ERRNO_H):
&gt; +#if PLATFORM(WIN_CE)
&gt; +#define NO_ERRNO
&gt; +#endif
&gt; or?  Are there platforms which have errno but not in ERRNO_H?

Hm...you&apos;re right, it seems unlikely that there are platforms that define errno but have no errno.h. Will fix this.
 
&gt; Redundant, since you included it in Assertions.h as well:
&gt; +
&gt; +#if PLATFORM(WIN_CE)
&gt; +#include &lt;windows.h&gt;
&gt; +#endif
&gt; +

Removed.

&gt; Again, seems like the MSVC checks shoudl really be WIN_OS checks:
&gt; +#if COMPILER(MSVC) &amp;&amp; !PLATFORM(WIN_CE)
&gt;  #ifndef WINVER

No, because WIN_OS is also defined for MinGW.
 
&gt; Is there any cleaner way to do this?  In Chromium, we avoid including windows.h
&gt; in any header.  I assume you&apos;d probably want to do the same.  I think we avoid
&gt; including it to avoid compile slowness or object file bloat.  But maybe I&apos;m
&gt; misinformed.

We had a little discussion on webkit-dev about this. The main problem is, that WebKit defines the ASSERT macro. The Windows headers for Win CE define that too and are broken in that sense that we *must* first include &lt;windows.h&gt; then undefine ASSERT and define our own ASSERT macro.
 
&gt; I&apos;m somewhat confused by this statement:
&gt; +/* PLATFORM(WIN_CE) &amp;&amp; PLATFORM(QT)
&gt; +   We can not determine the endianess at compile time. For
&gt; +   Qt for Windows CE the endianess is specified in the
&gt; +   device specific makespec
&gt; +*/

For gcc on ARM you have several defines from which you can determine the endianess of the platform. For MSVC for Windows CE this isn&apos;t possible because the defines are missing. Qt has defines of the endianess in the mkspecs for the specific platform.
 
&gt; Why did you add:
&gt; +#define HAVE_SYS_TYPES_H 1
&gt; in 3 places in Platform.h?

To mark all the platforms that have sys/types.h which are DARWIN, Win32 and the default case.

&gt; I guess I&apos;ll r- this, requesting a second revision (possibly broken into
&gt; smaller pieces).  I guess an alternative would be to find someone more
&gt; windows-savvy who&apos;d like to review the whole thing for you. :)
 
I hope that my comments explain a little bit. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91349</commentid>
    <comment_count>24</comment_count>
      <attachid>23470</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-16 05:01:39 -0700</bug_when>
    <thetext>Created attachment 23470
Make the Qt port of WebKit compile on Windows CE (updated)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91928</commentid>
    <comment_count>25</comment_count>
      <attachid>23466</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-20 13:45:26 -0700</bug_when>
    <thetext>Comment on attachment 23466
Implemented currentThreadStackBase() on Windows CE. (updated)

Please use WebKit style for your changes.
http://webkit.org/coding/contributing.html

Also, I think that the &quot;abort()&quot; definition should go in config.h or some header which config.h (or whatever pre-compiled header your WinCE build uses).   It&apos;s silly to need to have #ifdefs around every abort() usage.  Another way would be to change all abort usages to some webkit-specific function (like ABORT()) or similar, but I think it&apos;s better to just define abort() for WinCE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92024</commentid>
    <comment_count>26</comment_count>
      <attachid>23340</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 14:29:55 -0700</bug_when>
    <thetext>Comment on attachment 23340
Fix compilation on Windows CE when using some C string functions (updated for WINCE -&gt; WIN_CE)

We prefer to use inline functions instead of macros for cases like this. Look at the inline function for strncasecmp right below for an example of what I&apos;m talking about.

(If we did use macros, we&apos;d want to use macros with argument names rather than just doing the name of the function alone, but that&apos;s a moot point -- lets use inline functions.)

I&apos;m going to say review-, but I&apos;d love to see a version of this that used inline functions instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92287</commentid>
    <comment_count>27</comment_count>
      <attachid>23469</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-22 23:14:38 -0700</bug_when>
    <thetext>Comment on attachment 23469
Change DateMath.cpp to not use errno with strtol (updated)

This is nice.  2 comments though.

This will crash if endPtr is null:
+    return string != *endPtr &amp;&amp; retVal != LONG_MIN &amp;&amp; retVal != LONG_MAX;

Maybe strtol would also crash in that situation, not sure?

Also, since this is our own function:
+static bool parseLong(long&amp; retVal, const char* string, char** endPtr, int base)

I think it&apos;s clearer (less typing at least), to use:
+static bool parseLong(long&amp; retVal, const char* string, char*&amp; endPtr, int base)

Then one doesn&apos;t need to add &amp; to every callsite.

We also could make base =10 a default paramteter to further clean up the callsites.

I think this patch is really OK as is, but given that we&apos;re in this code, I feel like we should clean it up a bit more.  I guess I could do that and post a response patch for you.  I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92288</commentid>
    <comment_count>28</comment_count>
      <attachid>23469</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-22 23:35:24 -0700</bug_when>
    <thetext>Comment on attachment 23469
Change DateMath.cpp to not use errno with strtol (updated)

Turns out that Windows now has some additional time code, so maybe WinCE can use that, instead of it&apos;s own custom stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92302</commentid>
    <comment_count>29</comment_count>
      <attachid>23698</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-23 02:46:57 -0700</bug_when>
    <thetext>Created attachment 23698
Fix compilation on Windows CE when using some C string functions (uses inline functions)

As Darin suggested in comment #26, I&apos;ve replaced the macros with inline functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92304</commentid>
    <comment_count>30</comment_count>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-09-23 03:01:44 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 23469 [edit])
&gt; Turns out that Windows now has some additional time code, so maybe WinCE can
&gt; use that, instead of it&apos;s own custom stuff.

Hmm...interesting! I will have a look at the new Windows time stuff and see if its usable for Windows CE. :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92331</commentid>
    <comment_count>31</comment_count>
      <attachid>23698</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-23 07:37:08 -0700</bug_when>
    <thetext>Comment on attachment 23698
Fix compilation on Windows CE when using some C string functions (uses inline functions)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95412</commentid>
    <comment_count>32</comment_count>
      <attachid>23698</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-15 09:43:18 -0700</bug_when>
    <thetext>Comment on attachment 23698
Fix compilation on Windows CE when using some C string functions (uses inline functions)

Clearing review flag since this was landed: http://trac.webkit.org/changeset/37604</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99294</commentid>
    <comment_count>33</comment_count>
      <attachid>25262</attachid>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-11-19 02:24:45 -0800</bug_when>
    <thetext>Created attachment 25262
Implemented currentThreadStackBase() on Windows CE. (updated)

This patch update contains beautification of the last patch respecting the WebKit coding style guide. It doesn&apos;t contain the #ifdef for abort anymore. It must be declared globally, because it is already defined (but not declared) in the Windows CE C runtime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99317</commentid>
    <comment_count>34</comment_count>
      <attachid>25262</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-19 09:23:59 -0800</bug_when>
    <thetext>Comment on attachment 25262
Implemented currentThreadStackBase() on Windows CE. (updated)

&gt; +static inline DWORD numberOfWritableBytes(void* p, void** base)

The caller passes 0, and there&apos;s only the one caller. So we should remove the code that handles &quot;base&quot; in that case. We don&apos;t want to paste in a function with dead code for a feature we aren&apos;t using.

&gt; +    DWORD result;
&gt; +    DWORD protect;

We normally define variables on the same line they&apos;re initialized on, not at the top of the function.

&gt; +    result = VirtualQuery(p, &amp;buf, sizeof(buf));
&gt; +    if (result != sizeof(buf))
&gt; +        abort();

I don&apos;t think this particular assertion needs an explicit abort() rather than just the normal ASSERT macro. In practice it&apos;s simply not going to happen.

&gt; +    if (base != 0)
&gt; +        *base = (void*)(buf.AllocationBase);
&gt; +    protect = (buf.Protect &amp; ~(PAGE_GUARD | PAGE_NOCACHE));
&gt; +
&gt; +    if (protect != PAGE_READWRITE &amp;&amp; protect != PAGE_WRITECOPY &amp;&amp;
&gt; +        protect != PAGE_EXECUTE_READWRITE &amp;&amp; protect != PAGE_EXECUTE_WRITECOPY)
&gt; +        return 0;
&gt; +
&gt; +    if (buf.State != MEM_COMMIT)
&gt; +        return 0;

I don&apos;t think all these checks are helpful. You really need a comment explaining why these are part of a useful way to detect the end of the stack.

A lot of the code in numberOfWritableBytes function simply doesn&apos;t apply to pages in the stack. Most of those return 0 cases can&apos;t be hit at all, and if they were hit you&apos;d return the wrong value for the stack size.

&gt; +static inline void* currentThreadStackBase_WIN_CE()

This above name does not follow WebKit naming conventions. There&apos;s no need for the uppercase and the underscores.

&gt; +    static DWORD pageSize = 0;
&gt; +    if (!pageSize) {
&gt; +        SYSTEM_INFO sysInfo;
&gt; +        GetSystemInfo(&amp;sysInfo);
&gt; +        pageSize = sysInfo.dwPageSize;
&gt; +    }

This could be made cleaner by putting the logic to get the page size into a separate function so you wouldn&apos;t need the check for 0.

    static DWORD systemPageSize()
    {
        SYSTEM_INFO sysInfo;
        GetSystemInfo(&amp;sysInfo);
        return sysInfo.dwPageSize;
    }

    static DWORD pageSize = systemPageSize();

&gt; +    int dummy;
&gt; +    void* sp = (void*)&amp;dummy;

The typecast isn&apos;t helpful here. A void* can take an int*.

&gt; +    char* trunc_sp = (char*)((DWORD)sp &amp; ~(pageSize - 1));

This should use reinterpret_cast, not C-style casts. And trunc_sp does not follow WebKit naming conventions.

&gt; +    for (;;) {
&gt; +        DWORD size = numberOfWritableBytes(trunc_sp, 0);
&gt; +        if (size &lt; pageSize)
&gt; +            return trunc_sp + size;
&gt; +        trunc_sp += pageSize;
&gt; +    }

This algorithm is unnecessarily excessively inefficient. It calls VirtualQuery on every page in the stack, even in the common case where the entire stack is in a single virtual region.

This algorithm also has some wrong assumptions in it. The return statement adds the size of the region to the passed in stack pointer value. But the size is relative to the base of the region, not the passed-in pointer; you can&apos;t get a sensible result by adding the size to a pointer that&apos;s in the middle of the region. So this could easily return a value that&apos;s past the end of the region. The reason that doesn&apos;t happen in practice is that region sizes are always going to be multiples of page sizes anyway, so given the way the loop is written the only value that numberOfWritableBytes can return that will result in the loop ending is 0.

Since the assumption here is that the stack is composed of a number of virtual regions, the code should get the region, then move to the end of that region, and keep going as long as the regions are consistent with how the stack is allocated. The first time we hit a bad region, then we&apos;ve found the end of the stack. There&apos;s no value to going a page at a time instead of a region at a time and also no reason to round the stack pointer value to a page boundary. But this also seems like a poor way to find the stack base. Is there really no better way to do it? Is there no thread information block on WinCE?

&gt; +#if PLATFORM(WIN_CE)
&gt; +extern &quot;C&quot; void abort();
&gt; +#endif

Is this declaration really necessary? For one thing, the value of the abort() function call in the patch is extremely minimal; I&apos;d suggest just removing it. For another, abort() is a standard C function, normally defined in &lt;stdlib.h&gt;. Can&apos;t we include that header instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99327</commentid>
    <comment_count>35</comment_count>
    <who name="Joerg Bornemann">joerg.bornemann</who>
    <bug_when>2008-11-19 09:45:02 -0800</bug_when>
    <thetext>(In reply to comment #34)

Thanks for your feedback. Looks like the time is right for rewriting the whole function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99454</commentid>
    <comment_count>36</comment_count>
      <attachid>23470</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-11-20 04:53:53 -0800</bug_when>
    <thetext>Comment on attachment 23470
Make the Qt port of WebKit compile on Windows CE (updated)

Clearing the review flag. The patch doesn&apos;t apply against trunk anymore due to many renamed files. I&apos;m splitting the patch up into smaller pieces and review them individually. Let&apos;s see what remains after that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100603</commentid>
    <comment_count>37</comment_count>
      <attachid>25571</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2008-11-28 07:58:58 -0800</bug_when>
    <thetext>Created attachment 25571
Implemented currentThreadStackBase() on Windows CE (slight coding style fixes)

This updated patch addresses some of the coding style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100647</commentid>
    <comment_count>38</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2008-11-28 15:48:45 -0800</bug_when>
    <thetext>We have a slightly different implementation since this one.  I would prefer if we could first get back to PLATFORM(WINCE) as discussed months ago, and start aligning with our native CE port approach, and then we can merge our updates for this code piecewise.  It&apos;s our intentions to start that merging soon.

Regarding the algorithm, this is the best we can find so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149025</commentid>
    <comment_count>39</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-22 06:06:44 -0700</bug_when>
    <thetext>AFAICS all necessary patches are in the trunk now, closing this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23293</attachid>
            <date>2008-09-09 07:40:18 -0700</date>
            <delta_ts>2008-09-11 00:32:03 -0700</delta_ts>
            <desc>This patch adds the PLATFORM_WINCE macro</desc>
            <filename>0001-platform-WINCE-added.patch</filename>
            <type>text/plain</type>
            <size>1487</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBmNjExYmRkN2ZmYzhiZTVjYmJkMDNiMzBkMDY4Y2Q1OTE1MzhlZTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBXZWQsIDI1IEp1biAyMDA4IDE2OjA0OjQxICswMjAwClN1YmplY3Q6
IFtQQVRDSF0gcGxhdGZvcm0gV0lOQ0UgYWRkZWQKCi0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nICAgICAgfCAgICA4ICsrKysrKysrCiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCB8
ICAgIDggKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMCBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzU0NGU3OC4uNWQzMmI4MiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDExIEBACisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1h
bm5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBXSU5DRSBwbGF0Zm9ybSBtYWNyby4KKworICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybS5oOgorCiAyMDA4LTA5LTA5ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnVpbGQgZml4LCBydWJiZXItc3RhbXBlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDlmYmFjMmMuLjcxZDI0ZDQgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCkBAIC00OSw2ICs0OSwxNCBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1fV0lOX09TIDEKICNl
bmRpZgogCisvKiBQTEFURk9STShXSU5DRSkgKi8KKy8qIE9wZXJhdGluZyBzeXN0ZW0gbGV2ZWwg
ZGVwZW5kZW5jaWVzIGZvciBXaW5kb3dzIENFIHRoYXQgc2hvdWxkIGJlIHVzZWQgKi8KKy8qIHJl
Z2FyZGxlc3Mgb2Ygb3BlcmF0aW5nIGVudmlyb25tZW50ICovCisvKiBOb3RlIHRoYXQgZm9yIHRo
aXMgcGxhdGZvcm0gUExBVEZPUk0oV0lOX09TKSBpcyBhbHNvIGRlZmluZWQuICovCisjaWYgZGVm
aW5lZChfV0lOMzJfV0NFKQorI2RlZmluZSBXVEZfUExBVEZPUk1fV0lOQ0UgMQorI2VuZGlmCisK
IC8qIFBMQVRGT1JNKEZSRUVCU0QpICovCiAvKiBPcGVyYXRpbmcgc3lzdGVtIGxldmVsIGRlcGVu
ZGVuY2llcyBmb3IgRnJlZUJTRC1saWtlIHN5c3RlbXMgdGhhdCAqLwogLyogc2hvdWxkIGJlIHVz
ZWQgcmVnYXJkbGVzcyBvZiBvcGVyYXRpbmcgZW52aXJvbm1lbnQgKi8KLS0gCjEuNi4wLjIuZzJl
YmMwCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23294</attachid>
            <date>2008-09-09 07:44:25 -0700</date>
            <delta_ts>2008-09-11 00:25:11 -0700</delta_ts>
            <desc>Main part of the Windows CE port</desc>
            <filename>0002-2008-09-09-Joerg-Bornemann-joerg.bornemann-trollt.patch</filename>
            <type>text/plain</type>
            <size>42809</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBlZjE4Y2YwYmIzYmNmNjhjN2VmNmYwMmRhZTE1YTBmMmI0OWVjNTE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTU6NTM6NTQgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IE1ha2UgdGhlIFF0IHBvcnQgb2YgV2ViS2l0IGNvbXBpbGUgb24gV2luZG93cyBDRQotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAr
CiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzEgKwogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpICAgICAgICAgICAgICAgICAg
fCAgICA3ICsKIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAgICAgICAgICAgICAgICAg
ICAgIHwgICAxNyArLQogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcCAgICAgfCAgICAxIC0KIEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAg
ICAgICAgICAgICAgICAgICAgfCAgICA5ICstCiBKYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2tqcy9kdG9h
LmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBKYXZhU2NyaXB0Q29yZS9vcy13
aW5jZS9jZV90aW1lLmNwcCAgICAgICAgICAgICAgICB8ICA2NzYgKysrKysrKysrKysrKysrKysr
KysKIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcCAgICAgICAgICAgICAgICAgIHwg
ICAgOSArLQogSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCAgICAgICAgICAgICAgICAg
ICAgfCAgICA4ICsKIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcCAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oICAgICAgICAg
ICAgICAgICAgICB8ICAgIDUgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyMiArCiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi93aW4vTWFp
blRocmVhZFdpbi5jcHAgICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKwogV2ViQ29yZS9XZWJDb3JlLnBy
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCiBXZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAgICAgICAgICAgICAgICB8ICAgIDIgLQogV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgIDMgKy0K
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcCAgICAgICAgICAgIHwgICAg
NCArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgICAgICAgICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oICAgICAgICAgICAg
ICAgIHwgICAgOCArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAg
ICAgICAgICB8ICAgIDggKy0KIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lv
bi5jcHAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2lu
LmNwcCAgICAgICAgICAgICB8ICAgIDggKwogV2ViS2l0LnBybyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiAyOSBmaWxlcyBjaGFuZ2VkLCA4ODIgaW5z
ZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSmF2YVNjcmlw
dENvcmUvb3Mtd2luY2UvY2VfdGltZS5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggOTZmNTk5Zi4uYTA3ZTFmYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4g
IDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBRdCBwb3J0IG9mIFdlYktpdCBjb21w
aWxlIG9uIFdpbmRvd3MgQ0UKKworICAgICAgICAqIFdlYktpdC5wcm86IGRvbid0IGJ1aWxkIER1
bXBSZW5kZXJUcmVlIG9uIGFsbCBXaW4zMiBwbGF0Zm9ybXMKKwogMjAwOC0wOS0wNCAgTWFyY28g
QmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1ZDMyYjgyLi4wMWQ1NGRlIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0yLDYgKzIsMzcgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KIAorICAgICAgICBNYWtlIHRoZSBRdCBwb3J0IG9mIFdlYktpdCBjb21waWxlIG9u
IFdpbmRvd3MgQ0UKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaTogQWRkZWQgV2luZG93
cyBDRSBzcGVjaWZpYyBmaWxlcyB0byB0aGUgYnVpbGQuCisgICAgICAgICoga2pzL0RhdGVNYXRo
LmNwcDogVXNlIGxvY2FsdGltZSgpIG9uIFdpbmRvd3MgQ0UuCisgICAgICAgIChKU0M6OmdldEN1
cnJlbnRVVENUaW1lV2l0aE1pY3Jvc2Vjb25kcyk6IEltcGxlbWVudGVkIGZvciBXaW5kb3dzIENF
LgorICAgICAgICAqIGtqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6IFJlbW92ZWQgdW5u
ZWNlc3NhcnkgZXJybm8uaAorICAgICAgICAgIGluY2x1c2lvbi4KKyAgICAgICAgKiBranMvU2hl
bGwuY3BwOiBEaXNhYmxlZCB1c2Ugb2YgZGVidWdnZXIgaW5jbHVkZXMgZm9yIENFLiBJdAorICAg
ICAgICAgIGRvZXMgbm90IGhhdmUgdGhlIGRlYnVnZ2luZyBmdW5jdGlvbnMuCisgICAgICAgICog
a2pzL2NvbGxlY3Rvci5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOiBVc2UgZXhp
dCgzKSBpbnN0ZWFkIG9mIGFib3J0KCkgb24gV2luZG93cyBDRS4KKyAgICAgICAgKiBranMvY29u
ZmlnLmg6IERvbid0IHNldCBfQ1JUX1JBTkRfUyBmb3IgQ0UsIGl0J3Mgbm90IGF2YWlsYWJsZS4K
KyAgICAgICAgKiBranMvZHRvYS5jcHA6IENvbXBpbGUgd2l0aG91dCBlcnJuby4KKyAgICAgICAg
KiBvcy13aW5jZS9jZV90aW1lLmNwcDogQWRkZWQgQlNEIGxpY2Vuc2VkIGltcGxlbWVudGF0aW9u
cyBvZiB0aW1lCisgICAgICAgIGZ1bmN0aW9ucyB0aGF0IGFyZSBkZWNsYXJlZCBidXQgbmV2ZXIg
ZGVmaW5lZCBpbiBXaW5kb3dzIENFLgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDogQ29t
cGlsZSBvbiBXaW5kb3dzIENFLgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6IEluY2x1ZGUg
d2luZG93cy5oIGJlZm9yZSBkZWZpbmluZyBBU1NFUlQuCisgICAgICAgICogd3RmL0Zhc3RNYWxs
b2MuY3BwOgorICAgICAgICAoYWJvcnQpOiBVc2UgZXhpdCgzKSBpbnN0ZWFkIG9mIGFib3J0KCku
CisgICAgICAgICogd3RmL01hdGhFeHRyYXMuaDogSW5jbHVkZSBzdGRsaWIuaCBpbnN0ZWFkIG9m
IHhtYXRoLmguCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IERpc2FibGUgRVJSTk9fSCBhbmQg
U1lTX1RZUEVTX0ggYW5kIGRldGVjdAorICAgICAgICAgIGVuZGlhbmVzcyBiYXNlZCBvbiB0aGUg
UXQgZW5kaWFuZXNzLiBPbiBRdCBmb3IgV2luZG93cyBDRSB0aGUKKyAgICAgICAgICBlbmRpYW5l
c3MgaXMgZGVmaW5lZCBieSB0aGUgdmVuZG9yIHNwZWNpZmljIGJ1aWxkIHNwZWMuCisgICAgICAg
ICogd3RmL1RocmVhZGluZy5oOiBVc2UgdGhlIHZvbGF0aWxlLWxlc3MgYXRvbWljIGZ1bmN0aW9u
cy4KKyAgICAgICAgKiB3dGYvd2luL01haW5UaHJlYWRXaW4uY3BwOiBEb24ndCBpbmNsdWRlIHdp
bmRvd3MuaCBvbiBDRSBhZnRlcgorICAgICAgICBBc3NlcnRpb25zLmggZHVlIHRvIHRoZSByZWRl
ZmluaXRpb24gb2YgQVNTRVJULgorCisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2Vy
Zy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKwogICAgICAgICBBZGRlZCBXSU5DRSBwbGF0Zm9ybSBtYWNyby4KIAogICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybS5oOgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJpIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCmluZGV4IDQ1M2Fm
N2MuLjg4M2ZjMjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
aQorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKQEAgLTYsNiArNiwxMyBA
QCBJTkNMVURFUEFUSCArPSAkJFBXRCAkJFBXRC9ranMgJCRQV0Qvd3RmICQkUFdEL3d0Zi91bmlj
b2RlICQkUFdEL1ZNICQkUFdEL3Byb2ZpbAogICAgICAgICAgICAgICAgJCRQV0QvRm9yd2FyZGlu
Z0hlYWRlcnMKIERFRklORVMgKz0gQlVJTERJTkdfUVRfXwogCit3aW4zMi1tc3ZjKjogSU5DTFVE
RVBBVEggKz0gJCRQV0Qvb3Mtd2luMzIKK3dpbmNlKiB7CisgICAgSU5DTFVERVBBVEggKz0gJCRQ
V0Qvb3Mtd2luY2UKKyAgICBJTkNMVURFUEFUSCArPSAkJFBXRC9vcy13aW4zMgorICAgIFNPVVJD
RVMgKz0gJCRQV0Qvb3Mtd2luY2UvY2VfdGltZS5jcHAKK30KKwogaXNFbXB0eShHRU5FUkFURURf
U09VUkNFU19ESVIpOkdFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9IHRtcAogR0VORVJBVEVEX1NPVVJD
RVNfRElSX1NMQVNIID0gJCRHRU5FUkFURURfU09VUkNFU19ESVIvCiB3aW4zMi0qOiBHRU5FUkFU
RURfU09VUkNFU19ESVJfU0xBU0ggfj0gc3wvfFx8CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ranMvRGF0ZU1hdGguY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcAppbmRl
eCAyMTJlNzgyLi5kNmQxNDNlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1h
dGguY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAKQEAgLTI4OSw3ICsy
ODksMjAgQEAgZG91YmxlIGdldEN1cnJlbnRVVENUaW1lKCkKIAogZG91YmxlIGdldEN1cnJlbnRV
VENUaW1lV2l0aE1pY3Jvc2Vjb25kcygpCiB7Ci0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIFBM
QVRGT1JNKFdJTkNFKQorCVNZU1RFTVRJTUUgc3lzdGVtVGltZTsKKwlHZXRTeXN0ZW1UaW1lKCZz
eXN0ZW1UaW1lKTsKKwlzdHJ1Y3QgdG0gdG10aW1lOworCXRtdGltZS50bV95ZWFyID0gc3lzdGVt
VGltZS53WWVhciAtIDE5MDA7CisJdG10aW1lLnRtX21vbiA9IHN5c3RlbVRpbWUud01vbnRoIC0g
MTsKKwl0bXRpbWUudG1fbWRheSA9IHN5c3RlbVRpbWUud0RheTsKKwl0bXRpbWUudG1fd2RheSA9
IHN5c3RlbVRpbWUud0RheU9mV2VlazsKKwl0bXRpbWUudG1faG91ciA9IHN5c3RlbVRpbWUud0hv
dXI7CisJdG10aW1lLnRtX21pbiA9IHN5c3RlbVRpbWUud01pbnV0ZTsKKwl0bXRpbWUudG1fc2Vj
ID0gc3lzdGVtVGltZS53U2Vjb25kOworICAgIHRpbWVfdCB0aW1ldCA9IG1rdGltZSgmdG10aW1l
KTsKKwlkb3VibGUgdXRjID0gdGltZXQgKiBtc1BlclNlY29uZCArIHN5c3RlbVRpbWUud01pbGxp
c2Vjb25kczsKKyNlbGlmIFBMQVRGT1JNKFdJTl9PUykKICAgICAvLyBGSVhNRTogdGhlIGltcGxl
bWVudGF0aW9uIGZvciBXaW5kb3dzIGlzIG9ubHkgbWlsbGlzZWNvbmQgcmVzb2x1dGlvbi4KICNp
ZiBDT01QSUxFUihCT1JMQU5EKQogICAgIHN0cnVjdCB0aW1lYiB0aW1lYnVmZmVyOwpAQCAtMzA5
LDcgKzMyMiw3IEBAIGRvdWJsZSBnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMoKQog
CiB2b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBs
b2NhbFRNKQogewotI2lmIENPTVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykKKyNpZiBD
T01QSUxFUihNU1ZDNykgfHwgQ09NUElMRVIoTUlOR1cpIHx8IFBMQVRGT1JNKFdJTkNFKQogICAg
ICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUpOwogI2VsaWYgQ09NUElMRVIoTVNWQykK
ICAgICBsb2NhbHRpbWVfcyhsb2NhbFRNLCBsb2NhbFRpbWUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMDgxOTVkZS4uMzE3Y2IwNSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgImxleGVyLmgiCiAj
aW5jbHVkZSAibm9kZXMuaCIKLSNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL1NoZWxsLmNw
cAppbmRleCBhM2M4YWIzLi5mOTcxZmE5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMv
U2hlbGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNlbmRpZgogCi0jaWYgQ09NUElMRVIoTVNWQykK
KyNpZiBDT01QSUxFUihNU1ZDKSAmJiAhUExBVEZPUk0oV0lOQ0UpCiAjaW5jbHVkZSA8Y3J0ZGJn
Lmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCkBAIC0yNjksNyArMjY5LDcgQEAgSlNW
YWx1ZSogZnVuY3Rpb25SZWFkbGluZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1
ZSosIGNvbnN0IEFyZ0xpc3QmKQogSlNWYWx1ZSogZnVuY3Rpb25RdWl0KEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKQogewogICAgIGV4aXQoMCk7Ci0jaWYg
IUNPTVBJTEVSKE1TVkMpCisjaWYgIUNPTVBJTEVSKE1TVkMpIHx8IFBMQVRGT1JNKFdJTkNFKQog
ICAgIC8vIE1TVkMga25vd3MgdGhhdCBleGl0KDApIG5ldmVyIHJldHVybnMsIHNvIGl0IGZsYWdz
IHRoaXMgcmV0dXJuIHN0YXRlbWVudCBhcyB1bnJlYWNoYWJsZS4KICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rv
ci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAppbmRleCA5NzBkYzk2Li45
OTk2M2FiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcApAQCAtOTU1LDggKzk1NSwxNSBAQCBi
b29sIEhlYXA6OmNvbGxlY3QoKQogI2VuZGlmCiAKICAgICBBU1NFUlQoKHByaW1hcnlIZWFwLm9w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pIHwgKG51bWJlckhlYXAub3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbikpOwotICAgIGlmICgocHJpbWFyeUhlYXAub3BlcmF0
aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikgfCAobnVtYmVySGVhcC5vcGVyYXRpb25JblBy
b2dyZXNzICE9IE5vT3BlcmF0aW9uKSkKKyAgICBpZiAoKHByaW1hcnlIZWFwLm9wZXJhdGlvbklu
UHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pIHwgKG51bWJlckhlYXAub3BlcmF0aW9uSW5Qcm9ncmVz
cyAhPSBOb09wZXJhdGlvbikpIHsKKyNpZiBQTEFURk9STShXSU5DRSkKKyAgICAgICAgLyogT24g
V2luZG93cyBDRSB0aGVyZSdzIG5vIGFib3J0KCkgYW5kIG9uIHJlZ3VsYXIgV2luZG93cworICAg
ICAgICAgICBhYm9ydCgpIGV4aXRzIHdpdGggZXhpdCBjb2RlIDMuICovCisgICAgICAgIGV4aXQo
Myk7CisjZWxzZQogICAgICAgICBhYm9ydCgpOworI2VuZGlmCisgICAgfQogCiAgICAgSkFWQVND
UklQVENPUkVfR0NfQkVHSU4oKTsKICAgICBwcmltYXJ5SGVhcC5vcGVyYXRpb25JblByb2dyZXNz
ID0gQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaCBi
L0phdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaAppbmRleCAxZDUxMjFkLi42OGFkNWVhIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
a2pzL2NvbmZpZy5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIG1heCBtYXgKICNkZWZpbmUg
bWluIG1pbgogCi0jaWYgIUNPTVBJTEVSKE1TVkM3KQorI2lmICFDT01QSUxFUihNU1ZDNykgJiYg
IVBMQVRGT1JNKFdJTkNFKQogLy8gV2UgbmVlZCB0byBkZWZpbmUgdGhpcyBiZWZvcmUgdGhlIGZp
cnN0ICNpbmNsdWRlIG9mIHN0ZGxpYi5oIG9yIGl0IHdvbid0IGNvbnRhaW4gcmFuZF9zLgogI2lm
bmRlZiBfQ1JUX1JBTkRfUwogI2RlZmluZSBfQ1JUX1JBTkRfUwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL2R0b2EuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2R0b2EuY3BwCmluZGV4
IGYzOTMzYTkuLmU4ODEwZDMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9kdG9hLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvZHRvYS5jcHAKQEAgLTEzNSw3ICsxMzUsOSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImR0b2EuaCIKIAorI2lmIEhBVkUoRVJSTk9f
SCkKICNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCiAjaW5jbHVkZSA8ZmxvYXQuaD4KICNpbmNs
dWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8c3RkaW50Lmg+CkBAIC0xNjAsNiArMTYyLDEwIEBACiAj
ZGVmaW5lIElFRUVfODA4NwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU5DRSkKKyNkZWZpbmUg
Tk9fRVJSTk8KKyNlbmRpZgorCiAjZGVmaW5lIElORk5BTl9DSEVDSwogCiAjaWYgZGVmaW5lZChJ
RUVFXzgwODcpICsgZGVmaW5lZChJRUVFX01DNjhrKSArIGRlZmluZWQoSUVFRV9BUk0pICE9IDEK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL29zLXdpbmNlL2NlX3RpbWUuY3BwIGIvSmF2YVNj
cmlwdENvcmUvb3Mtd2luY2UvY2VfdGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjkyMTcwZgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL29zLXdp
bmNlL2NlX3RpbWUuY3BwCkBAIC0wLDAgKzEsNjc2IEBACisvLworLy8gc3RyZnRpbWUuYworLy8K
Ky8vIERhdGUgdG8gc3RyaW5nIGNvbnZlcnNpb24KKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMDIg
TWljaGFlbCBSaW5nZ2FhcmQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8g
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKKy8vICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorLy8gICAgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAor
Ly8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworLy8gT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCisvLyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8g
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorLy8gU1VDSCBEQU1BR0UuCisvLworCisvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor
CisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCit0aW1lX3QKK3Rp
bWUodGltZV90KiB0aW1lcikKK3sKKwlTWVNURU1USU1FIHN5c3RpbWU7CisJc3RydWN0IHRtIHRt
dGltZTsKKwl0aW1lX3QgdHQ7CisKKwlHZXRMb2NhbFRpbWUoJnN5c3RpbWUpOworCisJdG10aW1l
LnRtX3llYXIgPSBzeXN0aW1lLndZZWFyLTE5MDA7CisJdG10aW1lLnRtX21vbiA9IHN5c3RpbWUu
d01vbnRoLTE7CisJdG10aW1lLnRtX21kYXkgPSBzeXN0aW1lLndEYXk7CisJdG10aW1lLnRtX3dk
YXkgPSBzeXN0aW1lLndEYXlPZldlZWs7CisJdG10aW1lLnRtX2hvdXIgPSBzeXN0aW1lLndIb3Vy
OworCXRtdGltZS50bV9taW4gPSBzeXN0aW1lLndNaW51dGU7CisJdG10aW1lLnRtX3NlYyA9IHN5
c3RpbWUud1NlY29uZDsKKworCXR0ID0gbWt0aW1lKCZ0bXRpbWUpOworCisJaWYodGltZXIpCisJ
CSp0aW1lciA9IHR0OworCisJcmV0dXJuIHR0OworfQorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBta3RpbWUoKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisK
K3N0YXRpYyBpbnQgbW9udGhfdG9fZGF5WzEyXSA9IHswLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwg
MTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNH07CisKK3RpbWVfdCBta3RpbWUoc3RydWN0IHRt
ICp0KQoreworICAgICAgICBzaG9ydCAgbW9udGgsIHllYXI7CisgICAgICAgIHRpbWVfdCByZXN1
bHQ7CisKKyAgICAgICAgbW9udGggPSB0LT50bV9tb247CisgICAgICAgIHllYXIgPSB0LT50bV95
ZWFyICsgbW9udGggLyAxMiArIDE5MDA7CisgICAgICAgIG1vbnRoICU9IDEyOworICAgICAgICBp
ZiAobW9udGggPCAwKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgeWVhciAtPSAxOworICAg
ICAgICAgICAgICAgIG1vbnRoICs9IDEyOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9ICh5
ZWFyIC0gMTk3MCkgKiAzNjUgKyAoeWVhciAtIDE5NjkpIC8gNCArIG1vbnRoX3RvX2RheVttb250
aF07CisgICAgICAgIHJlc3VsdCA9ICh5ZWFyIC0gMTk3MCkgKiAzNjUgKyBtb250aF90b19kYXlb
bW9udGhdOworICAgICAgICBpZiAobW9udGggPD0gMSkKKyAgICAgICAgICAgICAgICB5ZWFyIC09
IDE7CisgICAgICAgIHJlc3VsdCArPSAoeWVhciAtIDE5NjgpIC8gNDsKKyAgICAgICAgcmVzdWx0
IC09ICh5ZWFyIC0gMTkwMCkgLyAxMDA7CisgICAgICAgIHJlc3VsdCArPSAoeWVhciAtIDE2MDAp
IC8gNDAwOworICAgICAgICByZXN1bHQgKz0gdC0+dG1fbWRheTsKKyAgICAgICAgcmVzdWx0IC09
IDE7CisgICAgICAgIHJlc3VsdCAqPSAyNDsKKyAgICAgICAgcmVzdWx0ICs9IHQtPnRtX2hvdXI7
CisgICAgICAgIHJlc3VsdCAqPSA2MDsKKyAgICAgICAgcmVzdWx0ICs9IHQtPnRtX21pbjsKKyAg
ICAgICAgcmVzdWx0ICo9IDYwOworICAgICAgICByZXN1bHQgKz0gdC0+dG1fc2VjOworICAgICAg
ICByZXR1cm4ocmVzdWx0KTsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cmZ0aW1lKCkgLSB0YWtlbiBmcm9tIE9wZW5CU0QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjZGVmaW5lIElO
X05PTkUJMAorI2RlZmluZSBJTl9TT01FCTEKKyNkZWZpbmUgSU5fVEhJUwkyCisjZGVmaW5lIElO
X0FMTAkzCisjZGVmaW5lIENIQVJfQklUICAgICAgOAorCisjZGVmaW5lIFRZUEVfQklUKHR5cGUp
CShzaXplb2YgKHR5cGUpICogQ0hBUl9CSVQpCisjZGVmaW5lIFRZUEVfU0lHTkVEKHR5cGUpICgo
KHR5cGUpIC0xKSA8IDApCisKKyNkZWZpbmUgSU5UX1NUUkxFTl9NQVhJTVVNKHR5cGUpIFwKKyAg
ICAoKFRZUEVfQklUKHR5cGUpIC0gVFlQRV9TSUdORUQodHlwZSkpICogMzAyIC8gMTAwMCArIDEg
KyBUWVBFX1NJR05FRCh0eXBlKSkKKworI2RlZmluZSBpc2xlYXAoeSkgKCgoeSkgJSA0KSA9PSAw
ICYmICgoKHkpICUgMTAwKSAhPSAwIHx8ICgoeSkgJSA0MDApID09IDApKQorCisjZGVmaW5lIE1P
TlNQRVJZRUFSCTEyCisjZGVmaW5lIERBWVNQRVJXRUVLCTcKKyNkZWZpbmUgVE1fWUVBUl9CQVNF
CTE5MDAKKyNkZWZpbmUgSE9VUlNQRVJEQVkJMjQKKyNkZWZpbmUgREFZU1BFUk5ZRUFSCTM2NQor
I2RlZmluZSBEQVlTUEVSTFlFQVIJMzY2CisKK3N0YXRpYyBjaGFyCQl3aWxkYWJicltdID0gIldJ
TERBQkJSIjsKKworc3RhdGljIGNoYXIgKgkJCXR6bmFtZVsyXSA9IHsKKwl3aWxkYWJiciwKKwl3
aWxkYWJicgorfTsKKworCisjZGVmaW5lIExvY2FsZQkoJkNfdGltZV9sb2NhbGUpCisKK3N0cnVj
dCBsY190aW1lX1QgeworCWNvbnN0IGNoYXIgKgltb25bTU9OU1BFUllFQVJdOworCWNvbnN0IGNo
YXIgKgltb250aFtNT05TUEVSWUVBUl07CisJY29uc3QgY2hhciAqCXdkYXlbREFZU1BFUldFRUtd
OworCWNvbnN0IGNoYXIgKgl3ZWVrZGF5W0RBWVNQRVJXRUVLXTsKKwljb25zdCBjaGFyICoJWF9m
bXQ7CisJY29uc3QgY2hhciAqCXhfZm10OworCWNvbnN0IGNoYXIgKgljX2ZtdDsKKwljb25zdCBj
aGFyICoJYW07CisJY29uc3QgY2hhciAqCXBtOworCWNvbnN0IGNoYXIgKglkYXRlX2ZtdDsKK307
CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbGNfdGltZV9UCUNfdGltZV9sb2NhbGUgPSB7CisJewor
CQkiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAorCQkiSnVsIiwgIkF1
ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCisJfSwgeworCQkiSmFudWFyeSIsICJGZWJy
dWFyeSIsICJNYXJjaCIsICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsCisJCSJKdWx5IiwgIkF1Z3Vz
dCIsICJTZXB0ZW1iZXIiLCAiT2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciIKKwl9LCB7
CisJCSJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLAorCQkiVGh1IiwgIkZyaSIsICJTYXQiCisJ
fSwgeworCQkiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIsCisJCSJU
aHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiCisJfSwKKworCS8qIFhfZm10ICovCisJIiVI
OiVNOiVTIiwKKworCS8qCisJKiogeF9mbXQKKwkqKiBDOTkgcmVxdWlyZXMgdGhpcyBmb3JtYXQu
CisJKiogVXNpbmcganVzdCBudW1iZXJzIChhcyBoZXJlKSBtYWtlcyBRdWFrZXJzIGhhcHBpZXI7
CisJKiogaXQncyBhbHNvIGNvbXBhdGlibGUgd2l0aCBTVlI0LgorCSovCisJIiVtLyVkLyV5IiwK
KworCS8qCisJKiogY19mbXQKKwkqKiBDOTkgcmVxdWlyZXMgdGhpcyBmb3JtYXQuCisJKiogUHJl
dmlvdXNseSB0aGlzIGNvZGUgdXNlZCAiJUQgJVgiLCBidXQgd2Ugbm93IGNvbmZvcm0gdG8gQzk5
LgorCSoqIE5vdGUgdGhhdAorCSoqICAgICAgIiVhICViICVkICVIOiVNOiVTICVZIgorCSoqIGlz
IHVzZWQgYnkgU29sYXJpcyAyLjMuCisJKi8KKwkiJWEgJWIgJWUgJVQgJVkiLAorCisJLyogYW0g
Ki8KKwkiQU0iLAorCisJLyogcG0gKi8KKwkiUE0iLAorCisJLyogZGF0ZV9mbXQgKi8KKwkiJWEg
JWIgJWUgJUg6JU06JVMgJVogJVkiCit9OworCisKK3N0YXRpYyBjaGFyICoKK19hZGQoY29uc3Qg
Y2hhciAqIHN0ciwgY2hhciAqIHB0LCBjb25zdCBjaGFyICogY29uc3QgcHRsaW0pCit7CisJd2hp
bGUgKHB0IDwgcHRsaW0gJiYgKCpwdCA9ICpzdHIrKykgIT0gJ1wwJykKKwkJKytwdDsKKwlyZXR1
cm4gcHQ7Cit9CisKKworc3RhdGljIGNoYXIgKgorX2NvbnYoY29uc3QgaW50IG4sIGNvbnN0IGNo
YXIgKiBjb25zdCBmb3JtYXQsIGNoYXIgKiBjb25zdCBwdCwgY29uc3QgY2hhciAqIGNvbnN0IHB0
bGltKQoreworCWNoYXIJYnVmW0lOVF9TVFJMRU5fTUFYSU1VTShpbnQpICsgMV07CisKKwkodm9p
ZCkgX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgZm9ybWF0LCBuKTsKKwlyZXR1cm4gX2FkZChi
dWYsIHB0LCBwdGxpbSk7Cit9CisKKworc3RhdGljIGNoYXIgKgorX2ZtdChjb25zdCBjaGFyICog
Zm9ybWF0LCBjb25zdCBzdHJ1Y3QgdG0gKiBjb25zdCB0LCBjaGFyICogcHQsIGNvbnN0IGNoYXIg
KiBjb25zdCBwdGxpbSwgaW50ICogd2FybnApCit7CisJZm9yICggOyAqZm9ybWF0OyArK2Zvcm1h
dCkgeworCQlpZiAoKmZvcm1hdCA9PSAnJScpIHsKK2xhYmVsOgorCQkJc3dpdGNoICgqKytmb3Jt
YXQpIHsKKwkJCWNhc2UgJ1wwJzoKKwkJCQktLWZvcm1hdDsKKwkJCQlicmVhazsKKwkJCWNhc2Ug
J0EnOgorCQkJCXB0ID0gX2FkZCgodC0+dG1fd2RheSA8IDAgfHwKKwkJCQkJdC0+dG1fd2RheSA+
PSBEQVlTUEVSV0VFSykgPworCQkJCQkiPyIgOiBMb2NhbGUtPndlZWtkYXlbdC0+dG1fd2RheV0s
CisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdhJzoKKwkJCQlwdCA9
IF9hZGQoKHQtPnRtX3dkYXkgPCAwIHx8CisJCQkJCXQtPnRtX3dkYXkgPj0gREFZU1BFUldFRUsp
ID8KKwkJCQkJIj8iIDogTG9jYWxlLT53ZGF5W3QtPnRtX3dkYXldLAorCQkJCQlwdCwgcHRsaW0p
OworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnQic6CisJCQkJcHQgPSBfYWRkKCh0LT50bV9tb24g
PCAwIHx8CisJCQkJCXQtPnRtX21vbiA+PSBNT05TUEVSWUVBUikgPworCQkJCQkiPyIgOiBMb2Nh
bGUtPm1vbnRoW3QtPnRtX21vbl0sCisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJ
CQljYXNlICdiJzoKKwkJCWNhc2UgJ2gnOgorCQkJCXB0ID0gX2FkZCgodC0+dG1fbW9uIDwgMCB8
fAorCQkJCQl0LT50bV9tb24gPj0gTU9OU1BFUllFQVIpID8KKwkJCQkJIj8iIDogTG9jYWxlLT5t
b25bdC0+dG1fbW9uXSwKKwkJCQkJcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2Ug
J0MnOgorCQkJCS8qCisJCQkJKiogJUMgdXNlZCB0byBkbyBhLi4uCisJCQkJKioJX2ZtdCgiJWEg
JWIgJWUgJVggJVkiLCB0KTsKKwkJCQkqKiAuLi53aGVyZWFzIG5vdyBQT1NJWCAxMDAzLjIgY2Fs
bHMgZm9yCisJCQkJKiogc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50LgorCQkJCSoqIChh
ZG8sIDE5OTMtMDUtMjQpCisJCQkJKi8KKwkJCQlwdCA9IF9jb252KCh0LT50bV95ZWFyICsgVE1f
WUVBUl9CQVNFKSAvIDEwMCwKKwkJCQkJIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVl
OworCQkJY2FzZSAnYyc6CisJCQkJeworCQkJCWludCB3YXJuMiA9IElOX1NPTUU7CisKKwkJCQlw
dCA9IF9mbXQoTG9jYWxlLT5jX2ZtdCwgdCwgcHQsIHB0bGltLCB3YXJucCk7CisJCQkJaWYgKHdh
cm4yID09IElOX0FMTCkKKwkJCQkJd2FybjIgPSBJTl9USElTOworCQkJCWlmICh3YXJuMiA+ICp3
YXJucCkKKwkJCQkJKndhcm5wID0gd2FybjI7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJY2Fz
ZSAnRCc6CisJCQkJcHQgPSBfZm10KCIlbS8lZC8leSIsIHQsIHB0LCBwdGxpbSwgd2FybnApOwor
CQkJCWNvbnRpbnVlOworCQkJY2FzZSAnZCc6CisJCQkJcHQgPSBfY29udih0LT50bV9tZGF5LCAi
JTAyZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdFJzoKKwkJCWNhc2Ug
J08nOgorCQkJCS8qCisJCQkJKiogQzk5IGxvY2FsZSBtb2RpZmllcnMuCisJCQkJKiogVGhlIHNl
cXVlbmNlcworCQkJCSoqCSVFYyAlRUMgJUV4ICVFWCAlRXkgJUVZCisJCQkJKioJJU9kICVvZSAl
T0ggJU9JICVPbSAlT00KKwkJCQkqKgklT1MgJU91ICVPVSAlT1YgJU93ICVPVyAlT3kKKwkJCQkq
KiBhcmUgc3VwcG9zZWQgdG8gcHJvdmlkZSBhbHRlcm5hdGUKKwkJCQkqKiByZXByZXNlbnRhdGlv
bnMuCisJCQkJKi8KKwkJCQlnb3RvIGxhYmVsOworCQkJY2FzZSAnZSc6CisJCQkJcHQgPSBfY29u
dih0LT50bV9tZGF5LCAiJTJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2Ug
J0YnOgorCQkJCXB0ID0gX2ZtdCgiJVktJW0tJWQiLCB0LCBwdCwgcHRsaW0sIHdhcm5wKTsKKwkJ
CQljb250aW51ZTsKKwkJCWNhc2UgJ0gnOgorCQkJCXB0ID0gX2NvbnYodC0+dG1faG91ciwgIiUw
MmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnSSc6CisJCQkJcHQgPSBf
Y29udigodC0+dG1faG91ciAlIDEyKSA/CisJCQkJCSh0LT50bV9ob3VyICUgMTIpIDogMTIsCisJ
CQkJCSIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ2onOgorCQkJ
CXB0ID0gX2NvbnYodC0+dG1feWRheSArIDEsICIlMDNkIiwgcHQsIHB0bGltKTsKKwkJCQljb250
aW51ZTsKKwkJCWNhc2UgJ2snOgorCQkJCS8qCisJCQkJKiogVGhpcyB1c2VkIHRvIGJlLi4uCisJ
CQkJKioJX2NvbnYodC0+dG1faG91ciAlIDEyID8KKwkJCQkqKgkJdC0+dG1faG91ciAlIDEyIDog
MTIsIDIsICcgJyk7CisJCQkJKiogLi4uYW5kIGhhcyBiZWVuIGNoYW5nZWQgdG8gdGhlIGJlbG93
IHRvCisJCQkJKiogbWF0Y2ggU3VuT1MgNC4xLjEgYW5kIEFybm9sZCBSb2JiaW5zJworCQkJCSoq
IHN0cmZ0aW1lIHZlcnNpb24gMy4wLiAgVGhhdCBpcywgIiVrIiBhbmQKKwkJCQkqKiAiJWwiIGhh
dmUgYmVlbiBzd2FwcGVkLgorCQkJCSoqIChhZG8sIDE5OTMtMDUtMjQpCisJCQkJKi8KKwkJCQlw
dCA9IF9jb252KHQtPnRtX2hvdXIsICIlMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOwor
I2lmZGVmIEtJVENIRU5fU0lOSworCQkJY2FzZSAnSyc6CisJCQkJLyoKKwkJCQkqKiBBZnRlciBh
bGwgdGhpcyB0aW1lLCBzdGlsbCB1bmNsYWltZWQhCisJCQkJKi8KKwkJCQlwdCA9IF9hZGQoImtp
dGNoZW4gc2luayIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisjZW5kaWYgLyogZGVmaW5l
ZCBLSVRDSEVOX1NJTksgKi8KKwkJCWNhc2UgJ2wnOgorCQkJCS8qCisJCQkJKiogVGhpcyB1c2Vk
IHRvIGJlLi4uCisJCQkJKioJX2NvbnYodC0+dG1faG91ciwgMiwgJyAnKTsKKwkJCQkqKiAuLi5h
bmQgaGFzIGJlZW4gY2hhbmdlZCB0byB0aGUgYmVsb3cgdG8KKwkJCQkqKiBtYXRjaCBTdW5PUyA0
LjEuMSBhbmQgQXJub2xkIFJvYmJpbidzCisJCQkJKiogc3RyZnRpbWUgdmVyc2lvbiAzLjAuICBU
aGF0IGlzLCAiJWsiIGFuZAorCQkJCSoqICIlbCIgaGF2ZSBiZWVuIHN3YXBwZWQuCisJCQkJKiog
KGFkbywgMTk5My0wNS0yNCkKKwkJCQkqLworCQkJCXB0ID0gX2NvbnYoKHQtPnRtX2hvdXIgJSAx
MikgPworCQkJCQkodC0+dG1faG91ciAlIDEyKSA6IDEyLAorCQkJCQkiJTJkIiwgcHQsIHB0bGlt
KTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ00nOgorCQkJCXB0ID0gX2NvbnYodC0+dG1fbWlu
LCAiJTAyZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdtJzoKKwkJCQlw
dCA9IF9jb252KHQtPnRtX21vbiArIDEsICIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51
ZTsKKwkJCWNhc2UgJ24nOgorCQkJCXB0ID0gX2FkZCgiXG4iLCBwdCwgcHRsaW0pOworCQkJCWNv
bnRpbnVlOworCQkJY2FzZSAncCc6CisJCQkJcHQgPSBfYWRkKCh0LT50bV9ob3VyID49IChIT1VS
U1BFUkRBWSAvIDIpKSA/CisJCQkJCUxvY2FsZS0+cG0gOgorCQkJCQlMb2NhbGUtPmFtLAorCQkJ
CQlwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnUic6CisJCQkJcHQgPSBfZm10
KCIlSDolTSIsIHQsIHB0LCBwdGxpbSwgd2FybnApOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAn
cic6CisJCQkJcHQgPSBfZm10KCIlSTolTTolUyAlcCIsIHQsIHB0LCBwdGxpbSwgd2FybnApOwor
CQkJCWNvbnRpbnVlOworCQkJY2FzZSAnUyc6CisJCQkJcHQgPSBfY29udih0LT50bV9zZWMsICIl
MDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3MnOgorCQkJCXsKKwkJ
CQkJc3RydWN0IHRtCXRtOworCQkJCQljaGFyCQlidWZbSU5UX1NUUkxFTl9NQVhJTVVNKAorCQkJ
CQkJCQl0aW1lX3QpICsgMV07CisJCQkJCXRpbWVfdAkJbWt0OworCisJCQkJCXRtID0gKnQ7CisJ
CQkJCW1rdCA9IG1rdGltZSgmdG0pOworCQkJCQlpZiAoVFlQRV9TSUdORUQodGltZV90KSkKKwkJ
CQkJCSh2b2lkKSBfc25wcmludGYoYnVmLCBzaXplb2YgYnVmLAorCQkJCQkJICAgICIlbGQiLCAo
bG9uZykgbWt0KTsKKwkJCQkJZWxzZQkodm9pZCkgX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwK
KwkJCQkJCSAgICAiJWx1IiwgKHVuc2lnbmVkIGxvbmcpIG1rdCk7CisJCQkJCXB0ID0gX2FkZChi
dWYsIHB0LCBwdGxpbSk7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnVCc6CisJCQkJ
cHQgPSBfZm10KCIlSDolTTolUyIsIHQsIHB0LCBwdGxpbSwgd2FybnApOworCQkJCWNvbnRpbnVl
OworCQkJY2FzZSAndCc6CisJCQkJcHQgPSBfYWRkKCJcdCIsIHB0LCBwdGxpbSk7CisJCQkJY29u
dGludWU7CisJCQljYXNlICdVJzoKKwkJCQlwdCA9IF9jb252KCh0LT50bV95ZGF5ICsgREFZU1BF
UldFRUsgLQorCQkJCQl0LT50bV93ZGF5KSAvIERBWVNQRVJXRUVLLAorCQkJCQkiJTAyZCIsIHB0
LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICd1JzoKKwkJCQkvKgorCQkJCSoqIEZy
b20gQXJub2xkIFJvYmJpbnMnIHN0cmZ0aW1lIHZlcnNpb24gMy4wOgorCQkJCSoqICJJU08gODYw
MTogV2Vla2RheSBhcyBhIGRlY2ltYWwgbnVtYmVyCisJCQkJKiogWzEgKE1vbmRheSkgLSA3XSIK
KwkJCQkqKiAoYWRvLCAxOTkzLTA1LTI0KQorCQkJCSovCisJCQkJcHQgPSBfY29udigodC0+dG1f
d2RheSA9PSAwKSA/CisJCQkJCURBWVNQRVJXRUVLIDogdC0+dG1fd2RheSwKKwkJCQkJIiVkIiwg
cHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ1YnOgkvKiBJU08gODYwMSB3ZWVr
IG51bWJlciAqLworCQkJY2FzZSAnRyc6CS8qIElTTyA4NjAxIHllYXIgKGZvdXIgZGlnaXRzKSAq
LworCQkJY2FzZSAnZyc6CS8qIElTTyA4NjAxIHllYXIgKHR3byBkaWdpdHMpICovCisJCQkJewor
CQkJCQlpbnQJeWVhcjsKKwkJCQkJaW50CXlkYXk7CisJCQkJCWludAl3ZGF5OworCQkJCQlpbnQJ
dzsKKworCQkJCQl5ZWFyID0gdC0+dG1feWVhciArIFRNX1lFQVJfQkFTRTsKKwkJCQkJeWRheSA9
IHQtPnRtX3lkYXk7CisJCQkJCXdkYXkgPSB0LT50bV93ZGF5OworCQkJCQlmb3IgKCA7IDsgKSB7
CisJCQkJCQlpbnQJbGVuOworCQkJCQkJaW50CWJvdDsKKwkJCQkJCWludAl0b3A7CisKKwkJCQkJ
CWxlbiA9IGlzbGVhcCh5ZWFyKSA/CisJCQkJCQkJREFZU1BFUkxZRUFSIDoKKwkJCQkJCQlEQVlT
UEVSTllFQVI7CisJCQkJCQkvKgorCQkJCQkJKiogV2hhdCB5ZGF5ICgtMyAuLi4gMykgZG9lcwor
CQkJCQkJKiogdGhlIElTTyB5ZWFyIGJlZ2luIG9uPworCQkJCQkJKi8KKwkJCQkJCWJvdCA9ICgo
eWRheSArIDExIC0gd2RheSkgJQorCQkJCQkJCURBWVNQRVJXRUVLKSAtIDM7CisJCQkJCQkvKgor
CQkJCQkJKiogV2hhdCB5ZGF5IGRvZXMgdGhlIE5FWFQKKwkJCQkJCSoqIElTTyB5ZWFyIGJlZ2lu
IG9uPworCQkJCQkJKi8KKwkJCQkJCXRvcCA9IGJvdCAtCisJCQkJCQkJKGxlbiAlIERBWVNQRVJX
RUVLKTsKKwkJCQkJCWlmICh0b3AgPCAtMykKKwkJCQkJCQl0b3AgKz0gREFZU1BFUldFRUs7CisJ
CQkJCQl0b3AgKz0gbGVuOworCQkJCQkJaWYgKHlkYXkgPj0gdG9wKSB7CisJCQkJCQkJKyt5ZWFy
OworCQkJCQkJCXcgPSAxOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQkJaWYgKHlkYXkg
Pj0gYm90KSB7CisJCQkJCQkJdyA9IDEgKyAoKHlkYXkgLSBib3QpIC8KKwkJCQkJCQkJREFZU1BF
UldFRUspOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQkJLS15ZWFyOworCQkJCQkJeWRh
eSArPSBpc2xlYXAoeWVhcikgPworCQkJCQkJCURBWVNQRVJMWUVBUiA6CisJCQkJCQkJREFZU1BF
Uk5ZRUFSOworCQkJCQl9CisJCQkJCWlmICgqZm9ybWF0ID09ICdWJykKKwkJCQkJCXB0ID0gX2Nv
bnYodywgIiUwMmQiLAorCQkJCQkJCXB0LCBwdGxpbSk7CisJCQkJCWVsc2UgaWYgKCpmb3JtYXQg
PT0gJ2cnKSB7CisJCQkJCQkqd2FybnAgPSBJTl9BTEw7CisJCQkJCQlwdCA9IF9jb252KHllYXIg
JSAxMDAsICIlMDJkIiwKKwkJCQkJCQlwdCwgcHRsaW0pOworCQkJCQl9IGVsc2UJcHQgPSBfY29u
dih5ZWFyLCAiJTA0ZCIsCisJCQkJCQkJcHQsIHB0bGltKTsKKwkJCQl9CisJCQkJY29udGludWU7
CisJCQljYXNlICd2JzoKKwkJCQlwdCA9IF9mbXQoIiVlLSViLSVZIiwgdCwgcHQsIHB0bGltLCB3
YXJucCk7CisJCQkJY29udGludWU7CisJCQljYXNlICdXJzoKKwkJCQlwdCA9IF9jb252KCh0LT50
bV95ZGF5ICsgREFZU1BFUldFRUsgLQorCQkJCQkodC0+dG1fd2RheSA/CisJCQkJCSh0LT50bV93
ZGF5IC0gMSkgOgorCQkJCQkoREFZU1BFUldFRUsgLSAxKSkpIC8gREFZU1BFUldFRUssCisJCQkJ
CSIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3cnOgorCQkJCXB0
ID0gX2NvbnYodC0+dG1fd2RheSwgIiVkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJ
CWNhc2UgJ1gnOgorCQkJCXB0ID0gX2ZtdChMb2NhbGUtPlhfZm10LCB0LCBwdCwgcHRsaW0sIHdh
cm5wKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQlpbnQJd2FybjIg
PSBJTl9TT01FOworCisJCQkJcHQgPSBfZm10KExvY2FsZS0+eF9mbXQsIHQsIHB0LCBwdGxpbSwg
Jndhcm4yKTsKKwkJCQlpZiAod2FybjIgPT0gSU5fQUxMKQorCQkJCQl3YXJuMiA9IElOX1RISVM7
CisJCQkJaWYgKHdhcm4yID4gKndhcm5wKQorCQkJCQkqd2FybnAgPSB3YXJuMjsKKwkJCQl9CisJ
CQkJY29udGludWU7CisJCQljYXNlICd5JzoKKwkJCQkqd2FybnAgPSBJTl9BTEw7CisJCQkJcHQg
PSBfY29udigodC0+dG1feWVhciArIFRNX1lFQVJfQkFTRSkgJSAxMDAsCisJCQkJCSIlMDJkIiwg
cHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ1knOgorCQkJCXB0ID0gX2NvbnYo
dC0+dG1feWVhciArIFRNX1lFQVJfQkFTRSwgIiUwNGQiLAorCQkJCQlwdCwgcHRsaW0pOworCQkJ
CWNvbnRpbnVlOworCQkJY2FzZSAnWic6CisJCQkJaWYgKHQtPnRtX2lzZHN0ID49IDApCisJCQkJ
CXB0ID0gX2FkZCh0em5hbWVbdC0+dG1faXNkc3QgIT0gMF0sCisJCQkJCQlwdCwgcHRsaW0pOwor
CQkJCS8qCisJCQkJKiogQzk5IHNheXMgdGhhdCAlWiBtdXN0IGJlIHJlcGxhY2VkIGJ5IHRoZQor
CQkJCSoqIGVtcHR5IHN0cmluZyBpZiB0aGUgdGltZSB6b25lIGlzIG5vdAorCQkJCSoqIGRldGVy
bWluYWJsZS4KKwkJCQkqLworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAneic6CisJCQkJeworCQkJ
CWludAkJZGlmZjsKKwkJCQljaGFyIGNvbnN0ICoJc2lnbjsKKworCQkJCWlmICh0LT50bV9pc2Rz
dCA8IDApCisJCQkJCWNvbnRpbnVlOworCQkJCWNvbnRpbnVlOworCQkJCWlmIChkaWZmIDwgMCkg
eworCQkJCQlzaWduID0gIi0iOworCQkJCQlkaWZmID0gLWRpZmY7CisJCQkJfSBlbHNlCXNpZ24g
PSAiKyI7CisJCQkJcHQgPSBfYWRkKHNpZ24sIHB0LCBwdGxpbSk7CisJCQkJZGlmZiAvPSA2MDsK
KwkJCQlwdCA9IF9jb252KChkaWZmLzYwKSoxMDAgKyBkaWZmJTYwLAorCQkJCQkiJTA0ZCIsIHB0
LCBwdGxpbSk7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnKyc6CisJCQkJcHQgPSBf
Zm10KExvY2FsZS0+ZGF0ZV9mbXQsIHQsIHB0LCBwdGxpbSwKKwkJCQkJd2FybnApOworCQkJCWNv
bnRpbnVlOworCQkJY2FzZSAnJSc6CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJfQorCQl9
CisJCWlmIChwdCA9PSBwdGxpbSkKKwkJCWJyZWFrOworCQkqcHQrKyA9ICpmb3JtYXQ7CisJfQor
CXJldHVybiBwdDsKK30KKworCitzaXplX3QKK3N0cmZ0aW1lKGNoYXIgKiBjb25zdCBzLCBjb25z
dCBzaXplX3QgbWF4c2l6ZSwgY29uc3QgY2hhciAqIGNvbnN0IGZvcm1hdCwgY29uc3Qgc3RydWN0
IHRtICogY29uc3QgdCkKK3sKKwljaGFyICoJcDsKKwlpbnQJd2FybjsKKworCS8vdHpzZXQoKTsK
KworCXdhcm4gPSBJTl9OT05FOworCXAgPSBfZm10KCgoZm9ybWF0ID09IE5VTEwpID8gIiVjIiA6
IGZvcm1hdCksIHQsIHMsIHMgKyBtYXhzaXplLCAmd2Fybik7CisKKwlpZiAocCA9PSBzICsgbWF4
c2l6ZSkgeworCQlpZiAobWF4c2l6ZSA+IDApCisJCQlzW21heHNpemUgLSAxXSA9ICdcMCc7CisJ
CXJldHVybiAwOworCX0KKwkqcCA9ICdcMCc7CisJcmV0dXJuIHAgLSBzOworfQorCisKKworLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bXRpbWUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKworCisKK3N0YXRpYyBzdHJ1Y3QgdG0gbXl0bTsKKworc3RhdGljIGlu
dCBETW9udGhbMTNdID0geyAwLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwz
MzQsMzY1IH07CitzdGF0aWMgaW50IG1vbnRoQ29kZXNbMTJdID0geyA2LCAyLCAyLCA1LCAwLCAz
LCA1LCAxLCA0LCA2LCAyLCA0IH07CisKKworc3RhdGljIGludAorY2FsY0RheU9mV2Vlayhjb25z
dCBzdHJ1Y3QgdG0qIG5UTSkKK3sKKwlpbnQgZGF5OworCQorCWRheSA9IChuVE0tPnRtX3llYXIl
MTAwKTsKKwlkYXkgKz0gZGF5LzQ7CisJZGF5ICs9IG1vbnRoQ29kZXNbblRNLT50bV9tb25dOwor
CWRheSArPSBuVE0tPnRtX21kYXk7CisJd2hpbGUoZGF5Pj03KQorCQlkYXkgLT0gNzsKKworCXJl
dHVybiBkYXk7Cit9CisKKworc3RhdGljIHN0cnVjdCB0bSAqCitnbXRpbWUoY29uc3QgdGltZV90
ICp0aW1lcikKK3sKKwl1bnNpZ25lZCBsb25nIHggPSAqdGltZXI7CisJaW50IGltaW4sIGlocnMs
IGlkYXksIGl5cnM7CisJaW50IHNlYywgbWluLCBocnMsIGRheSwgbW9uLCB5cnM7CisJaW50IGxk
YXksIHFkYXksIGpkYXksIG1kYXk7CisKKworCWltaW4gPSB4IC8gNjA7CQkJCQkJCS8vIHdob2xl
IG1pbnV0ZXMgc2luY2UgMS8xLzcwCisJc2VjID0geCAtICg2MCAqIGltaW4pOwkJCQkJLy8gbGVm
dG92ZXIgc2Vjb25kcworCWlocnMgPSBpbWluIC8gNjA7CQkJCQkJLy8gd2hvbGUgaG91cnMgc2lu
Y2UgMS8xLzcwCisJbWluID0gaW1pbiAtIDYwICogaWhyczsJCQkJCS8vIGxlZnRvdmVyIG1pbnV0
ZXMKKwlpZGF5ID0gaWhycyAvIDI0OwkJCQkJCS8vIHdob2xlIGRheXMgc2luY2UgMS8xLzcwCisJ
aHJzID0gaWhycyAtIDI0ICogaWRheTsJCQkJCS8vIGxlZnRvdmVyIGhvdXJzCisJaWRheSA9IGlk
YXkgKyAzNjUgKyAzNjY7IAkJCQkvLyB3aG9sZSBkYXlzIHNpbmNlIDEvMS82OAorCWxkYXkgPSBp
ZGF5IC8gKCggNCogMzY1KSArIDEpOwkJCS8vIHF1YWR5ciA9IDQgeXIgcGVyaW9kID0gMTQ2MSBk
YXlzCisJcWRheSA9IGlkYXkgJSAoKCA0ICogMzY1KSArIDEpOwkJCS8vIGRheXMgc2luY2UgY3Vy
cmVudCBxdWFkeXIgYmVnYW4KKwlpZihxZGF5ID49ICgzMSArIDI5KSkJCQkJCS8vIGlmIHBhc3Qg
ZmViIDI5IHRoZW4KKwkJbGRheSA9IGxkYXkgKyAxOwkJCQkJLy8gYWRkIHRoaXMgcXVhZHlyknMg
bGVhcCBkYXkgdG8gdGhlCisJCQkJCQkJCQkJCS8vICMgb2YgcXVhZHlycyAobGVhcCBkYXlzKSBz
aW5jZSA2OAorCWl5cnMgPSAoaWRheSAtIGxkYXkpIC8gMzY1OwkJCQkvLyB3aG9sZSB5ZWFycyBz
aW5jZSAxOTY4CisJamRheSA9IGlkYXkgLSAoaXlycyAqIDM2NSkgLSBsZGF5OwkJLy8gZGF5cyBz
aW5jZSAxIC8xIG9mIGN1cnJlbnQgeWVhci4KKwlpZihxZGF5IDw9IDM2NSAmJiBxZGF5ID49IDYw
KQkJCS8vIGlmIHBhc3QgMi8yOSBhbmQgYSBsZWFwIHllYXIgdGhlbgorCQlqZGF5ID0gamRheSAr
IDE7CQkJCQkvLyBhZGQgYSBsZWFwIGRheSB0byB0aGUgIyBvZiB3aG9sZQorCQkJCQkJCQkJCQkv
LyBkYXlzIHNpbmNlIDEvMSBvZiBjdXJyZW50IHllYXIKKwl5cnMgPSBpeXJzICsgMTk2ODsJCQkJ
CQkvLyBjb21wdXRlIHllYXIKKwltb24gPSAxMzsJCQkJCQkJCS8vIGVzdGltYXRlIG1vbnRoICgg
KzEpCisJbWRheSA9IDM2NjsJCQkJCQkJCS8vIG1heCBkYXlzIHNpbmNlIDEvMSBpcyAzNjUKKwl3
aGlsZShqZGF5IDwgbWRheSkJCQkJCQkvLyBtZGF5ID0gIyBvZiBkYXlzIHBhc3NlZCBmcm9tIDEv
MQorCXsJCQkJCQkJCQkJLy8gdW50aWwgZmlyc3QgZGF5IG9mIGN1cnJlbnQgbW9udGgKKwkJbW9u
ID0gbW9uIC0gMTsJCQkJCQkvLyBtb24gPSBtb250aCAoZXN0aW1hdGVkKQorCQltZGF5ID0gRE1v
bnRoW21vbl07CQkJCQkvLyAjIGVsYXBzZWQgZGF5cyBhdCBmaXJzdCBvZiCUbW9ulAorCQlpZigo
bW9uID4gMikgJiYgKHlycyAlIDQpID09IDApCQkvLyBpZiBwYXN0IDIvMjkgYW5kIGxlYXAgeWVh
ciB0aGVuCisJCQltZGF5ID0gbWRheSArIDE7CQkJCS8vIGFkZCBsZWFwIGRheQorCQkJCQkJCQkJ
CQkvLyBjb21wdXRlIG1vbnRoIGJ5IGRlY3JlbWVudGluZworCX0JCQkJCQkJCQkJLy8gbW9udGgg
dW50aWwgZm91bmQKKwkJCisJZGF5ID0gamRheSAtIG1kYXkgKyAxOwkJCQkJLy8gY29tcHV0ZSBk
YXkgb2YgbW9udGgKKworCW15dG0udG1fc2VjID0gc2VjOworCW15dG0udG1fbWluID0gbWluOwor
CW15dG0udG1faG91ciA9IGhyczsKKwlteXRtLnRtX21kYXkgPSBkYXk7CisJbXl0bS50bV9tb24g
PSBtb247CisJbXl0bS50bV95ZWFyID0geXJzIC0gMTkwMDsKKworCW15dG0udG1fd2RheSA9IGNh
bGNEYXlPZldlZWsoJm15dG0pOworCW15dG0udG1feWRheSA9IGpkYXk7CisJbXl0bS50bV9pc2Rz
dCA9IDA7CisKKwlyZXR1cm4gJm15dG07Cit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsdGltZSgpIC0gc2ltcGx5IHVzaW5nIGdtdGlt
ZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCitz
dHJ1Y3QgdG0gKgorbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqdGltZXIpCit7CisJcmV0dXJuIGdt
dGltZSh0aW1lcik7Cit9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9u
cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggOThkZTkxYy4u
ZDVmYWY0MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuY3BwCisr
KyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtMjQsNiArMjQsMTEgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShXSU5DRSkKKyNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKIAogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CkBAIC0zNCw3ICszOSw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ0ZTdHJpbmcuaD4KICNlbmRpZgogCi0jaWYgQ09NUElMRVIoTVNWQykKKyNpZiBDT01QSUxF
UihNU1ZDKSAmJiAhUExBVEZPUk0oV0lOQ0UpCiAjaWZuZGVmIFdJTlZFUgogI2RlZmluZSBXSU5W
RVIgMHgwNTAwCiAjZW5kaWYKQEAgLTY2LDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgdnByaW50Zl9z
dGRlcnJfY29tbW9uKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQogICAgICAgICBD
RlJlbGVhc2Uoc3RyKTsKICAgICAgICAgQ0ZSZWxlYXNlKGNmRm9ybWF0KTsKICAgICB9IGVsc2UK
LSNlbGlmIENPTVBJTEVSKE1TVkMpCisjZWxpZiBDT01QSUxFUihNU1ZDKSAmJiAhUExBVEZPUk0o
V0lOQ0UpCiAgICAgaWYgKElzRGVidWdnZXJQcmVzZW50KCkpIHsKICAgICAgICAgc2l6ZV90IHNp
emUgPSAxMDI0OwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5o
IGIvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAppbmRleCA4NDQ5NTYzLi4zNWZhNzc3
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgKQEAgLTEyNSw2ICsxMjUsMTQgQEAgdm9pZCBXVEZM
b2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlv
biwgV1RGTG9nQ2hhbm4KIAogLyogQVNTRVJULCBBU1NFUlRfV0lUSF9NRVNTQUdFLCBBU1NFUlRf
Tk9UX1JFQUNIRUQgKi8KIAorI2lmIFBMQVRGT1JNKFdJTkNFKQorLyogRklYTUU6IFdlIGluY2x1
ZGUgdGhpcyBoZXJlIG9ubHkgdG8gYXZvaWQgYSBjb25mbGljdCB3aXRoIHRoZSBBU1NFUlQgbWFj
cm8uICovCisjaW5jbHVkZSA8d2luZG93cy5oPgorI3VuZGVmIG1pbgorI3VuZGVmIG1heAorI3Vu
ZGVmIEVSUk9SCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTl9PUykKIC8qIEZJWE1FOiBDaGFu
Z2UgdG8gdXNlIHNvbWV0aGluZyBvdGhlciB0aGFuIEFTU0VSVCB0byBhdm9pZCB0aGlzIGNvbmZs
aWN0IHdpdGggd2luMzIuICovCiAjdW5kZWYgQVNTRVJUCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5j
cHAKaW5kZXggMjc5YTIxYS4uOGNlNTcxOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3Rm
L0Zhc3RNYWxsb2MuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcApA
QCAtOTYsNiArOTYsMTUgQEAKIAogI2RlZmluZSBUQ01BTExPQ19UUkFDS19ERUNPTU1JVEVEX1NQ
QU5TIChIQVZFKFZJUlRVQUxBTExPQykpCiAKKyNpZiBQTEFURk9STShXSU5DRSkKKy8qIE9uIFdp
bmRvd3MgQ0UgdGhlcmUncyBubyBhYm9ydCgpIGFuZCBvbiByZWd1bGFyIFdpbmRvd3MKKyAgIGFi
b3J0KCkgZXhpdHMgd2l0aCBleGl0IGNvZGUgMy4gKi8KK3N0YXRpYyB2b2lkIGFib3J0KCkKK3sK
KyAgICBleGl0KDMpOworfQorI2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiBuYW1lc3BhY2UgV1RG
IHsKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaCBiL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NYXRoRXh0cmFzLmgKaW5kZXggYjEyMzAyMS4uNWUyZWFjYyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvTWF0aEV4dHJhcy5oCkBAIC00MCw4ICs0MCwxMSBAQAogI2VuZGlmCiAKICNpZiBDT01Q
SUxFUihNU1ZDKQotCisjaWYgUExBVEZPUk0oV0lOQ0UpCisjaW5jbHVkZSA8c3RkbGliLmg+Cisj
ZWxzZQogI2luY2x1ZGUgPHhtYXRoLmg+CisjZW5kaWYKICNpbmNsdWRlIDxsaW1pdHM+CiAKICNp
ZiBIQVZFKEZMT0FUX0gpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDcxZDI0ZDQuLmRkYzNkMmIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC0yMDQsNiArMjA0LDIwIEBACiAjZGVmaW5lIFdURl9Q
TEFURk9STV9CSUdfRU5ESUFOIDEKICNlbmRpZgogCisvKiBQTEFURk9STShXSU5DRSkgJiYgUExB
VEZPUk0oUVQpCisgICBXZSBjYW4gbm90IGRldGVybWluZSB0aGUgZW5kaWFuZXNzIGF0IGNvbXBp
bGUgdGltZS4gRm9yCisgICBRdCBmb3IgV2luZG93cyBDRSB0aGUgZW5kaWFuZXNzIGlzIHNwZWNp
ZmllZCBpbiB0aGUKKyAgIGRldmljZSBzcGVjaWZpYyBtYWtlc3BlYworKi8KKyNpZiBQTEFURk9S
TShXSU5DRSkgJiYgUExBVEZPUk0oUVQpCisjICAgaW5jbHVkZSA8UXRHbG9iYWw+CisjICAgdW5k
ZWYgV1RGX1BMQVRGT1JNX0JJR19FTkRJQU4KKyMgICB1bmRlZiBXVEZfUExBVEZPUk1fTUlERExF
X0VORElBTgorIyAgIGlmIFFfQllURV9PUkRFUiA9PSBRX0JJR19FRElBTgorIyAgICAgICBkZWZp
bmUgV1RGX1BMQVRGT1JNX0JJR19FTkRJQU4gMQorIyAgIGVuZGlmCisjZW5kaWYKKwogLyogQ29t
cGlsZXIgKi8KIAogLyogQ09NUElMRVIoTVNWQykgKi8KQEAgLTI4OSwxMSArMzAzLDE4IEBACiAj
ZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMQogI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMQogI2Rl
ZmluZSBIQVZFX1NZU19USU1FQl9IIDEKKyNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCiAKICNl
bGlmIFBMQVRGT1JNKFdJTl9PUykKIAogI2RlZmluZSBIQVZFX0ZMT0FUX0ggMQorI2lmIFBMQVRG
T1JNKFdJTkNFKQorI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDAKKyNkZWZpbmUgSEFWRV9FUlJO
T19IIDAKKyNlbHNlCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQorI2RlZmluZSBIQVZFX1NZ
U19UWVBFU19IIDEKKyNlbmRpZgogI2RlZmluZSBIQVZFX1ZJUlRVQUxBTExPQyAxCiAKICNlbHNl
CkBAIC0zMDYsNiArMzI3LDcgQEAKICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQogI2RlZmluZSBI
QVZFX1NZU19QQVJBTV9IIDEKICNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKKyNkZWZpbmUgSEFW
RV9TWVNfVFlQRVNfSCAxCiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKaW5kZXggMjQy
ODdlNi4uMTBjNGJmZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaApAQCAtNTksMTEgKzU5LDE1IEBA
CiAjaWZuZGVmIFRocmVhZGluZ19oCiAjZGVmaW5lIFRocmVhZGluZ19oCiAKKyNpZiBQTEFURk9S
TShXSU5DRSkKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCi0jaWYgUExBVEZPUk0oV0lOX09TKQorI2lmIFBMQVRGT1JNKFdJTl9PUykg
JiYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbGlmIFBMQVRGT1JN
KERBUldJTikKICNpbmNsdWRlIDxsaWJrZXJuL09TQXRvbWljLmg+CkBAIC0xNzIsNyArMTc2LDcg
QEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXSU5fT1MpCiAjZGVmaW5lIFdURl9VU0VfTE9DS0ZS
RUVfVEhSRUFEU0FGRVNIQVJFRCAxCiAKLSNpZiBDT01QSUxFUihNSU5HVykgfHwgQ09NUElMRVIo
TVNWQzcpCisjaWYgQ09NUElMRVIoTUlOR1cpIHx8IENPTVBJTEVSKE1TVkM3KSB8fCBQTEFURk9S
TShXSU5DRSkKIGlubGluZSB2b2lkIGF0b21pY0luY3JlbWVudChpbnQqIGFkZGVuZCkgeyBJbnRl
cmxvY2tlZEluY3JlbWVudChyZWludGVycHJldF9jYXN0PGxvbmcqPihhZGRlbmQpKTsgfQogaW5s
aW5lIGludCBhdG9taWNEZWNyZW1lbnQoaW50KiBhZGRlbmQpIHsgcmV0dXJuIEludGVybG9ja2Vk
RGVjcmVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8bG9uZyo+KGFkZGVuZCkpOyB9CiAjZWxzZQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL3dpbi9NYWluVGhyZWFkV2luLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3d0Zi93aW4vTWFpblRocmVhZFdpbi5jcHAKaW5kZXggOWYwNWQyMi4uN2EyZjY2
MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3dpbi9NYWluVGhyZWFkV2luLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS93dGYvd2luL01haW5UaHJlYWRXaW4uY3BwCkBAIC0zMSw3ICsz
MSw5IEBACiAKICNpbmNsdWRlICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5nLmgi
CisjaWYgIVBMQVRGT1JNKFdJTkNFKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgogCiBu
YW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA1MGY1NDBmLi43OGVhMDVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDA4LTA5
LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBR
dCBwb3J0IG9mIFdlYktpdCBjb21waWxlIG9uIFdpbmRvd3MgQ0UKKworICAgICAgICAqIFdlYkNv
cmUucHJvOiBWYXJpb3VzIGZpeGVzIHRvIGluY2x1ZGUgd2luZG93cyBzcGVjaWZpYyBidWlsZCBv
cHRpb25zCisgICAgICAgIGFsc28gaW4gdGhlIFdpbmRvd3MgQ0UgYnVpbGQuCisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBlcnJuby5o
IGluY2x1c2lvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6IENoYW5nZWQgUV9P
U19XSU4zMiB0byBRX09TX1dJTiB0byBpbmNsdWRlIENFLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Z2V0V2luZG93c0NvbnRleHQpOiBTZXRXb3JsZFRyYW5zZm9ybSBpcworICAg
ICAgICBub3QgYXZhaWxhYmxlIG9uIENFLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L1BhdGhRdC5jcHA6IEFkZGVkIGxvY2FsIGRlZmluaXRpb24gb2YgTV9QSS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwOiBDaGFuZ2VkIFFfT1NfV0lOMzIgdG8gUV9PU19X
SU4gdG8gaW5jbHVkZSBDRS4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9LZXlib2FyZENvZGVzLmg6
IEV4dGVuZCAjaWRlZnMgdG8gZGVmaW5lIHRoZSBtaXNzaW5nIE9FTQorICAgICAgICBjb25zdGFu
dHMgb24gQ0UuCisgICAgICAgICogcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDog
QWRkZWQgc3R1YnMgZm9yIHBsdWdpbnMuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9SZWd1bGFy
RXhwcmVzc2lvbi5jcHA6IERvbid0IGluY2x1ZGUgc3lzL3R5cGVzLmgKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGlt
ZSk6IEltcGxlbWVudGVkIGZvciBXaW5kb3dzIENFLgorICAgICAgICAoV2ViQ29yZTo6dXNlcklk
bGVUaW1lKTogRG9uJ3QgdXNlIEdldExhc3RJbnB1dEluZm8gb24gQ0UsIGl0IGRvZXMgbm90Cisg
ICAgICAgIGV4aXN0LgorCisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3Ju
ZW1hbm5AdHJvbGx0ZWNoLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KIAogICAg
ICAgICBGaXggY29tcGlsYXRpb24gb2YgdGhlIFF0IHBvcnQgd2l0aCBkaXNhYmxlZCBwbHVnaW5z
IG9uIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IDRiOTQzYjMuLjVmOTVlNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTcsNyArMTcsNyBAQCBDT05G
SUcoUVRESVJfYnVpbGQpIHsKIAogaXNFbXB0eShHRU5FUkFURURfU09VUkNFU19ESVIpOkdFTkVS
QVRFRF9TT1VSQ0VTX0RJUiA9IHRtcAogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIID0gJCRH
RU5FUkFURURfU09VUkNFU19ESVIvCi13aW4zMi0qOiBHRU5FUkFURURfU09VUkNFU19ESVJfU0xB
U0ggfj0gc3wvfFx8Cit3aW4zMi0qfHdpbmNlKjogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNI
IH49IHN8L3xcfAogCiAhQ09ORklHKFFURElSX2J1aWxkKSB7CiAgICAgIE9CSkVDVFNfRElSID0g
dG1wCkBAIC00Nyw3ICs0NywxNSBAQCBmcmVlYnNkLSo6IERFRklORVMgKz0gSEFWRV9QVEhSRUFE
X05QX0gKIAogREVGSU5FUyArPSBCVUlMRF9XRUJLSVQKIAotIUNPTkZJRyhRVERJUl9idWlsZCk6
d2luMzItKjogREVGSU5FUyArPSBFTkFCTEVfSUNPTkRBVEFCQVNFPTAgRU5BQkxFX0RBVEFCQVNF
PTAKKyFDT05GSUcoUVRESVJfYnVpbGQpOndpbjMyOiBERUZJTkVTICs9IEVOQUJMRV9JQ09OREFU
QUJBU0U9MCBFTkFCTEVfREFUQUJBU0U9MAord2luY2UqIHsKKyMgICAgREVGSU5FUyArPSBFTkFC
TEVfU1ZHPTAgRU5BQkxFX1hQQVRIPTAgRU5BQkxFX1hCTD0wIFwKKyMgICAgICAgICAgICAgICBF
TkFCTEVfU1ZHX0FOSU1BVElPTj0wIEVOQUJMRV9TVkdfVVNFPTAgIFwKKyMgICAgICAgICAgICAg
ICBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTAgRU5BQkxFX1NWR19BU19JTUFHRT0wCisKKyAg
ICBJTkNMVURFUEFUSCArPSAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9vcy13aW5jZQorICAgIElO
Q0xVREVQQVRIICs9ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyCit9CiAKICMgUGlj
ayB1cCAzcmRwYXJ0eSBsaWJyYXJpZXMgZnJvbSBJTkNMVURFL0xJQiBqdXN0IGxpa2Ugd2l0aCBN
U1ZDCiB3aW4zMi1nKysgewpAQCAtMTAzNCw3ICsxMDQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
Li4vV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAgXAogICAgIC4uL1dlYktp
dC9xdC9BcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwCiAKLSAgICB3aW4zMi0qOiBTT1VSQ0VTICs9
IHBsYXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2luLmNwcAorICAgIHdpbjMyLSp8d2luY2UqOiBTT1VS
Q0VTICs9IHBsYXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2luLmNwcAogICAgIGVsc2U6IFNPVVJDRVMg
Kz0gcGxhdGZvcm0vcXQvU3lzdGVtVGltZVF0LmNwcAogCiAgICAgd2luMzItKiB7CkBAIC0xODIz
LDcgKzE4MzEsNyBAQCBhZGRFeHRyYUNvbXBpbGVyV2l0aEhlYWRlcih4cGF0aGJpc29uKQogCiAg
ICAgVkVSU0lPTj0kJHtRVF9NQUpPUl9WRVJTSU9OfS4kJHtRVF9NSU5PUl9WRVJTSU9OfS4kJHtR
VF9QQVRDSF9WRVJTSU9OfQogCi0gICAgd2luMzItKiB7CisgICAgd2luMzItKnx3aW5jZSogewog
ICAgICAgICBETExERVNURElSID0gJCRPVVRQVVRfRElSL2JpbgogCiAgICAgICAgIGRsbHRhcmdl
dC5jb21tYW5kcyA9ICQoQ09QWV9GSUxFKSAkKERFU1RESVIpJChUQVJHRVQpICQkW1FUX0lOU1RB
TExfQklOU10KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNw
cCBiL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCAxOTM0ZWU1Li43
MzE1ZmJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAK
KysrIGIvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC01Niw4ICs1Niw2
IEBACiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxlcnJuby5oPgot
CiAvLyBGb3IgbWV0aG9kcyB0aGF0IGFyZSBtZWFudCB0byBzdXBwb3J0IEFQSSBmcm9tIHRoZSBt
YWluIHRocmVhZCAtIHNob3VsZCBub3QgYmUgY2FsbGVkIGludGVybmFsbHkKICNkZWZpbmUgQVNT
RVJUX05PVF9TWU5DX1RIUkVBRCgpIEFTU0VSVCghbV9zeW5jVGhyZWFkUnVubmluZyB8fCAhSVNf
SUNPTl9TWU5DX1RIUkVBRCgpKQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
eXN0ZW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGZhNjkwNDIuLjAz
NWU5OWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC05Myw3ICs5Myw3IEBAIGNvbnN0IFBsYXRm
b3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKICNpZiBkZWZpbmVk
KFFfV1NfWDExKSB8fCBkZWZpbmVkKFFfV1NfTUFDKSB8fCBkZWZpbmVkKFFfV1NfUVdTKQogdHlw
ZWRlZiBRTGlicmFyeSogUGxhdGZvcm1Nb2R1bGU7CiB0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3Jt
TW9kdWxlVmVyc2lvbjsKLSNlbGlmIGRlZmluZWQoUV9PU19XSU4zMikKKyNlbGlmIGRlZmluZWQo
UV9PU19XSU4pCiB0eXBlZGVmIEhNT0RVTEUgUGxhdGZvcm1Nb2R1bGU7CiBzdHJ1Y3QgUGxhdGZv
cm1Nb2R1bGVWZXJzaW9uIHsKICAgICB1bnNpZ25lZCBsZWFzdFNpZzsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggZmU5ODJj
Zi4uNDZlMzM5OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAKQEAgLTEwNTMsNiArMTA1Myw3IEBAIEhEQyBHcmFwaGljc0NvbnRl
eHQ6OmdldFdpbmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9y
dEFscGhhCiAgICAgICAgIG1lbXNldChibXBJbmZvLmJtQml0cywgMCwgYnVmZmVyU2l6ZSk7CiAg
ICAgfQogCisjaWYgIVBMQVRGT1JNKFdJTkNFKQogICAgIC8vIE1ha2Ugc3VyZSB3ZSBjYW4gZG8g
d29ybGQgdHJhbnNmb3Jtcy4KICAgICBTZXRHcmFwaGljc01vZGUoYml0bWFwREMsIEdNX0FEVkFO
Q0VEKTsKIApAQCAtMTA2NSw3ICsxMDY2LDcgQEAgSERDIEdyYXBoaWNzQ29udGV4dDo6Z2V0V2lu
ZG93c0NvbnRleHQoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vbCBzdXBwb3J0QWxwaGEKICAg
ICB4Zm9ybS5lRHggPSAtZHN0UmVjdC54KCk7CiAgICAgeGZvcm0uZUR5ID0gLWRzdFJlY3QueSgp
OwogICAgIDo6U2V0V29ybGRUcmFuc2Zvcm0oYml0bWFwREMsICZ4Zm9ybSk7Ci0KKyNlbmRpZgog
CiAgICAgcmV0dXJuIGJpdG1hcERDOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9QYXRoUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRo
UXQuY3BwCmluZGV4IDc2ZjM3NWMuLjMzOWMyZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1BhdGhRdC5jcHAKQEAgLTM5LDYgKzM5LDEwIEBACiAjZGVmaW5lIF9VU0VfTUFUSF9ERUZJ
TkVTCiAjaW5jbHVkZSA8bWF0aC5oPgogCisjaWZuZGVmIE1fUEkKKyMgICBkZWZpbmUgTV9QSSAz
LjE0MTU5MjY1MzU4OTc5MzIzODQ2CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXRoOjpQYXRoKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcAppbmRleCA1Zjk3ODRm
Li42MTE0NzExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgYm9vbCB1bmxvYWRNb2R1bGUoUGxhdGZvcm1Nb2R1bGUgbW9kdWxlKQogfQogI2Vu
ZGlmCiAKLSNpZiBkZWZpbmVkKFFfT1NfV0lOMzIpCisjaWYgZGVmaW5lZChRX09TX1dJTikKIGJv
b2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlIG1vZHVsZSkKIHsKICAgICByZXR1cm4gOjpG
cmVlTGlicmFyeShtb2R1bGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LZXli
b2FyZENvZGVzLmggYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0tleWJvYXJkQ29kZXMuaAppbmRleCAy
MWQzYzY3Li5mZjU0OGIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tleWJvYXJk
Q29kZXMuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L0tleWJvYXJkQ29kZXMuaApAQCAtNDcy
LDYgKzQ3MiwxMCBAQCBjb25zdCBpbnQgVktfTUVESUFfTEFVTkNIX0FQUDEgPSAweEI2OwogLy8g
VktfTEFVTkNIX0FQUDIgKEI3KSBXaW5kb3dzIDIwMDAvWFA6IFN0YXJ0IEFwcGxpY2F0aW9uIDIg
a2V5CiBjb25zdCBpbnQgVktfTUVESUFfTEFVTkNIX0FQUDIgPSAweEI3OwogCisjZW5kaWYgLy8g
IVBMQVRGT1JNKFdJTl9PUykKKworI2lmICFQTEFURk9STShXSU5fT1MpIHx8IFBMQVRGT1JNKFdJ
TkNFKQorCiAvLyBWS19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVy
czsgaXQgY2FuIHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBz
dGFuZGFyZCBrZXlib2FyZCwgdGhlICc7Oicga2V5CiBjb25zdCBpbnQgVktfT0VNXzEgPSAweEJB
OwogCkBAIC01MDgsNiArNTEyLDEwIEBAIGNvbnN0IGludCBWS19PRU1fNyA9IDB4REU7CiAvLyBW
S19PRU1fOCAoREYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZh
cnkgYnkga2V5Ym9hcmQuCiBjb25zdCBpbnQgVktfT0VNXzggPSAweERGOwogCisjZW5kaWYgLy8g
IVBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oV0lOQ0UpCisKKyNpZiAhUExBVEZPUk0oV0lO
X09TKQorCiAvLyBWS19PRU1fMTAyIChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFu
Z2xlIGJyYWNrZXQga2V5IG9yIHRoZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtl
eWJvYXJkCiBjb25zdCBpbnQgVktfT0VNXzEwMiA9IDB4RTI7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCBlZjA4Yjc2Li40MjVlZDEwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCkBAIC03Myw3ICs3Myw3IEBA
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgIWRlZmluZWQoUV9XU19YMTEpICYm
ICFkZWZpbmVkKFFfV1NfV0lOKQorI2lmICghZGVmaW5lZChRX1dTX1gxMSkgJiYgIWRlZmluZWQo
UV9XU19XSU4pKSB8fCBkZWZpbmVkKFFfT1NfV0lOQ0UpCiAKIGJvb2wgUGx1Z2luUGFja2FnZTo6
ZmV0Y2hJbmZvKCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KIHVuc2lnbmVk
IFBsdWdpblBhY2thZ2U6Omhhc2goKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAw
OyB9CkBAIC0xMDAsNiArMTAwLDEyIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBO
VmFyaWFibGUsIHZvaWQqKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBOUEVSCiBQbHVnaW5W
aWV3Ojp+UGx1Z2luVmlldygpIHt9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoUV9PU19XSU5DRSkK
K1ZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMo
KSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9Cit2b2lkIFBs
dWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+
JiBwYXRocykgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyB9Citib29sIFBsdWdpbkRhdGFiYXNl
Ojppc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkgeyBu
b3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZEtleVNpemVzKCkgeyBub3RJbXBsZW1l
bnRlZCgpOyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKaW5kZXggMWI5MzNmZi4uZDE3ODU1ZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCkBAIC0zMSw3ICszMSw5IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8cGNyZS9wY3JlLmg+CisjaWYgSEFWRShTWVNfVFlQRVNfSCkKICNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbVRpbWVXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU3lzdGVtVGltZVdpbi5jcHAKaW5kZXggNmUxNzMxNy4uMDBkZTZmMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHAKQEAgLTM0LDcgKzM0LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGRvdWJsZSBjdXJyZW50VGltZSgpCiB7CiAgICAgRklMRVRJTUUgZnQ7CisjaWYg
UExBVEZPUk0oV0lOQ0UpCisgICAgU1lTVEVNVElNRSBzeXN0aW1lOworICAgIEdldFN5c3RlbVRp
bWUoJnN5c3RpbWUpOworICAgIFN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZzeXN0aW1lLCAmZnQpOwor
I2Vsc2UKICAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmZnQpOworI2VuZGlmCiAKICAgICAv
LyBBcyBwZXIgV2luZG93cyBkb2N1bWVudGF0aW9uIGZvciBGSUxFVElNRSwgY29weSB0aGUgcmVz
dWx0aW5nIEZJTEVUSU1FIHN0cnVjdHVyZSB0byBhCiAgICAgLy8gVUxBUkdFX0lOVEVHRVIgc3Ry
dWN0dXJlIHVzaW5nIG1lbWNweSAodXNpbmcgbWVtY3B5IGluc3RlYWQgb2YgZGlyZWN0IGFzc2ln
bm1lbnQgY2FuCkBAIC01NiwxMCArNjIsMTIgQEAgZG91YmxlIGN1cnJlbnRUaW1lKCkKIAogZmxv
YXQgdXNlcklkbGVUaW1lKCkKIHsKKyNpZiAhUExBVEZPUk0oV0lOQ0UpCiAgICAgTEFTVElOUFVU
SU5GTyBsYXN0SW5wdXRJbmZvID0gezB9OwogICAgIGxhc3RJbnB1dEluZm8uY2JTaXplID0gc2l6
ZW9mKExBU1RJTlBVVElORk8pOwogICAgIGlmICg6OkdldExhc3RJbnB1dEluZm8oJmxhc3RJbnB1
dEluZm8pKQogICAgICAgICByZXR1cm4gKEdldFRpY2tDb3VudCgpIC0gbGFzdElucHV0SW5mby5k
d1RpbWUpICogMC4wMDE7IC8vIDo6R2V0VGlja0NvdW50IHJldHVybnMgbXMgb2YgdXB0aW1lIHZh
bGlkIGZvciB1cCB0byA0OS43IGRheXMuCisjZW5kaWYKICAgICByZXR1cm4gRkxUX01BWDsgLy8g
cmV0dXJuIGFuIGFyYml0cmFyaWx5IGhpZ2ggdXNlcklkbGVUaW1lIHNvIHRoYXQgcmVsZWFzaW5n
IHBhZ2VzIGZyb20gdGhlIHBhZ2UgY2FjaGUgaXNuJ3QgcG9zdHBvbmVkLiAKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViS2l0LnBybyBiL1dlYktpdC5wcm8KaW5kZXggMDM1ZjczYS4uMTgwMTQyNiAxMDA2
NDQKLS0tIGEvV2ViS2l0LnBybworKysgYi9XZWJLaXQucHJvCkBAIC04LDUgKzgsNSBAQCBTVUJE
SVJTICs9IFwKICAgICAgICAgV2ViS2l0L3F0L1F0TGF1bmNoZXIgXAogICAgICAgICBXZWJLaXQv
cXQvdGVzdHMKIAotIXdpbjMyLSo6IFNVQkRJUlMgKz0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCishd2luMzI6IFNVQkRJUlMgKz0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCiAKLS0gCjEuNi4wLjIuZzJlYmMw
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23295</attachid>
            <date>2008-09-09 07:45:00 -0700</date>
            <delta_ts>2008-09-11 00:26:20 -0700</delta_ts>
            <desc>This patch from George Staikos implements currentThreadStackBase on CE</desc>
            <filename>0003-Implemented-currentThreadStackBase-on-Windows-CE.patch</filename>
            <type>text/plain</type>
            <size>4062</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBiNmNlNTFiYjRiNWFjOTQ5ZGFhNmZjNThjYmMwYjAxNjgwYjEwNjMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2UgU3RhaWtvcyA8Z2VvcmdlQHN0YWlrb3MubmV0PgpE
YXRlOiBUdWUsIDkgU2VwIDIwMDggMTY6MDE6MjkgKzAyMDAKU3ViamVjdDogW1BBVENIXSBJbXBs
ZW1lbnRlZCBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkgb24gV2luZG93cyBDRS4KCi0tLQogSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgfCAgIDExICsrKysrCiBKYXZhU2NyaXB0Q29y
ZS9ranMvY29sbGVjdG9yLmNwcCB8ICAgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDFkNTRkZS4uNGI0Y2Y4YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDA4LTA5LTA5ICBHZW9yZ2UgU3RhaWtvcyAgPGdlb3JnZUBzdGFpa29zLm5ldD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRlZCBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkgb24gV2luZG93cyBDRS4KKworICAgICAgICAq
IGtqcy9jb2xsZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpHQ19nZXRfd3JpdGFibGVfbGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6R0NfZ2V0X3N0YWNrX2Jhc2UpOgorICAgICAgICAoSlNDOjpjdXJy
ZW50VGhyZWFkU3RhY2tCYXNlKToKKwogMjAwOC0wOS0wOSAgSm9lcmcgQm9ybmVtYW5uICA8am9l
cmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcCBi
L0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCmluZGV4IDk5OTYzYWIuLmE4NmZlODkg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8
ZXJpY0B3ZWJraXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2JpbGUsIElu
Yy4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5NCw2ICszOTUsODUgQEAgdm9pZCogSGVhcDo6
YWxsb2NhdGVOdW1iZXIoc2l6ZV90IHMpCiAgICAgcmV0dXJuIGhlYXBBbGxvY2F0ZTxOdW1iZXJI
ZWFwPihzKTsKIH0KIAorLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBhcmUgd3Jp
dGFibGUgc3RhcnRpbmcgYXQgcC4gICovCisvKiBUaGUgcG9pbnRlciBwIGlzIGFzc3VtZWQgdG8g
YmUgcGFnZSBhbGlnbmVkLiAgICAgICAgICovCisvKiBJZiBiYXNlIGlzIG5vdCAwLCAqYmFzZSBi
ZWNvbWVzIHRoZSBiZWdpbm5pbmcgb2YgdGhlICAgICAqLworLyogYWxsb2NhdGlvbiByZWdpb24g
Y29udGFpbmluZyBwLiAgICAgICAgICAgICAgKi8KKyNpZiBQTEFURk9STShXSU5DRSkKKyMgZGVm
aW5lIGlzX3dyaXRhYmxlKHByb3QpICgocHJvdCkgPT0gUEFHRV9SRUFEV1JJVEUgXAorCQkJICAg
IHx8IChwcm90KSA9PSBQQUdFX1dSSVRFQ09QWSBcCisJCQkgICAgfHwgKHByb3QpID09IFBBR0Vf
RVhFQ1VURV9SRUFEV1JJVEUgXAorCQkJICAgIHx8IChwcm90KSA9PSBQQUdFX0VYRUNVVEVfV1JJ
VEVDT1BZKQorCitEV09SRCBHQ19nZXRfd3JpdGFibGVfbGVuZ3RoKHZvaWQqIHAsIHZvaWQqICpi
YXNlKQoreworICAgIE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiBidWY7CisgICAgRFdPUkQgcmVz
dWx0OworICAgIERXT1JEIHByb3RlY3Q7CisKKyAgICByZXN1bHQgPSBWaXJ0dWFsUXVlcnkocCwg
JmJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgIGlmIChyZXN1bHQgIT0gc2l6ZW9mKGJ1ZikpIEFTU0VS
VCgwKTsgLy9BQk9SVCgiV2VpcmQgVmlydHVhbFF1ZXJ5IHJlc3VsdCIpOworICAgIGlmIChiYXNl
ICE9IDApICpiYXNlID0gKHZvaWQqKShidWYuQWxsb2NhdGlvbkJhc2UpOworICAgIHByb3RlY3Qg
PSAoYnVmLlByb3RlY3QgJiB+KFBBR0VfR1VBUkQgfCBQQUdFX05PQ0FDSEUpKTsKKyAgICBpZiAo
IWlzX3dyaXRhYmxlKHByb3RlY3QpKSB7CisgICAgICAgIHJldHVybigwKTsKKyAgICB9CisgICAg
aWYgKGJ1Zi5TdGF0ZSAhPSBNRU1fQ09NTUlUKSByZXR1cm4oMCk7CisgICAgcmV0dXJuKGJ1Zi5S
ZWdpb25TaXplKTsKK30KKworI2lmIDEgLy8gVVNFKE1VTFRJVEhSRUFEKQordm9pZCogR0NfZ2V0
X3N0YWNrX2Jhc2UoKQoreworCXN0YXRpYyBEV09SRCBwYWdlU2l6ZSA9IDA7CisJaWYgKCFwYWdl
U2l6ZSkKKwl7CisJCVNZU1RFTV9JTkZPIHN5c0luZm87CisJCUdldFN5c3RlbUluZm8oJnN5c0lu
Zm8pOworCQlwYWdlU2l6ZSA9IHN5c0luZm8uZHdQYWdlU2l6ZTsKKwl9CisgICAgaW50IGR1bW15
OworICAgIHZvaWQqIHNwID0gKHZvaWQqKSgmZHVtbXkpOworICAgIGNoYXIqIHRydW5jX3NwID0g
KGNoYXIqKSgoRFdPUkQpc3AgJiB+KHBhZ2VTaXplIC0gMSkpOworCWZvciAoOzspCisJeworCQlE
V09SRCBzaXplID0gR0NfZ2V0X3dyaXRhYmxlX2xlbmd0aCh0cnVuY19zcCwgMCk7CisJCWlmIChz
aXplIDwgcGFnZVNpemUpCisJCQlyZXR1cm4gdHJ1bmNfc3AgKyBzaXplOworCQl0cnVuY19zcCAr
PSBwYWdlU2l6ZTsKKwl9Cit9CisjZWxzZQordm9pZCogR0NfZ2V0X3N0YWNrX2Jhc2UoKQorewor
CXN0YXRpYyB2b2lkKiBzdGFja0Jhc2UgPSAwOworCWlmICghc3RhY2tCYXNlKQorCXsKKwkJU1lT
VEVNX0lORk8gc3lzSW5mbzsKKwkJR2V0U3lzdGVtSW5mbygmc3lzSW5mbyk7CisKKwkJaW50IGR1
bW15OworCQl2b2lkKiBzcCA9ICh2b2lkKikoJmR1bW15KTsKKwkJY2hhciogdHJ1bmNfc3AgPSAo
Y2hhciopKChEV09SRClzcCAmIH4oc3lzSW5mby5kd1BhZ2VTaXplIC0gMSkpOworCQlmb3IgKDs7
KQorCQl7CisJCQlEV09SRCBzaXplID0gR0NfZ2V0X3dyaXRhYmxlX2xlbmd0aCh0cnVuY19zcCwg
MCk7CisJCQlpZiAoc2l6ZSA8IHN5c0luZm8uZHdQYWdlU2l6ZSkKKwkJCXsKKwkJCQlzdGFja0Jh
c2UgPSB0cnVuY19zcCArIHNpemU7CisJCQkJYnJlYWs7CisJCQl9CisJCQl0cnVuY19zcCArPSBz
eXNJbmZvLmR3UGFnZVNpemU7CisJCX0KKwl9CQorCQorCXJldHVybiBzdGFja0Jhc2U7Cit9Cisj
ZW5kaWYgLy8gVVNFKE1VTFRJVEhSRUFEKQorCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOQ0UpCisK
Kwogc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkKIHsKICNpZiBQ
TEFURk9STShEQVJXSU4pCkBAIC00NDksNyArNTI5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkKiBj
dXJyZW50VGhyZWFkU3RhY2tCYXNlKCkKICAgICAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnNh
dHRyKTsKICAgICAgICAgc3RhY2tUaHJlYWQgPSB0aHJlYWQ7CiAgICAgfQotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjaGFyKj4oc3RhY2tCYXNlKSArIHN0YWNrU2l6ZTsKKyAgICByZXR1cm4gKHZv
aWQqKShzaXplX3Qoc3RhY2tCYXNlKSArIHN0YWNrU2l6ZSk7CisjZWxpZiBQTEFURk9STShXSU5D
RSkKKyAgICByZXR1cm4gR0NfZ2V0X3N0YWNrX2Jhc2UoKTsKICNlbHNlCiAjZXJyb3IgTmVlZCBh
IHdheSB0byBnZXQgdGhlIHN0YWNrIGJhc2Ugb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCi0tIAox
LjYuMC4yLmcyZWJjMAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23296</attachid>
            <date>2008-09-09 07:45:46 -0700</date>
            <delta_ts>2008-09-15 14:39:45 -0700</delta_ts>
            <desc>Change DateMath.cpp to not use errno with strtol</desc>
            <filename>0004-2008-09-09-Joerg-Bornemann-joerg.bornemann-trollt.patch</filename>
            <type>text/plain</type>
            <size>5807</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSA4ZTYyOTdmNmFlZGU5MTYxOTFmYWU5MDFmM2VhNDc5MjQ1NmM1YzhjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTI6Mjc6MjMgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IFBvcnRlZCBEYXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0cnRv
bAogICAgICAgIE9uIFdpbmRvd3MgQ0UgZXJybm8gaXMgbm90IGF2YWlsYWJsZQotLS0KIEphdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgfCAgIDEwICsrKysrKysKIEphdmFTY3JpcHRDb3Jl
L2tqcy9EYXRlTWF0aC5jcHAgfCAgIDU1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCA0YjRjZjhhLi42ZjNjMmZjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMDgtMDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBvcnRlZCBEYXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0
cnRvbAorICAgICAgICBPbiBXaW5kb3dzIENFIGVycm5vIGlzIG5vdCBhdmFpbGFibGUKKworICAg
ICAgICAqIGtqcy9EYXRlTWF0aC5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlRGF0ZSk6CisKIDIw
MDgtMDktMDkgIEdlb3JnZSBTdGFpa29zICA8Z2VvcmdlQHN0YWlrb3MubmV0PgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
a2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAKaW5kZXgg
ZDZkMTQzZS4uNDk3MDBhMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRo
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3BwCkBAIC01MSwxMCArNTEs
NiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4
dHJhcy5oPgogCi0jaWYgSEFWRShFUlJOT19IKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0jZW5kaWYK
LQogI2lmIFBMQVRGT1JNKERBUldJTikKICNpbmNsdWRlIDxub3RpZnkuaD4KICNlbmRpZgpAQCAt
NjA5LDYgKzYwNSwxMiBAQCBzdGF0aWMgaW50IGZpbmRNb250aChjb25zdCBjaGFyKiBtb250aFN0
cikKICAgICByZXR1cm4gLTE7CiB9CiAKKy8vIEF2b2lkIHRoZSB1c2Ugb2YgZXJybm8gYXMgaXQg
aXMgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzIENFCisjZGVmaW5lIHN0cnRvbFdpdGhSZXR1cm5P
bkVycm9yKHJldHZhbCwgc3RyaW5nLCBlbmRQdHIsIGJhc2UpIFwKKyAgICByZXR2YWwgPSBzdHJ0
b2woc3RyaW5nLCBlbmRQdHIsIGJhc2UpOyBcCisgICAgaWYgKHN0cmluZyA9PSAqZW5kUHRyIHx8
IHJldHZhbCA9PSBMT05HX01JTiB8fCByZXR2YWwgPT0gTE9OR19NQVgpIFwKKyAgICAgICAgcmV0
dXJuIE5hTjsKKwogZG91YmxlIHBhcnNlRGF0ZShjb25zdCBVU3RyaW5nICZkYXRlKQogewogICAg
IC8vIFRoaXMgcGFyc2VzIGEgZGF0ZSBpbiB0aGUgZm9ybToKQEAgLTY1NSwxMCArNjU3LDggQEAg
ZG91YmxlIHBhcnNlRGF0ZShjb25zdCBVU3RyaW5nICZkYXRlKQogCiAgICAgLy8gJyAwOS1Ob3Yt
OTkgMjM6MTI6NDAgR01UJwogICAgIGNoYXIgKm5ld1Bvc1N0cjsKLSAgICBlcnJubyA9IDA7Ci0g
ICAgbG9uZyBkYXkgPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApOwotICAgIGlm
IChlcnJubykKLSAgICAgICAgcmV0dXJuIE5hTjsKKyAgICBsb25nIGRheTsKKyAgICBzdHJ0b2xX
aXRoUmV0dXJuT25FcnJvcihkYXksIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKICAgICBk
YXRlU3RyaW5nID0gbmV3UG9zU3RyOwogCiAgICAgaWYgKCEqZGF0ZVN0cmluZykKQEAgLTY3Niwy
MyArNjc2LDE4IEBAIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKICAgICAg
ICAgaWYgKCEqKytkYXRlU3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIE5hTjsKICAgICAgICAg
eWVhciA9IGRheTsKLSAgICAgICAgbW9udGggPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0
ciwgMTApIC0gMTsKLSAgICAgICAgaWYgKGVycm5vKQotICAgICAgICAgICAgcmV0dXJuIE5hTjsK
KyAgICAgICAgc3RydG9sV2l0aFJldHVybk9uRXJyb3IobW9udGgsIGRhdGVTdHJpbmcsICZuZXdQ
b3NTdHIsIDEwKTsKKyAgICAgICAgbW9udGggLT0gMTsKICAgICAgICAgZGF0ZVN0cmluZyA9IG5l
d1Bvc1N0cjsKICAgICAgICAgaWYgKCpkYXRlU3RyaW5nKysgIT0gJy8nIHx8ICEqZGF0ZVN0cmlu
ZykKICAgICAgICAgICAgIHJldHVybiBOYU47Ci0gICAgICAgIGRheSA9IHN0cnRvbChkYXRlU3Ry
aW5nLCAmbmV3UG9zU3RyLCAxMCk7Ci0gICAgICAgIGlmIChlcnJubykKLSAgICAgICAgICAgIHJl
dHVybiBOYU47CisgICAgICAgIHN0cnRvbFdpdGhSZXR1cm5PbkVycm9yKGRheSwgZGF0ZVN0cmlu
ZywgJm5ld1Bvc1N0ciwgMTApOwogICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAg
IH0gZWxzZSBpZiAoKmRhdGVTdHJpbmcgPT0gJy8nICYmIG1vbnRoID09IC0xKSB7CiAgICAgICAg
IGRhdGVTdHJpbmcrKzsKICAgICAgICAgLy8gVGhpcyBsb29rcyBsaWtlIGEgTU0vREQvWVlZWSBk
YXRlLCBub3QgYW4gUkZDIGRhdGUuCiAgICAgICAgIG1vbnRoID0gZGF5IC0gMTsgLy8gMC1iYXNl
ZAotICAgICAgICBkYXkgPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApOwotICAg
ICAgICBpZiAoZXJybm8pCi0gICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICBzdHJ0b2xX
aXRoUmV0dXJuT25FcnJvcihkYXksIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKICAgICAg
ICAgaWYgKGRheSA8IDEgfHwgZGF5ID4gMzEpCiAgICAgICAgICAgICByZXR1cm4gTmFOOwogICAg
ICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwpAQCAtNzMyLDkgKzcyNyw3IEBAIGRvdWJsZSBw
YXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKIAogICAgIC8vICc5OSAyMzoxMjo0MCBHTVQn
CiAgICAgaWYgKHllYXIgPD0gMCAmJiAqZGF0ZVN0cmluZykgewotICAgICAgICB5ZWFyID0gc3Ry
dG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgaWYgKGVycm5vKQotICAg
ICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgc3RydG9sV2l0aFJldHVybk9uRXJyb3IoeWVh
ciwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApOwogICAgIH0KICAgICAKICAgICAvLyBEb24n
dCBmYWlsIGlmIHRoZSB0aW1lIGlzIG1pc3NpbmcuCkBAIC03NzUsOSArNzY4LDcgQEAgZG91Ymxl
IHBhcnNlRGF0ZShjb25zdCBVU3RyaW5nICZkYXRlKQogICAgICAgICAgICAgaWYgKCpkYXRlU3Ry
aW5nKysgIT0gJzonKQogICAgICAgICAgICAgICAgIHJldHVybiBOYU47CiAKLSAgICAgICAgICAg
IG1pbnV0ZSA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7Ci0gICAgICAgICAg
ICBpZiAoZXJybm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgICAgIHN0
cnRvbFdpdGhSZXR1cm5PbkVycm9yKG1pbnV0ZSwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAp
OwogICAgICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKIAogICAgICAgICAgICAgaWYg
KG1pbnV0ZSA8IDAgfHwgbWludXRlID4gNTkpCkBAIC03OTEsOSArNzgyLDcgQEAgZG91YmxlIHBh
cnNlRGF0ZShjb25zdCBVU3RyaW5nICZkYXRlKQogICAgICAgICAgICAgaWYgKCpkYXRlU3RyaW5n
ID09JzonKSB7CiAgICAgICAgICAgICAgICAgZGF0ZVN0cmluZysrOwogCi0gICAgICAgICAgICAg
ICAgc2Vjb25kID0gc3RydG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZXJybm8pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOYU47CisgICAg
ICAgICAgICAgICAgc3RydG9sV2l0aFJldHVybk9uRXJyb3Ioc2Vjb25kLCBkYXRlU3RyaW5nLCAm
bmV3UG9zU3RyLCAxMCk7CiAgICAgICAgICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzZWNvbmQgPCAwIHx8IHNlY29uZCA+
IDU5KQpAQCAtODMyLDkgKzgyMSw4IEBAIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAm
ZGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmICgqZGF0ZVN0cmluZyA9PSAnKycgfHwgKmRh
dGVTdHJpbmcgPT0gJy0nKSB7Ci0gICAgICAgICAgICBsb25nIG8gPSBzdHJ0b2woZGF0ZVN0cmlu
ZywgJm5ld1Bvc1N0ciwgMTApOwotICAgICAgICAgICAgaWYgKGVycm5vKQotICAgICAgICAgICAg
ICAgIHJldHVybiBOYU47CisgICAgICAgICAgICBsb25nIG87CisgICAgICAgICAgICBzdHJ0b2xX
aXRoUmV0dXJuT25FcnJvcihvLCBkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7CiAgICAgICAg
ICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogCiAgICAgICAgICAgICBpZiAobyA8IC05OTU5
IHx8IG8gPiA5OTU5KQpAQCAtODQ1LDkgKzgzMyw4IEBAIGRvdWJsZSBwYXJzZURhdGUoY29uc3Qg
VVN0cmluZyAmZGF0ZSkKICAgICAgICAgICAgIGlmICgqZGF0ZVN0cmluZyAhPSAnOicpIHsKICAg
ICAgICAgICAgICAgICBvZmZzZXQgPSAoKG8gLyAxMDApICogNjAgKyAobyAlIDEwMCkpICogc2du
OwogICAgICAgICAgICAgfSBlbHNlIHsgLy8gR01UKzA1OjAwCi0gICAgICAgICAgICAgICAgbG9u
ZyBvMiA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGVycm5vKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICAg
ICAgICAgIGxvbmcgbzI7CisgICAgICAgICAgICAgICAgc3RydG9sV2l0aFJldHVybk9uRXJyb3Io
bzIsIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKICAgICAgICAgICAgICAgICBkYXRlU3Ry
aW5nID0gbmV3UG9zU3RyOwogICAgICAgICAgICAgICAgIG9mZnNldCA9IChvICogNjAgKyBvMikg
KiBzZ247CiAgICAgICAgICAgICB9CkBAIC04NjcsOSArODU0LDcgQEAgZG91YmxlIHBhcnNlRGF0
ZShjb25zdCBVU3RyaW5nICZkYXRlKQogICAgIHNraXBTcGFjZXNBbmRDb21tZW50cyhkYXRlU3Ry
aW5nKTsKIAogICAgIGlmICgqZGF0ZVN0cmluZyAmJiB5ZWFyID09IC0xKSB7Ci0gICAgICAgIHll
YXIgPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApOwotICAgICAgICBpZiAoZXJy
bm8pCi0gICAgICAgICAgICByZXR1cm4gTmFOOworICAgICAgICBzdHJ0b2xXaXRoUmV0dXJuT25F
cnJvcih5ZWFyLCBkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7CiAgICAgICAgIGRhdGVTdHJp
bmcgPSBuZXdQb3NTdHI7CiAgICAgfQogICAgICAKLS0gCjEuNi4wLjIuZzJlYmMwCgo=
</data>
<flag name="review"
          id="10374"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23297</attachid>
            <date>2008-09-09 07:46:31 -0700</date>
            <delta_ts>2008-09-11 00:27:40 -0700</delta_ts>
            <desc>Fix compilation on Windows CE when using some C string functions</desc>
            <filename>0005-2008-09-09-Joerg-Bornemann-joerg.bornemann-trollt.patch</filename>
            <type>text/plain</type>
            <size>1903</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSBiMGJiYTEwMDNjNTFiY2IzNjQ1YWYzYThhYTA4YTFhN2RmOTY0ZmJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTY6MDc6MTcgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IEZpeCBjb21waWxhdGlvbiBvbiBXaW5kb3dzIENFLgoKICAgICAgICBzdHIobilpY21wLCBzdHJk
dXAgYW5kIHZzbnByaW50ZiBhcmUgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzIENFLAogICAgICAg
IHRoZXkgYXJlIGNhbGxlZCBfc3RyKG4paWNtcCwgZXRjLiBpbnN0ZWFkCi0tLQogSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgICAxMSArKysrKysrKysrKwogSmF2YVNjcmlwdENv
cmUvd3RmL1N0cmluZ0V4dHJhcy5oIHwgICAgNyArKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE4
IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZmM2MyZmMuLjNk
YjMxZmMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBvbiBXaW5kb3dzIENF
LgorCisgICAgICAgIHN0cihuKWljbXAsIHN0cmR1cCBhbmQgdnNucHJpbnRmIGFyZSBub3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MgQ0UsCisgICAgICAgIHRoZXkgYXJlIGNhbGxlZCBfc3RyKG4paWNt
cCwgZXRjLiBpbnN0ZWFkCisKKyAgICAgICAgKiB3dGYvU3RyaW5nRXh0cmFzLmg6CisKKzIwMDgt
MDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFBvcnRlZCBE
YXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0cnRvbAogICAgICAg
ICBPbiBXaW5kb3dzIENFIGVycm5vIGlzIG5vdCBhdmFpbGFibGUKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1N0cmluZ0V4dHJhcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0cmlu
Z0V4dHJhcy5oCmluZGV4IDQ0MWNkNzUuLjZmMzMxZTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9TdHJpbmdFeHRyYXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nRXh0
cmFzLmgKQEAgLTQ2LDYgKzQ2LDEzIEBAIGlubGluZSBpbnQgc25wcmludGYoY2hhciAqc3RyLCBz
aXplX3Qgc2l6ZSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCiAjZGVmaW5lIHZzbnByaW50ZiBz
bnByaW50ZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU5DRSkKKyNkZWZpbmUgc3RybmljbXAg
X3N0cm5pY21wCisjZGVmaW5lIHN0cmljbXAgX3N0cmljbXAKKyNkZWZpbmUgc3RyZHVwIF9zdHJk
dXAKKyNkZWZpbmUgdnNucHJpbnRmIF92c25wcmludGYKKyNlbmRpZgorCiBpbmxpbmUgaW50IHN0
cm5jYXNlY21wKGNvbnN0IGNoYXIqIHMxLCBjb25zdCBjaGFyKiBzMiwgc2l6ZV90IGxlbikgeyBy
ZXR1cm4gc3RybmljbXAoczEsIHMyLCBsZW4pOyB9CiAKIGlubGluZSBpbnQgc3RyY2FzZWNtcChj
b25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIpIHsgcmV0dXJuIHN0cmljbXAoczEsIHMyKTsg
fQotLSAKMS42LjAuMi5nMmViYzAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23338</attachid>
            <date>2008-09-11 00:25:11 -0700</date>
            <delta_ts>2008-09-15 14:55:57 -0700</delta_ts>
            <desc>Make the Qt port of WebKit compile on Windows CE (updated for WINCE -&gt; WIN_CE)</desc>
            <filename>0001-2008-09-09-Joerg-Bornemann-joerg.bornemann-trollt.patch</filename>
            <type>text/plain</type>
            <size>42862</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSA4NjBmYzJkZWVlOGFkY2M2NGNlNDgyM2U1NWVhNGZkZGFlM2I1YzgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTU6NTM6NTQgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IE1ha2UgdGhlIFF0IHBvcnQgb2YgV2ViS2l0IGNvbXBpbGUgb24gV2luZG93cyBDRQotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAr
CiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzEgKwogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpICAgICAgICAgICAgICAgICAg
fCAgICA3ICsKIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAgICAgICAgICAgICAgICAg
ICAgIHwgICAxNyArLQogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcCAgICAgfCAgICAxIC0KIEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAg
ICAgICAgICAgICAgICAgICAgfCAgICA5ICstCiBKYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2tqcy9kdG9h
LmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBKYXZhU2NyaXB0Q29yZS9vcy13
aW5jZS9jZV90aW1lLmNwcCAgICAgICAgICAgICAgICB8ICA2NzYgKysrKysrKysrKysrKysrKysr
KysKIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcCAgICAgICAgICAgICAgICAgIHwg
ICAgOSArLQogSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCAgICAgICAgICAgICAgICAg
ICAgfCAgICA4ICsKIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcCAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oICAgICAgICAg
ICAgICAgICAgICB8ICAgIDUgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyMiArCiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi93aW4vTWFp
blRocmVhZFdpbi5jcHAgICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKwogV2ViQ29yZS9XZWJDb3JlLnBy
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCiBXZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAgICAgICAgICAgICAgICB8ICAgIDIgLQogV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgIDMgKy0K
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcCAgICAgICAgICAgIHwgICAg
NCArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgICAgICAgICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oICAgICAgICAgICAg
ICAgIHwgICAgOCArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAg
ICAgICAgICB8ICAgIDggKy0KIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lv
bi5jcHAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2lu
LmNwcCAgICAgICAgICAgICB8ICAgIDggKwogV2ViS2l0LnBybyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiAyOSBmaWxlcyBjaGFuZ2VkLCA4ODIgaW5z
ZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSmF2YVNjcmlw
dENvcmUvb3Mtd2luY2UvY2VfdGltZS5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggOTZmNTk5Zi4uYTA3ZTFmYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4g
IDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBRdCBwb3J0IG9mIFdlYktpdCBjb21w
aWxlIG9uIFdpbmRvd3MgQ0UKKworICAgICAgICAqIFdlYktpdC5wcm86IGRvbid0IGJ1aWxkIER1
bXBSZW5kZXJUcmVlIG9uIGFsbCBXaW4zMiBwbGF0Zm9ybXMKKwogMjAwOC0wOS0wNCAgTWFyY28g
QmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzMzljMTA4Li45NTE1OGU2IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xOTcsNiArMTk3LDM3IEBACiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ2CiAKKyAgICAgICAgTWFrZSB0aGUgUXQgcG9y
dCBvZiBXZWJLaXQgY29tcGlsZSBvbiBXaW5kb3dzIENFCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS5wcmk6IEFkZGVkIFdpbmRvd3MgQ0Ugc3BlY2lmaWMgZmlsZXMgdG8gdGhlIGJ1aWxkLgor
ICAgICAgICAqIGtqcy9EYXRlTWF0aC5jcHA6IFVzZSBsb2NhbHRpbWUoKSBvbiBXaW5kb3dzIENF
LgorICAgICAgICAoSlNDOjpnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMpOiBJbXBs
ZW1lbnRlZCBmb3IgV2luZG93cyBDRS4KKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGVycm5vLmgKKyAgICAgICAgICBpbmNsdXNp
b24uCisgICAgICAgICoga2pzL1NoZWxsLmNwcDogRGlzYWJsZWQgdXNlIG9mIGRlYnVnZ2VyIGlu
Y2x1ZGVzIGZvciBDRS4gSXQKKyAgICAgICAgICBkb2VzIG5vdCBoYXZlIHRoZSBkZWJ1Z2dpbmcg
ZnVuY3Rpb25zLgorICAgICAgICAqIGtqcy9jb2xsZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0KTogVXNlIGV4aXQoMykgaW5zdGVhZCBvZiBhYm9ydCgpIG9uIFdpbmRvd3Mg
Q0UuCisgICAgICAgICoga2pzL2NvbmZpZy5oOiBEb24ndCBzZXQgX0NSVF9SQU5EX1MgZm9yIENF
LCBpdCdzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICoga2pzL2R0b2EuY3BwOiBDb21waWxlIHdp
dGhvdXQgZXJybm8uCisgICAgICAgICogb3Mtd2luY2UvY2VfdGltZS5jcHA6IEFkZGVkIEJTRCBs
aWNlbnNlZCBpbXBsZW1lbnRhdGlvbnMgb2YgdGltZQorICAgICAgICBmdW5jdGlvbnMgdGhhdCBh
cmUgZGVjbGFyZWQgYnV0IG5ldmVyIGRlZmluZWQgaW4gV2luZG93cyBDRS4KKyAgICAgICAgKiB3
dGYvQXNzZXJ0aW9ucy5jcHA6IENvbXBpbGUgb24gV2luZG93cyBDRS4KKyAgICAgICAgKiB3dGYv
QXNzZXJ0aW9ucy5oOiBJbmNsdWRlIHdpbmRvd3MuaCBiZWZvcmUgZGVmaW5pbmcgQVNTRVJULgor
ICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKGFib3J0KTogVXNlIGV4aXQo
MykgaW5zdGVhZCBvZiBhYm9ydCgpLgorICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6IEluY2x1
ZGUgc3RkbGliLmggaW5zdGVhZCBvZiB4bWF0aC5oLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OiBEaXNhYmxlIEVSUk5PX0ggYW5kIFNZU19UWVBFU19IIGFuZCBkZXRlY3QKKyAgICAgICAgICBl
bmRpYW5lc3MgYmFzZWQgb24gdGhlIFF0IGVuZGlhbmVzcy4gT24gUXQgZm9yIFdpbmRvd3MgQ0Ug
dGhlCisgICAgICAgICAgZW5kaWFuZXNzIGlzIGRlZmluZWQgYnkgdGhlIHZlbmRvciBzcGVjaWZp
YyBidWlsZCBzcGVjLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogVXNlIHRoZSB2b2xhdGls
ZS1sZXNzIGF0b21pYyBmdW5jdGlvbnMuCisgICAgICAgICogd3RmL3dpbi9NYWluVGhyZWFkV2lu
LmNwcDogRG9uJ3QgaW5jbHVkZSB3aW5kb3dzLmggb24gQ0UgYWZ0ZXIKKyAgICAgICAgQXNzZXJ0
aW9ucy5oIGR1ZSB0byB0aGUgcmVkZWZpbml0aW9uIG9mIEFTU0VSVC4KKworMjAwOC0wOS0wOSAg
Sm9lcmcgQm9ybmVtYW5uICA8am9lcmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRkZWQgV0lOQ0UgcGxh
dGZvcm0gbWFjcm8uCiAKICAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnByaQppbmRleCA0NTNhZjdjLi44ODNmYzI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCkBAIC02LDYgKzYsMTMgQEAgSU5DTFVERVBBVEggKz0gJCRQV0QgJCRQV0Qva2pzICQk
UFdEL3d0ZiAkJFBXRC93dGYvdW5pY29kZSAkJFBXRC9WTSAkJFBXRC9wcm9maWwKICAgICAgICAg
ICAgICAgICQkUFdEL0ZvcndhcmRpbmdIZWFkZXJzCiBERUZJTkVTICs9IEJVSUxESU5HX1FUX18K
IAord2luMzItbXN2Yyo6IElOQ0xVREVQQVRIICs9ICQkUFdEL29zLXdpbjMyCit3aW5jZSogewor
ICAgIElOQ0xVREVQQVRIICs9ICQkUFdEL29zLXdpbmNlCisgICAgSU5DTFVERVBBVEggKz0gJCRQ
V0Qvb3Mtd2luMzIKKyAgICBTT1VSQ0VTICs9ICQkUFdEL29zLXdpbmNlL2NlX3RpbWUuY3BwCit9
CisKIGlzRW1wdHkoR0VORVJBVEVEX1NPVVJDRVNfRElSKTpHRU5FUkFURURfU09VUkNFU19ESVIg
PSB0bXAKIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSCA9ICQkR0VORVJBVEVEX1NPVVJDRVNf
RElSLwogd2luMzItKjogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIIH49IHN8L3xcfApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9EYXRlTWF0aC5jcHAKaW5kZXggMjEyZTc4Mi4uOGI3OTliMiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0
ZU1hdGguY3BwCkBAIC0yODksNyArMjg5LDIwIEBAIGRvdWJsZSBnZXRDdXJyZW50VVRDVGltZSgp
CiAKIGRvdWJsZSBnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMoKQogewotI2lmIFBM
QVRGT1JNKFdJTl9PUykKKyNpZiBQTEFURk9STShXSU5fQ0UpCisJU1lTVEVNVElNRSBzeXN0ZW1U
aW1lOworCUdldFN5c3RlbVRpbWUoJnN5c3RlbVRpbWUpOworCXN0cnVjdCB0bSB0bXRpbWU7CisJ
dG10aW1lLnRtX3llYXIgPSBzeXN0ZW1UaW1lLndZZWFyIC0gMTkwMDsKKwl0bXRpbWUudG1fbW9u
ID0gc3lzdGVtVGltZS53TW9udGggLSAxOworCXRtdGltZS50bV9tZGF5ID0gc3lzdGVtVGltZS53
RGF5OworCXRtdGltZS50bV93ZGF5ID0gc3lzdGVtVGltZS53RGF5T2ZXZWVrOworCXRtdGltZS50
bV9ob3VyID0gc3lzdGVtVGltZS53SG91cjsKKwl0bXRpbWUudG1fbWluID0gc3lzdGVtVGltZS53
TWludXRlOworCXRtdGltZS50bV9zZWMgPSBzeXN0ZW1UaW1lLndTZWNvbmQ7CisgICAgdGltZV90
IHRpbWV0ID0gbWt0aW1lKCZ0bXRpbWUpOworCWRvdWJsZSB1dGMgPSB0aW1ldCAqIG1zUGVyU2Vj
b25kICsgc3lzdGVtVGltZS53TWlsbGlzZWNvbmRzOworI2VsaWYgUExBVEZPUk0oV0lOX09TKQog
ICAgIC8vIEZJWE1FOiB0aGUgaW1wbGVtZW50YXRpb24gZm9yIFdpbmRvd3MgaXMgb25seSBtaWxs
aXNlY29uZCByZXNvbHV0aW9uLgogI2lmIENPTVBJTEVSKEJPUkxBTkQpCiAgICAgc3RydWN0IHRp
bWViIHRpbWVidWZmZXI7CkBAIC0zMDksNyArMzIyLDcgQEAgZG91YmxlIGdldEN1cnJlbnRVVENU
aW1lV2l0aE1pY3Jvc2Vjb25kcygpCiAKIHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCog
bG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxvY2FsVE0pCiB7Ci0jaWYgQ09NUElMRVIoTVNWQzcpIHx8
IENPTVBJTEVSKE1JTkdXKQorI2lmIENPTVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykg
fHwgUExBVEZPUk0oV0lOX0NFKQogICAgICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUp
OwogI2VsaWYgQ09NUElMRVIoTVNWQykKICAgICBsb2NhbHRpbWVfcyhsb2NhbFRNLCBsb2NhbFRp
bWUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
aW5kZXggMDgxOTVkZS4uMzE3Y2IwNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiZHRvYS5o
IgogI2luY2x1ZGUgImxleGVyLmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKLSNpbmNsdWRlIDxlcnJu
by5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8
c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3BwIGIvSmF2
YVNjcmlwdENvcmUva2pzL1NoZWxsLmNwcAppbmRleCBhM2M4YWIzLi43ZjRiODBmIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tq
cy9TaGVsbC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNlbmRp
ZgogCi0jaWYgQ09NUElMRVIoTVNWQykKKyNpZiBDT01QSUxFUihNU1ZDKSAmJiAhUExBVEZPUk0o
V0lOX0NFKQogI2luY2x1ZGUgPGNydGRiZy5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRp
ZgpAQCAtMjY5LDcgKzI2OSw3IEBAIEpTVmFsdWUqIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0JikKIEpTVmFsdWUqIGZ1
bmN0aW9uUXVpdChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0
JikKIHsKICAgICBleGl0KDApOwotI2lmICFDT01QSUxFUihNU1ZDKQorI2lmICFDT01QSUxFUihN
U1ZDKSB8fCBQTEFURk9STShXSU5fQ0UpCiAgICAgLy8gTVNWQyBrbm93cyB0aGF0IGV4aXQoMCkg
bmV2ZXIgcmV0dXJucywgc28gaXQgZmxhZ3MgdGhpcyByZXR1cm4gc3RhdGVtZW50IGFzIHVucmVh
Y2hhYmxlLgogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xs
ZWN0b3IuY3BwCmluZGV4IDk3MGRjOTYuLjZmYzU0ODcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9jb2xsZWN0b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3Iu
Y3BwCkBAIC05NTUsOCArOTU1LDE1IEBAIGJvb2wgSGVhcDo6Y29sbGVjdCgpCiAjZW5kaWYKIAog
ICAgIEFTU0VSVCgocHJpbWFyeUhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlv
bikgfCAobnVtYmVySGVhcC5vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKSk7Ci0g
ICAgaWYgKChwcmltYXJ5SGVhcC5vcGVyYXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKSB8
IChudW1iZXJIZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pKQorICAgIGlm
ICgocHJpbWFyeUhlYXAub3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikgfCAobnVt
YmVySGVhcC5vcGVyYXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKSkgeworI2lmIFBMQVRG
T1JNKFdJTl9DRSkKKyAgICAgICAgLyogT24gV2luZG93cyBDRSB0aGVyZSdzIG5vIGFib3J0KCkg
YW5kIG9uIHJlZ3VsYXIgV2luZG93cworICAgICAgICAgICBhYm9ydCgpIGV4aXRzIHdpdGggZXhp
dCBjb2RlIDMuICovCisgICAgICAgIGV4aXQoMyk7CisjZWxzZQogICAgICAgICBhYm9ydCgpOwor
I2VuZGlmCisgICAgfQogCiAgICAgSkFWQVNDUklQVENPUkVfR0NfQkVHSU4oKTsKICAgICBwcmlt
YXJ5SGVhcC5vcGVyYXRpb25JblByb2dyZXNzID0gQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaApp
bmRleCAxZDUxMjFkLi5hODUxNzhjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvY29u
ZmlnLmgKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2NvbmZpZy5oCkBAIC0zMiw3ICszMiw3IEBA
CiAjZGVmaW5lIG1heCBtYXgKICNkZWZpbmUgbWluIG1pbgogCi0jaWYgIUNPTVBJTEVSKE1TVkM3
KQorI2lmICFDT01QSUxFUihNU1ZDNykgJiYgIVBMQVRGT1JNKFdJTl9DRSkKIC8vIFdlIG5lZWQg
dG8gZGVmaW5lIHRoaXMgYmVmb3JlIHRoZSBmaXJzdCAjaW5jbHVkZSBvZiBzdGRsaWIuaCBvciBp
dCB3b24ndCBjb250YWluIHJhbmRfcy4KICNpZm5kZWYgX0NSVF9SQU5EX1MKICNkZWZpbmUgX0NS
VF9SQU5EX1MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9kdG9hLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL2tqcy9kdG9hLmNwcAppbmRleCBmMzkzM2E5Li5hZWYyMDQxIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ranMvZHRvYS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2R0
b2EuY3BwCkBAIC0xMzUsNyArMTM1LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJkdG9hLmgiCiAKKyNpZiBIQVZFKEVSUk5PX0gpCiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRp
ZgogI2luY2x1ZGUgPGZsb2F0Lmg+CiAjaW5jbHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHN0ZGlu
dC5oPgpAQCAtMTYwLDYgKzE2MiwxMCBAQAogI2RlZmluZSBJRUVFXzgwODcKICNlbmRpZgogCisj
aWYgUExBVEZPUk0oV0lOX0NFKQorI2RlZmluZSBOT19FUlJOTworI2VuZGlmCisKICNkZWZpbmUg
SU5GTkFOX0NIRUNLCiAKICNpZiBkZWZpbmVkKElFRUVfODA4NykgKyBkZWZpbmVkKElFRUVfTUM2
OGspICsgZGVmaW5lZChJRUVFX0FSTSkgIT0gMQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
b3Mtd2luY2UvY2VfdGltZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9vcy13aW5jZS9jZV90aW1lLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTIxNzBmCi0tLSAvZGV2L251
bGwKKysrIGIvSmF2YVNjcmlwdENvcmUvb3Mtd2luY2UvY2VfdGltZS5jcHAKQEAgLTAsMCArMSw2
NzYgQEAKKy8vCisvLyBzdHJmdGltZS5jCisvLworLy8gRGF0ZSB0byBzdHJpbmcgY29udmVyc2lv
bgorLy8KKy8vIENvcHlyaWdodCAoQykgMjAwMiBNaWNoYWVsIFJpbmdnYWFyZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoK
Ky8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBw
cm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworLy8gICAgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCisvLyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy8v
CisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTCisvLyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKy8vIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisvLyBTVUNIIERBTUFH
RS4KKy8vCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx0aW1lLmg+CisKK3RpbWVfdAordGltZSh0aW1lX3QqIHRpbWVyKQoreworCVNZU1RF
TVRJTUUgc3lzdGltZTsKKwlzdHJ1Y3QgdG0gdG10aW1lOworCXRpbWVfdCB0dDsKKworCUdldExv
Y2FsVGltZSgmc3lzdGltZSk7CisKKwl0bXRpbWUudG1feWVhciA9IHN5c3RpbWUud1llYXItMTkw
MDsKKwl0bXRpbWUudG1fbW9uID0gc3lzdGltZS53TW9udGgtMTsKKwl0bXRpbWUudG1fbWRheSA9
IHN5c3RpbWUud0RheTsKKwl0bXRpbWUudG1fd2RheSA9IHN5c3RpbWUud0RheU9mV2VlazsKKwl0
bXRpbWUudG1faG91ciA9IHN5c3RpbWUud0hvdXI7CisJdG10aW1lLnRtX21pbiA9IHN5c3RpbWUu
d01pbnV0ZTsKKwl0bXRpbWUudG1fc2VjID0gc3lzdGltZS53U2Vjb25kOworCisJdHQgPSBta3Rp
bWUoJnRtdGltZSk7CisKKwlpZih0aW1lcikKKwkJKnRpbWVyID0gdHQ7CisKKwlyZXR1cm4gdHQ7
Cit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1rdGltZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworc3RhdGljIGludCBtb250aF90b19kYXlbMTJd
ID0gezAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0
fTsKKwordGltZV90IG1rdGltZShzdHJ1Y3QgdG0gKnQpCit7CisgICAgICAgIHNob3J0ICBtb250
aCwgeWVhcjsKKyAgICAgICAgdGltZV90IHJlc3VsdDsKKworICAgICAgICBtb250aCA9IHQtPnRt
X21vbjsKKyAgICAgICAgeWVhciA9IHQtPnRtX3llYXIgKyBtb250aCAvIDEyICsgMTkwMDsKKyAg
ICAgICAgbW9udGggJT0gMTI7CisgICAgICAgIGlmIChtb250aCA8IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB5ZWFyIC09IDE7CisgICAgICAgICAgICAgICAgbW9udGggKz0gMTI7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gKHllYXIgLSAxOTcwKSAqIDM2NSArICh5ZWFyIC0g
MTk2OSkgLyA0ICsgbW9udGhfdG9fZGF5W21vbnRoXTsKKyAgICAgICAgcmVzdWx0ID0gKHllYXIg
LSAxOTcwKSAqIDM2NSArIG1vbnRoX3RvX2RheVttb250aF07CisgICAgICAgIGlmIChtb250aCA8
PSAxKQorICAgICAgICAgICAgICAgIHllYXIgLT0gMTsKKyAgICAgICAgcmVzdWx0ICs9ICh5ZWFy
IC0gMTk2OCkgLyA0OworICAgICAgICByZXN1bHQgLT0gKHllYXIgLSAxOTAwKSAvIDEwMDsKKyAg
ICAgICAgcmVzdWx0ICs9ICh5ZWFyIC0gMTYwMCkgLyA0MDA7CisgICAgICAgIHJlc3VsdCArPSB0
LT50bV9tZGF5OworICAgICAgICByZXN1bHQgLT0gMTsKKyAgICAgICAgcmVzdWx0ICo9IDI0Owor
ICAgICAgICByZXN1bHQgKz0gdC0+dG1faG91cjsKKyAgICAgICAgcmVzdWx0ICo9IDYwOworICAg
ICAgICByZXN1bHQgKz0gdC0+dG1fbWluOworICAgICAgICByZXN1bHQgKj0gNjA7CisgICAgICAg
IHJlc3VsdCArPSB0LT50bV9zZWM7CisgICAgICAgIHJldHVybihyZXN1bHQpOworfQorCisKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZnRpbWUo
KSAtIHRha2VuIGZyb20gT3BlbkJTRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCisKKyNkZWZpbmUgSU5fTk9ORQkwCisjZGVmaW5lIElOX1NPTUUJMQor
I2RlZmluZSBJTl9USElTCTIKKyNkZWZpbmUgSU5fQUxMCTMKKyNkZWZpbmUgQ0hBUl9CSVQgICAg
ICA4CisKKyNkZWZpbmUgVFlQRV9CSVQodHlwZSkJKHNpemVvZiAodHlwZSkgKiBDSEFSX0JJVCkK
KyNkZWZpbmUgVFlQRV9TSUdORUQodHlwZSkgKCgodHlwZSkgLTEpIDwgMCkKKworI2RlZmluZSBJ
TlRfU1RSTEVOX01BWElNVU0odHlwZSkgXAorICAgICgoVFlQRV9CSVQodHlwZSkgLSBUWVBFX1NJ
R05FRCh0eXBlKSkgKiAzMDIgLyAxMDAwICsgMSArIFRZUEVfU0lHTkVEKHR5cGUpKQorCisjZGVm
aW5lIGlzbGVhcCh5KSAoKCh5KSAlIDQpID09IDAgJiYgKCgoeSkgJSAxMDApICE9IDAgfHwgKCh5
KSAlIDQwMCkgPT0gMCkpCisKKyNkZWZpbmUgTU9OU1BFUllFQVIJMTIKKyNkZWZpbmUgREFZU1BF
UldFRUsJNworI2RlZmluZSBUTV9ZRUFSX0JBU0UJMTkwMAorI2RlZmluZSBIT1VSU1BFUkRBWQky
NAorI2RlZmluZSBEQVlTUEVSTllFQVIJMzY1CisjZGVmaW5lIERBWVNQRVJMWUVBUgkzNjYKKwor
c3RhdGljIGNoYXIJCXdpbGRhYmJyW10gPSAiV0lMREFCQlIiOworCitzdGF0aWMgY2hhciAqCQkJ
dHpuYW1lWzJdID0geworCXdpbGRhYmJyLAorCXdpbGRhYmJyCit9OworCisKKyNkZWZpbmUgTG9j
YWxlCSgmQ190aW1lX2xvY2FsZSkKKworc3RydWN0IGxjX3RpbWVfVCB7CisJY29uc3QgY2hhciAq
CW1vbltNT05TUEVSWUVBUl07CisJY29uc3QgY2hhciAqCW1vbnRoW01PTlNQRVJZRUFSXTsKKwlj
b25zdCBjaGFyICoJd2RheVtEQVlTUEVSV0VFS107CisJY29uc3QgY2hhciAqCXdlZWtkYXlbREFZ
U1BFUldFRUtdOworCWNvbnN0IGNoYXIgKglYX2ZtdDsKKwljb25zdCBjaGFyICoJeF9mbXQ7CisJ
Y29uc3QgY2hhciAqCWNfZm10OworCWNvbnN0IGNoYXIgKglhbTsKKwljb25zdCBjaGFyICoJcG07
CisJY29uc3QgY2hhciAqCWRhdGVfZm10OworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBsY190
aW1lX1QJQ190aW1lX2xvY2FsZSA9IHsKKwl7CisJCSJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIi
LCAiTWF5IiwgIkp1biIsCisJCSJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRl
YyIKKwl9LCB7CisJCSJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1h
eSIsICJKdW5lIiwKKwkJIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwg
Ik5vdmVtYmVyIiwgIkRlY2VtYmVyIgorCX0sIHsKKwkJIlN1biIsICJNb24iLCAiVHVlIiwgIldl
ZCIsCisJCSJUaHUiLCAiRnJpIiwgIlNhdCIKKwl9LCB7CisJCSJTdW5kYXkiLCAiTW9uZGF5Iiwg
IlR1ZXNkYXkiLCAiV2VkbmVzZGF5IiwKKwkJIlRodXJzZGF5IiwgIkZyaWRheSIsICJTYXR1cmRh
eSIKKwl9LAorCisJLyogWF9mbXQgKi8KKwkiJUg6JU06JVMiLAorCisJLyoKKwkqKiB4X2ZtdAor
CSoqIEM5OSByZXF1aXJlcyB0aGlzIGZvcm1hdC4KKwkqKiBVc2luZyBqdXN0IG51bWJlcnMgKGFz
IGhlcmUpIG1ha2VzIFF1YWtlcnMgaGFwcGllcjsKKwkqKiBpdCdzIGFsc28gY29tcGF0aWJsZSB3
aXRoIFNWUjQuCisJKi8KKwkiJW0vJWQvJXkiLAorCisJLyoKKwkqKiBjX2ZtdAorCSoqIEM5OSBy
ZXF1aXJlcyB0aGlzIGZvcm1hdC4KKwkqKiBQcmV2aW91c2x5IHRoaXMgY29kZSB1c2VkICIlRCAl
WCIsIGJ1dCB3ZSBub3cgY29uZm9ybSB0byBDOTkuCisJKiogTm90ZSB0aGF0CisJKiogICAgICAi
JWEgJWIgJWQgJUg6JU06JVMgJVkiCisJKiogaXMgdXNlZCBieSBTb2xhcmlzIDIuMy4KKwkqLwor
CSIlYSAlYiAlZSAlVCAlWSIsCisKKwkvKiBhbSAqLworCSJBTSIsCisKKwkvKiBwbSAqLworCSJQ
TSIsCisKKwkvKiBkYXRlX2ZtdCAqLworCSIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSIKK307CisK
Kworc3RhdGljIGNoYXIgKgorX2FkZChjb25zdCBjaGFyICogc3RyLCBjaGFyICogcHQsIGNvbnN0
IGNoYXIgKiBjb25zdCBwdGxpbSkKK3sKKwl3aGlsZSAocHQgPCBwdGxpbSAmJiAoKnB0ID0gKnN0
cisrKSAhPSAnXDAnKQorCQkrK3B0OworCXJldHVybiBwdDsKK30KKworCitzdGF0aWMgY2hhciAq
CitfY29udihjb25zdCBpbnQgbiwgY29uc3QgY2hhciAqIGNvbnN0IGZvcm1hdCwgY2hhciAqIGNv
bnN0IHB0LCBjb25zdCBjaGFyICogY29uc3QgcHRsaW0pCit7CisJY2hhcglidWZbSU5UX1NUUkxF
Tl9NQVhJTVVNKGludCkgKyAxXTsKKworCSh2b2lkKSBfc25wcmludGYoYnVmLCBzaXplb2YgYnVm
LCBmb3JtYXQsIG4pOworCXJldHVybiBfYWRkKGJ1ZiwgcHQsIHB0bGltKTsKK30KKworCitzdGF0
aWMgY2hhciAqCitfZm10KGNvbnN0IGNoYXIgKiBmb3JtYXQsIGNvbnN0IHN0cnVjdCB0bSAqIGNv
bnN0IHQsIGNoYXIgKiBwdCwgY29uc3QgY2hhciAqIGNvbnN0IHB0bGltLCBpbnQgKiB3YXJucCkK
K3sKKwlmb3IgKCA7ICpmb3JtYXQ7ICsrZm9ybWF0KSB7CisJCWlmICgqZm9ybWF0ID09ICclJykg
eworbGFiZWw6CisJCQlzd2l0Y2ggKCorK2Zvcm1hdCkgeworCQkJY2FzZSAnXDAnOgorCQkJCS0t
Zm9ybWF0OworCQkJCWJyZWFrOworCQkJY2FzZSAnQSc6CisJCQkJcHQgPSBfYWRkKCh0LT50bV93
ZGF5IDwgMCB8fAorCQkJCQl0LT50bV93ZGF5ID49IERBWVNQRVJXRUVLKSA/CisJCQkJCSI/IiA6
IExvY2FsZS0+d2Vla2RheVt0LT50bV93ZGF5XSwKKwkJCQkJcHQsIHB0bGltKTsKKwkJCQljb250
aW51ZTsKKwkJCWNhc2UgJ2EnOgorCQkJCXB0ID0gX2FkZCgodC0+dG1fd2RheSA8IDAgfHwKKwkJ
CQkJdC0+dG1fd2RheSA+PSBEQVlTUEVSV0VFSykgPworCQkJCQkiPyIgOiBMb2NhbGUtPndkYXlb
dC0+dG1fd2RheV0sCisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdC
JzoKKwkJCQlwdCA9IF9hZGQoKHQtPnRtX21vbiA8IDAgfHwKKwkJCQkJdC0+dG1fbW9uID49IE1P
TlNQRVJZRUFSKSA/CisJCQkJCSI/IiA6IExvY2FsZS0+bW9udGhbdC0+dG1fbW9uXSwKKwkJCQkJ
cHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ2InOgorCQkJY2FzZSAnaCc6CisJ
CQkJcHQgPSBfYWRkKCh0LT50bV9tb24gPCAwIHx8CisJCQkJCXQtPnRtX21vbiA+PSBNT05TUEVS
WUVBUikgPworCQkJCQkiPyIgOiBMb2NhbGUtPm1vblt0LT50bV9tb25dLAorCQkJCQlwdCwgcHRs
aW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnQyc6CisJCQkJLyoKKwkJCQkqKiAlQyB1c2Vk
IHRvIGRvIGEuLi4KKwkJCQkqKglfZm10KCIlYSAlYiAlZSAlWCAlWSIsIHQpOworCQkJCSoqIC4u
LndoZXJlYXMgbm93IFBPU0lYIDEwMDMuMiBjYWxscyBmb3IKKwkJCQkqKiBzb21ldGhpbmcgY29t
cGxldGVseSBkaWZmZXJlbnQuCisJCQkJKiogKGFkbywgMTk5My0wNS0yNCkKKwkJCQkqLworCQkJ
CXB0ID0gX2NvbnYoKHQtPnRtX3llYXIgKyBUTV9ZRUFSX0JBU0UpIC8gMTAwLAorCQkJCQkiJTAy
ZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdjJzoKKwkJCQl7CisJCQkJ
aW50IHdhcm4yID0gSU5fU09NRTsKKworCQkJCXB0ID0gX2ZtdChMb2NhbGUtPmNfZm10LCB0LCBw
dCwgcHRsaW0sIHdhcm5wKTsKKwkJCQlpZiAod2FybjIgPT0gSU5fQUxMKQorCQkJCQl3YXJuMiA9
IElOX1RISVM7CisJCQkJaWYgKHdhcm4yID4gKndhcm5wKQorCQkJCQkqd2FybnAgPSB3YXJuMjsK
KwkJCQl9CisJCQkJY29udGludWU7CisJCQljYXNlICdEJzoKKwkJCQlwdCA9IF9mbXQoIiVtLyVk
LyV5IiwgdCwgcHQsIHB0bGltLCB3YXJucCk7CisJCQkJY29udGludWU7CisJCQljYXNlICdkJzoK
KwkJCQlwdCA9IF9jb252KHQtPnRtX21kYXksICIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250
aW51ZTsKKwkJCWNhc2UgJ0UnOgorCQkJY2FzZSAnTyc6CisJCQkJLyoKKwkJCQkqKiBDOTkgbG9j
YWxlIG1vZGlmaWVycy4KKwkJCQkqKiBUaGUgc2VxdWVuY2VzCisJCQkJKioJJUVjICVFQyAlRXgg
JUVYICVFeSAlRVkKKwkJCQkqKgklT2QgJW9lICVPSCAlT0kgJU9tICVPTQorCQkJCSoqCSVPUyAl
T3UgJU9VICVPViAlT3cgJU9XICVPeQorCQkJCSoqIGFyZSBzdXBwb3NlZCB0byBwcm92aWRlIGFs
dGVybmF0ZQorCQkJCSoqIHJlcHJlc2VudGF0aW9ucy4KKwkJCQkqLworCQkJCWdvdG8gbGFiZWw7
CisJCQljYXNlICdlJzoKKwkJCQlwdCA9IF9jb252KHQtPnRtX21kYXksICIlMmQiLCBwdCwgcHRs
aW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnRic6CisJCQkJcHQgPSBfZm10KCIlWS0lbS0l
ZCIsIHQsIHB0LCBwdGxpbSwgd2FybnApOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnSCc6CisJ
CQkJcHQgPSBfY29udih0LT50bV9ob3VyLCAiJTAyZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGlu
dWU7CisJCQljYXNlICdJJzoKKwkJCQlwdCA9IF9jb252KCh0LT50bV9ob3VyICUgMTIpID8KKwkJ
CQkJKHQtPnRtX2hvdXIgJSAxMikgOiAxMiwKKwkJCQkJIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJ
CWNvbnRpbnVlOworCQkJY2FzZSAnaic6CisJCQkJcHQgPSBfY29udih0LT50bV95ZGF5ICsgMSwg
IiUwM2QiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnayc6CisJCQkJLyoK
KwkJCQkqKiBUaGlzIHVzZWQgdG8gYmUuLi4KKwkJCQkqKglfY29udih0LT50bV9ob3VyICUgMTIg
PworCQkJCSoqCQl0LT50bV9ob3VyICUgMTIgOiAxMiwgMiwgJyAnKTsKKwkJCQkqKiAuLi5hbmQg
aGFzIGJlZW4gY2hhbmdlZCB0byB0aGUgYmVsb3cgdG8KKwkJCQkqKiBtYXRjaCBTdW5PUyA0LjEu
MSBhbmQgQXJub2xkIFJvYmJpbnMnCisJCQkJKiogc3RyZnRpbWUgdmVyc2lvbiAzLjAuICBUaGF0
IGlzLCAiJWsiIGFuZAorCQkJCSoqICIlbCIgaGF2ZSBiZWVuIHN3YXBwZWQuCisJCQkJKiogKGFk
bywgMTk5My0wNS0yNCkKKwkJCQkqLworCQkJCXB0ID0gX2NvbnYodC0+dG1faG91ciwgIiUyZCIs
IHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisjaWZkZWYgS0lUQ0hFTl9TSU5LCisJCQljYXNl
ICdLJzoKKwkJCQkvKgorCQkJCSoqIEFmdGVyIGFsbCB0aGlzIHRpbWUsIHN0aWxsIHVuY2xhaW1l
ZCEKKwkJCQkqLworCQkJCXB0ID0gX2FkZCgia2l0Y2hlbiBzaW5rIiwgcHQsIHB0bGltKTsKKwkJ
CQljb250aW51ZTsKKyNlbmRpZiAvKiBkZWZpbmVkIEtJVENIRU5fU0lOSyAqLworCQkJY2FzZSAn
bCc6CisJCQkJLyoKKwkJCQkqKiBUaGlzIHVzZWQgdG8gYmUuLi4KKwkJCQkqKglfY29udih0LT50
bV9ob3VyLCAyLCAnICcpOworCQkJCSoqIC4uLmFuZCBoYXMgYmVlbiBjaGFuZ2VkIHRvIHRoZSBi
ZWxvdyB0bworCQkJCSoqIG1hdGNoIFN1bk9TIDQuMS4xIGFuZCBBcm5vbGQgUm9iYmluJ3MKKwkJ
CQkqKiBzdHJmdGltZSB2ZXJzaW9uIDMuMC4gIFRoYXQgaXMsICIlayIgYW5kCisJCQkJKiogIiVs
IiBoYXZlIGJlZW4gc3dhcHBlZC4KKwkJCQkqKiAoYWRvLCAxOTkzLTA1LTI0KQorCQkJCSovCisJ
CQkJcHQgPSBfY29udigodC0+dG1faG91ciAlIDEyKSA/CisJCQkJCSh0LT50bV9ob3VyICUgMTIp
IDogMTIsCisJCQkJCSIlMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAn
TSc6CisJCQkJcHQgPSBfY29udih0LT50bV9taW4sICIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQlj
b250aW51ZTsKKwkJCWNhc2UgJ20nOgorCQkJCXB0ID0gX2NvbnYodC0+dG1fbW9uICsgMSwgIiUw
MmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnbic6CisJCQkJcHQgPSBf
YWRkKCJcbiIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdwJzoKKwkJCQlw
dCA9IF9hZGQoKHQtPnRtX2hvdXIgPj0gKEhPVVJTUEVSREFZIC8gMikpID8KKwkJCQkJTG9jYWxl
LT5wbSA6CisJCQkJCUxvY2FsZS0+YW0sCisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGludWU7
CisJCQljYXNlICdSJzoKKwkJCQlwdCA9IF9mbXQoIiVIOiVNIiwgdCwgcHQsIHB0bGltLCB3YXJu
cCk7CisJCQkJY29udGludWU7CisJCQljYXNlICdyJzoKKwkJCQlwdCA9IF9mbXQoIiVJOiVNOiVT
ICVwIiwgdCwgcHQsIHB0bGltLCB3YXJucCk7CisJCQkJY29udGludWU7CisJCQljYXNlICdTJzoK
KwkJCQlwdCA9IF9jb252KHQtPnRtX3NlYywgIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRp
bnVlOworCQkJY2FzZSAncyc6CisJCQkJeworCQkJCQlzdHJ1Y3QgdG0JdG07CisJCQkJCWNoYXIJ
CWJ1ZltJTlRfU1RSTEVOX01BWElNVU0oCisJCQkJCQkJCXRpbWVfdCkgKyAxXTsKKwkJCQkJdGlt
ZV90CQlta3Q7CisKKwkJCQkJdG0gPSAqdDsKKwkJCQkJbWt0ID0gbWt0aW1lKCZ0bSk7CisJCQkJ
CWlmIChUWVBFX1NJR05FRCh0aW1lX3QpKQorCQkJCQkJKHZvaWQpIF9zbnByaW50ZihidWYsIHNp
emVvZiBidWYsCisJCQkJCQkgICAgIiVsZCIsIChsb25nKSBta3QpOworCQkJCQllbHNlCSh2b2lk
KSBfc25wcmludGYoYnVmLCBzaXplb2YgYnVmLAorCQkJCQkJICAgICIlbHUiLCAodW5zaWduZWQg
bG9uZykgbWt0KTsKKwkJCQkJcHQgPSBfYWRkKGJ1ZiwgcHQsIHB0bGltKTsKKwkJCQl9CisJCQkJ
Y29udGludWU7CisJCQljYXNlICdUJzoKKwkJCQlwdCA9IF9mbXQoIiVIOiVNOiVTIiwgdCwgcHQs
IHB0bGltLCB3YXJucCk7CisJCQkJY29udGludWU7CisJCQljYXNlICd0JzoKKwkJCQlwdCA9IF9h
ZGQoIlx0IiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ1UnOgorCQkJCXB0
ID0gX2NvbnYoKHQtPnRtX3lkYXkgKyBEQVlTUEVSV0VFSyAtCisJCQkJCXQtPnRtX3dkYXkpIC8g
REFZU1BFUldFRUssCisJCQkJCSIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJ
CWNhc2UgJ3UnOgorCQkJCS8qCisJCQkJKiogRnJvbSBBcm5vbGQgUm9iYmlucycgc3RyZnRpbWUg
dmVyc2lvbiAzLjA6CisJCQkJKiogIklTTyA4NjAxOiBXZWVrZGF5IGFzIGEgZGVjaW1hbCBudW1i
ZXIKKwkJCQkqKiBbMSAoTW9uZGF5KSAtIDddIgorCQkJCSoqIChhZG8sIDE5OTMtMDUtMjQpCisJ
CQkJKi8KKwkJCQlwdCA9IF9jb252KCh0LT50bV93ZGF5ID09IDApID8KKwkJCQkJREFZU1BFUldF
RUsgOiB0LT50bV93ZGF5LAorCQkJCQkiJWQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOwor
CQkJY2FzZSAnVic6CS8qIElTTyA4NjAxIHdlZWsgbnVtYmVyICovCisJCQljYXNlICdHJzoJLyog
SVNPIDg2MDEgeWVhciAoZm91ciBkaWdpdHMpICovCisJCQljYXNlICdnJzoJLyogSVNPIDg2MDEg
eWVhciAodHdvIGRpZ2l0cykgKi8KKwkJCQl7CisJCQkJCWludAl5ZWFyOworCQkJCQlpbnQJeWRh
eTsKKwkJCQkJaW50CXdkYXk7CisJCQkJCWludAl3OworCisJCQkJCXllYXIgPSB0LT50bV95ZWFy
ICsgVE1fWUVBUl9CQVNFOworCQkJCQl5ZGF5ID0gdC0+dG1feWRheTsKKwkJCQkJd2RheSA9IHQt
PnRtX3dkYXk7CisJCQkJCWZvciAoIDsgOyApIHsKKwkJCQkJCWludAlsZW47CisJCQkJCQlpbnQJ
Ym90OworCQkJCQkJaW50CXRvcDsKKworCQkJCQkJbGVuID0gaXNsZWFwKHllYXIpID8KKwkJCQkJ
CQlEQVlTUEVSTFlFQVIgOgorCQkJCQkJCURBWVNQRVJOWUVBUjsKKwkJCQkJCS8qCisJCQkJCQkq
KiBXaGF0IHlkYXkgKC0zIC4uLiAzKSBkb2VzCisJCQkJCQkqKiB0aGUgSVNPIHllYXIgYmVnaW4g
b24/CisJCQkJCQkqLworCQkJCQkJYm90ID0gKCh5ZGF5ICsgMTEgLSB3ZGF5KSAlCisJCQkJCQkJ
REFZU1BFUldFRUspIC0gMzsKKwkJCQkJCS8qCisJCQkJCQkqKiBXaGF0IHlkYXkgZG9lcyB0aGUg
TkVYVAorCQkJCQkJKiogSVNPIHllYXIgYmVnaW4gb24/CisJCQkJCQkqLworCQkJCQkJdG9wID0g
Ym90IC0KKwkJCQkJCQkobGVuICUgREFZU1BFUldFRUspOworCQkJCQkJaWYgKHRvcCA8IC0zKQor
CQkJCQkJCXRvcCArPSBEQVlTUEVSV0VFSzsKKwkJCQkJCXRvcCArPSBsZW47CisJCQkJCQlpZiAo
eWRheSA+PSB0b3ApIHsKKwkJCQkJCQkrK3llYXI7CisJCQkJCQkJdyA9IDE7CisJCQkJCQkJYnJl
YWs7CisJCQkJCQl9CisJCQkJCQlpZiAoeWRheSA+PSBib3QpIHsKKwkJCQkJCQl3ID0gMSArICgo
eWRheSAtIGJvdCkgLworCQkJCQkJCQlEQVlTUEVSV0VFSyk7CisJCQkJCQkJYnJlYWs7CisJCQkJ
CQl9CisJCQkJCQktLXllYXI7CisJCQkJCQl5ZGF5ICs9IGlzbGVhcCh5ZWFyKSA/CisJCQkJCQkJ
REFZU1BFUkxZRUFSIDoKKwkJCQkJCQlEQVlTUEVSTllFQVI7CisJCQkJCX0KKwkJCQkJaWYgKCpm
b3JtYXQgPT0gJ1YnKQorCQkJCQkJcHQgPSBfY29udih3LCAiJTAyZCIsCisJCQkJCQkJcHQsIHB0
bGltKTsKKwkJCQkJZWxzZSBpZiAoKmZvcm1hdCA9PSAnZycpIHsKKwkJCQkJCSp3YXJucCA9IElO
X0FMTDsKKwkJCQkJCXB0ID0gX2NvbnYoeWVhciAlIDEwMCwgIiUwMmQiLAorCQkJCQkJCXB0LCBw
dGxpbSk7CisJCQkJCX0gZWxzZQlwdCA9IF9jb252KHllYXIsICIlMDRkIiwKKwkJCQkJCQlwdCwg
cHRsaW0pOworCQkJCX0KKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3YnOgorCQkJCXB0ID0gX2Zt
dCgiJWUtJWItJVkiLCB0LCBwdCwgcHRsaW0sIHdhcm5wKTsKKwkJCQljb250aW51ZTsKKwkJCWNh
c2UgJ1cnOgorCQkJCXB0ID0gX2NvbnYoKHQtPnRtX3lkYXkgKyBEQVlTUEVSV0VFSyAtCisJCQkJ
CSh0LT50bV93ZGF5ID8KKwkJCQkJKHQtPnRtX3dkYXkgLSAxKSA6CisJCQkJCShEQVlTUEVSV0VF
SyAtIDEpKSkgLyBEQVlTUEVSV0VFSywKKwkJCQkJIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJCWNv
bnRpbnVlOworCQkJY2FzZSAndyc6CisJCQkJcHQgPSBfY29udih0LT50bV93ZGF5LCAiJWQiLCBw
dCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnWCc6CisJCQkJcHQgPSBfZm10KExv
Y2FsZS0+WF9mbXQsIHQsIHB0LCBwdGxpbSwgd2FybnApOworCQkJCWNvbnRpbnVlOworCQkJY2Fz
ZSAneCc6CisJCQkJeworCQkJCWludAl3YXJuMiA9IElOX1NPTUU7CisKKwkJCQlwdCA9IF9mbXQo
TG9jYWxlLT54X2ZtdCwgdCwgcHQsIHB0bGltLCAmd2FybjIpOworCQkJCWlmICh3YXJuMiA9PSBJ
Tl9BTEwpCisJCQkJCXdhcm4yID0gSU5fVEhJUzsKKwkJCQlpZiAod2FybjIgPiAqd2FybnApCisJ
CQkJCSp3YXJucCA9IHdhcm4yOworCQkJCX0KKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3knOgor
CQkJCSp3YXJucCA9IElOX0FMTDsKKwkJCQlwdCA9IF9jb252KCh0LT50bV95ZWFyICsgVE1fWUVB
Ul9CQVNFKSAlIDEwMCwKKwkJCQkJIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOwor
CQkJY2FzZSAnWSc6CisJCQkJcHQgPSBfY29udih0LT50bV95ZWFyICsgVE1fWUVBUl9CQVNFLCAi
JTA0ZCIsCisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdaJzoKKwkJ
CQlpZiAodC0+dG1faXNkc3QgPj0gMCkKKwkJCQkJcHQgPSBfYWRkKHR6bmFtZVt0LT50bV9pc2Rz
dCAhPSAwXSwKKwkJCQkJCXB0LCBwdGxpbSk7CisJCQkJLyoKKwkJCQkqKiBDOTkgc2F5cyB0aGF0
ICVaIG11c3QgYmUgcmVwbGFjZWQgYnkgdGhlCisJCQkJKiogZW1wdHkgc3RyaW5nIGlmIHRoZSB0
aW1lIHpvbmUgaXMgbm90CisJCQkJKiogZGV0ZXJtaW5hYmxlLgorCQkJCSovCisJCQkJY29udGlu
dWU7CisJCQljYXNlICd6JzoKKwkJCQl7CisJCQkJaW50CQlkaWZmOworCQkJCWNoYXIgY29uc3Qg
KglzaWduOworCisJCQkJaWYgKHQtPnRtX2lzZHN0IDwgMCkKKwkJCQkJY29udGludWU7CisJCQkJ
Y29udGludWU7CisJCQkJaWYgKGRpZmYgPCAwKSB7CisJCQkJCXNpZ24gPSAiLSI7CisJCQkJCWRp
ZmYgPSAtZGlmZjsKKwkJCQl9IGVsc2UJc2lnbiA9ICIrIjsKKwkJCQlwdCA9IF9hZGQoc2lnbiwg
cHQsIHB0bGltKTsKKwkJCQlkaWZmIC89IDYwOworCQkJCXB0ID0gX2NvbnYoKGRpZmYvNjApKjEw
MCArIGRpZmYlNjAsCisJCQkJCSIlMDRkIiwgcHQsIHB0bGltKTsKKwkJCQl9CisJCQkJY29udGlu
dWU7CisJCQljYXNlICcrJzoKKwkJCQlwdCA9IF9mbXQoTG9jYWxlLT5kYXRlX2ZtdCwgdCwgcHQs
IHB0bGltLAorCQkJCQl3YXJucCk7CisJCQkJY29udGludWU7CisJCQljYXNlICclJzoKKwkJCWRl
ZmF1bHQ6CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYgKHB0ID09IHB0bGltKQorCQkJYnJl
YWs7CisJCSpwdCsrID0gKmZvcm1hdDsKKwl9CisJcmV0dXJuIHB0OworfQorCisKK3NpemVfdAor
c3RyZnRpbWUoY2hhciAqIGNvbnN0IHMsIGNvbnN0IHNpemVfdCBtYXhzaXplLCBjb25zdCBjaGFy
ICogY29uc3QgZm9ybWF0LCBjb25zdCBzdHJ1Y3QgdG0gKiBjb25zdCB0KQoreworCWNoYXIgKglw
OworCWludAl3YXJuOworCisJLy90enNldCgpOworCisJd2FybiA9IElOX05PTkU7CisJcCA9IF9m
bXQoKChmb3JtYXQgPT0gTlVMTCkgPyAiJWMiIDogZm9ybWF0KSwgdCwgcywgcyArIG1heHNpemUs
ICZ3YXJuKTsKKworCWlmIChwID09IHMgKyBtYXhzaXplKSB7CisJCWlmIChtYXhzaXplID4gMCkK
KwkJCXNbbWF4c2l6ZSAtIDFdID0gJ1wwJzsKKwkJcmV0dXJuIDA7CisJfQorCSpwID0gJ1wwJzsK
KwlyZXR1cm4gcCAtIHM7Cit9CisKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdtdGltZSgpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisKKworc3RhdGlj
IHN0cnVjdCB0bSBteXRtOworCitzdGF0aWMgaW50IERNb250aFsxM10gPSB7IDAsMzEsNTksOTAs
MTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNCwzNjUgfTsKK3N0YXRpYyBpbnQgbW9udGhD
b2Rlc1sxMl0gPSB7IDYsIDIsIDIsIDUsIDAsIDMsIDUsIDEsIDQsIDYsIDIsIDQgfTsKKworCitz
dGF0aWMgaW50CitjYWxjRGF5T2ZXZWVrKGNvbnN0IHN0cnVjdCB0bSogblRNKQoreworCWludCBk
YXk7CisJCisJZGF5ID0gKG5UTS0+dG1feWVhciUxMDApOworCWRheSArPSBkYXkvNDsKKwlkYXkg
Kz0gbW9udGhDb2Rlc1tuVE0tPnRtX21vbl07CisJZGF5ICs9IG5UTS0+dG1fbWRheTsKKwl3aGls
ZShkYXk+PTcpCisJCWRheSAtPSA3OworCisJcmV0dXJuIGRheTsKK30KKworCitzdGF0aWMgc3Ry
dWN0IHRtICoKK2dtdGltZShjb25zdCB0aW1lX3QgKnRpbWVyKQoreworCXVuc2lnbmVkIGxvbmcg
eCA9ICp0aW1lcjsKKwlpbnQgaW1pbiwgaWhycywgaWRheSwgaXlyczsKKwlpbnQgc2VjLCBtaW4s
IGhycywgZGF5LCBtb24sIHlyczsKKwlpbnQgbGRheSwgcWRheSwgamRheSwgbWRheTsKKworCisJ
aW1pbiA9IHggLyA2MDsJCQkJCQkJLy8gd2hvbGUgbWludXRlcyBzaW5jZSAxLzEvNzAKKwlzZWMg
PSB4IC0gKDYwICogaW1pbik7CQkJCQkvLyBsZWZ0b3ZlciBzZWNvbmRzCisJaWhycyA9IGltaW4g
LyA2MDsJCQkJCQkvLyB3aG9sZSBob3VycyBzaW5jZSAxLzEvNzAKKwltaW4gPSBpbWluIC0gNjAg
KiBpaHJzOwkJCQkJLy8gbGVmdG92ZXIgbWludXRlcworCWlkYXkgPSBpaHJzIC8gMjQ7CQkJCQkJ
Ly8gd2hvbGUgZGF5cyBzaW5jZSAxLzEvNzAKKwlocnMgPSBpaHJzIC0gMjQgKiBpZGF5OwkJCQkJ
Ly8gbGVmdG92ZXIgaG91cnMKKwlpZGF5ID0gaWRheSArIDM2NSArIDM2NjsgCQkJCS8vIHdob2xl
IGRheXMgc2luY2UgMS8xLzY4CisJbGRheSA9IGlkYXkgLyAoKCA0KiAzNjUpICsgMSk7CQkJLy8g
cXVhZHlyID0gNCB5ciBwZXJpb2QgPSAxNDYxIGRheXMKKwlxZGF5ID0gaWRheSAlICgoIDQgKiAz
NjUpICsgMSk7CQkJLy8gZGF5cyBzaW5jZSBjdXJyZW50IHF1YWR5ciBiZWdhbgorCWlmKHFkYXkg
Pj0gKDMxICsgMjkpKQkJCQkJLy8gaWYgcGFzdCBmZWIgMjkgdGhlbgorCQlsZGF5ID0gbGRheSAr
IDE7CQkJCQkvLyBhZGQgdGhpcyBxdWFkeXKScyBsZWFwIGRheSB0byB0aGUKKwkJCQkJCQkJCQkJ
Ly8gIyBvZiBxdWFkeXJzIChsZWFwIGRheXMpIHNpbmNlIDY4CisJaXlycyA9IChpZGF5IC0gbGRh
eSkgLyAzNjU7CQkJCS8vIHdob2xlIHllYXJzIHNpbmNlIDE5NjgKKwlqZGF5ID0gaWRheSAtIChp
eXJzICogMzY1KSAtIGxkYXk7CQkvLyBkYXlzIHNpbmNlIDEgLzEgb2YgY3VycmVudCB5ZWFyLgor
CWlmKHFkYXkgPD0gMzY1ICYmIHFkYXkgPj0gNjApCQkJLy8gaWYgcGFzdCAyLzI5IGFuZCBhIGxl
YXAgeWVhciB0aGVuCisJCWpkYXkgPSBqZGF5ICsgMTsJCQkJCS8vIGFkZCBhIGxlYXAgZGF5IHRv
IHRoZSAjIG9mIHdob2xlCisJCQkJCQkJCQkJCS8vIGRheXMgc2luY2UgMS8xIG9mIGN1cnJlbnQg
eWVhcgorCXlycyA9IGl5cnMgKyAxOTY4OwkJCQkJCS8vIGNvbXB1dGUgeWVhcgorCW1vbiA9IDEz
OwkJCQkJCQkJLy8gZXN0aW1hdGUgbW9udGggKCArMSkKKwltZGF5ID0gMzY2OwkJCQkJCQkJLy8g
bWF4IGRheXMgc2luY2UgMS8xIGlzIDM2NQorCXdoaWxlKGpkYXkgPCBtZGF5KQkJCQkJCS8vIG1k
YXkgPSAjIG9mIGRheXMgcGFzc2VkIGZyb20gMS8xCisJewkJCQkJCQkJCQkvLyB1bnRpbCBmaXJz
dCBkYXkgb2YgY3VycmVudCBtb250aAorCQltb24gPSBtb24gLSAxOwkJCQkJCS8vIG1vbiA9IG1v
bnRoIChlc3RpbWF0ZWQpCisJCW1kYXkgPSBETW9udGhbbW9uXTsJCQkJCS8vICMgZWxhcHNlZCBk
YXlzIGF0IGZpcnN0IG9mIJRtb26UCisJCWlmKChtb24gPiAyKSAmJiAoeXJzICUgNCkgPT0gMCkJ
CS8vIGlmIHBhc3QgMi8yOSBhbmQgbGVhcCB5ZWFyIHRoZW4KKwkJCW1kYXkgPSBtZGF5ICsgMTsJ
CQkJLy8gYWRkIGxlYXAgZGF5CisJCQkJCQkJCQkJCS8vIGNvbXB1dGUgbW9udGggYnkgZGVjcmVt
ZW50aW5nCisJfQkJCQkJCQkJCQkvLyBtb250aCB1bnRpbCBmb3VuZAorCQkKKwlkYXkgPSBqZGF5
IC0gbWRheSArIDE7CQkJCQkvLyBjb21wdXRlIGRheSBvZiBtb250aAorCisJbXl0bS50bV9zZWMg
PSBzZWM7CisJbXl0bS50bV9taW4gPSBtaW47CisJbXl0bS50bV9ob3VyID0gaHJzOworCW15dG0u
dG1fbWRheSA9IGRheTsKKwlteXRtLnRtX21vbiA9IG1vbjsKKwlteXRtLnRtX3llYXIgPSB5cnMg
LSAxOTAwOworCisJbXl0bS50bV93ZGF5ID0gY2FsY0RheU9mV2VlaygmbXl0bSk7CisJbXl0bS50
bV95ZGF5ID0gamRheTsKKwlteXRtLnRtX2lzZHN0ID0gMDsKKworCXJldHVybiAmbXl0bTsKK30K
KworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
YWx0aW1lKCkgLSBzaW1wbHkgdXNpbmcgZ210aW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisKK3N0cnVjdCB0bSAqCitsb2NhbHRpbWUoY29uc3Qg
dGltZV90ICp0aW1lcikKK3sKKwlyZXR1cm4gZ210aW1lKHRpbWVyKTsKK30KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9B
c3NlcnRpb25zLmNwcAppbmRleCA5OGRlOTFjLi43MGFlOGNjIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2Vy
dGlvbnMuY3BwCkBAIC0yNCw2ICsyNCwxMSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFBMQVRGT1JNKFdJTl9DRSkKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKwog
I2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zNCw3ICsz
OSw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KICNlbmRpZgogCi0j
aWYgQ09NUElMRVIoTVNWQykKKyNpZiBDT01QSUxFUihNU1ZDKSAmJiAhUExBVEZPUk0oV0lOX0NF
KQogI2lmbmRlZiBXSU5WRVIKICNkZWZpbmUgV0lOVkVSIDB4MDUwMAogI2VuZGlmCkBAIC02Niw3
ICs3MSw3IEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX2NvbW1vbihjb25zdCBjaGFyKiBm
b3JtYXQsIHZhX2xpc3QgYXJncykKICAgICAgICAgQ0ZSZWxlYXNlKHN0cik7CiAgICAgICAgIENG
UmVsZWFzZShjZkZvcm1hdCk7CiAgICAgfSBlbHNlCi0jZWxpZiBDT01QSUxFUihNU1ZDKQorI2Vs
aWYgQ09NUElMRVIoTVNWQykgJiYgIVBMQVRGT1JNKFdJTl9DRSkKICAgICBpZiAoSXNEZWJ1Z2dl
clByZXNlbnQoKSkgewogICAgICAgICBzaXplX3Qgc2l6ZSA9IDEwMjQ7CiAKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvQXNz
ZXJ0aW9ucy5oCmluZGV4IDg0NDk1NjMuLmExZmM0ODAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9Bc3NlcnRpb25zLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMu
aApAQCAtMTI1LDYgKzEyNSwxNCBAQCB2b2lkIFdURkxvZ1ZlcmJvc2UoY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBXVEZMb2dDaGFubgogCiAvKiBBU1NF
UlQsIEFTU0VSVF9XSVRIX01FU1NBR0UsIEFTU0VSVF9OT1RfUkVBQ0hFRCAqLwogCisjaWYgUExB
VEZPUk0oV0lOX0NFKQorLyogRklYTUU6IFdlIGluY2x1ZGUgdGhpcyBoZXJlIG9ubHkgdG8gYXZv
aWQgYSBjb25mbGljdCB3aXRoIHRoZSBBU1NFUlQgbWFjcm8uICovCisjaW5jbHVkZSA8d2luZG93
cy5oPgorI3VuZGVmIG1pbgorI3VuZGVmIG1heAorI3VuZGVmIEVSUk9SCisjZW5kaWYKKwogI2lm
IFBMQVRGT1JNKFdJTl9PUykKIC8qIEZJWE1FOiBDaGFuZ2UgdG8gdXNlIHNvbWV0aGluZyBvdGhl
ciB0aGFuIEFTU0VSVCB0byBhdm9pZCB0aGlzIGNvbmZsaWN0IHdpdGggd2luMzIuICovCiAjdW5k
ZWYgQVNTRVJUCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKaW5kZXggMjc5YTIxYS4uYWZmODQ5
ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcApAQCAtOTYsNiArOTYsMTUgQEAKIAogI2Rl
ZmluZSBUQ01BTExPQ19UUkFDS19ERUNPTU1JVEVEX1NQQU5TIChIQVZFKFZJUlRVQUxBTExPQykp
CiAKKyNpZiBQTEFURk9STShXSU5fQ0UpCisvKiBPbiBXaW5kb3dzIENFIHRoZXJlJ3Mgbm8gYWJv
cnQoKSBhbmQgb24gcmVndWxhciBXaW5kb3dzCisgICBhYm9ydCgpIGV4aXRzIHdpdGggZXhpdCBj
b2RlIDMuICovCitzdGF0aWMgdm9pZCBhYm9ydCgpCit7CisgICAgZXhpdCgzKTsKK30KKyNlbmRp
ZgorCiAjaWZuZGVmIE5ERUJVRwogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9NYXRoRXh0cmFzLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJh
cy5oCmluZGV4IGIxMjMwMjEuLjg1ZGY2NjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9NYXRoRXh0cmFzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMuaApAQCAt
NDAsOCArNDAsMTEgQEAKICNlbmRpZgogCiAjaWYgQ09NUElMRVIoTVNWQykKLQorI2lmIFBMQVRG
T1JNKFdJTl9DRSkKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbHNlCiAjaW5jbHVkZSA8eG1hdGgu
aD4KKyNlbmRpZgogI2luY2x1ZGUgPGxpbWl0cz4KIAogI2lmIEhBVkUoRkxPQVRfSCkKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKaW5kZXggNWViNzE4ZC4uNzA0NzA3ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
QEAgLTIwNCw2ICsyMDQsMjAgQEAKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0JJR19FTkRJQU4gMQog
I2VuZGlmCiAKKy8qIFBMQVRGT1JNKFdJTl9DRSkgJiYgUExBVEZPUk0oUVQpCisgICBXZSBjYW4g
bm90IGRldGVybWluZSB0aGUgZW5kaWFuZXNzIGF0IGNvbXBpbGUgdGltZS4gRm9yCisgICBRdCBm
b3IgV2luZG93cyBDRSB0aGUgZW5kaWFuZXNzIGlzIHNwZWNpZmllZCBpbiB0aGUKKyAgIGRldmlj
ZSBzcGVjaWZpYyBtYWtlc3BlYworKi8KKyNpZiBQTEFURk9STShXSU5fQ0UpICYmIFBMQVRGT1JN
KFFUKQorIyAgIGluY2x1ZGUgPFF0R2xvYmFsPgorIyAgIHVuZGVmIFdURl9QTEFURk9STV9CSUdf
RU5ESUFOCisjICAgdW5kZWYgV1RGX1BMQVRGT1JNX01JRERMRV9FTkRJQU4KKyMgICBpZiBRX0JZ
VEVfT1JERVIgPT0gUV9CSUdfRURJQU4KKyMgICAgICAgZGVmaW5lIFdURl9QTEFURk9STV9CSUdf
RU5ESUFOIDEKKyMgICBlbmRpZgorI2VuZGlmCisKIC8qIENvbXBpbGVyICovCiAKIC8qIENPTVBJ
TEVSKE1TVkMpICovCkBAIC0yODksMTEgKzMwMywxOCBAQAogI2RlZmluZSBIQVZFX1NZU19QQVJB
TV9IIDEKICNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKICNkZWZpbmUgSEFWRV9TWVNfVElNRUJf
SCAxCisjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQogCiAjZWxpZiBQTEFURk9STShXSU5fT1Mp
CiAKICNkZWZpbmUgSEFWRV9GTE9BVF9IIDEKKyNpZiBQTEFURk9STShXSU5fQ0UpCisjZGVmaW5l
IEhBVkVfU1lTX1RZUEVTX0ggMAorI2RlZmluZSBIQVZFX0VSUk5PX0ggMAorI2Vsc2UKICNkZWZp
bmUgSEFWRV9TWVNfVElNRUJfSCAxCisjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQorI2VuZGlm
CiAjZGVmaW5lIEhBVkVfVklSVFVBTEFMTE9DIDEKIAogI2Vsc2UKQEAgLTMwNiw2ICszMjcsNyBA
QAogI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCiAjZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMQog
I2RlZmluZSBIQVZFX1NZU19USU1FX0ggMQorI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKIAog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAppbmRleCAyNDI4N2U2Li4xYjgxMjVlIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5oCkBAIC01OSwxMSArNTksMTUgQEAKICNpZm5kZWYgVGhyZWFkaW5n
X2gKICNkZWZpbmUgVGhyZWFkaW5nX2gKIAorI2lmIFBMQVRGT1JNKFdJTl9DRSkKKyNpbmNsdWRl
IDx3aW5kb3dzLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCi0jaWYg
UExBVEZPUk0oV0lOX09TKQorI2lmIFBMQVRGT1JNKFdJTl9PUykgJiYgIVBMQVRGT1JNKFdJTl9D
RSkKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxpZiBQTEFURk9STShEQVJXSU4pCiAjaW5jbHVk
ZSA8bGlia2Vybi9PU0F0b21pYy5oPgpAQCAtMTcyLDcgKzE3Niw3IEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oV0lOX09TKQogI2RlZmluZSBXVEZfVVNFX0xPQ0tGUkVFX1RIUkVBRFNBRkVTSEFS
RUQgMQogCi0jaWYgQ09NUElMRVIoTUlOR1cpIHx8IENPTVBJTEVSKE1TVkM3KQorI2lmIENPTVBJ
TEVSKE1JTkdXKSB8fCBDT01QSUxFUihNU1ZDNykgfHwgUExBVEZPUk0oV0lOX0NFKQogaW5saW5l
IHZvaWQgYXRvbWljSW5jcmVtZW50KGludCogYWRkZW5kKSB7IEludGVybG9ja2VkSW5jcmVtZW50
KHJlaW50ZXJwcmV0X2Nhc3Q8bG9uZyo+KGFkZGVuZCkpOyB9CiBpbmxpbmUgaW50IGF0b21pY0Rl
Y3JlbWVudChpbnQqIGFkZGVuZCkgeyByZXR1cm4gSW50ZXJsb2NrZWREZWNyZW1lbnQocmVpbnRl
cnByZXRfY2FzdDxsb25nKj4oYWRkZW5kKSk7IH0KICNlbHNlCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS93dGYvd2luL01haW5UaHJlYWRXaW4uY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3dp
bi9NYWluVGhyZWFkV2luLmNwcAppbmRleCA5ZjA1ZDIyLi41ZjAxNjNjIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS93dGYvd2luL01haW5UaHJlYWRXaW4uY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL3d0Zi93aW4vTWFpblRocmVhZFdpbi5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKIAogI2luY2x1
ZGUgIkFzc2VydGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRpbmcuaCIKKyNpZiAhUExBVEZPUk0o
V0lOX0NFKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsK
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5ODI3Y2ZkLi5mOTc2ODc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMjY2LDYgKzI2NiwzMCBAQAogCiAyMDA4LTA5LTA5ICBKb2Vy
ZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KIAorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBRdCBwb3J0IG9m
IFdlYktpdCBjb21waWxlIG9uIFdpbmRvd3MgQ0UKKworICAgICAgICAqIFdlYkNvcmUucHJvOiBW
YXJpb3VzIGZpeGVzIHRvIGluY2x1ZGUgd2luZG93cyBzcGVjaWZpYyBidWlsZCBvcHRpb25zCisg
ICAgICAgIGFsc28gaW4gdGhlIFdpbmRvd3MgQ0UgYnVpbGQuCisgICAgICAgICogbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlLmNwcDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBlcnJuby5oIGluY2x1c2lv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6IENoYW5nZWQgUV9PU19XSU4zMiB0
byBRX09TX1dJTiB0byBpbmNsdWRlIENFLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Z2V0V2luZG93c0NvbnRleHQpOiBTZXRXb3JsZFRyYW5zZm9ybSBpcworICAgICAgICBub3Qg
YXZhaWxhYmxlIG9uIENFLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5j
cHA6IEFkZGVkIGxvY2FsIGRlZmluaXRpb24gb2YgTV9QSS4KKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9GaWxlU3lzdGVtUXQuY3BwOiBDaGFuZ2VkIFFfT1NfV0lOMzIgdG8gUV9PU19XSU4gdG8gaW5j
bHVkZSBDRS4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9LZXlib2FyZENvZGVzLmg6IEV4dGVuZCAj
aWRlZnMgdG8gZGVmaW5lIHRoZSBtaXNzaW5nIE9FTQorICAgICAgICBjb25zdGFudHMgb24gQ0Uu
CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcDogQWRkZWQgc3R1
YnMgZm9yIHBsdWdpbnMuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lv
bi5jcHA6IERvbid0IGluY2x1ZGUgc3lzL3R5cGVzLmgKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U3lzdGVtVGltZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50VGltZSk6IEltcGxl
bWVudGVkIGZvciBXaW5kb3dzIENFLgorICAgICAgICAoV2ViQ29yZTo6dXNlcklkbGVUaW1lKTog
RG9uJ3QgdXNlIEdldExhc3RJbnB1dEluZm8gb24gQ0UsIGl0IGRvZXMgbm90CisgICAgICAgIGV4
aXN0LgorCisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4KIAogICAgICAgICBGaXgg
Y29tcGlsYXRpb24gb2YgdGhlIFF0IHBvcnQgd2l0aCBkaXNhYmxlZCBwbHVnaW5zIG9uIFdpbmRv
d3MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IDRiOTQzYjMuLjVmOTVlNmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTcsNyArMTcsNyBAQCBDT05GSUcoUVRESVJf
YnVpbGQpIHsKIAogaXNFbXB0eShHRU5FUkFURURfU09VUkNFU19ESVIpOkdFTkVSQVRFRF9TT1VS
Q0VTX0RJUiA9IHRtcAogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIID0gJCRHRU5FUkFURURf
U09VUkNFU19ESVIvCi13aW4zMi0qOiBHRU5FUkFURURfU09VUkNFU19ESVJfU0xBU0ggfj0gc3wv
fFx8Cit3aW4zMi0qfHdpbmNlKjogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIIH49IHN8L3xc
fAogCiAhQ09ORklHKFFURElSX2J1aWxkKSB7CiAgICAgIE9CSkVDVFNfRElSID0gdG1wCkBAIC00
Nyw3ICs0NywxNSBAQCBmcmVlYnNkLSo6IERFRklORVMgKz0gSEFWRV9QVEhSRUFEX05QX0gKIAog
REVGSU5FUyArPSBCVUlMRF9XRUJLSVQKIAotIUNPTkZJRyhRVERJUl9idWlsZCk6d2luMzItKjog
REVGSU5FUyArPSBFTkFCTEVfSUNPTkRBVEFCQVNFPTAgRU5BQkxFX0RBVEFCQVNFPTAKKyFDT05G
SUcoUVRESVJfYnVpbGQpOndpbjMyOiBERUZJTkVTICs9IEVOQUJMRV9JQ09OREFUQUJBU0U9MCBF
TkFCTEVfREFUQUJBU0U9MAord2luY2UqIHsKKyMgICAgREVGSU5FUyArPSBFTkFCTEVfU1ZHPTAg
RU5BQkxFX1hQQVRIPTAgRU5BQkxFX1hCTD0wIFwKKyMgICAgICAgICAgICAgICBFTkFCTEVfU1ZH
X0FOSU1BVElPTj0wIEVOQUJMRV9TVkdfVVNFPTAgIFwKKyMgICAgICAgICAgICAgICBFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUPTAgRU5BQkxFX1NWR19BU19JTUFHRT0wCisKKyAgICBJTkNMVURF
UEFUSCArPSAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9vcy13aW5jZQorICAgIElOQ0xVREVQQVRI
ICs9ICQkUFdELy4uL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyCit9CiAKICMgUGljayB1cCAzcmRw
YXJ0eSBsaWJyYXJpZXMgZnJvbSBJTkNMVURFL0xJQiBqdXN0IGxpa2Ugd2l0aCBNU1ZDCiB3aW4z
Mi1nKysgewpAQCAtMTAzNCw3ICsxMDQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgLi4vV2ViS2l0
L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkv
cXdlYnBsdWdpbmZhY3RvcnkuY3BwCiAKLSAgICB3aW4zMi0qOiBTT1VSQ0VTICs9IHBsYXRmb3Jt
L3dpbi9TeXN0ZW1UaW1lV2luLmNwcAorICAgIHdpbjMyLSp8d2luY2UqOiBTT1VSQ0VTICs9IHBs
YXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2luLmNwcAogICAgIGVsc2U6IFNPVVJDRVMgKz0gcGxhdGZv
cm0vcXQvU3lzdGVtVGltZVF0LmNwcAogCiAgICAgd2luMzItKiB7CkBAIC0xODIzLDcgKzE4MzEs
NyBAQCBhZGRFeHRyYUNvbXBpbGVyV2l0aEhlYWRlcih4cGF0aGJpc29uKQogCiAgICAgVkVSU0lP
Tj0kJHtRVF9NQUpPUl9WRVJTSU9OfS4kJHtRVF9NSU5PUl9WRVJTSU9OfS4kJHtRVF9QQVRDSF9W
RVJTSU9OfQogCi0gICAgd2luMzItKiB7CisgICAgd2luMzItKnx3aW5jZSogewogICAgICAgICBE
TExERVNURElSID0gJCRPVVRQVVRfRElSL2JpbgogCiAgICAgICAgIGRsbHRhcmdldC5jb21tYW5k
cyA9ICQoQ09QWV9GSUxFKSAkKERFU1RESVIpJChUQVJHRVQpICQkW1FUX0lOU1RBTExfQklOU10K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCAxOTM0ZWU1Li43MzE1ZmJlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC01Niw4ICs1Niw2IEBACiAjaW5j
bHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxlcnJuby5oPgotCiAvLyBGb3Ig
bWV0aG9kcyB0aGF0IGFyZSBtZWFudCB0byBzdXBwb3J0IEFQSSBmcm9tIHRoZSBtYWluIHRocmVh
ZCAtIHNob3VsZCBub3QgYmUgY2FsbGVkIGludGVybmFsbHkKICNkZWZpbmUgQVNTRVJUX05PVF9T
WU5DX1RIUkVBRCgpIEFTU0VSVCghbV9zeW5jVGhyZWFkUnVubmluZyB8fCAhSVNfSUNPTl9TWU5D
X1RIUkVBRCgpKQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBi
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmluZGV4IGZhNjkwNDIuLjAzNWU5OWIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oCkBAIC05Myw3ICs5Myw3IEBAIGNvbnN0IFBsYXRmb3JtRmlsZUhh
bmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gMDsKICNpZiBkZWZpbmVkKFFfV1NfWDEx
KSB8fCBkZWZpbmVkKFFfV1NfTUFDKSB8fCBkZWZpbmVkKFFfV1NfUVdTKQogdHlwZWRlZiBRTGli
cmFyeSogUGxhdGZvcm1Nb2R1bGU7CiB0eXBlZGVmIHVuc2lnbmVkIFBsYXRmb3JtTW9kdWxlVmVy
c2lvbjsKLSNlbGlmIGRlZmluZWQoUV9PU19XSU4zMikKKyNlbGlmIGRlZmluZWQoUV9PU19XSU4p
CiB0eXBlZGVmIEhNT0RVTEUgUGxhdGZvcm1Nb2R1bGU7CiBzdHJ1Y3QgUGxhdGZvcm1Nb2R1bGVW
ZXJzaW9uIHsKICAgICB1bnNpZ25lZCBsZWFzdFNpZzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggZmU5ODJjZi4uOTliMTg1
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKQEAgLTEwNTMsNiArMTA1Myw3IEBAIEhEQyBHcmFwaGljc0NvbnRleHQ6OmdldFdp
bmRvd3NDb250ZXh0KGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9ydEFscGhhCiAg
ICAgICAgIG1lbXNldChibXBJbmZvLmJtQml0cywgMCwgYnVmZmVyU2l6ZSk7CiAgICAgfQogCisj
aWYgIVBMQVRGT1JNKFdJTl9DRSkKICAgICAvLyBNYWtlIHN1cmUgd2UgY2FuIGRvIHdvcmxkIHRy
YW5zZm9ybXMuCiAgICAgU2V0R3JhcGhpY3NNb2RlKGJpdG1hcERDLCBHTV9BRFZBTkNFRCk7CiAK
QEAgLTEwNjUsNyArMTA2Niw3IEBAIEhEQyBHcmFwaGljc0NvbnRleHQ6OmdldFdpbmRvd3NDb250
ZXh0KGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJvb2wgc3VwcG9ydEFscGhhCiAgICAgeGZvcm0u
ZUR4ID0gLWRzdFJlY3QueCgpOwogICAgIHhmb3JtLmVEeSA9IC1kc3RSZWN0LnkoKTsKICAgICA6
OlNldFdvcmxkVHJhbnNmb3JtKGJpdG1hcERDLCAmeGZvcm0pOwotCisjZW5kaWYKIAogICAgIHJl
dHVybiBiaXRtYXBEQzsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvUGF0aFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcApp
bmRleCA3NmYzNzVjLi4zMzljMmQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L1BhdGhRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRo
UXQuY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2RlZmluZSBfVVNFX01BVEhfREVGSU5FUwogI2lu
Y2x1ZGUgPG1hdGguaD4KIAorI2lmbmRlZiBNX1BJCisjICAgZGVmaW5lIE1fUEkgMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGF0aDo6UGF0
aCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKaW5kZXggNWY5Nzg0Zi4uNjExNDcx
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBA
IGJvb2wgdW5sb2FkTW9kdWxlKFBsYXRmb3JtTW9kdWxlIG1vZHVsZSkKIH0KICNlbmRpZgogCi0j
aWYgZGVmaW5lZChRX09TX1dJTjMyKQorI2lmIGRlZmluZWQoUV9PU19XSU4pCiBib29sIHVubG9h
ZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSBtb2R1bGUpCiB7CiAgICAgcmV0dXJuIDo6RnJlZUxpYnJh
cnkobW9kdWxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rl
cy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LZXlib2FyZENvZGVzLmgKaW5kZXggMjFkM2M2Ny4u
NjFiYzlmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LZXlib2FyZENvZGVzLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LZXlib2FyZENvZGVzLmgKQEAgLTQ3Miw2ICs0NzIs
MTAgQEAgY29uc3QgaW50IFZLX01FRElBX0xBVU5DSF9BUFAxID0gMHhCNjsKIC8vIFZLX0xBVU5D
SF9BUFAyIChCNykgV2luZG93cyAyMDAwL1hQOiBTdGFydCBBcHBsaWNhdGlvbiAyIGtleQogY29u
c3QgaW50IFZLX01FRElBX0xBVU5DSF9BUFAyID0gMHhCNzsKIAorI2VuZGlmIC8vICFQTEFURk9S
TShXSU5fT1MpCisKKyNpZiAhUExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShXSU5fQ0UpCisK
IC8vIFZLX09FTV8xIChCQSkgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBj
YW4gdmFyeSBieSBrZXlib2FyZC4gV2luZG93cyAyMDAwL1hQOiBGb3IgdGhlIFVTIHN0YW5kYXJk
IGtleWJvYXJkLCB0aGUgJzs6JyBrZXkKIGNvbnN0IGludCBWS19PRU1fMSA9IDB4QkE7CiAKQEAg
LTUwOCw2ICs1MTIsMTAgQEAgY29uc3QgaW50IFZLX09FTV83ID0gMHhERTsKIC8vIFZLX09FTV84
IChERikgVXNlZCBmb3IgbWlzY2VsbGFuZW91cyBjaGFyYWN0ZXJzOyBpdCBjYW4gdmFyeSBieSBr
ZXlib2FyZC4KIGNvbnN0IGludCBWS19PRU1fOCA9IDB4REY7CiAKKyNlbmRpZiAvLyAhUExBVEZP
Uk0oV0lOX09TKSB8fCBQTEFURk9STShXSU5fQ0UpCisKKyNpZiAhUExBVEZPUk0oV0lOX09TKQor
CiAvLyBWS19PRU1fMTAyIChFMikgV2luZG93cyAyMDAwL1hQOiBFaXRoZXIgdGhlIGFuZ2xlIGJy
YWNrZXQga2V5IG9yIHRoZSBiYWNrc2xhc2gga2V5IG9uIHRoZSBSVCAxMDIta2V5IGtleWJvYXJk
CiBjb25zdCBpbnQgVktfT0VNXzEwMiA9IDB4RTI7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVt
cG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCBlZjA4Yjc2Li40MjVlZDEwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCkBAIC03Myw3ICs3Myw3IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgIWRlZmluZWQoUV9XU19YMTEpICYmICFkZWZp
bmVkKFFfV1NfV0lOKQorI2lmICghZGVmaW5lZChRX1dTX1gxMSkgJiYgIWRlZmluZWQoUV9XU19X
SU4pKSB8fCBkZWZpbmVkKFFfT1NfV0lOQ0UpCiAKIGJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJ
bmZvKCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KIHVuc2lnbmVkIFBsdWdp
blBhY2thZ2U6Omhhc2goKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CkBA
IC0xMDAsNiArMTAwLDEyIEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFi
bGUsIHZvaWQqKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBOUEVSCiBQbHVnaW5WaWV3Ojp+
UGx1Z2luVmlldygpIHt9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoUV9PU19XSU5DRSkKK1ZlY3Rv
cjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKSB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9Cit2b2lkIFBsdWdpbkRh
dGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRo
cykgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyB9Citib29sIFBsdWdpbkRhdGFiYXNlOjppc1By
ZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkgeyBub3RJbXBs
ZW1lbnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFZlY3RvcjxTdHJpbmc+IHN1cHBvcnRlZEtleVNpemVzKCkgeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9SZWd1
bGFyRXhwcmVzc2lvbi5jcHAKaW5kZXggMWI5MzNmZi4uZDE3ODU1ZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwCkBAIC0zMSw3ICszMSw5IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
cGNyZS9wY3JlLmg+CisjaWYgSEFWRShTWVNfVFlQRVNfSCkKICNpbmNsdWRlIDxzeXMvdHlwZXMu
aD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbVRpbWVXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lz
dGVtVGltZVdpbi5jcHAKaW5kZXggNmUxNzMxNy4uOTZlYjY1MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU3lzdGVtVGltZVdpbi5jcHAKQEAgLTM0LDcgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGRvdWJsZSBjdXJyZW50VGltZSgpCiB7CiAgICAgRklMRVRJTUUgZnQ7CisjaWYgUExBVEZP
Uk0oV0lOX0NFKQorICAgIFNZU1RFTVRJTUUgc3lzdGltZTsKKyAgICBHZXRTeXN0ZW1UaW1lKCZz
eXN0aW1lKTsKKyAgICBTeXN0ZW1UaW1lVG9GaWxlVGltZSgmc3lzdGltZSwgJmZ0KTsKKyNlbHNl
CiAgICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJmZ0KTsKKyNlbmRpZgogCiAgICAgLy8gQXMg
cGVyIFdpbmRvd3MgZG9jdW1lbnRhdGlvbiBmb3IgRklMRVRJTUUsIGNvcHkgdGhlIHJlc3VsdGlu
ZyBGSUxFVElNRSBzdHJ1Y3R1cmUgdG8gYQogICAgIC8vIFVMQVJHRV9JTlRFR0VSIHN0cnVjdHVy
ZSB1c2luZyBtZW1jcHkgKHVzaW5nIG1lbWNweSBpbnN0ZWFkIG9mIGRpcmVjdCBhc3NpZ25tZW50
IGNhbgpAQCAtNTYsMTAgKzYyLDEyIEBAIGRvdWJsZSBjdXJyZW50VGltZSgpCiAKIGZsb2F0IHVz
ZXJJZGxlVGltZSgpCiB7CisjaWYgIVBMQVRGT1JNKFdJTl9DRSkKICAgICBMQVNUSU5QVVRJTkZP
IGxhc3RJbnB1dEluZm8gPSB7MH07CiAgICAgbGFzdElucHV0SW5mby5jYlNpemUgPSBzaXplb2Yo
TEFTVElOUFVUSU5GTyk7CiAgICAgaWYgKDo6R2V0TGFzdElucHV0SW5mbygmbGFzdElucHV0SW5m
bykpCiAgICAgICAgIHJldHVybiAoR2V0VGlja0NvdW50KCkgLSBsYXN0SW5wdXRJbmZvLmR3VGlt
ZSkgKiAwLjAwMTsgLy8gOjpHZXRUaWNrQ291bnQgcmV0dXJucyBtcyBvZiB1cHRpbWUgdmFsaWQg
Zm9yIHVwIHRvIDQ5LjcgZGF5cy4KKyNlbmRpZgogICAgIHJldHVybiBGTFRfTUFYOyAvLyByZXR1
cm4gYW4gYXJiaXRyYXJpbHkgaGlnaCB1c2VySWRsZVRpbWUgc28gdGhhdCByZWxlYXNpbmcgcGFn
ZXMgZnJvbSB0aGUgcGFnZSBjYWNoZSBpc24ndCBwb3N0cG9uZWQuIAogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQucHJvIGIvV2ViS2l0LnBybwppbmRleCAwMzVmNzNhLi4xODAxNDI2IDEwMDY0NAot
LS0gYS9XZWJLaXQucHJvCisrKyBiL1dlYktpdC5wcm8KQEAgLTgsNSArOCw1IEBAIFNVQkRJUlMg
Kz0gXAogICAgICAgICBXZWJLaXQvcXQvUXRMYXVuY2hlciBcCiAgICAgICAgIFdlYktpdC9xdC90
ZXN0cwogCi0hd2luMzItKjogU1VCRElSUyArPSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9EdW1wUmVuZGVyVHJlZS5wcm8KKyF3aW4zMjogU1VCRElSUyArPSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KIAotLSAKMS42LjAuMi5nMmViYzAKCg==
</data>
<flag name="review"
          id="10405"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23339</attachid>
            <date>2008-09-11 00:26:20 -0700</date>
            <delta_ts>2008-09-15 14:35:02 -0700</delta_ts>
            <desc>Implemented currentThreadStackBase() on Windows CE. (updated WINCE -&gt; WIN_CE)</desc>
            <filename>0002-Implemented-currentThreadStackBase-on-Windows-CE.patch</filename>
            <type>text/plain</type>
            <size>4083</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSAyZWExZGVhMTM1MWI2YTdkZjRiNmIxY2M2Njc2NmI2ZDQ1ZDhiNmE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2UgU3RhaWtvcyA8Z2VvcmdlQHN0YWlrb3MubmV0PgpE
YXRlOiBUdWUsIDkgU2VwIDIwMDggMTY6MDE6MjkgKzAyMDAKU3ViamVjdDogW1BBVENIXSBJbXBs
ZW1lbnRlZCBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkgb24gV2luZG93cyBDRS4KCi0tLQogSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgfCAgIDExICsrKysrCiBKYXZhU2NyaXB0Q29y
ZS9ranMvY29sbGVjdG9yLmNwcCB8ICAgODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggOTUxNThlNi4uYzBjMDEwMyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDA4LTA5LTA5ICBHZW9yZ2UgU3RhaWtvcyAgPGdlb3JnZUBzdGFpa29zLm5ldD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1l
bnRlZCBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkgb24gV2luZG93cyBDRS4KKworICAgICAgICAq
IGtqcy9jb2xsZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpHQ19nZXRfd3JpdGFibGVfbGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6R0NfZ2V0X3N0YWNrX2Jhc2UpOgorICAgICAgICAoSlNDOjpjdXJy
ZW50VGhyZWFkU3RhY2tCYXNlKToKKwogMjAwOC0wOS0xMCAgU2ltb24gSGF1c21hbm4gIDxoYXVz
bWFubkB3ZWJraXQub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZCBidXQgdHJpdmlhbCBvbmUt
bGluZXIgZm9yIHlldCB1bnVzZWQgbWFjcm8uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9r
anMvY29sbGVjdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCmluZGV4
IDZmYzU0ODcuLjg0N2I5MTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0
b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAw
OCBUb3JjaCBNb2JpbGUsIEluYy4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM5NCw2ICszOTUs
ODUgQEAgdm9pZCogSGVhcDo6YWxsb2NhdGVOdW1iZXIoc2l6ZV90IHMpCiAgICAgcmV0dXJuIGhl
YXBBbGxvY2F0ZTxOdW1iZXJIZWFwPihzKTsKIH0KIAorLyogUmV0dXJuIHRoZSBudW1iZXIgb2Yg
Ynl0ZXMgdGhhdCBhcmUgd3JpdGFibGUgc3RhcnRpbmcgYXQgcC4gICovCisvKiBUaGUgcG9pbnRl
ciBwIGlzIGFzc3VtZWQgdG8gYmUgcGFnZSBhbGlnbmVkLiAgICAgICAgICovCisvKiBJZiBiYXNl
IGlzIG5vdCAwLCAqYmFzZSBiZWNvbWVzIHRoZSBiZWdpbm5pbmcgb2YgdGhlICAgICAqLworLyog
YWxsb2NhdGlvbiByZWdpb24gY29udGFpbmluZyBwLiAgICAgICAgICAgICAgKi8KKyNpZiBQTEFU
Rk9STShXSU5fQ0UpCisjIGRlZmluZSBpc193cml0YWJsZShwcm90KSAoKHByb3QpID09IFBBR0Vf
UkVBRFdSSVRFIFwKKwkJCSAgICB8fCAocHJvdCkgPT0gUEFHRV9XUklURUNPUFkgXAorCQkJICAg
IHx8IChwcm90KSA9PSBQQUdFX0VYRUNVVEVfUkVBRFdSSVRFIFwKKwkJCSAgICB8fCAocHJvdCkg
PT0gUEFHRV9FWEVDVVRFX1dSSVRFQ09QWSkKKworRFdPUkQgR0NfZ2V0X3dyaXRhYmxlX2xlbmd0
aCh2b2lkKiBwLCB2b2lkKiAqYmFzZSkKK3sKKyAgICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04g
YnVmOworICAgIERXT1JEIHJlc3VsdDsKKyAgICBEV09SRCBwcm90ZWN0OworCisgICAgcmVzdWx0
ID0gVmlydHVhbFF1ZXJ5KHAsICZidWYsIHNpemVvZihidWYpKTsKKyAgICBpZiAocmVzdWx0ICE9
IHNpemVvZihidWYpKSBBU1NFUlQoMCk7IC8vQUJPUlQoIldlaXJkIFZpcnR1YWxRdWVyeSByZXN1
bHQiKTsKKyAgICBpZiAoYmFzZSAhPSAwKSAqYmFzZSA9ICh2b2lkKikoYnVmLkFsbG9jYXRpb25C
YXNlKTsKKyAgICBwcm90ZWN0ID0gKGJ1Zi5Qcm90ZWN0ICYgfihQQUdFX0dVQVJEIHwgUEFHRV9O
T0NBQ0hFKSk7CisgICAgaWYgKCFpc193cml0YWJsZShwcm90ZWN0KSkgeworICAgICAgICByZXR1
cm4oMCk7CisgICAgfQorICAgIGlmIChidWYuU3RhdGUgIT0gTUVNX0NPTU1JVCkgcmV0dXJuKDAp
OworICAgIHJldHVybihidWYuUmVnaW9uU2l6ZSk7Cit9CisKKyNpZiAxIC8vIFVTRShNVUxUSVRI
UkVBRCkKK3ZvaWQqIEdDX2dldF9zdGFja19iYXNlKCkKK3sKKwlzdGF0aWMgRFdPUkQgcGFnZVNp
emUgPSAwOworCWlmICghcGFnZVNpemUpCisJeworCQlTWVNURU1fSU5GTyBzeXNJbmZvOworCQlH
ZXRTeXN0ZW1JbmZvKCZzeXNJbmZvKTsKKwkJcGFnZVNpemUgPSBzeXNJbmZvLmR3UGFnZVNpemU7
CisJfQorICAgIGludCBkdW1teTsKKyAgICB2b2lkKiBzcCA9ICh2b2lkKikoJmR1bW15KTsKKyAg
ICBjaGFyKiB0cnVuY19zcCA9IChjaGFyKikoKERXT1JEKXNwICYgfihwYWdlU2l6ZSAtIDEpKTsK
Kwlmb3IgKDs7KQorCXsKKwkJRFdPUkQgc2l6ZSA9IEdDX2dldF93cml0YWJsZV9sZW5ndGgodHJ1
bmNfc3AsIDApOworCQlpZiAoc2l6ZSA8IHBhZ2VTaXplKQorCQkJcmV0dXJuIHRydW5jX3NwICsg
c2l6ZTsKKwkJdHJ1bmNfc3AgKz0gcGFnZVNpemU7CisJfQorfQorI2Vsc2UKK3ZvaWQqIEdDX2dl
dF9zdGFja19iYXNlKCkKK3sKKwlzdGF0aWMgdm9pZCogc3RhY2tCYXNlID0gMDsKKwlpZiAoIXN0
YWNrQmFzZSkKKwl7CisJCVNZU1RFTV9JTkZPIHN5c0luZm87CisJCUdldFN5c3RlbUluZm8oJnN5
c0luZm8pOworCisJCWludCBkdW1teTsKKwkJdm9pZCogc3AgPSAodm9pZCopKCZkdW1teSk7CisJ
CWNoYXIqIHRydW5jX3NwID0gKGNoYXIqKSgoRFdPUkQpc3AgJiB+KHN5c0luZm8uZHdQYWdlU2l6
ZSAtIDEpKTsKKwkJZm9yICg7OykKKwkJeworCQkJRFdPUkQgc2l6ZSA9IEdDX2dldF93cml0YWJs
ZV9sZW5ndGgodHJ1bmNfc3AsIDApOworCQkJaWYgKHNpemUgPCBzeXNJbmZvLmR3UGFnZVNpemUp
CisJCQl7CisJCQkJc3RhY2tCYXNlID0gdHJ1bmNfc3AgKyBzaXplOworCQkJCWJyZWFrOworCQkJ
fQorCQkJdHJ1bmNfc3AgKz0gc3lzSW5mby5kd1BhZ2VTaXplOworCQl9CisJfQkKKwkKKwlyZXR1
cm4gc3RhY2tCYXNlOworfQorI2VuZGlmIC8vIFVTRShNVUxUSVRIUkVBRCkKKworI2VuZGlmIC8v
IFBMQVRGT1JNKFdJTl9DRSkKKworCiBzdGF0aWMgaW5saW5lIHZvaWQqIGN1cnJlbnRUaHJlYWRT
dGFja0Jhc2UoKQogewogI2lmIFBMQVRGT1JNKERBUldJTikKQEAgLTQ0OSw3ICs1MjksOSBAQCBz
dGF0aWMgaW5saW5lIHZvaWQqIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKQogICAgICAgICBwdGhy
ZWFkX2F0dHJfZGVzdHJveSgmc2F0dHIpOwogICAgICAgICBzdGFja1RocmVhZCA9IHRocmVhZDsK
ICAgICB9Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihzdGFja0Jhc2UpICsgc3RhY2tT
aXplOworICAgIHJldHVybiAodm9pZCopKHNpemVfdChzdGFja0Jhc2UpICsgc3RhY2tTaXplKTsK
KyNlbGlmIFBMQVRGT1JNKFdJTl9DRSkKKyAgICByZXR1cm4gR0NfZ2V0X3N0YWNrX2Jhc2UoKTsK
ICNlbHNlCiAjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIHN0YWNrIGJhc2Ugb24gdGhpcyBw
bGF0Zm9ybQogI2VuZGlmCi0tIAoxLjYuMC4yLmcyZWJjMAoK
</data>
<flag name="review"
          id="10406"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23340</attachid>
            <date>2008-09-11 00:27:40 -0700</date>
            <delta_ts>2008-09-21 14:29:55 -0700</delta_ts>
            <desc>Fix compilation on Windows CE when using some C string functions (updated for WINCE -&gt; WIN_CE)</desc>
            <filename>0004-2008-09-09-Joerg-Bornemann-joerg.bornemann-trollt.patch</filename>
            <type>text/plain</type>
            <size>1904</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">RnJvbSAxMGExYTI1N2MzMzM5MGI2NzIxOGQyMDhhOGEwODBhN2Q4MzQ3NjJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTY6MDc6MTcgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IEZpeCBjb21waWxhdGlvbiBvbiBXaW5kb3dzIENFLgoKICAgICAgICBzdHIobilpY21wLCBzdHJk
dXAgYW5kIHZzbnByaW50ZiBhcmUgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzIENFLAogICAgICAg
IHRoZXkgYXJlIGNhbGxlZCBfc3RyKG4paWNtcCwgZXRjLiBpbnN0ZWFkCi0tLQogSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgICAxMSArKysrKysrKysrKwogSmF2YVNjcmlwdENv
cmUvd3RmL1N0cmluZ0V4dHJhcy5oIHwgICAgNyArKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE4
IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVjOGZkMDEuLmNi
MTA2OTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBvbiBXaW5kb3dzIENF
LgorCisgICAgICAgIHN0cihuKWljbXAsIHN0cmR1cCBhbmQgdnNucHJpbnRmIGFyZSBub3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MgQ0UsCisgICAgICAgIHRoZXkgYXJlIGNhbGxlZCBfc3RyKG4paWNt
cCwgZXRjLiBpbnN0ZWFkCisKKyAgICAgICAgKiB3dGYvU3RyaW5nRXh0cmFzLmg6CisKKzIwMDgt
MDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFBvcnRlZCBE
YXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0cnRvbAogICAgICAg
ICBPbiBXaW5kb3dzIENFIGVycm5vIGlzIG5vdCBhdmFpbGFibGUKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1N0cmluZ0V4dHJhcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0cmlu
Z0V4dHJhcy5oCmluZGV4IDQ0MWNkNzUuLjQ2NWI0OWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9TdHJpbmdFeHRyYXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nRXh0
cmFzLmgKQEAgLTQ2LDYgKzQ2LDEzIEBAIGlubGluZSBpbnQgc25wcmludGYoY2hhciAqc3RyLCBz
aXplX3Qgc2l6ZSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCiAjZGVmaW5lIHZzbnByaW50ZiBz
bnByaW50ZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU5fQ0UpCisjZGVmaW5lIHN0cm5pY21w
IF9zdHJuaWNtcAorI2RlZmluZSBzdHJpY21wIF9zdHJpY21wCisjZGVmaW5lIHN0cmR1cCBfc3Ry
ZHVwCisjZGVmaW5lIHZzbnByaW50ZiBfdnNucHJpbnRmCisjZW5kaWYKKwogaW5saW5lIGludCBz
dHJuY2FzZWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3QgY2hhciogczIsIHNpemVfdCBsZW4pIHsg
cmV0dXJuIHN0cm5pY21wKHMxLCBzMiwgbGVuKTsgfQogCiBpbmxpbmUgaW50IHN0cmNhc2VjbXAo
Y29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7IHJldHVybiBzdHJpY21wKHMxLCBzMik7
IH0KLS0gCjEuNi4wLjIuZzJlYmMwCgo=
</data>
<flag name="review"
          id="10407"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23466</attachid>
            <date>2008-09-16 01:54:16 -0700</date>
            <delta_ts>2008-11-19 02:24:45 -0800</delta_ts>
            <desc>Implemented currentThreadStackBase() on Windows CE. (updated)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3092</size>
            <attacher name="Joerg Bornemann">joerg.bornemann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwIGIvSmF2YVNjcmlw
dENvcmUva2pzL2NvbGxlY3Rvci5jcHAKaW5kZXggOTcwZGM5Ni4uYTBmZjgyMSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUv
a2pzL2NvbGxlY3Rvci5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzk0LDYgKzM5NSw1NiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZU51
bWJlcihzaXplX3QgcykKICAgICByZXR1cm4gaGVhcEFsbG9jYXRlPE51bWJlckhlYXA+KHMpOwog
fQogCisvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGFyZSB3cml0YWJsZSBzdGFy
dGluZyBhdCBwLiAgKi8KKy8qIFRoZSBwb2ludGVyIHAgaXMgYXNzdW1lZCB0byBiZSBwYWdlIGFs
aWduZWQuICAgICAgICAgKi8KKy8qIElmIGJhc2UgaXMgbm90IDAsICpiYXNlIGJlY29tZXMgdGhl
IGJlZ2lubmluZyBvZiB0aGUgICAgICovCisvKiBhbGxvY2F0aW9uIHJlZ2lvbiBjb250YWluaW5n
IHAuICAgICAgICAgICAgICAqLworI2lmIFBMQVRGT1JNKFdJTl9DRSkKKyMgZGVmaW5lIGlzX3dy
aXRhYmxlKHByb3QpICgocHJvdCkgPT0gUEFHRV9SRUFEV1JJVEUgXAorCQkJICAgIHx8IChwcm90
KSA9PSBQQUdFX1dSSVRFQ09QWSBcCisJCQkgICAgfHwgKHByb3QpID09IFBBR0VfRVhFQ1VURV9S
RUFEV1JJVEUgXAorCQkJICAgIHx8IChwcm90KSA9PSBQQUdFX0VYRUNVVEVfV1JJVEVDT1BZKQor
CitEV09SRCBHQ19nZXRfd3JpdGFibGVfbGVuZ3RoKHZvaWQqIHAsIHZvaWQqICpiYXNlKQorewor
ICAgIE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiBidWY7CisgICAgRFdPUkQgcmVzdWx0OworICAg
IERXT1JEIHByb3RlY3Q7CisKKyAgICByZXN1bHQgPSBWaXJ0dWFsUXVlcnkocCwgJmJ1Ziwgc2l6
ZW9mKGJ1ZikpOworICAgIGlmIChyZXN1bHQgIT0gc2l6ZW9mKGJ1ZikpIEFTU0VSVCgwKTsgLy9B
Qk9SVCgiV2VpcmQgVmlydHVhbFF1ZXJ5IHJlc3VsdCIpOworICAgIGlmIChiYXNlICE9IDApICpi
YXNlID0gKHZvaWQqKShidWYuQWxsb2NhdGlvbkJhc2UpOworICAgIHByb3RlY3QgPSAoYnVmLlBy
b3RlY3QgJiB+KFBBR0VfR1VBUkQgfCBQQUdFX05PQ0FDSEUpKTsKKyAgICBpZiAoIWlzX3dyaXRh
YmxlKHByb3RlY3QpKSB7CisgICAgICAgIHJldHVybigwKTsKKyAgICB9CisgICAgaWYgKGJ1Zi5T
dGF0ZSAhPSBNRU1fQ09NTUlUKSByZXR1cm4oMCk7CisgICAgcmV0dXJuKGJ1Zi5SZWdpb25TaXpl
KTsKK30KKwordm9pZCogR0NfZ2V0X3N0YWNrX2Jhc2UoKQoreworCXN0YXRpYyBEV09SRCBwYWdl
U2l6ZSA9IDA7CisJaWYgKCFwYWdlU2l6ZSkKKwl7CisJCVNZU1RFTV9JTkZPIHN5c0luZm87CisJ
CUdldFN5c3RlbUluZm8oJnN5c0luZm8pOworCQlwYWdlU2l6ZSA9IHN5c0luZm8uZHdQYWdlU2l6
ZTsKKwl9CisgICAgaW50IGR1bW15OworICAgIHZvaWQqIHNwID0gKHZvaWQqKSgmZHVtbXkpOwor
ICAgIGNoYXIqIHRydW5jX3NwID0gKGNoYXIqKSgoRFdPUkQpc3AgJiB+KHBhZ2VTaXplIC0gMSkp
OworCWZvciAoOzspCisJeworCQlEV09SRCBzaXplID0gR0NfZ2V0X3dyaXRhYmxlX2xlbmd0aCh0
cnVuY19zcCwgMCk7CisJCWlmIChzaXplIDwgcGFnZVNpemUpCisJCQlyZXR1cm4gdHJ1bmNfc3Ag
KyBzaXplOworCQl0cnVuY19zcCArPSBwYWdlU2l6ZTsKKwl9Cit9CisjZW5kaWYgLy8gUExBVEZP
Uk0oV0lOX0NFKQorCisKIHN0YXRpYyBpbmxpbmUgdm9pZCogY3VycmVudFRocmVhZFN0YWNrQmFz
ZSgpCiB7CiAjaWYgUExBVEZPUk0oREFSV0lOKQpAQCAtNDUwLDYgKzUwMSw4IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCogY3VycmVudFRocmVhZFN0YWNrQmFzZSgpCiAgICAgICAgIHN0YWNrVGhyZWFk
ID0gdGhyZWFkOwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrQmFz
ZSkgKyBzdGFja1NpemU7CisjZWxpZiBQTEFURk9STShXSU5fQ0UpCisgICAgcmV0dXJuIEdDX2dl
dF9zdGFja19iYXNlKCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBzdGFj
ayBiYXNlIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgpAQCAtOTU1LDggKzEwMDgsMTUgQEAgYm9v
bCBIZWFwOjpjb2xsZWN0KCkKICNlbmRpZgogCiAgICAgQVNTRVJUKChwcmltYXJ5SGVhcC5vcGVy
YXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKSB8IChudW1iZXJIZWFwLm9wZXJhdGlvbklu
UHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pKTsKLSAgICBpZiAoKHByaW1hcnlIZWFwLm9wZXJhdGlv
bkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pIHwgKG51bWJlckhlYXAub3BlcmF0aW9uSW5Qcm9n
cmVzcyAhPSBOb09wZXJhdGlvbikpCisgICAgaWYgKChwcmltYXJ5SGVhcC5vcGVyYXRpb25JblBy
b2dyZXNzICE9IE5vT3BlcmF0aW9uKSB8IChudW1iZXJIZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3Mg
IT0gTm9PcGVyYXRpb24pKSB7CisjaWYgUExBVEZPUk0oV0lOX0NFKQorICAgICAgICAvKiBPbiBX
aW5kb3dzIENFIHRoZXJlJ3Mgbm8gYWJvcnQoKSBhbmQgb24gcmVndWxhciBXaW5kb3dzCisgICAg
ICAgICAgIGFib3J0KCkgZXhpdHMgd2l0aCBleGl0IGNvZGUgMy4gKi8KKyAgICAgICAgZXhpdCgz
KTsKKyNlbHNlCiAgICAgICAgIGFib3J0KCk7CisjZW5kaWYKKyAgICB9CiAKICAgICBKQVZBU0NS
SVBUQ09SRV9HQ19CRUdJTigpOwogICAgIHByaW1hcnlIZWFwLm9wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSBDb2xsZWN0aW9uOwo=
</data>
<flag name="review"
          id="10483"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23468</attachid>
            <date>2008-09-16 02:20:18 -0700</date>
            <delta_ts>2008-09-16 02:33:27 -0700</delta_ts>
            <desc>Change DateMath.cpp to not use errno with strtol (updated)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5771</size>
            <attacher name="Joerg Bornemann">joerg.bornemann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjNTQ0ZTc4Li5mNDIzMzUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMDgtMDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9sbHRl
Y2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcnRlZCBEYXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0cnRv
bAorICAgICAgICBPbiBXaW5kb3dzIENFIGVycm5vIGlzIG5vdCBhdmFpbGFibGUKKworICAgICAg
ICAqIGtqcy9EYXRlTWF0aC5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlRGF0ZSk6CisKIDIwMDgt
MDktMDkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXgs
IHJ1YmJlci1zdGFtcGVkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3Bw
CmluZGV4IDIxMmU3ODIuLjY4ODk0M2EgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9E
YXRlTWF0aC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcApAQCAtMjg5
LDcgKzI4OSwyMCBAQCBkb3VibGUgZ2V0Q3VycmVudFVUQ1RpbWUoKQogCiBkb3VibGUgZ2V0Q3Vy
cmVudFVUQ1RpbWVXaXRoTWljcm9zZWNvbmRzKCkKIHsKLSNpZiBQTEFURk9STShXSU5fT1MpCisj
aWYgUExBVEZPUk0oV0lOX0NFKQorCVNZU1RFTVRJTUUgc3lzdGVtVGltZTsKKwlHZXRTeXN0ZW1U
aW1lKCZzeXN0ZW1UaW1lKTsKKwlzdHJ1Y3QgdG0gdG10aW1lOworCXRtdGltZS50bV95ZWFyID0g
c3lzdGVtVGltZS53WWVhciAtIDE5MDA7CisJdG10aW1lLnRtX21vbiA9IHN5c3RlbVRpbWUud01v
bnRoIC0gMTsKKwl0bXRpbWUudG1fbWRheSA9IHN5c3RlbVRpbWUud0RheTsKKwl0bXRpbWUudG1f
d2RheSA9IHN5c3RlbVRpbWUud0RheU9mV2VlazsKKwl0bXRpbWUudG1faG91ciA9IHN5c3RlbVRp
bWUud0hvdXI7CisJdG10aW1lLnRtX21pbiA9IHN5c3RlbVRpbWUud01pbnV0ZTsKKwl0bXRpbWUu
dG1fc2VjID0gc3lzdGVtVGltZS53U2Vjb25kOworICAgIHRpbWVfdCB0aW1ldCA9IG1rdGltZSgm
dG10aW1lKTsKKwlkb3VibGUgdXRjID0gdGltZXQgKiBtc1BlclNlY29uZCArIHN5c3RlbVRpbWUu
d01pbGxpc2Vjb25kczsKKyNlbGlmIFBMQVRGT1JNKFdJTl9PUykKICAgICAvLyBGSVhNRTogdGhl
IGltcGxlbWVudGF0aW9uIGZvciBXaW5kb3dzIGlzIG9ubHkgbWlsbGlzZWNvbmQgcmVzb2x1dGlv
bi4KICNpZiBDT01QSUxFUihCT1JMQU5EKQogICAgIHN0cnVjdCB0aW1lYiB0aW1lYnVmZmVyOwpA
QCAtMzA5LDcgKzMyMiw3IEBAIGRvdWJsZSBnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29u
ZHMoKQogCiB2b2lkIGdldExvY2FsVGltZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0
IHRtKiBsb2NhbFRNKQogewotI2lmIENPTVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykK
KyNpZiBDT01QSUxFUihNU1ZDNykgfHwgQ09NUElMRVIoTUlOR1cpIHx8IFBMQVRGT1JNKFdJTl9D
RSkKICAgICAqbG9jYWxUTSA9ICpsb2NhbHRpbWUobG9jYWxUaW1lKTsKICNlbGlmIENPTVBJTEVS
KE1TVkMpCiAgICAgbG9jYWx0aW1lX3MobG9jYWxUTSwgbG9jYWxUaW1lKTsKQEAgLTU5Niw2ICs2
MDksMTYgQEAgc3RhdGljIGludCBmaW5kTW9udGgoY29uc3QgY2hhciogbW9udGhTdHIpCiAgICAg
cmV0dXJuIC0xOwogfQogCitzdGF0aWMgYm9vbCBwYXJzZUxvbmcoY2hhciomIHJldFZhbCwgY29u
c3QgY2hhciogc3RyaW5nLCBjaGFyKiogZW5kUHRyLCBpbnQgYmFzZSkKK3sKKyAgICByZXRWYWwg
PSBzdHJ0b2woc3RyaW5nLCBlbnRQdHIsIGJhc2UpOworI2lmIEhBVkUoRVJSTk8pCisgICAgcmV0
dXJuIGVycm5vID09IDA7CisjZWxzZQorICAgIHJldHVybiBzdHJpbmcgIT0gKmVuZFB0ciAmJiBy
ZXR2YWwgIT0gTE9OR19NSU4gJiYgcmV0dmFsICE9IExPTkdfTUFYOworI2VuZGlmCit9CisKIGRv
dWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKIHsKICAgICAvLyBUaGlzIHBhcnNl
cyBhIGRhdGUgaW4gdGhlIGZvcm06CkBAIC02NDIsOSArNjY1LDggQEAgZG91YmxlIHBhcnNlRGF0
ZShjb25zdCBVU3RyaW5nICZkYXRlKQogCiAgICAgLy8gJyAwOS1Ob3YtOTkgMjM6MTI6NDAgR01U
JwogICAgIGNoYXIgKm5ld1Bvc1N0cjsKLSAgICBlcnJubyA9IDA7Ci0gICAgbG9uZyBkYXkgPSBz
dHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApOwotICAgIGlmIChlcnJubykKKyAgICBs
b25nIGRheTsKKyAgICBpZiAoIXBhcnNlTG9uZyhkYXksIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIs
IDEwKSkKICAgICAgICAgcmV0dXJuIE5hTjsKICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwog
CkBAIC02NjMsMjIgKzY4NSwyMCBAQCBkb3VibGUgcGFyc2VEYXRlKGNvbnN0IFVTdHJpbmcgJmRh
dGUpCiAgICAgICAgIGlmICghKisrZGF0ZVN0cmluZykKICAgICAgICAgICAgIHJldHVybiBOYU47
CiAgICAgICAgIHllYXIgPSBkYXk7Ci0gICAgICAgIG1vbnRoID0gc3RydG9sKGRhdGVTdHJpbmcs
ICZuZXdQb3NTdHIsIDEwKSAtIDE7Ci0gICAgICAgIGlmIChlcnJubykKKyAgICAgICAgaWYgKCFw
YXJzZUxvbmcobW9udGgsIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKSkKICAgICAgICAgICAg
IHJldHVybiBOYU47CisgICAgICAgIG1vbnRoIC09IDE7CiAgICAgICAgIGRhdGVTdHJpbmcgPSBu
ZXdQb3NTdHI7CiAgICAgICAgIGlmICgqZGF0ZVN0cmluZysrICE9ICcvJyB8fCAhKmRhdGVTdHJp
bmcpCiAgICAgICAgICAgICByZXR1cm4gTmFOOwotICAgICAgICBkYXkgPSBzdHJ0b2woZGF0ZVN0
cmluZywgJm5ld1Bvc1N0ciwgMTApOwotICAgICAgICBpZiAoZXJybm8pCisgICAgICAgIGlmICgh
cGFyc2VMb25nKGRheSwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICAgICAg
cmV0dXJuIE5hTjsKICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKICAgICB9IGVsc2Ug
aWYgKCpkYXRlU3RyaW5nID09ICcvJyAmJiBtb250aCA9PSAtMSkgewogICAgICAgICBkYXRlU3Ry
aW5nKys7CiAgICAgICAgIC8vIFRoaXMgbG9va3MgbGlrZSBhIE1NL0REL1lZWVkgZGF0ZSwgbm90
IGFuIFJGQyBkYXRlLgogICAgICAgICBtb250aCA9IGRheSAtIDE7IC8vIDAtYmFzZWQKLSAgICAg
ICAgZGF5ID0gc3RydG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgaWYg
KGVycm5vKQorICAgICAgICBpZiAoIXBhcnNlTG9uZyhkYXksIGRhdGVTdHJpbmcsICZuZXdQb3NT
dHIsIDEwKSkKICAgICAgICAgICAgIHJldHVybiBOYU47CiAgICAgICAgIGlmIChkYXkgPCAxIHx8
IGRheSA+IDMxKQogICAgICAgICAgICAgcmV0dXJuIE5hTjsKQEAgLTcxOSw4ICs3MzksNyBAQCBk
b3VibGUgcGFyc2VEYXRlKGNvbnN0IFVTdHJpbmcgJmRhdGUpCiAKICAgICAvLyAnOTkgMjM6MTI6
NDAgR01UJwogICAgIGlmICh5ZWFyIDw9IDAgJiYgKmRhdGVTdHJpbmcpIHsKLSAgICAgICAgeWVh
ciA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7Ci0gICAgICAgIGlmIChlcnJu
bykKKyAgICAgICAgaWYgKCFwYXJzZUxvbmcoeWVhciwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwg
MTApKQogICAgICAgICAgICAgcmV0dXJuIE5hTjsKICAgICB9CiAgICAgCkBAIC03NjIsOCArNzgx
LDcgQEAgZG91YmxlIHBhcnNlRGF0ZShjb25zdCBVU3RyaW5nICZkYXRlKQogICAgICAgICAgICAg
aWYgKCpkYXRlU3RyaW5nKysgIT0gJzonKQogICAgICAgICAgICAgICAgIHJldHVybiBOYU47CiAK
LSAgICAgICAgICAgIG1pbnV0ZSA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7
Ci0gICAgICAgICAgICBpZiAoZXJybm8pCisgICAgICAgICAgICBpZiAoIXBhcnNlTG9uZyhtaW51
dGUsIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
TmFOOwogICAgICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKIApAQCAtNzc4LDggKzc5
Niw3IEBAIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKICAgICAgICAgICAg
IGlmICgqZGF0ZVN0cmluZyA9PSc6JykgewogICAgICAgICAgICAgICAgIGRhdGVTdHJpbmcrKzsK
IAotICAgICAgICAgICAgICAgIHNlY29uZCA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9zU3Ry
LCAxMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm5vKQorICAgICAgICAgICAgICAgIGlmICgh
cGFyc2VMb25nKHNlY29uZCwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgIGRhdGVTdHJpbmcgPSBuZXdQ
b3NTdHI7CiAgICAgICAgICAgICAKQEAgLTgxOSw4ICs4MzYsOCBAQCBkb3VibGUgcGFyc2VEYXRl
KGNvbnN0IFVTdHJpbmcgJmRhdGUpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoKmRhdGVTdHJp
bmcgPT0gJysnIHx8ICpkYXRlU3RyaW5nID09ICctJykgewotICAgICAgICAgICAgbG9uZyBvID0g
c3RydG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgICAgIGlmIChlcnJu
bykKKyAgICAgICAgICAgIGxvbmcgbzsKKyAgICAgICAgICAgIGlmICghcGFyc2VMb25nKG8sIGRh
dGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTmFOOwog
ICAgICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKIApAQCAtODMyLDggKzg0OSw4IEBA
IGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKICAgICAgICAgICAgIGlmICgq
ZGF0ZVN0cmluZyAhPSAnOicpIHsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSAoKG8gLyAxMDAp
ICogNjAgKyAobyAlIDEwMCkpICogc2duOwogICAgICAgICAgICAgfSBlbHNlIHsgLy8gR01UKzA1
OjAwCi0gICAgICAgICAgICAgICAgbG9uZyBvMiA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9z
U3RyLCAxMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm5vKQorICAgICAgICAgICAgICAgIGxv
bmcgbzI7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUxvbmcobzIsIGRhdGVTdHJpbmcsICZu
ZXdQb3NTdHIsIDEwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsKICAgICAgICAg
ICAgICAgICBkYXRlU3RyaW5nID0gbmV3UG9zU3RyOwogICAgICAgICAgICAgICAgIG9mZnNldCA9
IChvICogNjAgKyBvMikgKiBzZ247CkBAIC04NTQsOCArODcxLDcgQEAgZG91YmxlIHBhcnNlRGF0
ZShjb25zdCBVU3RyaW5nICZkYXRlKQogICAgIHNraXBTcGFjZXNBbmRDb21tZW50cyhkYXRlU3Ry
aW5nKTsKIAogICAgIGlmICgqZGF0ZVN0cmluZyAmJiB5ZWFyID09IC0xKSB7Ci0gICAgICAgIHll
YXIgPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApOwotICAgICAgICBpZiAoZXJy
bm8pCisgICAgICAgIGlmICghcGFyc2VMb25nKHllYXIsIGRhdGVTdHJpbmcsICZuZXdQb3NTdHIs
IDEwKSkKICAgICAgICAgICAgIHJldHVybiBOYU47CiAgICAgICAgIGRhdGVTdHJpbmcgPSBuZXdQ
b3NTdHI7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23469</attachid>
            <date>2008-09-16 02:36:01 -0700</date>
            <delta_ts>2008-09-22 23:14:38 -0700</delta_ts>
            <desc>Change DateMath.cpp to not use errno with strtol (updated)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5803</size>
            <attacher name="Joerg Bornemann">joerg.bornemann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjNTQ0ZTc4Li5mNDIzMzUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMDgtMDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9sbHRl
Y2guY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcnRlZCBEYXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0cnRv
bAorICAgICAgICBPbiBXaW5kb3dzIENFIGVycm5vIGlzIG5vdCBhdmFpbGFibGUKKworICAgICAg
ICAqIGtqcy9EYXRlTWF0aC5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlRGF0ZSk6CisKIDIwMDgt
MDktMDkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXgs
IHJ1YmJlci1zdGFtcGVkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0ZU1hdGguY3Bw
CmluZGV4IDIxMmU3ODIuLmY1MGQ3MDEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9E
YXRlTWF0aC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcApAQCAtMjg5
LDcgKzI4OSwyMCBAQCBkb3VibGUgZ2V0Q3VycmVudFVUQ1RpbWUoKQogCiBkb3VibGUgZ2V0Q3Vy
cmVudFVUQ1RpbWVXaXRoTWljcm9zZWNvbmRzKCkKIHsKLSNpZiBQTEFURk9STShXSU5fT1MpCisj
aWYgUExBVEZPUk0oV0lOX0NFKQorICAgIFNZU1RFTVRJTUUgc3lzdGVtVGltZTsKKyAgICBHZXRT
eXN0ZW1UaW1lKCZzeXN0ZW1UaW1lKTsKKyAgICBzdHJ1Y3QgdG0gdG10aW1lOworICAgIHRtdGlt
ZS50bV95ZWFyID0gc3lzdGVtVGltZS53WWVhciAtIDE5MDA7CisgICAgdG10aW1lLnRtX21vbiA9
IHN5c3RlbVRpbWUud01vbnRoIC0gMTsKKyAgICB0bXRpbWUudG1fbWRheSA9IHN5c3RlbVRpbWUu
d0RheTsKKyAgICB0bXRpbWUudG1fd2RheSA9IHN5c3RlbVRpbWUud0RheU9mV2VlazsKKyAgICB0
bXRpbWUudG1faG91ciA9IHN5c3RlbVRpbWUud0hvdXI7CisgICAgdG10aW1lLnRtX21pbiA9IHN5
c3RlbVRpbWUud01pbnV0ZTsKKyAgICB0bXRpbWUudG1fc2VjID0gc3lzdGVtVGltZS53U2Vjb25k
OworICAgIHRpbWVfdCB0aW1ldCA9IG1rdGltZSgmdG10aW1lKTsKKyAgICBkb3VibGUgdXRjID0g
dGltZXQgKiBtc1BlclNlY29uZCArIHN5c3RlbVRpbWUud01pbGxpc2Vjb25kczsKKyNlbGlmIFBM
QVRGT1JNKFdJTl9PUykKICAgICAvLyBGSVhNRTogdGhlIGltcGxlbWVudGF0aW9uIGZvciBXaW5k
b3dzIGlzIG9ubHkgbWlsbGlzZWNvbmQgcmVzb2x1dGlvbi4KICNpZiBDT01QSUxFUihCT1JMQU5E
KQogICAgIHN0cnVjdCB0aW1lYiB0aW1lYnVmZmVyOwpAQCAtMzA5LDcgKzMyMiw3IEBAIGRvdWJs
ZSBnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMoKQogCiB2b2lkIGdldExvY2FsVGlt
ZShjb25zdCB0aW1lX3QqIGxvY2FsVGltZSwgc3RydWN0IHRtKiBsb2NhbFRNKQogewotI2lmIENP
TVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykKKyNpZiBDT01QSUxFUihNU1ZDNykgfHwg
Q09NUElMRVIoTUlOR1cpIHx8IFBMQVRGT1JNKFdJTl9DRSkKICAgICAqbG9jYWxUTSA9ICpsb2Nh
bHRpbWUobG9jYWxUaW1lKTsKICNlbGlmIENPTVBJTEVSKE1TVkMpCiAgICAgbG9jYWx0aW1lX3Mo
bG9jYWxUTSwgbG9jYWxUaW1lKTsKQEAgLTU5Niw2ICs2MDksMTYgQEAgc3RhdGljIGludCBmaW5k
TW9udGgoY29uc3QgY2hhciogbW9udGhTdHIpCiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMg
Ym9vbCBwYXJzZUxvbmcobG9uZyYgcmV0VmFsLCBjb25zdCBjaGFyKiBzdHJpbmcsIGNoYXIqKiBl
bmRQdHIsIGludCBiYXNlKQoreworICAgIHJldFZhbCA9IHN0cnRvbChzdHJpbmcsIGVuZFB0ciwg
YmFzZSk7CisjaWYgSEFWRShFUlJOTykKKyAgICByZXR1cm4gZXJybm8gPT0gMDsKKyNlbHNlCisg
ICAgcmV0dXJuIHN0cmluZyAhPSAqZW5kUHRyICYmIHJldFZhbCAhPSBMT05HX01JTiAmJiByZXRW
YWwgIT0gTE9OR19NQVg7CisjZW5kaWYKK30KKwogZG91YmxlIHBhcnNlRGF0ZShjb25zdCBVU3Ry
aW5nICZkYXRlKQogewogICAgIC8vIFRoaXMgcGFyc2VzIGEgZGF0ZSBpbiB0aGUgZm9ybToKQEAg
LTY0Miw5ICs2NjUsOCBAQCBkb3VibGUgcGFyc2VEYXRlKGNvbnN0IFVTdHJpbmcgJmRhdGUpCiAK
ICAgICAvLyAnIDA5LU5vdi05OSAyMzoxMjo0MCBHTVQnCiAgICAgY2hhciAqbmV3UG9zU3RyOwot
ICAgIGVycm5vID0gMDsKLSAgICBsb25nIGRheSA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9z
U3RyLCAxMCk7Ci0gICAgaWYgKGVycm5vKQorICAgIGxvbmcgZGF5OworICAgIGlmICghcGFyc2VM
b25nKGRheSwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICByZXR1cm4gTmFO
OwogICAgIGRhdGVTdHJpbmcgPSBuZXdQb3NTdHI7CiAKQEAgLTY2MywyMiArNjg1LDIwIEBAIGRv
dWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKICAgICAgICAgaWYgKCEqKytkYXRl
U3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIE5hTjsKICAgICAgICAgeWVhciA9IGRheTsKLSAg
ICAgICAgbW9udGggPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApIC0gMTsKLSAg
ICAgICAgaWYgKGVycm5vKQorICAgICAgICBpZiAoIXBhcnNlTG9uZyhtb250aCwgZGF0ZVN0cmlu
ZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICAgICAgcmV0dXJuIE5hTjsKKyAgICAgICAgbW9u
dGggLT0gMTsKICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKICAgICAgICAgaWYgKCpk
YXRlU3RyaW5nKysgIT0gJy8nIHx8ICEqZGF0ZVN0cmluZykKICAgICAgICAgICAgIHJldHVybiBO
YU47Ci0gICAgICAgIGRheSA9IHN0cnRvbChkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCk7Ci0g
ICAgICAgIGlmIChlcnJubykKKyAgICAgICAgaWYgKCFwYXJzZUxvbmcoZGF5LCBkYXRlU3RyaW5n
LCAmbmV3UG9zU3RyLCAxMCkpCiAgICAgICAgICAgICByZXR1cm4gTmFOOwogICAgICAgICBkYXRl
U3RyaW5nID0gbmV3UG9zU3RyOwogICAgIH0gZWxzZSBpZiAoKmRhdGVTdHJpbmcgPT0gJy8nICYm
IG1vbnRoID09IC0xKSB7CiAgICAgICAgIGRhdGVTdHJpbmcrKzsKICAgICAgICAgLy8gVGhpcyBs
b29rcyBsaWtlIGEgTU0vREQvWVlZWSBkYXRlLCBub3QgYW4gUkZDIGRhdGUuCiAgICAgICAgIG1v
bnRoID0gZGF5IC0gMTsgLy8gMC1iYXNlZAotICAgICAgICBkYXkgPSBzdHJ0b2woZGF0ZVN0cmlu
ZywgJm5ld1Bvc1N0ciwgMTApOwotICAgICAgICBpZiAoZXJybm8pCisgICAgICAgIGlmICghcGFy
c2VMb25nKGRheSwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICAgICAgcmV0
dXJuIE5hTjsKICAgICAgICAgaWYgKGRheSA8IDEgfHwgZGF5ID4gMzEpCiAgICAgICAgICAgICBy
ZXR1cm4gTmFOOwpAQCAtNzE5LDggKzczOSw3IEBAIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVVN0
cmluZyAmZGF0ZSkKIAogICAgIC8vICc5OSAyMzoxMjo0MCBHTVQnCiAgICAgaWYgKHllYXIgPD0g
MCAmJiAqZGF0ZVN0cmluZykgewotICAgICAgICB5ZWFyID0gc3RydG9sKGRhdGVTdHJpbmcsICZu
ZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgaWYgKGVycm5vKQorICAgICAgICBpZiAoIXBhcnNlTG9u
Zyh5ZWFyLCBkYXRlU3RyaW5nLCAmbmV3UG9zU3RyLCAxMCkpCiAgICAgICAgICAgICByZXR1cm4g
TmFOOwogICAgIH0KICAgICAKQEAgLTc2Miw4ICs3ODEsNyBAQCBkb3VibGUgcGFyc2VEYXRlKGNv
bnN0IFVTdHJpbmcgJmRhdGUpCiAgICAgICAgICAgICBpZiAoKmRhdGVTdHJpbmcrKyAhPSAnOicp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5hTjsKIAotICAgICAgICAgICAgbWludXRlID0gc3Ry
dG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgICAgIGlmIChlcnJubykK
KyAgICAgICAgICAgIGlmICghcGFyc2VMb25nKG1pbnV0ZSwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0
ciwgMTApKQogICAgICAgICAgICAgICAgIHJldHVybiBOYU47CiAgICAgICAgICAgICBkYXRlU3Ry
aW5nID0gbmV3UG9zU3RyOwogCkBAIC03NzgsOCArNzk2LDcgQEAgZG91YmxlIHBhcnNlRGF0ZShj
b25zdCBVU3RyaW5nICZkYXRlKQogICAgICAgICAgICAgaWYgKCpkYXRlU3RyaW5nID09JzonKSB7
CiAgICAgICAgICAgICAgICAgZGF0ZVN0cmluZysrOwogCi0gICAgICAgICAgICAgICAgc2Vjb25k
ID0gc3RydG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgICAgICAgICBp
ZiAoZXJybm8pCisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZUxvbmcoc2Vjb25kLCBkYXRlU3Ry
aW5nLCAmbmV3UG9zU3RyLCAxMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOYU47CiAg
ICAgICAgICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKICAgICAgICAgICAgIApAQCAt
ODE5LDggKzgzNiw4IEBAIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVVN0cmluZyAmZGF0ZSkKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICgqZGF0ZVN0cmluZyA9PSAnKycgfHwgKmRhdGVTdHJpbmcg
PT0gJy0nKSB7Ci0gICAgICAgICAgICBsb25nIG8gPSBzdHJ0b2woZGF0ZVN0cmluZywgJm5ld1Bv
c1N0ciwgMTApOwotICAgICAgICAgICAgaWYgKGVycm5vKQorICAgICAgICAgICAgbG9uZyBvOwor
ICAgICAgICAgICAgaWYgKCFwYXJzZUxvbmcobywgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTAp
KQogICAgICAgICAgICAgICAgIHJldHVybiBOYU47CiAgICAgICAgICAgICBkYXRlU3RyaW5nID0g
bmV3UG9zU3RyOwogCkBAIC04MzIsOCArODQ5LDggQEAgZG91YmxlIHBhcnNlRGF0ZShjb25zdCBV
U3RyaW5nICZkYXRlKQogICAgICAgICAgICAgaWYgKCpkYXRlU3RyaW5nICE9ICc6JykgewogICAg
ICAgICAgICAgICAgIG9mZnNldCA9ICgobyAvIDEwMCkgKiA2MCArIChvICUgMTAwKSkgKiBzZ247
CiAgICAgICAgICAgICB9IGVsc2UgeyAvLyBHTVQrMDU6MDAKLSAgICAgICAgICAgICAgICBsb25n
IG8yID0gc3RydG9sKGRhdGVTdHJpbmcsICZuZXdQb3NTdHIsIDEwKTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXJybm8pCisgICAgICAgICAgICAgICAgbG9uZyBvMjsKKyAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlTG9uZyhvMiwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gTmFOOwogICAgICAgICAgICAgICAgIGRhdGVTdHJpbmcgPSBuZXdQ
b3NTdHI7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gKG8gKiA2MCArIG8yKSAqIHNnbjsKQEAg
LTg1NCw4ICs4NzEsNyBAQCBkb3VibGUgcGFyc2VEYXRlKGNvbnN0IFVTdHJpbmcgJmRhdGUpCiAg
ICAgc2tpcFNwYWNlc0FuZENvbW1lbnRzKGRhdGVTdHJpbmcpOwogCiAgICAgaWYgKCpkYXRlU3Ry
aW5nICYmIHllYXIgPT0gLTEpIHsKLSAgICAgICAgeWVhciA9IHN0cnRvbChkYXRlU3RyaW5nLCAm
bmV3UG9zU3RyLCAxMCk7Ci0gICAgICAgIGlmIChlcnJubykKKyAgICAgICAgaWYgKCFwYXJzZUxv
bmcoeWVhciwgZGF0ZVN0cmluZywgJm5ld1Bvc1N0ciwgMTApKQogICAgICAgICAgICAgcmV0dXJu
IE5hTjsKICAgICAgICAgZGF0ZVN0cmluZyA9IG5ld1Bvc1N0cjsKICAgICB9Cg==
</data>
<flag name="review"
          id="10486"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23470</attachid>
            <date>2008-09-16 05:01:39 -0700</date>
            <delta_ts>2008-11-20 04:53:53 -0800</delta_ts>
            <desc>Make the Qt port of WebKit compile on Windows CE (updated)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42575</size>
            <attacher name="Joerg Bornemann">joerg.bornemann</attacher>
            
              <data encoding="base64">RnJvbSA4NjBmYzJkZWVlOGFkY2M2NGNlNDgyM2U1NWVhNGZkZGFlM2I1YzgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTU6NTM6NTQgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IE1ha2UgdGhlIFF0IHBvcnQgb2YgV2ViS2l0IGNvbXBpbGUgb24gV2luZG93cyBDRQotLS0KIENo
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCAr
CiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzEgKwogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpICAgICAgICAgICAgICAgICAg
fCAgICA3ICsKIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlTWF0aC5jcHAgICAgICAgICAgICAgICAg
ICAgIHwgICAxNyArLQogSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmNwcCAgICAgfCAgICAxIC0KIEphdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNCArLQogSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAg
ICAgICAgICAgICAgICAgICAgfCAgICA5ICstCiBKYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2tqcy9kdG9h
LmNwcCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiBKYXZhU2NyaXB0Q29yZS9vcy13
aW5jZS9jZV90aW1lLmNwcCAgICAgICAgICAgICAgICB8ICA2NzYgKysrKysrKysrKysrKysrKysr
KysKIEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcCAgICAgICAgICAgICAgICAgIHwg
ICAgOSArLQogSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCAgICAgICAgICAgICAgICAg
ICAgfCAgICA4ICsKIEphdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcCAgICAgICAgICAg
ICAgICAgIHwgICAgOSArCiBKYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oICAgICAgICAg
ICAgICAgICAgICB8ICAgIDUgKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyMiArCiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIEphdmFTY3JpcHRDb3JlL3d0Zi93aW4vTWFp
blRocmVhZFdpbi5jcHAgICAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjQgKwogV2ViQ29yZS9XZWJDb3JlLnBy
byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICstCiBXZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAgICAgICAgICAgICAgICB8ICAgIDIgLQogV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmggICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCB8ICAgIDMgKy0K
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcCAgICAgICAgICAgIHwgICAg
NCArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAgICAgICAgICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oICAgICAgICAgICAg
ICAgIHwgICAgOCArCiBXZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAg
ICAgICAgICB8ICAgIDggKy0KIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lv
bi5jcHAgICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2lu
LmNwcCAgICAgICAgICAgICB8ICAgIDggKwogV2ViS2l0LnBybyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiAyOSBmaWxlcyBjaGFuZ2VkLCA4ODIgaW5z
ZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSmF2YVNjcmlw
dENvcmUvb3Mtd2luY2UvY2VfdGltZS5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggOTZmNTk5Zi4uYTA3ZTFmYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExIEBACisyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4g
IDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHRoZSBRdCBwb3J0IG9mIFdlYktpdCBjb21w
aWxlIG9uIFdpbmRvd3MgQ0UKKworICAgICAgICAqIFdlYktpdC5wcm86IGRvbid0IGJ1aWxkIER1
bXBSZW5kZXJUcmVlIG9uIGFsbCBXaW4zMiBwbGF0Zm9ybXMKKwogMjAwOC0wOS0wNCAgTWFyY28g
QmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzMzljMTA4Li45NTE1OGU2IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xOTcsNiArMTk3LDM3IEBACiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzQ2CiAKKyAgICAgICAgTWFrZSB0aGUgUXQgcG9y
dCBvZiBXZWJLaXQgY29tcGlsZSBvbiBXaW5kb3dzIENFCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS5wcmk6IEFkZGVkIFdpbmRvd3MgQ0Ugc3BlY2lmaWMgZmlsZXMgdG8gdGhlIGJ1aWxkLgor
ICAgICAgICAqIGtqcy9EYXRlTWF0aC5jcHA6IFVzZSBsb2NhbHRpbWUoKSBvbiBXaW5kb3dzIENF
LgorICAgICAgICAoSlNDOjpnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMpOiBJbXBs
ZW1lbnRlZCBmb3IgV2luZG93cyBDRS4KKyAgICAgICAgKiBranMvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGVycm5vLmgKKyAgICAgICAgICBpbmNsdXNp
b24uCisgICAgICAgICoga2pzL1NoZWxsLmNwcDogRGlzYWJsZWQgdXNlIG9mIGRlYnVnZ2VyIGlu
Y2x1ZGVzIGZvciBDRS4gSXQKKyAgICAgICAgICBkb2VzIG5vdCBoYXZlIHRoZSBkZWJ1Z2dpbmcg
ZnVuY3Rpb25zLgorICAgICAgICAqIGtqcy9jb2xsZWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpI
ZWFwOjpjb2xsZWN0KTogVXNlIGV4aXQoMykgaW5zdGVhZCBvZiBhYm9ydCgpIG9uIFdpbmRvd3Mg
Q0UuCisgICAgICAgICoga2pzL2NvbmZpZy5oOiBEb24ndCBzZXQgX0NSVF9SQU5EX1MgZm9yIENF
LCBpdCdzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICoga2pzL2R0b2EuY3BwOiBDb21waWxlIHdp
dGhvdXQgZXJybm8uCisgICAgICAgICogb3Mtd2luY2UvY2VfdGltZS5jcHA6IEFkZGVkIEJTRCBs
aWNlbnNlZCBpbXBsZW1lbnRhdGlvbnMgb2YgdGltZQorICAgICAgICBmdW5jdGlvbnMgdGhhdCBh
cmUgZGVjbGFyZWQgYnV0IG5ldmVyIGRlZmluZWQgaW4gV2luZG93cyBDRS4KKyAgICAgICAgKiB3
dGYvQXNzZXJ0aW9ucy5jcHA6IENvbXBpbGUgb24gV2luZG93cyBDRS4KKyAgICAgICAgKiB3dGYv
QXNzZXJ0aW9ucy5oOiBJbmNsdWRlIHdpbmRvd3MuaCBiZWZvcmUgZGVmaW5pbmcgQVNTRVJULgor
ICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKGFib3J0KTogVXNlIGV4aXQo
MykgaW5zdGVhZCBvZiBhYm9ydCgpLgorICAgICAgICAqIHd0Zi9NYXRoRXh0cmFzLmg6IEluY2x1
ZGUgc3RkbGliLmggaW5zdGVhZCBvZiB4bWF0aC5oLgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OiBEaXNhYmxlIEVSUk5PX0ggYW5kIFNZU19UWVBFU19IIGFuZCBkZXRlY3QKKyAgICAgICAgICBl
bmRpYW5lc3MgYmFzZWQgb24gdGhlIFF0IGVuZGlhbmVzcy4gT24gUXQgZm9yIFdpbmRvd3MgQ0Ug
dGhlCisgICAgICAgICAgZW5kaWFuZXNzIGlzIGRlZmluZWQgYnkgdGhlIHZlbmRvciBzcGVjaWZp
YyBidWlsZCBzcGVjLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogVXNlIHRoZSB2b2xhdGls
ZS1sZXNzIGF0b21pYyBmdW5jdGlvbnMuCisgICAgICAgICogd3RmL3dpbi9NYWluVGhyZWFkV2lu
LmNwcDogRG9uJ3QgaW5jbHVkZSB3aW5kb3dzLmggb24gQ0UgYWZ0ZXIKKyAgICAgICAgQXNzZXJ0
aW9ucy5oIGR1ZSB0byB0aGUgcmVkZWZpbml0aW9uIG9mIEFTU0VSVC4KKworMjAwOC0wOS0wOSAg
Sm9lcmcgQm9ybmVtYW5uICA8am9lcmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRkZWQgV0lOQ0UgcGxh
dGZvcm0gbWFjcm8uCiAKICAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaSBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnByaQppbmRleCA0NTNhZjdjLi44ODNmYzI5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCkBAIC02LDYgKzYsMTMgQEAgSU5DTFVERVBBVEggKz0gJCRQV0QgJCRQV0Qva2pzICQk
UFdEL3d0ZiAkJFBXRC93dGYvdW5pY29kZSAkJFBXRC9WTSAkJFBXRC9wcm9maWwKICAgICAgICAg
ICAgICAgICQkUFdEL0ZvcndhcmRpbmdIZWFkZXJzCiBERUZJTkVTICs9IEJVSUxESU5HX1FUX18K
IAord2luMzItbXN2Yyo6IElOQ0xVREVQQVRIICs9ICQkUFdEL29zLXdpbjMyCit3aW5jZSogewor
ICAgIElOQ0xVREVQQVRIICs9ICQkUFdEL29zLXdpbmNlCisgICAgSU5DTFVERVBBVEggKz0gJCRQ
V0Qvb3Mtd2luMzIKKyAgICBTT1VSQ0VTICs9ICQkUFdEL29zLXdpbmNlL2NlX3RpbWUuY3BwCit9
CisKIGlzRW1wdHkoR0VORVJBVEVEX1NPVVJDRVNfRElSKTpHRU5FUkFURURfU09VUkNFU19ESVIg
PSB0bXAKIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSCA9ICQkR0VORVJBVEVEX1NPVVJDRVNf
RElSLwogd2luMzItKjogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIIH49IHN8L3xcfApkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9EYXRlTWF0aC5jcHAKaW5kZXggMjEyZTc4Mi4uOGI3OTliMiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUva2pzL0RhdGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvRGF0
ZU1hdGguY3BwCkBAIC0yODksNyArMjg5LDIwIEBAIGRvdWJsZSBnZXRDdXJyZW50VVRDVGltZSgp
CiAKIGRvdWJsZSBnZXRDdXJyZW50VVRDVGltZVdpdGhNaWNyb3NlY29uZHMoKQogewotI2lmIFBM
QVRGT1JNKFdJTl9PUykKKyNpZiBQTEFURk9STShXSU5fQ0UpCisgICAgU1lTVEVNVElNRSBzeXN0
ZW1UaW1lOworICAgIEdldFN5c3RlbVRpbWUoJnN5c3RlbVRpbWUpOworICAgIHN0cnVjdCB0bSB0
bXRpbWU7CisgICAgdG10aW1lLnRtX3llYXIgPSBzeXN0ZW1UaW1lLndZZWFyIC0gMTkwMDsKKyAg
ICB0bXRpbWUudG1fbW9uID0gc3lzdGVtVGltZS53TW9udGggLSAxOworICAgIHRtdGltZS50bV9t
ZGF5ID0gc3lzdGVtVGltZS53RGF5OworICAgIHRtdGltZS50bV93ZGF5ID0gc3lzdGVtVGltZS53
RGF5T2ZXZWVrOworICAgIHRtdGltZS50bV9ob3VyID0gc3lzdGVtVGltZS53SG91cjsKKyAgICB0
bXRpbWUudG1fbWluID0gc3lzdGVtVGltZS53TWludXRlOworICAgIHRtdGltZS50bV9zZWMgPSBz
eXN0ZW1UaW1lLndTZWNvbmQ7CisgICAgdGltZV90IHRpbWV0ID0gbWt0aW1lKCZ0bXRpbWUpOwor
ICAgIGRvdWJsZSB1dGMgPSB0aW1ldCAqIG1zUGVyU2Vjb25kICsgc3lzdGVtVGltZS53TWlsbGlz
ZWNvbmRzOworI2VsaWYgUExBVEZPUk0oV0lOX09TKQogICAgIC8vIEZJWE1FOiB0aGUgaW1wbGVt
ZW50YXRpb24gZm9yIFdpbmRvd3MgaXMgb25seSBtaWxsaXNlY29uZCByZXNvbHV0aW9uLgogI2lm
IENPTVBJTEVSKEJPUkxBTkQpCiAgICAgc3RydWN0IHRpbWViIHRpbWVidWZmZXI7CkBAIC0zMDks
NyArMzIyLDcgQEAgZG91YmxlIGdldEN1cnJlbnRVVENUaW1lV2l0aE1pY3Jvc2Vjb25kcygpCiAK
IHZvaWQgZ2V0TG9jYWxUaW1lKGNvbnN0IHRpbWVfdCogbG9jYWxUaW1lLCBzdHJ1Y3QgdG0qIGxv
Y2FsVE0pCiB7Ci0jaWYgQ09NUElMRVIoTVNWQzcpIHx8IENPTVBJTEVSKE1JTkdXKQorI2lmIENP
TVBJTEVSKE1TVkM3KSB8fCBDT01QSUxFUihNSU5HVykgfHwgUExBVEZPUk0oV0lOX0NFKQogICAg
ICpsb2NhbFRNID0gKmxvY2FsdGltZShsb2NhbFRpbWUpOwogI2VsaWYgQ09NUElMRVIoTVNWQykK
ICAgICBsb2NhbHRpbWVfcyhsb2NhbFRNLCBsb2NhbFRpbWUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggMDgxOTVkZS4uMzE3Y2IwNSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBA
IC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgImxleGVyLmgiCiAj
aW5jbHVkZSAibm9kZXMuaCIKLSNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL1NoZWxsLmNw
cAppbmRleCBhM2M4YWIzLi43ZjRiODBmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMv
U2hlbGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9TaGVsbC5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNlbmRpZgogCi0jaWYgQ09NUElMRVIoTVNWQykK
KyNpZiBDT01QSUxFUihNU1ZDKSAmJiAhUExBVEZPUk0oV0lOX0NFKQogI2luY2x1ZGUgPGNydGRi
Zy5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgpAQCAtMjY5LDcgKzI2OSw3IEBAIEpT
VmFsdWUqIGZ1bmN0aW9uUmVhZGxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFs
dWUqLCBjb25zdCBBcmdMaXN0JikKIEpTVmFsdWUqIGZ1bmN0aW9uUXVpdChFeGVjU3RhdGUqLCBK
U09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0JikKIHsKICAgICBleGl0KDApOwotI2lm
ICFDT01QSUxFUihNU1ZDKQorI2lmICFDT01QSUxFUihNU1ZDKSB8fCBQTEFURk9STShXSU5fQ0Up
CiAgICAgLy8gTVNWQyBrbm93cyB0aGF0IGV4aXQoMCkgbmV2ZXIgcmV0dXJucywgc28gaXQgZmxh
Z3MgdGhpcyByZXR1cm4gc3RhdGVtZW50IGFzIHVucmVhY2hhYmxlLgogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvY29sbGVj
dG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCmluZGV4IDk3MGRjOTYu
LjZmYzU0ODcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCisr
KyBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwCkBAIC05NTUsOCArOTU1LDE1IEBA
IGJvb2wgSGVhcDo6Y29sbGVjdCgpCiAjZW5kaWYKIAogICAgIEFTU0VSVCgocHJpbWFyeUhlYXAu
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbikgfCAobnVtYmVySGVhcC5vcGVyYXRp
b25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKSk7Ci0gICAgaWYgKChwcmltYXJ5SGVhcC5vcGVy
YXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9uKSB8IChudW1iZXJIZWFwLm9wZXJhdGlvbklu
UHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pKQorICAgIGlmICgocHJpbWFyeUhlYXAub3BlcmF0aW9u
SW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikgfCAobnVtYmVySGVhcC5vcGVyYXRpb25JblByb2dy
ZXNzICE9IE5vT3BlcmF0aW9uKSkgeworI2lmIFBMQVRGT1JNKFdJTl9DRSkKKyAgICAgICAgLyog
T24gV2luZG93cyBDRSB0aGVyZSdzIG5vIGFib3J0KCkgYW5kIG9uIHJlZ3VsYXIgV2luZG93cwor
ICAgICAgICAgICBhYm9ydCgpIGV4aXRzIHdpdGggZXhpdCBjb2RlIDMuICovCisgICAgICAgIGV4
aXQoMyk7CisjZWxzZQogICAgICAgICBhYm9ydCgpOworI2VuZGlmCisgICAgfQogCiAgICAgSkFW
QVNDUklQVENPUkVfR0NfQkVHSU4oKTsKICAgICBwcmltYXJ5SGVhcC5vcGVyYXRpb25JblByb2dy
ZXNzID0gQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9jb25maWcu
aCBiL0phdmFTY3JpcHRDb3JlL2tqcy9jb25maWcuaAppbmRleCAxZDUxMjFkLi5hODUxNzhjIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUva2pzL2NvbmZpZy5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIG1heCBtYXgKICNkZWZp
bmUgbWluIG1pbgogCi0jaWYgIUNPTVBJTEVSKE1TVkM3KQorI2lmICFDT01QSUxFUihNU1ZDNykg
JiYgIVBMQVRGT1JNKFdJTl9DRSkKIC8vIFdlIG5lZWQgdG8gZGVmaW5lIHRoaXMgYmVmb3JlIHRo
ZSBmaXJzdCAjaW5jbHVkZSBvZiBzdGRsaWIuaCBvciBpdCB3b24ndCBjb250YWluIHJhbmRfcy4K
ICNpZm5kZWYgX0NSVF9SQU5EX1MKICNkZWZpbmUgX0NSVF9SQU5EX1MKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL2tqcy9kdG9hLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9kdG9hLmNwcApp
bmRleCBmMzkzM2E5Li5hZWYyMDQxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvZHRv
YS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2R0b2EuY3BwCkBAIC0xMzUsNyArMTM1LDkg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJkdG9hLmgiCiAKKyNpZiBIQVZFKEVS
Uk5PX0gpCiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbHNlCisjZGVmaW5lIE5PX0VSUk5PCisjZW5k
aWYKICNpbmNsdWRlIDxmbG9hdC5oPgogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRp
bnQuaD4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL29zLXdpbmNlL2NlX3RpbWUuY3BwIGIv
SmF2YVNjcmlwdENvcmUvb3Mtd2luY2UvY2VfdGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjkyMTcwZgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRDb3Jl
L29zLXdpbmNlL2NlX3RpbWUuY3BwCkBAIC0wLDAgKzEsNjc2IEBACisvLworLy8gc3RyZnRpbWUu
YworLy8KKy8vIERhdGUgdG8gc3RyaW5nIGNvbnZlcnNpb24KKy8vCisvLyBDb3B5cmlnaHQgKEMp
IDIwMDIgTWljaGFlbCBSaW5nZ2FhcmQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8gMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKKy8vICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorLy8gICAgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwor
Ly8gT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pCisvLyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRgorLy8gU1VDSCBEQU1BR0UuCisvLworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLworCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCit0aW1l
X3QKK3RpbWUodGltZV90KiB0aW1lcikKK3sKKwlTWVNURU1USU1FIHN5c3RpbWU7CisJc3RydWN0
IHRtIHRtdGltZTsKKwl0aW1lX3QgdHQ7CisKKwlHZXRMb2NhbFRpbWUoJnN5c3RpbWUpOworCisJ
dG10aW1lLnRtX3llYXIgPSBzeXN0aW1lLndZZWFyLTE5MDA7CisJdG10aW1lLnRtX21vbiA9IHN5
c3RpbWUud01vbnRoLTE7CisJdG10aW1lLnRtX21kYXkgPSBzeXN0aW1lLndEYXk7CisJdG10aW1l
LnRtX3dkYXkgPSBzeXN0aW1lLndEYXlPZldlZWs7CisJdG10aW1lLnRtX2hvdXIgPSBzeXN0aW1l
LndIb3VyOworCXRtdGltZS50bV9taW4gPSBzeXN0aW1lLndNaW51dGU7CisJdG10aW1lLnRtX3Nl
YyA9IHN5c3RpbWUud1NlY29uZDsKKworCXR0ID0gbWt0aW1lKCZ0bXRpbWUpOworCisJaWYodGlt
ZXIpCisJCSp0aW1lciA9IHR0OworCisJcmV0dXJuIHR0OworfQorCisKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBta3RpbWUoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisKK3N0YXRpYyBpbnQgbW9udGhfdG9fZGF5WzEyXSA9IHswLCAzMSwgNTksIDkwLCAxMjAs
IDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNH07CisKK3RpbWVfdCBta3RpbWUoc3Ry
dWN0IHRtICp0KQoreworICAgICAgICBzaG9ydCAgbW9udGgsIHllYXI7CisgICAgICAgIHRpbWVf
dCByZXN1bHQ7CisKKyAgICAgICAgbW9udGggPSB0LT50bV9tb247CisgICAgICAgIHllYXIgPSB0
LT50bV95ZWFyICsgbW9udGggLyAxMiArIDE5MDA7CisgICAgICAgIG1vbnRoICU9IDEyOworICAg
ICAgICBpZiAobW9udGggPCAwKQorICAgICAgICB7CisgICAgICAgICAgICAgICAgeWVhciAtPSAx
OworICAgICAgICAgICAgICAgIG1vbnRoICs9IDEyOworICAgICAgICB9CisgICAgICAgIHJlc3Vs
dCA9ICh5ZWFyIC0gMTk3MCkgKiAzNjUgKyAoeWVhciAtIDE5NjkpIC8gNCArIG1vbnRoX3RvX2Rh
eVttb250aF07CisgICAgICAgIHJlc3VsdCA9ICh5ZWFyIC0gMTk3MCkgKiAzNjUgKyBtb250aF90
b19kYXlbbW9udGhdOworICAgICAgICBpZiAobW9udGggPD0gMSkKKyAgICAgICAgICAgICAgICB5
ZWFyIC09IDE7CisgICAgICAgIHJlc3VsdCArPSAoeWVhciAtIDE5NjgpIC8gNDsKKyAgICAgICAg
cmVzdWx0IC09ICh5ZWFyIC0gMTkwMCkgLyAxMDA7CisgICAgICAgIHJlc3VsdCArPSAoeWVhciAt
IDE2MDApIC8gNDAwOworICAgICAgICByZXN1bHQgKz0gdC0+dG1fbWRheTsKKyAgICAgICAgcmVz
dWx0IC09IDE7CisgICAgICAgIHJlc3VsdCAqPSAyNDsKKyAgICAgICAgcmVzdWx0ICs9IHQtPnRt
X2hvdXI7CisgICAgICAgIHJlc3VsdCAqPSA2MDsKKyAgICAgICAgcmVzdWx0ICs9IHQtPnRtX21p
bjsKKyAgICAgICAgcmVzdWx0ICo9IDYwOworICAgICAgICByZXN1bHQgKz0gdC0+dG1fc2VjOwor
ICAgICAgICByZXR1cm4ocmVzdWx0KTsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmZ0aW1lKCkgLSB0YWtlbiBmcm9tIE9wZW5CU0Qg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjZGVm
aW5lIElOX05PTkUJMAorI2RlZmluZSBJTl9TT01FCTEKKyNkZWZpbmUgSU5fVEhJUwkyCisjZGVm
aW5lIElOX0FMTAkzCisjZGVmaW5lIENIQVJfQklUICAgICAgOAorCisjZGVmaW5lIFRZUEVfQklU
KHR5cGUpCShzaXplb2YgKHR5cGUpICogQ0hBUl9CSVQpCisjZGVmaW5lIFRZUEVfU0lHTkVEKHR5
cGUpICgoKHR5cGUpIC0xKSA8IDApCisKKyNkZWZpbmUgSU5UX1NUUkxFTl9NQVhJTVVNKHR5cGUp
IFwKKyAgICAoKFRZUEVfQklUKHR5cGUpIC0gVFlQRV9TSUdORUQodHlwZSkpICogMzAyIC8gMTAw
MCArIDEgKyBUWVBFX1NJR05FRCh0eXBlKSkKKworI2RlZmluZSBpc2xlYXAoeSkgKCgoeSkgJSA0
KSA9PSAwICYmICgoKHkpICUgMTAwKSAhPSAwIHx8ICgoeSkgJSA0MDApID09IDApKQorCisjZGVm
aW5lIE1PTlNQRVJZRUFSCTEyCisjZGVmaW5lIERBWVNQRVJXRUVLCTcKKyNkZWZpbmUgVE1fWUVB
Ul9CQVNFCTE5MDAKKyNkZWZpbmUgSE9VUlNQRVJEQVkJMjQKKyNkZWZpbmUgREFZU1BFUk5ZRUFS
CTM2NQorI2RlZmluZSBEQVlTUEVSTFlFQVIJMzY2CisKK3N0YXRpYyBjaGFyCQl3aWxkYWJicltd
ID0gIldJTERBQkJSIjsKKworc3RhdGljIGNoYXIgKgkJCXR6bmFtZVsyXSA9IHsKKwl3aWxkYWJi
ciwKKwl3aWxkYWJicgorfTsKKworCisjZGVmaW5lIExvY2FsZQkoJkNfdGltZV9sb2NhbGUpCisK
K3N0cnVjdCBsY190aW1lX1QgeworCWNvbnN0IGNoYXIgKgltb25bTU9OU1BFUllFQVJdOworCWNv
bnN0IGNoYXIgKgltb250aFtNT05TUEVSWUVBUl07CisJY29uc3QgY2hhciAqCXdkYXlbREFZU1BF
UldFRUtdOworCWNvbnN0IGNoYXIgKgl3ZWVrZGF5W0RBWVNQRVJXRUVLXTsKKwljb25zdCBjaGFy
ICoJWF9mbXQ7CisJY29uc3QgY2hhciAqCXhfZm10OworCWNvbnN0IGNoYXIgKgljX2ZtdDsKKwlj
b25zdCBjaGFyICoJYW07CisJY29uc3QgY2hhciAqCXBtOworCWNvbnN0IGNoYXIgKglkYXRlX2Zt
dDsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbGNfdGltZV9UCUNfdGltZV9sb2NhbGUgPSB7
CisJeworCQkiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAorCQkiSnVs
IiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCisJfSwgeworCQkiSmFudWFyeSIs
ICJGZWJydWFyeSIsICJNYXJjaCIsICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsCisJCSJKdWx5Iiwg
IkF1Z3VzdCIsICJTZXB0ZW1iZXIiLCAiT2N0b2JlciIsICJOb3ZlbWJlciIsICJEZWNlbWJlciIK
Kwl9LCB7CisJCSJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLAorCQkiVGh1IiwgIkZyaSIsICJT
YXQiCisJfSwgeworCQkiU3VuZGF5IiwgIk1vbmRheSIsICJUdWVzZGF5IiwgIldlZG5lc2RheSIs
CisJCSJUaHVyc2RheSIsICJGcmlkYXkiLCAiU2F0dXJkYXkiCisJfSwKKworCS8qIFhfZm10ICov
CisJIiVIOiVNOiVTIiwKKworCS8qCisJKiogeF9mbXQKKwkqKiBDOTkgcmVxdWlyZXMgdGhpcyBm
b3JtYXQuCisJKiogVXNpbmcganVzdCBudW1iZXJzIChhcyBoZXJlKSBtYWtlcyBRdWFrZXJzIGhh
cHBpZXI7CisJKiogaXQncyBhbHNvIGNvbXBhdGlibGUgd2l0aCBTVlI0LgorCSovCisJIiVtLyVk
LyV5IiwKKworCS8qCisJKiogY19mbXQKKwkqKiBDOTkgcmVxdWlyZXMgdGhpcyBmb3JtYXQuCisJ
KiogUHJldmlvdXNseSB0aGlzIGNvZGUgdXNlZCAiJUQgJVgiLCBidXQgd2Ugbm93IGNvbmZvcm0g
dG8gQzk5LgorCSoqIE5vdGUgdGhhdAorCSoqICAgICAgIiVhICViICVkICVIOiVNOiVTICVZIgor
CSoqIGlzIHVzZWQgYnkgU29sYXJpcyAyLjMuCisJKi8KKwkiJWEgJWIgJWUgJVQgJVkiLAorCisJ
LyogYW0gKi8KKwkiQU0iLAorCisJLyogcG0gKi8KKwkiUE0iLAorCisJLyogZGF0ZV9mbXQgKi8K
KwkiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiCit9OworCisKK3N0YXRpYyBjaGFyICoKK19hZGQo
Y29uc3QgY2hhciAqIHN0ciwgY2hhciAqIHB0LCBjb25zdCBjaGFyICogY29uc3QgcHRsaW0pCit7
CisJd2hpbGUgKHB0IDwgcHRsaW0gJiYgKCpwdCA9ICpzdHIrKykgIT0gJ1wwJykKKwkJKytwdDsK
KwlyZXR1cm4gcHQ7Cit9CisKKworc3RhdGljIGNoYXIgKgorX2NvbnYoY29uc3QgaW50IG4sIGNv
bnN0IGNoYXIgKiBjb25zdCBmb3JtYXQsIGNoYXIgKiBjb25zdCBwdCwgY29uc3QgY2hhciAqIGNv
bnN0IHB0bGltKQoreworCWNoYXIJYnVmW0lOVF9TVFJMRU5fTUFYSU1VTShpbnQpICsgMV07CisK
Kwkodm9pZCkgX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgZm9ybWF0LCBuKTsKKwlyZXR1cm4g
X2FkZChidWYsIHB0LCBwdGxpbSk7Cit9CisKKworc3RhdGljIGNoYXIgKgorX2ZtdChjb25zdCBj
aGFyICogZm9ybWF0LCBjb25zdCBzdHJ1Y3QgdG0gKiBjb25zdCB0LCBjaGFyICogcHQsIGNvbnN0
IGNoYXIgKiBjb25zdCBwdGxpbSwgaW50ICogd2FybnApCit7CisJZm9yICggOyAqZm9ybWF0OyAr
K2Zvcm1hdCkgeworCQlpZiAoKmZvcm1hdCA9PSAnJScpIHsKK2xhYmVsOgorCQkJc3dpdGNoICgq
Kytmb3JtYXQpIHsKKwkJCWNhc2UgJ1wwJzoKKwkJCQktLWZvcm1hdDsKKwkJCQlicmVhazsKKwkJ
CWNhc2UgJ0EnOgorCQkJCXB0ID0gX2FkZCgodC0+dG1fd2RheSA8IDAgfHwKKwkJCQkJdC0+dG1f
d2RheSA+PSBEQVlTUEVSV0VFSykgPworCQkJCQkiPyIgOiBMb2NhbGUtPndlZWtkYXlbdC0+dG1f
d2RheV0sCisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdhJzoKKwkJ
CQlwdCA9IF9hZGQoKHQtPnRtX3dkYXkgPCAwIHx8CisJCQkJCXQtPnRtX3dkYXkgPj0gREFZU1BF
UldFRUspID8KKwkJCQkJIj8iIDogTG9jYWxlLT53ZGF5W3QtPnRtX3dkYXldLAorCQkJCQlwdCwg
cHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnQic6CisJCQkJcHQgPSBfYWRkKCh0LT50
bV9tb24gPCAwIHx8CisJCQkJCXQtPnRtX21vbiA+PSBNT05TUEVSWUVBUikgPworCQkJCQkiPyIg
OiBMb2NhbGUtPm1vbnRoW3QtPnRtX21vbl0sCisJCQkJCXB0LCBwdGxpbSk7CisJCQkJY29udGlu
dWU7CisJCQljYXNlICdiJzoKKwkJCWNhc2UgJ2gnOgorCQkJCXB0ID0gX2FkZCgodC0+dG1fbW9u
IDwgMCB8fAorCQkJCQl0LT50bV9tb24gPj0gTU9OU1BFUllFQVIpID8KKwkJCQkJIj8iIDogTG9j
YWxlLT5tb25bdC0+dG1fbW9uXSwKKwkJCQkJcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJ
CWNhc2UgJ0MnOgorCQkJCS8qCisJCQkJKiogJUMgdXNlZCB0byBkbyBhLi4uCisJCQkJKioJX2Zt
dCgiJWEgJWIgJWUgJVggJVkiLCB0KTsKKwkJCQkqKiAuLi53aGVyZWFzIG5vdyBQT1NJWCAxMDAz
LjIgY2FsbHMgZm9yCisJCQkJKiogc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50LgorCQkJ
CSoqIChhZG8sIDE5OTMtMDUtMjQpCisJCQkJKi8KKwkJCQlwdCA9IF9jb252KCh0LT50bV95ZWFy
ICsgVE1fWUVBUl9CQVNFKSAvIDEwMCwKKwkJCQkJIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJCWNv
bnRpbnVlOworCQkJY2FzZSAnYyc6CisJCQkJeworCQkJCWludCB3YXJuMiA9IElOX1NPTUU7CisK
KwkJCQlwdCA9IF9mbXQoTG9jYWxlLT5jX2ZtdCwgdCwgcHQsIHB0bGltLCB3YXJucCk7CisJCQkJ
aWYgKHdhcm4yID09IElOX0FMTCkKKwkJCQkJd2FybjIgPSBJTl9USElTOworCQkJCWlmICh3YXJu
MiA+ICp3YXJucCkKKwkJCQkJKndhcm5wID0gd2FybjI7CisJCQkJfQorCQkJCWNvbnRpbnVlOwor
CQkJY2FzZSAnRCc6CisJCQkJcHQgPSBfZm10KCIlbS8lZC8leSIsIHQsIHB0LCBwdGxpbSwgd2Fy
bnApOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnZCc6CisJCQkJcHQgPSBfY29udih0LT50bV9t
ZGF5LCAiJTAyZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdFJzoKKwkJ
CWNhc2UgJ08nOgorCQkJCS8qCisJCQkJKiogQzk5IGxvY2FsZSBtb2RpZmllcnMuCisJCQkJKiog
VGhlIHNlcXVlbmNlcworCQkJCSoqCSVFYyAlRUMgJUV4ICVFWCAlRXkgJUVZCisJCQkJKioJJU9k
ICVvZSAlT0ggJU9JICVPbSAlT00KKwkJCQkqKgklT1MgJU91ICVPVSAlT1YgJU93ICVPVyAlT3kK
KwkJCQkqKiBhcmUgc3VwcG9zZWQgdG8gcHJvdmlkZSBhbHRlcm5hdGUKKwkJCQkqKiByZXByZXNl
bnRhdGlvbnMuCisJCQkJKi8KKwkJCQlnb3RvIGxhYmVsOworCQkJY2FzZSAnZSc6CisJCQkJcHQg
PSBfY29udih0LT50bV9tZGF5LCAiJTJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJ
CWNhc2UgJ0YnOgorCQkJCXB0ID0gX2ZtdCgiJVktJW0tJWQiLCB0LCBwdCwgcHRsaW0sIHdhcm5w
KTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ0gnOgorCQkJCXB0ID0gX2NvbnYodC0+dG1faG91
ciwgIiUwMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnSSc6CisJCQkJ
cHQgPSBfY29udigodC0+dG1faG91ciAlIDEyKSA/CisJCQkJCSh0LT50bV9ob3VyICUgMTIpIDog
MTIsCisJCQkJCSIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ2on
OgorCQkJCXB0ID0gX2NvbnYodC0+dG1feWRheSArIDEsICIlMDNkIiwgcHQsIHB0bGltKTsKKwkJ
CQljb250aW51ZTsKKwkJCWNhc2UgJ2snOgorCQkJCS8qCisJCQkJKiogVGhpcyB1c2VkIHRvIGJl
Li4uCisJCQkJKioJX2NvbnYodC0+dG1faG91ciAlIDEyID8KKwkJCQkqKgkJdC0+dG1faG91ciAl
IDEyIDogMTIsIDIsICcgJyk7CisJCQkJKiogLi4uYW5kIGhhcyBiZWVuIGNoYW5nZWQgdG8gdGhl
IGJlbG93IHRvCisJCQkJKiogbWF0Y2ggU3VuT1MgNC4xLjEgYW5kIEFybm9sZCBSb2JiaW5zJwor
CQkJCSoqIHN0cmZ0aW1lIHZlcnNpb24gMy4wLiAgVGhhdCBpcywgIiVrIiBhbmQKKwkJCQkqKiAi
JWwiIGhhdmUgYmVlbiBzd2FwcGVkLgorCQkJCSoqIChhZG8sIDE5OTMtMDUtMjQpCisJCQkJKi8K
KwkJCQlwdCA9IF9jb252KHQtPnRtX2hvdXIsICIlMmQiLCBwdCwgcHRsaW0pOworCQkJCWNvbnRp
bnVlOworI2lmZGVmIEtJVENIRU5fU0lOSworCQkJY2FzZSAnSyc6CisJCQkJLyoKKwkJCQkqKiBB
ZnRlciBhbGwgdGhpcyB0aW1lLCBzdGlsbCB1bmNsYWltZWQhCisJCQkJKi8KKwkJCQlwdCA9IF9h
ZGQoImtpdGNoZW4gc2luayIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisjZW5kaWYgLyog
ZGVmaW5lZCBLSVRDSEVOX1NJTksgKi8KKwkJCWNhc2UgJ2wnOgorCQkJCS8qCisJCQkJKiogVGhp
cyB1c2VkIHRvIGJlLi4uCisJCQkJKioJX2NvbnYodC0+dG1faG91ciwgMiwgJyAnKTsKKwkJCQkq
KiAuLi5hbmQgaGFzIGJlZW4gY2hhbmdlZCB0byB0aGUgYmVsb3cgdG8KKwkJCQkqKiBtYXRjaCBT
dW5PUyA0LjEuMSBhbmQgQXJub2xkIFJvYmJpbidzCisJCQkJKiogc3RyZnRpbWUgdmVyc2lvbiAz
LjAuICBUaGF0IGlzLCAiJWsiIGFuZAorCQkJCSoqICIlbCIgaGF2ZSBiZWVuIHN3YXBwZWQuCisJ
CQkJKiogKGFkbywgMTk5My0wNS0yNCkKKwkJCQkqLworCQkJCXB0ID0gX2NvbnYoKHQtPnRtX2hv
dXIgJSAxMikgPworCQkJCQkodC0+dG1faG91ciAlIDEyKSA6IDEyLAorCQkJCQkiJTJkIiwgcHQs
IHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ00nOgorCQkJCXB0ID0gX2NvbnYodC0+
dG1fbWluLCAiJTAyZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICdtJzoK
KwkJCQlwdCA9IF9jb252KHQtPnRtX21vbiArIDEsICIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQlj
b250aW51ZTsKKwkJCWNhc2UgJ24nOgorCQkJCXB0ID0gX2FkZCgiXG4iLCBwdCwgcHRsaW0pOwor
CQkJCWNvbnRpbnVlOworCQkJY2FzZSAncCc6CisJCQkJcHQgPSBfYWRkKCh0LT50bV9ob3VyID49
IChIT1VSU1BFUkRBWSAvIDIpKSA/CisJCQkJCUxvY2FsZS0+cG0gOgorCQkJCQlMb2NhbGUtPmFt
LAorCQkJCQlwdCwgcHRsaW0pOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnUic6CisJCQkJcHQg
PSBfZm10KCIlSDolTSIsIHQsIHB0LCBwdGxpbSwgd2FybnApOworCQkJCWNvbnRpbnVlOworCQkJ
Y2FzZSAncic6CisJCQkJcHQgPSBfZm10KCIlSTolTTolUyAlcCIsIHQsIHB0LCBwdGxpbSwgd2Fy
bnApOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnUyc6CisJCQkJcHQgPSBfY29udih0LT50bV9z
ZWMsICIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3MnOgorCQkJ
CXsKKwkJCQkJc3RydWN0IHRtCXRtOworCQkJCQljaGFyCQlidWZbSU5UX1NUUkxFTl9NQVhJTVVN
KAorCQkJCQkJCQl0aW1lX3QpICsgMV07CisJCQkJCXRpbWVfdAkJbWt0OworCisJCQkJCXRtID0g
KnQ7CisJCQkJCW1rdCA9IG1rdGltZSgmdG0pOworCQkJCQlpZiAoVFlQRV9TSUdORUQodGltZV90
KSkKKwkJCQkJCSh2b2lkKSBfc25wcmludGYoYnVmLCBzaXplb2YgYnVmLAorCQkJCQkJICAgICIl
bGQiLCAobG9uZykgbWt0KTsKKwkJCQkJZWxzZQkodm9pZCkgX3NucHJpbnRmKGJ1Ziwgc2l6ZW9m
IGJ1ZiwKKwkJCQkJCSAgICAiJWx1IiwgKHVuc2lnbmVkIGxvbmcpIG1rdCk7CisJCQkJCXB0ID0g
X2FkZChidWYsIHB0LCBwdGxpbSk7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnVCc6
CisJCQkJcHQgPSBfZm10KCIlSDolTTolUyIsIHQsIHB0LCBwdGxpbSwgd2FybnApOworCQkJCWNv
bnRpbnVlOworCQkJY2FzZSAndCc6CisJCQkJcHQgPSBfYWRkKCJcdCIsIHB0LCBwdGxpbSk7CisJ
CQkJY29udGludWU7CisJCQljYXNlICdVJzoKKwkJCQlwdCA9IF9jb252KCh0LT50bV95ZGF5ICsg
REFZU1BFUldFRUsgLQorCQkJCQl0LT50bV93ZGF5KSAvIERBWVNQRVJXRUVLLAorCQkJCQkiJTAy
ZCIsIHB0LCBwdGxpbSk7CisJCQkJY29udGludWU7CisJCQljYXNlICd1JzoKKwkJCQkvKgorCQkJ
CSoqIEZyb20gQXJub2xkIFJvYmJpbnMnIHN0cmZ0aW1lIHZlcnNpb24gMy4wOgorCQkJCSoqICJJ
U08gODYwMTogV2Vla2RheSBhcyBhIGRlY2ltYWwgbnVtYmVyCisJCQkJKiogWzEgKE1vbmRheSkg
LSA3XSIKKwkJCQkqKiAoYWRvLCAxOTkzLTA1LTI0KQorCQkJCSovCisJCQkJcHQgPSBfY29udigo
dC0+dG1fd2RheSA9PSAwKSA/CisJCQkJCURBWVNQRVJXRUVLIDogdC0+dG1fd2RheSwKKwkJCQkJ
IiVkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ1YnOgkvKiBJU08gODYw
MSB3ZWVrIG51bWJlciAqLworCQkJY2FzZSAnRyc6CS8qIElTTyA4NjAxIHllYXIgKGZvdXIgZGln
aXRzKSAqLworCQkJY2FzZSAnZyc6CS8qIElTTyA4NjAxIHllYXIgKHR3byBkaWdpdHMpICovCisJ
CQkJeworCQkJCQlpbnQJeWVhcjsKKwkJCQkJaW50CXlkYXk7CisJCQkJCWludAl3ZGF5OworCQkJ
CQlpbnQJdzsKKworCQkJCQl5ZWFyID0gdC0+dG1feWVhciArIFRNX1lFQVJfQkFTRTsKKwkJCQkJ
eWRheSA9IHQtPnRtX3lkYXk7CisJCQkJCXdkYXkgPSB0LT50bV93ZGF5OworCQkJCQlmb3IgKCA7
IDsgKSB7CisJCQkJCQlpbnQJbGVuOworCQkJCQkJaW50CWJvdDsKKwkJCQkJCWludAl0b3A7CisK
KwkJCQkJCWxlbiA9IGlzbGVhcCh5ZWFyKSA/CisJCQkJCQkJREFZU1BFUkxZRUFSIDoKKwkJCQkJ
CQlEQVlTUEVSTllFQVI7CisJCQkJCQkvKgorCQkJCQkJKiogV2hhdCB5ZGF5ICgtMyAuLi4gMykg
ZG9lcworCQkJCQkJKiogdGhlIElTTyB5ZWFyIGJlZ2luIG9uPworCQkJCQkJKi8KKwkJCQkJCWJv
dCA9ICgoeWRheSArIDExIC0gd2RheSkgJQorCQkJCQkJCURBWVNQRVJXRUVLKSAtIDM7CisJCQkJ
CQkvKgorCQkJCQkJKiogV2hhdCB5ZGF5IGRvZXMgdGhlIE5FWFQKKwkJCQkJCSoqIElTTyB5ZWFy
IGJlZ2luIG9uPworCQkJCQkJKi8KKwkJCQkJCXRvcCA9IGJvdCAtCisJCQkJCQkJKGxlbiAlIERB
WVNQRVJXRUVLKTsKKwkJCQkJCWlmICh0b3AgPCAtMykKKwkJCQkJCQl0b3AgKz0gREFZU1BFUldF
RUs7CisJCQkJCQl0b3AgKz0gbGVuOworCQkJCQkJaWYgKHlkYXkgPj0gdG9wKSB7CisJCQkJCQkJ
Kyt5ZWFyOworCQkJCQkJCXcgPSAxOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQkJaWYg
KHlkYXkgPj0gYm90KSB7CisJCQkJCQkJdyA9IDEgKyAoKHlkYXkgLSBib3QpIC8KKwkJCQkJCQkJ
REFZU1BFUldFRUspOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQkJLS15ZWFyOworCQkJ
CQkJeWRheSArPSBpc2xlYXAoeWVhcikgPworCQkJCQkJCURBWVNQRVJMWUVBUiA6CisJCQkJCQkJ
REFZU1BFUk5ZRUFSOworCQkJCQl9CisJCQkJCWlmICgqZm9ybWF0ID09ICdWJykKKwkJCQkJCXB0
ID0gX2NvbnYodywgIiUwMmQiLAorCQkJCQkJCXB0LCBwdGxpbSk7CisJCQkJCWVsc2UgaWYgKCpm
b3JtYXQgPT0gJ2cnKSB7CisJCQkJCQkqd2FybnAgPSBJTl9BTEw7CisJCQkJCQlwdCA9IF9jb252
KHllYXIgJSAxMDAsICIlMDJkIiwKKwkJCQkJCQlwdCwgcHRsaW0pOworCQkJCQl9IGVsc2UJcHQg
PSBfY29udih5ZWFyLCAiJTA0ZCIsCisJCQkJCQkJcHQsIHB0bGltKTsKKwkJCQl9CisJCQkJY29u
dGludWU7CisJCQljYXNlICd2JzoKKwkJCQlwdCA9IF9mbXQoIiVlLSViLSVZIiwgdCwgcHQsIHB0
bGltLCB3YXJucCk7CisJCQkJY29udGludWU7CisJCQljYXNlICdXJzoKKwkJCQlwdCA9IF9jb252
KCh0LT50bV95ZGF5ICsgREFZU1BFUldFRUsgLQorCQkJCQkodC0+dG1fd2RheSA/CisJCQkJCSh0
LT50bV93ZGF5IC0gMSkgOgorCQkJCQkoREFZU1BFUldFRUsgLSAxKSkpIC8gREFZU1BFUldFRUss
CisJCQkJCSIlMDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3cnOgor
CQkJCXB0ID0gX2NvbnYodC0+dG1fd2RheSwgIiVkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51
ZTsKKwkJCWNhc2UgJ1gnOgorCQkJCXB0ID0gX2ZtdChMb2NhbGUtPlhfZm10LCB0LCBwdCwgcHRs
aW0sIHdhcm5wKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQlpbnQJ
d2FybjIgPSBJTl9TT01FOworCisJCQkJcHQgPSBfZm10KExvY2FsZS0+eF9mbXQsIHQsIHB0LCBw
dGxpbSwgJndhcm4yKTsKKwkJCQlpZiAod2FybjIgPT0gSU5fQUxMKQorCQkJCQl3YXJuMiA9IElO
X1RISVM7CisJCQkJaWYgKHdhcm4yID4gKndhcm5wKQorCQkJCQkqd2FybnAgPSB3YXJuMjsKKwkJ
CQl9CisJCQkJY29udGludWU7CisJCQljYXNlICd5JzoKKwkJCQkqd2FybnAgPSBJTl9BTEw7CisJ
CQkJcHQgPSBfY29udigodC0+dG1feWVhciArIFRNX1lFQVJfQkFTRSkgJSAxMDAsCisJCQkJCSIl
MDJkIiwgcHQsIHB0bGltKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ1knOgorCQkJCXB0ID0g
X2NvbnYodC0+dG1feWVhciArIFRNX1lFQVJfQkFTRSwgIiUwNGQiLAorCQkJCQlwdCwgcHRsaW0p
OworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnWic6CisJCQkJaWYgKHQtPnRtX2lzZHN0ID49IDAp
CisJCQkJCXB0ID0gX2FkZCh0em5hbWVbdC0+dG1faXNkc3QgIT0gMF0sCisJCQkJCQlwdCwgcHRs
aW0pOworCQkJCS8qCisJCQkJKiogQzk5IHNheXMgdGhhdCAlWiBtdXN0IGJlIHJlcGxhY2VkIGJ5
IHRoZQorCQkJCSoqIGVtcHR5IHN0cmluZyBpZiB0aGUgdGltZSB6b25lIGlzIG5vdAorCQkJCSoq
IGRldGVybWluYWJsZS4KKwkJCQkqLworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAneic6CisJCQkJ
eworCQkJCWludAkJZGlmZjsKKwkJCQljaGFyIGNvbnN0ICoJc2lnbjsKKworCQkJCWlmICh0LT50
bV9pc2RzdCA8IDApCisJCQkJCWNvbnRpbnVlOworCQkJCWNvbnRpbnVlOworCQkJCWlmIChkaWZm
IDwgMCkgeworCQkJCQlzaWduID0gIi0iOworCQkJCQlkaWZmID0gLWRpZmY7CisJCQkJfSBlbHNl
CXNpZ24gPSAiKyI7CisJCQkJcHQgPSBfYWRkKHNpZ24sIHB0LCBwdGxpbSk7CisJCQkJZGlmZiAv
PSA2MDsKKwkJCQlwdCA9IF9jb252KChkaWZmLzYwKSoxMDAgKyBkaWZmJTYwLAorCQkJCQkiJTA0
ZCIsIHB0LCBwdGxpbSk7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJY2FzZSAnKyc6CisJCQkJ
cHQgPSBfZm10KExvY2FsZS0+ZGF0ZV9mbXQsIHQsIHB0LCBwdGxpbSwKKwkJCQkJd2FybnApOwor
CQkJCWNvbnRpbnVlOworCQkJY2FzZSAnJSc6CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQkJ
fQorCQl9CisJCWlmIChwdCA9PSBwdGxpbSkKKwkJCWJyZWFrOworCQkqcHQrKyA9ICpmb3JtYXQ7
CisJfQorCXJldHVybiBwdDsKK30KKworCitzaXplX3QKK3N0cmZ0aW1lKGNoYXIgKiBjb25zdCBz
LCBjb25zdCBzaXplX3QgbWF4c2l6ZSwgY29uc3QgY2hhciAqIGNvbnN0IGZvcm1hdCwgY29uc3Qg
c3RydWN0IHRtICogY29uc3QgdCkKK3sKKwljaGFyICoJcDsKKwlpbnQJd2FybjsKKworCS8vdHpz
ZXQoKTsKKworCXdhcm4gPSBJTl9OT05FOworCXAgPSBfZm10KCgoZm9ybWF0ID09IE5VTEwpID8g
IiVjIiA6IGZvcm1hdCksIHQsIHMsIHMgKyBtYXhzaXplLCAmd2Fybik7CisKKwlpZiAocCA9PSBz
ICsgbWF4c2l6ZSkgeworCQlpZiAobWF4c2l6ZSA+IDApCisJCQlzW21heHNpemUgLSAxXSA9ICdc
MCc7CisJCXJldHVybiAwOworCX0KKwkqcCA9ICdcMCc7CisJcmV0dXJuIHAgLSBzOworfQorCisK
KworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbXRpbWUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKworCisKK3N0YXRpYyBzdHJ1Y3QgdG0gbXl0bTsKKworc3Rh
dGljIGludCBETW9udGhbMTNdID0geyAwLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjcz
LDMwNCwzMzQsMzY1IH07CitzdGF0aWMgaW50IG1vbnRoQ29kZXNbMTJdID0geyA2LCAyLCAyLCA1
LCAwLCAzLCA1LCAxLCA0LCA2LCAyLCA0IH07CisKKworc3RhdGljIGludAorY2FsY0RheU9mV2Vl
ayhjb25zdCBzdHJ1Y3QgdG0qIG5UTSkKK3sKKwlpbnQgZGF5OworCQorCWRheSA9IChuVE0tPnRt
X3llYXIlMTAwKTsKKwlkYXkgKz0gZGF5LzQ7CisJZGF5ICs9IG1vbnRoQ29kZXNbblRNLT50bV9t
b25dOworCWRheSArPSBuVE0tPnRtX21kYXk7CisJd2hpbGUoZGF5Pj03KQorCQlkYXkgLT0gNzsK
KworCXJldHVybiBkYXk7Cit9CisKKworc3RhdGljIHN0cnVjdCB0bSAqCitnbXRpbWUoY29uc3Qg
dGltZV90ICp0aW1lcikKK3sKKwl1bnNpZ25lZCBsb25nIHggPSAqdGltZXI7CisJaW50IGltaW4s
IGlocnMsIGlkYXksIGl5cnM7CisJaW50IHNlYywgbWluLCBocnMsIGRheSwgbW9uLCB5cnM7CisJ
aW50IGxkYXksIHFkYXksIGpkYXksIG1kYXk7CisKKworCWltaW4gPSB4IC8gNjA7CQkJCQkJCS8v
IHdob2xlIG1pbnV0ZXMgc2luY2UgMS8xLzcwCisJc2VjID0geCAtICg2MCAqIGltaW4pOwkJCQkJ
Ly8gbGVmdG92ZXIgc2Vjb25kcworCWlocnMgPSBpbWluIC8gNjA7CQkJCQkJLy8gd2hvbGUgaG91
cnMgc2luY2UgMS8xLzcwCisJbWluID0gaW1pbiAtIDYwICogaWhyczsJCQkJCS8vIGxlZnRvdmVy
IG1pbnV0ZXMKKwlpZGF5ID0gaWhycyAvIDI0OwkJCQkJCS8vIHdob2xlIGRheXMgc2luY2UgMS8x
LzcwCisJaHJzID0gaWhycyAtIDI0ICogaWRheTsJCQkJCS8vIGxlZnRvdmVyIGhvdXJzCisJaWRh
eSA9IGlkYXkgKyAzNjUgKyAzNjY7IAkJCQkvLyB3aG9sZSBkYXlzIHNpbmNlIDEvMS82OAorCWxk
YXkgPSBpZGF5IC8gKCggNCogMzY1KSArIDEpOwkJCS8vIHF1YWR5ciA9IDQgeXIgcGVyaW9kID0g
MTQ2MSBkYXlzCisJcWRheSA9IGlkYXkgJSAoKCA0ICogMzY1KSArIDEpOwkJCS8vIGRheXMgc2lu
Y2UgY3VycmVudCBxdWFkeXIgYmVnYW4KKwlpZihxZGF5ID49ICgzMSArIDI5KSkJCQkJCS8vIGlm
IHBhc3QgZmViIDI5IHRoZW4KKwkJbGRheSA9IGxkYXkgKyAxOwkJCQkJLy8gYWRkIHRoaXMgcXVh
ZHlyknMgbGVhcCBkYXkgdG8gdGhlCisJCQkJCQkJCQkJCS8vICMgb2YgcXVhZHlycyAobGVhcCBk
YXlzKSBzaW5jZSA2OAorCWl5cnMgPSAoaWRheSAtIGxkYXkpIC8gMzY1OwkJCQkvLyB3aG9sZSB5
ZWFycyBzaW5jZSAxOTY4CisJamRheSA9IGlkYXkgLSAoaXlycyAqIDM2NSkgLSBsZGF5OwkJLy8g
ZGF5cyBzaW5jZSAxIC8xIG9mIGN1cnJlbnQgeWVhci4KKwlpZihxZGF5IDw9IDM2NSAmJiBxZGF5
ID49IDYwKQkJCS8vIGlmIHBhc3QgMi8yOSBhbmQgYSBsZWFwIHllYXIgdGhlbgorCQlqZGF5ID0g
amRheSArIDE7CQkJCQkvLyBhZGQgYSBsZWFwIGRheSB0byB0aGUgIyBvZiB3aG9sZQorCQkJCQkJ
CQkJCQkvLyBkYXlzIHNpbmNlIDEvMSBvZiBjdXJyZW50IHllYXIKKwl5cnMgPSBpeXJzICsgMTk2
ODsJCQkJCQkvLyBjb21wdXRlIHllYXIKKwltb24gPSAxMzsJCQkJCQkJCS8vIGVzdGltYXRlIG1v
bnRoICggKzEpCisJbWRheSA9IDM2NjsJCQkJCQkJCS8vIG1heCBkYXlzIHNpbmNlIDEvMSBpcyAz
NjUKKwl3aGlsZShqZGF5IDwgbWRheSkJCQkJCQkvLyBtZGF5ID0gIyBvZiBkYXlzIHBhc3NlZCBm
cm9tIDEvMQorCXsJCQkJCQkJCQkJLy8gdW50aWwgZmlyc3QgZGF5IG9mIGN1cnJlbnQgbW9udGgK
KwkJbW9uID0gbW9uIC0gMTsJCQkJCQkvLyBtb24gPSBtb250aCAoZXN0aW1hdGVkKQorCQltZGF5
ID0gRE1vbnRoW21vbl07CQkJCQkvLyAjIGVsYXBzZWQgZGF5cyBhdCBmaXJzdCBvZiCUbW9ulAor
CQlpZigobW9uID4gMikgJiYgKHlycyAlIDQpID09IDApCQkvLyBpZiBwYXN0IDIvMjkgYW5kIGxl
YXAgeWVhciB0aGVuCisJCQltZGF5ID0gbWRheSArIDE7CQkJCS8vIGFkZCBsZWFwIGRheQorCQkJ
CQkJCQkJCQkvLyBjb21wdXRlIG1vbnRoIGJ5IGRlY3JlbWVudGluZworCX0JCQkJCQkJCQkJLy8g
bW9udGggdW50aWwgZm91bmQKKwkJCisJZGF5ID0gamRheSAtIG1kYXkgKyAxOwkJCQkJLy8gY29t
cHV0ZSBkYXkgb2YgbW9udGgKKworCW15dG0udG1fc2VjID0gc2VjOworCW15dG0udG1fbWluID0g
bWluOworCW15dG0udG1faG91ciA9IGhyczsKKwlteXRtLnRtX21kYXkgPSBkYXk7CisJbXl0bS50
bV9tb24gPSBtb247CisJbXl0bS50bV95ZWFyID0geXJzIC0gMTkwMDsKKworCW15dG0udG1fd2Rh
eSA9IGNhbGNEYXlPZldlZWsoJm15dG0pOworCW15dG0udG1feWRheSA9IGpkYXk7CisJbXl0bS50
bV9pc2RzdCA9IDA7CisKKwlyZXR1cm4gJm15dG07Cit9CisKKworLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsdGltZSgpIC0gc2ltcGx5IHVzaW5n
IGdtdGltZSgpICAgICAgICAgICAgICAgICAgICAgICAgICAvLworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
KworCitzdHJ1Y3QgdG0gKgorbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqdGltZXIpCit7CisJcmV0
dXJuIGdtdGltZSh0aW1lcik7Cit9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvQXNz
ZXJ0aW9ucy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggOThk
ZTkxYy4uNzBhZThjYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtMzQsNyArMzks
NyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CiAjZW5kaWYKIAotI2lm
IENPTVBJTEVSKE1TVkMpCisjaWYgQ09NUElMRVIoTVNWQykgJiYgIVBMQVRGT1JNKFdJTl9DRSkK
ICNpZm5kZWYgV0lOVkVSCiAjZGVmaW5lIFdJTlZFUiAweDA1MDAKICNlbmRpZgpAQCAtNjYsNyAr
NzEsNyBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl9jb21tb24oY29uc3QgY2hhciogZm9y
bWF0LCB2YV9saXN0IGFyZ3MpCiAgICAgICAgIENGUmVsZWFzZShzdHIpOwogICAgICAgICBDRlJl
bGVhc2UoY2ZGb3JtYXQpOwogICAgIH0gZWxzZQotI2VsaWYgQ09NUElMRVIoTVNWQykKKyNlbGlm
IENPTVBJTEVSKE1TVkMpICYmICFQTEFURk9STShXSU5fQ0UpCiAgICAgaWYgKElzRGVidWdnZXJQ
cmVzZW50KCkpIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSAxMDI0OwogCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2Vy
dGlvbnMuaAppbmRleCA4NDQ5NTYzLi5hMWZjNDgwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS93dGYvQXNzZXJ0aW9ucy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmgK
QEAgLTEyNSw2ICsxMjUsMTQgQEAgdm9pZCBXVEZMb2dWZXJib3NlKGNvbnN0IGNoYXIqIGZpbGUs
IGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgV1RGTG9nQ2hhbm4KIAogLyogQVNTRVJU
LCBBU1NFUlRfV0lUSF9NRVNTQUdFLCBBU1NFUlRfTk9UX1JFQUNIRUQgKi8KIAorI2lmIFBMQVRG
T1JNKFdJTl9DRSkKKy8qIEZJWE1FOiBXZSBpbmNsdWRlIHRoaXMgaGVyZSBvbmx5IHRvIGF2b2lk
IGEgY29uZmxpY3Qgd2l0aCB0aGUgQVNTRVJUIG1hY3JvLiAqLworI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKyN1bmRlZiBtaW4KKyN1bmRlZiBtYXgKKyN1bmRlZiBFUlJPUgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShXSU5fT1MpCiAvKiBGSVhNRTogQ2hhbmdlIHRvIHVzZSBzb21ldGhpbmcgb3RoZXIg
dGhhbiBBU1NFUlQgdG8gYXZvaWQgdGhpcyBjb25mbGljdCB3aXRoIHdpbjMyLiAqLwogI3VuZGVm
IEFTU0VSVApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwIGIv
SmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwCmluZGV4IDI3OWEyMWEuLmFmZjg0OWYg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9GYXN0TWFsbG9jLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5jcHAKQEAgLTk2LDYgKzk2LDE1IEBACiAKICNkZWZp
bmUgVENNQUxMT0NfVFJBQ0tfREVDT01NSVRFRF9TUEFOUyAoSEFWRShWSVJUVUFMQUxMT0MpKQog
CisjaWYgUExBVEZPUk0oV0lOX0NFKQorLyogT24gV2luZG93cyBDRSB0aGVyZSdzIG5vIGFib3J0
KCkgYW5kIG9uIHJlZ3VsYXIgV2luZG93cworICAgYWJvcnQoKSBleGl0cyB3aXRoIGV4aXQgY29k
ZSAzLiAqLworc3RhdGljIHZvaWQgYWJvcnQoKQoreworICAgIGV4aXQoMyk7Cit9CisjZW5kaWYK
KwogI2lmbmRlZiBOREVCVUcKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL01hdGhFeHRyYXMu
aAppbmRleCBiMTIzMDIxLi44NWRmNjY0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYv
TWF0aEV4dHJhcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9NYXRoRXh0cmFzLmgKQEAgLTQw
LDggKzQwLDExIEBACiAjZW5kaWYKIAogI2lmIENPTVBJTEVSKE1TVkMpCi0KKyNpZiBQTEFURk9S
TShXSU5fQ0UpCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZWxzZQogI2luY2x1ZGUgPHhtYXRoLmg+
CisjZW5kaWYKICNpbmNsdWRlIDxsaW1pdHM+CiAKICNpZiBIQVZFKEZMT0FUX0gpCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDVlYjcxOGQuLjcwNDcwN2YgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBA
IC0yMDQsNiArMjA0LDIwIEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9CSUdfRU5ESUFOIDEKICNl
bmRpZgogCisvKiBQTEFURk9STShXSU5fQ0UpICYmIFBMQVRGT1JNKFFUKQorICAgV2UgY2FuIG5v
dCBkZXRlcm1pbmUgdGhlIGVuZGlhbmVzcyBhdCBjb21waWxlIHRpbWUuIEZvcgorICAgUXQgZm9y
IFdpbmRvd3MgQ0UgdGhlIGVuZGlhbmVzcyBpcyBzcGVjaWZpZWQgaW4gdGhlCisgICBkZXZpY2Ug
c3BlY2lmaWMgbWFrZXNwZWMKKyovCisjaWYgUExBVEZPUk0oV0lOX0NFKSAmJiBQTEFURk9STShR
VCkKKyMgICBpbmNsdWRlIDxRdEdsb2JhbD4KKyMgICB1bmRlZiBXVEZfUExBVEZPUk1fQklHX0VO
RElBTgorIyAgIHVuZGVmIFdURl9QTEFURk9STV9NSURETEVfRU5ESUFOCisjICAgaWYgUV9CWVRF
X09SREVSID09IFFfQklHX0VESUFOCisjICAgICAgIGRlZmluZSBXVEZfUExBVEZPUk1fQklHX0VO
RElBTiAxCisjICAgZW5kaWYKKyNlbmRpZgorCiAvKiBDb21waWxlciAqLwogCiAvKiBDT01QSUxF
UihNU1ZDKSAqLwpAQCAtMjg5LDExICszMDMsMTggQEAKICNkZWZpbmUgSEFWRV9TWVNfUEFSQU1f
SCAxCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0gg
MQorI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKIAogI2VsaWYgUExBVEZPUk0oV0lOX09TKQog
CiAjZGVmaW5lIEhBVkVfRkxPQVRfSCAxCisjaWYgUExBVEZPUk0oV0lOX0NFKQorI2RlZmluZSBI
QVZFX1NZU19UWVBFU19IIDAKKyNkZWZpbmUgSEFWRV9FUlJOT19IIDAKKyNlbHNlCiAjZGVmaW5l
IEhBVkVfU1lTX1RJTUVCX0ggMQorI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKKyNlbmRpZgog
I2RlZmluZSBIQVZFX1ZJUlRVQUxBTExPQyAxCiAKICNlbHNlCkBAIC0zMDYsNiArMzI3LDcgQEAK
ICNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQogI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKICNk
ZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKKyNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCiAKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKaW5kZXggMjQyODdlNi4uMWI4MTI1ZSAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmcuaApAQCAtNTksMTEgKzU5LDE1IEBACiAjaWZuZGVmIFRocmVhZGluZ19o
CiAjZGVmaW5lIFRocmVhZGluZ19oCiAKKyNpZiBQTEFURk9STShXSU5fQ0UpCisjaW5jbHVkZSA8
d2luZG93cy5oPgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotI2lmIFBM
QVRGT1JNKFdJTl9PUykKKyNpZiBQTEFURk9STShXSU5fT1MpICYmICFQTEFURk9STShXSU5fQ0Up
CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VsaWYgUExBVEZPUk0oREFSV0lOKQogI2luY2x1ZGUg
PGxpYmtlcm4vT1NBdG9taWMuaD4KQEAgLTE3Miw3ICsxNzYsNyBAQCBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKFdJTl9PUykKICNkZWZpbmUgV1RGX1VTRV9MT0NLRlJFRV9USFJFQURTQUZFU0hBUkVE
IDEKIAotI2lmIENPTVBJTEVSKE1JTkdXKSB8fCBDT01QSUxFUihNU1ZDNykKKyNpZiBDT01QSUxF
UihNSU5HVykgfHwgQ09NUElMRVIoTVNWQzcpIHx8IFBMQVRGT1JNKFdJTl9DRSkKIGlubGluZSB2
b2lkIGF0b21pY0luY3JlbWVudChpbnQqIGFkZGVuZCkgeyBJbnRlcmxvY2tlZEluY3JlbWVudChy
ZWludGVycHJldF9jYXN0PGxvbmcqPihhZGRlbmQpKTsgfQogaW5saW5lIGludCBhdG9taWNEZWNy
ZW1lbnQoaW50KiBhZGRlbmQpIHsgcmV0dXJuIEludGVybG9ja2VkRGVjcmVtZW50KHJlaW50ZXJw
cmV0X2Nhc3Q8bG9uZyo+KGFkZGVuZCkpOyB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL3dpbi9NYWluVGhyZWFkV2luLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi93aW4v
TWFpblRocmVhZFdpbi5jcHAKaW5kZXggOWYwNWQyMi4uNWYwMTYzYyAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvd3RmL3dpbi9NYWluVGhyZWFkV2luLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvd2luL01haW5UaHJlYWRXaW4uY3BwCkBAIC0zMSw3ICszMSw5IEBACiAKICNpbmNsdWRl
ICJBc3NlcnRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkaW5nLmgiCisjaWYgIVBMQVRGT1JNKFdJ
Tl9DRSkKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTgyN2NmZC4uZjk3Njg3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTI2Niw2ICsyNjYsMzAgQEAKIAogMjAwOC0wOS0wOSAgSm9lcmcg
Qm9ybmVtYW5uICA8am9lcmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSB0aGUgUXQgcG9ydCBvZiBX
ZWJLaXQgY29tcGlsZSBvbiBXaW5kb3dzIENFCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzogVmFy
aW91cyBmaXhlcyB0byBpbmNsdWRlIHdpbmRvd3Mgc3BlY2lmaWMgYnVpbGQgb3B0aW9ucworICAg
ICAgICBhbHNvIGluIHRoZSBXaW5kb3dzIENFIGJ1aWxkLgorICAgICAgICAqIGxvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHA6IFJlbW92ZWQgdW5uZWNlc3NhcnkgZXJybm8uaCBpbmNsdXNpb24u
CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOiBDaGFuZ2VkIFFfT1NfV0lOMzIgdG8g
UV9PU19XSU4gdG8gaW5jbHVkZSBDRS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmdldFdpbmRvd3NDb250ZXh0KTogU2V0V29ybGRUcmFuc2Zvcm0gaXMKKyAgICAgICAgbm90IGF2
YWlsYWJsZSBvbiBDRS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3Bw
OiBBZGRlZCBsb2NhbCBkZWZpbml0aW9uIG9mIE1fUEkuCisgICAgICAgICogcGxhdGZvcm0vcXQv
RmlsZVN5c3RlbVF0LmNwcDogQ2hhbmdlZCBRX09TX1dJTjMyIHRvIFFfT1NfV0lOIHRvIGluY2x1
ZGUgQ0UuCisgICAgICAgICogcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oOiBFeHRlbmQgI2lk
ZWZzIHRvIGRlZmluZSB0aGUgbWlzc2luZyBPRU0KKyAgICAgICAgY29uc3RhbnRzIG9uIENFLgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6IEFkZGVkIHN0dWJz
IGZvciBwbHVnaW5zLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24u
Y3BwOiBEb24ndCBpbmNsdWRlIHN5cy90eXBlcy5oCisgICAgICAgICogcGxhdGZvcm0vd2luL1N5
c3RlbVRpbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudFRpbWUpOiBJbXBsZW1l
bnRlZCBmb3IgV2luZG93cyBDRS4KKyAgICAgICAgKFdlYkNvcmU6OnVzZXJJZGxlVGltZSk6IERv
bid0IHVzZSBHZXRMYXN0SW5wdXRJbmZvIG9uIENFLCBpdCBkb2VzIG5vdAorICAgICAgICBleGlz
dC4KKworMjAwOC0wOS0wOSAgSm9lcmcgQm9ybmVtYW5uICA8am9lcmcuYm9ybmVtYW5uQHRyb2xs
dGVjaC5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCiAKICAgICAgICAgRml4IGNv
bXBpbGF0aW9uIG9mIHRoZSBRdCBwb3J0IHdpdGggZGlzYWJsZWQgcGx1Z2lucyBvbiBXaW5kb3dz
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCA0Yjk0M2IzLi41Zjk1ZTZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE3LDcgKzE3LDcgQEAgQ09ORklHKFFURElSX2J1
aWxkKSB7CiAKIGlzRW1wdHkoR0VORVJBVEVEX1NPVVJDRVNfRElSKTpHRU5FUkFURURfU09VUkNF
U19ESVIgPSB0bXAKIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSCA9ICQkR0VORVJBVEVEX1NP
VVJDRVNfRElSLwotd2luMzItKjogR0VORVJBVEVEX1NPVVJDRVNfRElSX1NMQVNIIH49IHN8L3xc
fAord2luMzItKnx3aW5jZSo6IEdFTkVSQVRFRF9TT1VSQ0VTX0RJUl9TTEFTSCB+PSBzfC98XHwK
IAogIUNPTkZJRyhRVERJUl9idWlsZCkgewogICAgICBPQkpFQ1RTX0RJUiA9IHRtcApAQCAtNDcs
NyArNDcsMTUgQEAgZnJlZWJzZC0qOiBERUZJTkVTICs9IEhBVkVfUFRIUkVBRF9OUF9ICiAKIERF
RklORVMgKz0gQlVJTERfV0VCS0lUCiAKLSFDT05GSUcoUVRESVJfYnVpbGQpOndpbjMyLSo6IERF
RklORVMgKz0gRU5BQkxFX0lDT05EQVRBQkFTRT0wIEVOQUJMRV9EQVRBQkFTRT0wCishQ09ORklH
KFFURElSX2J1aWxkKTp3aW4zMjogREVGSU5FUyArPSBFTkFCTEVfSUNPTkRBVEFCQVNFPTAgRU5B
QkxFX0RBVEFCQVNFPTAKK3dpbmNlKiB7CisjICAgIERFRklORVMgKz0gRU5BQkxFX1NWRz0wIEVO
QUJMRV9YUEFUSD0wIEVOQUJMRV9YQkw9MCBcCisjICAgICAgICAgICAgICAgRU5BQkxFX1NWR19B
TklNQVRJT049MCBFTkFCTEVfU1ZHX1VTRT0wICBcCisjICAgICAgICAgICAgICAgRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVD0wIEVOQUJMRV9TVkdfQVNfSU1BR0U9MAorCisgICAgSU5DTFVERVBB
VEggKz0gJCRQV0QvLi4vSmF2YVNjcmlwdENvcmUvb3Mtd2luY2UKKyAgICBJTkNMVURFUEFUSCAr
PSAkJFBXRC8uLi9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMgorfQogCiAjIFBpY2sgdXAgM3JkcGFy
dHkgbGlicmFyaWVzIGZyb20gSU5DTFVERS9MSUIganVzdCBsaWtlIHdpdGggTVNWQwogd2luMzIt
ZysrIHsKQEAgLTEwMzQsNyArMTA0Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9x
dC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3
ZWJwbHVnaW5mYWN0b3J5LmNwcAogCi0gICAgd2luMzItKjogU09VUkNFUyArPSBwbGF0Zm9ybS93
aW4vU3lzdGVtVGltZVdpbi5jcHAKKyAgICB3aW4zMi0qfHdpbmNlKjogU09VUkNFUyArPSBwbGF0
Zm9ybS93aW4vU3lzdGVtVGltZVdpbi5jcHAKICAgICBlbHNlOiBTT1VSQ0VTICs9IHBsYXRmb3Jt
L3F0L1N5c3RlbVRpbWVRdC5jcHAKIAogICAgIHdpbjMyLSogewpAQCAtMTgyMyw3ICsxODMxLDcg
QEAgYWRkRXh0cmFDb21waWxlcldpdGhIZWFkZXIoeHBhdGhiaXNvbikKIAogICAgIFZFUlNJT049
JCR7UVRfTUFKT1JfVkVSU0lPTn0uJCR7UVRfTUlOT1JfVkVSU0lPTn0uJCR7UVRfUEFUQ0hfVkVS
U0lPTn0KIAotICAgIHdpbjMyLSogeworICAgIHdpbjMyLSp8d2luY2UqIHsKICAgICAgICAgRExM
REVTVERJUiA9ICQkT1VUUFVUX0RJUi9iaW4KIAogICAgICAgICBkbGx0YXJnZXQuY29tbWFuZHMg
PSAkKENPUFlfRklMRSkgJChERVNURElSKSQoVEFSR0VUKSAkJFtRVF9JTlNUQUxMX0JJTlNdCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMTkzNGVlNS4uNzMxNWZiZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAtNTYsOCArNTYsNiBAQAogI2luY2x1
ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8ZXJybm8uaD4KLQogLy8gRm9yIG1l
dGhvZHMgdGhhdCBhcmUgbWVhbnQgdG8gc3VwcG9ydCBBUEkgZnJvbSB0aGUgbWFpbiB0aHJlYWQg
LSBzaG91bGQgbm90IGJlIGNhbGxlZCBpbnRlcm5hbGx5CiAjZGVmaW5lIEFTU0VSVF9OT1RfU1lO
Q19USFJFQUQoKSBBU1NFUlQoIW1fc3luY1RocmVhZFJ1bm5pbmcgfHwgIUlTX0lDT05fU1lOQ19U
SFJFQUQoKSkKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCBmYTY5MDQyLi4wMzVlOTliIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uaApAQCAtOTMsNyArOTMsNyBAQCBjb25zdCBQbGF0Zm9ybUZpbGVIYW5k
bGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IDA7CiAjaWYgZGVmaW5lZChRX1dTX1gxMSkg
fHwgZGVmaW5lZChRX1dTX01BQykgfHwgZGVmaW5lZChRX1dTX1FXUykKIHR5cGVkZWYgUUxpYnJh
cnkqIFBsYXRmb3JtTW9kdWxlOwogdHlwZWRlZiB1bnNpZ25lZCBQbGF0Zm9ybU1vZHVsZVZlcnNp
b247Ci0jZWxpZiBkZWZpbmVkKFFfT1NfV0lOMzIpCisjZWxpZiBkZWZpbmVkKFFfT1NfV0lOKQog
dHlwZWRlZiBITU9EVUxFIFBsYXRmb3JtTW9kdWxlOwogc3RydWN0IFBsYXRmb3JtTW9kdWxlVmVy
c2lvbiB7CiAgICAgdW5zaWduZWQgbGVhc3RTaWc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IGZlOTgyY2YuLjk5YjE4NWYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
UXQuY3BwCkBAIC0xMDUzLDYgKzEwNTMsNyBAQCBIREMgR3JhcGhpY3NDb250ZXh0OjpnZXRXaW5k
b3dzQ29udGV4dChjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib29sIHN1cHBvcnRBbHBoYQogICAg
ICAgICBtZW1zZXQoYm1wSW5mby5ibUJpdHMsIDAsIGJ1ZmZlclNpemUpOwogICAgIH0KIAorI2lm
ICFQTEFURk9STShXSU5fQ0UpCiAgICAgLy8gTWFrZSBzdXJlIHdlIGNhbiBkbyB3b3JsZCB0cmFu
c2Zvcm1zLgogICAgIFNldEdyYXBoaWNzTW9kZShiaXRtYXBEQywgR01fQURWQU5DRUQpOwogCkBA
IC0xMDY1LDcgKzEwNjYsNyBAQCBIREMgR3JhcGhpY3NDb250ZXh0OjpnZXRXaW5kb3dzQ29udGV4
dChjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib29sIHN1cHBvcnRBbHBoYQogICAgIHhmb3JtLmVE
eCA9IC1kc3RSZWN0LngoKTsKICAgICB4Zm9ybS5lRHkgPSAtZHN0UmVjdC55KCk7CiAgICAgOjpT
ZXRXb3JsZFRyYW5zZm9ybShiaXRtYXBEQywgJnhmb3JtKTsKLQorI2VuZGlmCiAKICAgICByZXR1
cm4gYml0bWFwREM7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L1BhdGhRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAKaW5k
ZXggNzZmMzc1Yy4uMzM5YzJkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9QYXRoUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0
LmNwcApAQCAtMzksNiArMzksMTAgQEAKICNkZWZpbmUgX1VTRV9NQVRIX0RFRklORVMKICNpbmNs
dWRlIDxtYXRoLmg+CiAKKyNpZm5kZWYgTV9QSQorIyAgIGRlZmluZSBNX1BJIDMuMTQxNTkyNjUz
NTg5NzkzMjM4NDYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhdGg6OlBhdGgo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9GaWxlU3lzdGVtUXQuY3BwCmluZGV4IDVmOTc4NGYuLjYxMTQ3MTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvRmlsZVN5c3RlbVF0LmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L0ZpbGVTeXN0ZW1RdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBi
b29sIHVubG9hZE1vZHVsZShQbGF0Zm9ybU1vZHVsZSBtb2R1bGUpCiB9CiAjZW5kaWYKIAotI2lm
IGRlZmluZWQoUV9PU19XSU4zMikKKyNpZiBkZWZpbmVkKFFfT1NfV0lOKQogYm9vbCB1bmxvYWRN
b2R1bGUoUGxhdGZvcm1Nb2R1bGUgbW9kdWxlKQogewogICAgIHJldHVybiA6OkZyZWVMaWJyYXJ5
KG1vZHVsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tleWJvYXJkQ29kZXMu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oCmluZGV4IDIxZDNjNjcuLjYx
YmM5ZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvS2V5Ym9hcmRDb2Rlcy5oCkBAIC00NzIsNiArNDcyLDEw
IEBAIGNvbnN0IGludCBWS19NRURJQV9MQVVOQ0hfQVBQMSA9IDB4QjY7CiAvLyBWS19MQVVOQ0hf
QVBQMiAoQjcpIFdpbmRvd3MgMjAwMC9YUDogU3RhcnQgQXBwbGljYXRpb24gMiBrZXkKIGNvbnN0
IGludCBWS19NRURJQV9MQVVOQ0hfQVBQMiA9IDB4Qjc7CiAKKyNlbmRpZiAvLyAhUExBVEZPUk0o
V0lOX09TKQorCisjaWYgIVBMQVRGT1JNKFdJTl9PUykgfHwgUExBVEZPUk0oV0lOX0NFKQorCiAv
LyBWS19PRU1fMSAoQkEpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2Fu
IHZhcnkgYnkga2V5Ym9hcmQuIFdpbmRvd3MgMjAwMC9YUDogRm9yIHRoZSBVUyBzdGFuZGFyZCBr
ZXlib2FyZCwgdGhlICc7Oicga2V5CiBjb25zdCBpbnQgVktfT0VNXzEgPSAweEJBOwogCkBAIC01
MDgsNiArNTEyLDEwIEBAIGNvbnN0IGludCBWS19PRU1fNyA9IDB4REU7CiAvLyBWS19PRU1fOCAo
REYpIFVzZWQgZm9yIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyczsgaXQgY2FuIHZhcnkgYnkga2V5
Ym9hcmQuCiBjb25zdCBpbnQgVktfT0VNXzggPSAweERGOwogCisjZW5kaWYgLy8gIVBMQVRGT1JN
KFdJTl9PUykgfHwgUExBVEZPUk0oV0lOX0NFKQorCisjaWYgIVBMQVRGT1JNKFdJTl9PUykKKwog
Ly8gVktfT0VNXzEwMiAoRTIpIFdpbmRvd3MgMjAwMC9YUDogRWl0aGVyIHRoZSBhbmdsZSBicmFj
a2V0IGtleSBvciB0aGUgYmFja3NsYXNoIGtleSBvbiB0aGUgUlQgMTAyLWtleSBrZXlib2FyZAog
Y29uc3QgaW50IFZLX09FTV8xMDIgPSAweEUyOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBv
cmFyeUxpbmtTdHVicy5jcHAKaW5kZXggZWYwOGI3Ni4uNDI1ZWQxMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApAQCAtNzMsNyArNzMsNyBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmICFkZWZpbmVkKFFfV1NfWDExKSAmJiAhZGVmaW5l
ZChRX1dTX1dJTikKKyNpZiAoIWRlZmluZWQoUV9XU19YMTEpICYmICFkZWZpbmVkKFFfV1NfV0lO
KSkgfHwgZGVmaW5lZChRX09TX1dJTkNFKQogCiBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5m
bygpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiB1bnNpZ25lZCBQbHVnaW5Q
YWNrYWdlOjpoYXNoKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQpAQCAt
MTAwLDYgKzEwMCwxMiBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxl
LCB2b2lkKikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gTlBFUgogUGx1Z2luVmlldzo6flBs
dWdpblZpZXcoKSB7fQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFFfT1NfV0lOQ0UpCitWZWN0b3I8
U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkgeyBub3RJ
bXBsZW1lbnRlZCgpOyByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsgfQordm9pZCBQbHVnaW5EYXRh
YmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMp
IGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgfQorYm9vbCBQbHVnaW5EYXRhYmFzZTo6aXNQcmVm
ZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBWZWN0b3I8U3RyaW5nPiBzdXBwb3J0ZWRLZXlTaXplcygpIHsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxh
ckV4cHJlc3Npb24uY3BwCmluZGV4IDFiOTMzZmYuLmQxNzg1NWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcApAQCAtMzEsNyArMzEsOSBAQAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHBj
cmUvcGNyZS5oPgorI2lmIEhBVkUoU1lTX1RZUEVTX0gpCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+
CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TeXN0ZW1UaW1lV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3Rl
bVRpbWVXaW4uY3BwCmluZGV4IDZlMTczMTcuLjk2ZWI2NTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbVRpbWVXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1N5c3RlbVRpbWVXaW4uY3BwCkBAIC0zNCw3ICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBkb3VibGUgY3VycmVudFRpbWUoKQogewogICAgIEZJTEVUSU1FIGZ0OworI2lmIFBMQVRGT1JN
KFdJTl9DRSkKKyAgICBTWVNURU1USU1FIHN5c3RpbWU7CisgICAgR2V0U3lzdGVtVGltZSgmc3lz
dGltZSk7CisgICAgU3lzdGVtVGltZVRvRmlsZVRpbWUoJnN5c3RpbWUsICZmdCk7CisjZWxzZQog
ICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZmdCk7CisjZW5kaWYKIAogICAgIC8vIEFzIHBl
ciBXaW5kb3dzIGRvY3VtZW50YXRpb24gZm9yIEZJTEVUSU1FLCBjb3B5IHRoZSByZXN1bHRpbmcg
RklMRVRJTUUgc3RydWN0dXJlIHRvIGEKICAgICAvLyBVTEFSR0VfSU5URUdFUiBzdHJ1Y3R1cmUg
dXNpbmcgbWVtY3B5ICh1c2luZyBtZW1jcHkgaW5zdGVhZCBvZiBkaXJlY3QgYXNzaWdubWVudCBj
YW4KQEAgLTU2LDEwICs2MiwxMiBAQCBkb3VibGUgY3VycmVudFRpbWUoKQogCiBmbG9hdCB1c2Vy
SWRsZVRpbWUoKQogeworI2lmICFQTEFURk9STShXSU5fQ0UpCiAgICAgTEFTVElOUFVUSU5GTyBs
YXN0SW5wdXRJbmZvID0gezB9OwogICAgIGxhc3RJbnB1dEluZm8uY2JTaXplID0gc2l6ZW9mKExB
U1RJTlBVVElORk8pOwogICAgIGlmICg6OkdldExhc3RJbnB1dEluZm8oJmxhc3RJbnB1dEluZm8p
KQogICAgICAgICByZXR1cm4gKEdldFRpY2tDb3VudCgpIC0gbGFzdElucHV0SW5mby5kd1RpbWUp
ICogMC4wMDE7IC8vIDo6R2V0VGlja0NvdW50IHJldHVybnMgbXMgb2YgdXB0aW1lIHZhbGlkIGZv
ciB1cCB0byA0OS43IGRheXMuCisjZW5kaWYKICAgICByZXR1cm4gRkxUX01BWDsgLy8gcmV0dXJu
IGFuIGFyYml0cmFyaWx5IGhpZ2ggdXNlcklkbGVUaW1lIHNvIHRoYXQgcmVsZWFzaW5nIHBhZ2Vz
IGZyb20gdGhlIHBhZ2UgY2FjaGUgaXNuJ3QgcG9zdHBvbmVkLiAKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0LnBybyBiL1dlYktpdC5wcm8KaW5kZXggMDM1ZjczYS4uMTgwMTQyNiAxMDA2NDQKLS0t
IGEvV2ViS2l0LnBybworKysgYi9XZWJLaXQucHJvCkBAIC04LDUgKzgsNSBAQCBTVUJESVJTICs9
IFwKICAgICAgICAgV2ViS2l0L3F0L1F0TGF1bmNoZXIgXAogICAgICAgICBXZWJLaXQvcXQvdGVz
dHMKIAotIXdpbjMyLSo6IFNVQkRJUlMgKz0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWUucHJvCishd2luMzI6IFNVQkRJUlMgKz0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCiAKLS0gCjEuNi4wLjIuZzJlYmMwCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23698</attachid>
            <date>2008-09-23 02:46:57 -0700</date>
            <delta_ts>2008-10-15 09:43:18 -0700</delta_ts>
            <desc>Fix compilation on Windows CE when using some C string functions (uses inline functions)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2270</size>
            <attacher name="Joerg Bornemann">joerg.bornemann</attacher>
            
              <data encoding="base64">RnJvbSAxMGExYTI1N2MzMzM5MGI2NzIxOGQyMDhhOGEwODBhN2Q4MzQ3NjJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VyZyBCb3JuZW1hbm4gPGpvZXJnLmJvcm5lbWFubkB0cm9s
bHRlY2guY29tPgpEYXRlOiBUdWUsIDkgU2VwIDIwMDggMTY6MDc6MTcgKzAyMDAKU3ViamVjdDog
W1BBVENIXSAyMDA4LTA5LTA5ICBKb2VyZyBCb3JuZW1hbm4gIDxqb2VyZy5ib3JuZW1hbm5AdHJv
bGx0ZWNoLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAg
IEZpeCBjb21waWxhdGlvbiBvbiBXaW5kb3dzIENFLgoKICAgICAgICBzdHIobilpY21wLCBzdHJk
dXAgYW5kIHZzbnByaW50ZiBhcmUgbm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzIENFLAogICAgICAg
IHRoZXkgYXJlIGNhbGxlZCBfc3RyKG4paWNtcCwgZXRjLiBpbnN0ZWFkCi0tLQogSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nICAgICAgICAgIHwgICAxMSArKysrKysrKysrKwogSmF2YVNjcmlwdENv
cmUvd3RmL1N0cmluZ0V4dHJhcy5oIHwgICAgNyArKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE4
IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVjOGZkMDEuLmNi
MTA2OTcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEZpeCBjb21waWxhdGlvbiBvbiBXaW5kb3dzIENF
LgorCisgICAgICAgIHN0cihuKWljbXAsIHN0cmR1cCBhbmQgdnNucHJpbnRmIGFyZSBub3QgYXZh
aWxhYmxlIG9uIFdpbmRvd3MgQ0UsCisgICAgICAgIHRoZXkgYXJlIGNhbGxlZCBfc3RyKG4paWNt
cCwgZXRjLiBpbnN0ZWFkCisKKyAgICAgICAgKiB3dGYvU3RyaW5nRXh0cmFzLmg6CisKKzIwMDgt
MDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJnLmJvcm5lbWFubkB0cm9sbHRlY2guY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFBvcnRlZCBE
YXRlTWF0aC5jcHAgdG8gbm90IHVzZSBlcnJubyBhZnRlciBjYWxsaW5nIHN0cnRvbAogICAgICAg
ICBPbiBXaW5kb3dzIENFIGVycm5vIGlzIG5vdCBhdmFpbGFibGUKIApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvd3RmL1N0cmluZ0V4dHJhcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0cmlu
Z0V4dHJhcy5oCmluZGV4IDQ0MWNkNzUuLjQ2NWI0OWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9TdHJpbmdFeHRyYXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nRXh0
cmFzLmgKQEAgLTQ2LDYgKzQ2LDEzIEBAIGlubGluZSBpbnQgc25wcmludGYoY2hhciAqc3RyLCBz
aXplX3Qgc2l6ZSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCiAjZGVmaW5lIHZzbnByaW50ZiBz
bnByaW50ZgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU5fQ0UpCitpbmxpbmUgaW50IHN0cm5p
Y21wKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvbnN0IGNoYXIqIHN0cmluZzIsIHNpemVfdCBjb3Vu
dCkKK3sKKyAgICByZXR1cm4gX3N0cm5pY21wKHN0cmluZzEsIHN0cmluZzIsIGNvdW50KTsKK30K
KworaW5saW5lIGludCBzdHJpY21wKGNvbnN0IGNoYXIqIHN0cmluZzEsIGNvbnN0IGNoYXIqIHN0
cmluZzIpCit7CisgICAgcmV0dXJuIF9zdHJpY21wKHN0cmluZzEsIHN0cmluZzIpOworfQorCitp
bmxpbmUgY2hhciogc3RyZHVwKGNvbnN0IGNoYXIqIHN0clNvdXJjZSkKK3sKKyAgICByZXR1cm4g
X3N0cmR1cChzdHJTb3VyY2UpOworfQorCitpbmxpbmUgaW50IHZzbnByaW50ZihjaGFyKiBidWZm
ZXIsIHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3B0cikKK3sK
KyAgICByZXR1cm4gX3ZzbnByaW50ZihidWZmZXIsIGNvdW50LCBmb3JtYXQsIGFyZ3B0cik7Cit9
CisjZW5kaWYKKwogaW5saW5lIGludCBzdHJuY2FzZWNtcChjb25zdCBjaGFyKiBzMSwgY29uc3Qg
Y2hhciogczIsIHNpemVfdCBsZW4pIHsgcmV0dXJuIHN0cm5pY21wKHMxLCBzMiwgbGVuKTsgfQog
CiBpbmxpbmUgaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKSB7
IHJldHVybiBzdHJpY21wKHMxLCBzMik7IH0KLS0gCjEuNi4wLjIuZzJlYmMwCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25262</attachid>
            <date>2008-11-19 02:24:45 -0800</date>
            <delta_ts>2008-11-19 09:23:59 -0800</delta_ts>
            <desc>Implemented currentThreadStackBase() on Windows CE. (updated)</desc>
            <filename>diff1.txt</filename>
            <type>text/plain</type>
            <size>3519</size>
            <attacher name="Joerg Bornemann">joerg.bornemann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA5NTE1OGU2Li5jMGMwMTAzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMDgtMDktMDkgIEdlb3JnZSBTdGFpa29zICA8Z2VvcmdlQHN0YWlrb3MubmV0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVk
IGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKSBvbiBXaW5kb3dzIENFLgorCisgICAgICAgICoga2pz
L2NvbGxlY3Rvci5jcHA6CisgICAgICAgIChKU0M6OkdDX2dldF93cml0YWJsZV9sZW5ndGgpOgor
ICAgICAgICAoSlNDOjpHQ19nZXRfc3RhY2tfYmFzZSk6CisgICAgICAgIChKU0M6OmN1cnJlbnRU
aHJlYWRTdGFja0Jhc2UpOgorCiAyMDA4LTA5LTEwICBTaW1vbiBIYXVzbWFubiAgPGhhdXNtYW5u
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkIGJ1dCB0cml2aWFsIG9uZS1saW5l
ciBmb3IgeWV0IHVudXNlZCBtYWNyby4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9j
b2xsZWN0b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAKaW5kZXggYmFm
YTVjNS4uZTVlOGIyZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5jcHAKQEAgLTEsNiArMSw3IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IFRv
cmNoIE1vYmlsZSwgSW5jLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDA3LDExICs0MDgsNjEg
QEAgdm9pZCogSGVhcDo6YWxsb2NhdGVOdW1iZXIoc2l6ZV90IHMpCiAgICAgcmV0dXJuIGhlYXBB
bGxvY2F0ZTxOdW1iZXJIZWFwPihzKTsKIH0KIAorI2lmIFBMQVRGT1JNKFdJTl9DRSkKKy8vIFJl
dHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYXJlIHdyaXRhYmxlIHN0YXJ0aW5nIGF0IHAu
CisvLyBUaGUgcG9pbnRlciBwIGlzIGFzc3VtZWQgdG8gYmUgcGFnZSBhbGlnbmVkLgorLy8gSWYg
YmFzZSBpcyBub3QgMCwgKmJhc2UgYmVjb21lcyB0aGUgYmVnaW5uaW5nIG9mIHRoZQorLy8gYWxs
b2NhdGlvbiByZWdpb24gY29udGFpbmluZyBwLgorc3RhdGljIGlubGluZSBEV09SRCBudW1iZXJP
ZldyaXRhYmxlQnl0ZXModm9pZCogcCwgdm9pZCoqIGJhc2UpCit7CisgICAgTUVNT1JZX0JBU0lD
X0lORk9STUFUSU9OIGJ1ZjsKKyAgICBEV09SRCByZXN1bHQ7CisgICAgRFdPUkQgcHJvdGVjdDsK
KworICAgIHJlc3VsdCA9IFZpcnR1YWxRdWVyeShwLCAmYnVmLCBzaXplb2YoYnVmKSk7CisgICAg
aWYgKHJlc3VsdCAhPSBzaXplb2YoYnVmKSkKKyAgICAgICAgYWJvcnQoKTsKKyAgICBpZiAoYmFz
ZSAhPSAwKQorICAgICAgICAqYmFzZSA9ICh2b2lkKikoYnVmLkFsbG9jYXRpb25CYXNlKTsKKyAg
ICBwcm90ZWN0ID0gKGJ1Zi5Qcm90ZWN0ICYgfihQQUdFX0dVQVJEIHwgUEFHRV9OT0NBQ0hFKSk7
CisKKyAgICBpZiAocHJvdGVjdCAhPSBQQUdFX1JFQURXUklURSAmJiBwcm90ZWN0ICE9IFBBR0Vf
V1JJVEVDT1BZICYmCisgICAgICAgIHByb3RlY3QgIT0gUEFHRV9FWEVDVVRFX1JFQURXUklURSAm
JiBwcm90ZWN0ICE9IFBBR0VfRVhFQ1VURV9XUklURUNPUFkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgaWYgKGJ1Zi5TdGF0ZSAhPSBNRU1fQ09NTUlUKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBidWYuUmVnaW9uU2l6ZTsKK30KKworc3RhdGljIGlubGluZSB2b2lkKiBjdXJy
ZW50VGhyZWFkU3RhY2tCYXNlX1dJTl9DRSgpCit7CisgICAgc3RhdGljIERXT1JEIHBhZ2VTaXpl
ID0gMDsKKyAgICBpZiAoIXBhZ2VTaXplKSB7CisgICAgICAgIFNZU1RFTV9JTkZPIHN5c0luZm87
CisgICAgICAgIEdldFN5c3RlbUluZm8oJnN5c0luZm8pOworICAgICAgICBwYWdlU2l6ZSA9IHN5
c0luZm8uZHdQYWdlU2l6ZTsKKyAgICB9CisgICAgaW50IGR1bW15OworICAgIHZvaWQqIHNwID0g
KHZvaWQqKSZkdW1teTsKKyAgICBjaGFyKiB0cnVuY19zcCA9IChjaGFyKikoKERXT1JEKXNwICYg
fihwYWdlU2l6ZSAtIDEpKTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIERXT1JEIHNpemUgPSBu
dW1iZXJPZldyaXRhYmxlQnl0ZXModHJ1bmNfc3AsIDApOworICAgICAgICBpZiAoc2l6ZSA8IHBh
Z2VTaXplKQorICAgICAgICAgICAgcmV0dXJuIHRydW5jX3NwICsgc2l6ZTsKKyAgICAgICAgdHJ1
bmNfc3AgKz0gcGFnZVNpemU7CisgICAgfQorfQorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTl9DRSkK
Kwogc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkKIHsKICNpZiBQ
TEFURk9STShEQVJXSU4pCiAgICAgcHRocmVhZF90IHRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwog
ICAgIHJldHVybiBwdGhyZWFkX2dldF9zdGFja2FkZHJfbnAodGhyZWFkKTsKKyNlbGlmIFBMQVRG
T1JNKFdJTl9DRSkKKyAgICByZXR1cm4gY3VycmVudFRocmVhZFN0YWNrQmFzZV9XSU5fQ0UoKTsK
ICNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgUExBVEZPUk0oWDg2KSAmJiBDT01QSUxFUihNU1ZD
KQogICAgIC8vIG9mZnNldCAweDE4IGZyb20gdGhlIEZTIHNlZ21lbnQgcmVnaXN0ZXIgZ2l2ZXMg
YSBwb2ludGVyIHRvCiAgICAgLy8gdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBibG9jayBmb3IgdGhl
IGN1cnJlbnQgdGhyZWFkCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgKaW5kZXggMWQ1MTIxZC4uM2I2NzEyYyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL2NvbmZpZy5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9jb25maWcuaApAQCAtMzIsNyArMzIsMTEgQEAKICNkZWZpbmUgbWF4IG1heAogI2RlZmlu
ZSBtaW4gbWluCiAKLSNpZiAhQ09NUElMRVIoTVNWQzcpCisjaWYgUExBVEZPUk0oV0lOX0NFKQor
ZXh0ZXJuICJDIiB2b2lkIGFib3J0KCk7CisjZW5kaWYKKworI2lmICFDT01QSUxFUihNU1ZDNykg
JiYgIVBMQVRGT1JNKFdJTl9DRSkKIC8vIFdlIG5lZWQgdG8gZGVmaW5lIHRoaXMgYmVmb3JlIHRo
ZSBmaXJzdCAjaW5jbHVkZSBvZiBzdGRsaWIuaCBvciBpdCB3b24ndCBjb250YWluIHJhbmRfcy4K
ICNpZm5kZWYgX0NSVF9SQU5EX1MKICNkZWZpbmUgX0NSVF9SQU5EX1MK
</data>
<flag name="review"
          id="11681"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25571</attachid>
            <date>2008-11-28 07:58:58 -0800</date>
            <delta_ts>2008-11-28 07:58:58 -0800</delta_ts>
            <desc>Implemented currentThreadStackBase() on Windows CE (slight coding style fixes)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3344</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">Y29tbWl0IDljNDljMGI4ZmRkYTA0ZTA2Y2JmODg3YTFmYjdkY2NmZDcxNDA5ZjgKQXV0aG9yOiBT
aW1vbiBIYXVzbWFubiA8c2hhdXNtYW5AdHJvbGx0ZWNoLmNvbT4KRGF0ZTogICBGcmkgTm92IDI4
IDEzOjE5OjU2IDIwMDggKzAxMDAKCiAgICAyMDA4LTExLTI4ICBHZW9yZ2UgU3RhaWtvcyAgPHN0
YWlrb3NAa2RlLm9yZz4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KICAgIAogICAgICAgICAgICBJbXBsZW1lbnQgY3VycmVudFRocmVhZFN0YWNrQmFzZSgpIG9u
IFdpbmRvd3MgQ0UuCiAgICAKICAgICAgICAgICAgQ29kaW5nIHN0eWxlIGZpeGVzIGJ5IEpvZXJn
IEJvcm5lbWFubiA8am9lcmcuYm9ybmVtYW5uQHRyb2xsdGVjaC5jb20+LgoKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCAzYzA2MjM1Li5lNzJjZTkzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMTEt
MjggIEdlb3JnZSBTdGFpa29zICA8c3RhaWtvc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBjdXJyZW50VGhyZWFkU3Rh
Y2tCYXNlKCkgb24gV2luZG93cyBDRS4KKworICAgICAgICBDb2Rpbmcgc3R5bGUgZml4ZXMgYnkg
Sm9lcmcgQm9ybmVtYW5uIDxqb2VyZy5ib3JuZW1hbm5AdHJvbGx0ZWNoLmNvbT4uCisKKyAgICAg
ICAgKiBydW50aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgIChKU0M6Om51bWJlck9mV3JpdGFi
bGVCeXRlcyk6CisgICAgICAgIChKU0M6OnN5c3RlbVBhZ2VTaXplKToKKyAgICAgICAgKEpTQzo6
Y3VycmVudFRocmVhZFN0YWNrQmFzZVdpbkNFKToKKyAgICAgICAgKEpTQzo6Y3VycmVudFRocmVh
ZFN0YWNrQmFzZSk6CisKIDIwMDgtMTEtMjggIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCmluZGV4IGYxYzA0YmMuLjZmOWVmZWUgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmlsZSwgSW5j
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzkzLDExICszOTQsNTQgQEAgdm9pZCogSGVhcDo6
YWxsb2NhdGVOdW1iZXIoc2l6ZV90IHMpCiAgICAgcmV0dXJuIGhlYXBBbGxvY2F0ZTxOdW1iZXJI
ZWFwPihzKTsKIH0KIAorI2lmIFBMQVRGT1JNKFdJTl9DRSkKKy8vIFJldHVybiB0aGUgbnVtYmVy
IG9mIGJ5dGVzIHRoYXQgYXJlIHdyaXRhYmxlIHN0YXJ0aW5nIGF0IHAuCisvLyBUaGUgcG9pbnRl
ciBwIGlzIGFzc3VtZWQgdG8gYmUgcGFnZSBhbGlnbmVkLgorc3RhdGljIGlubGluZSBEV09SRCBu
dW1iZXJPZldyaXRhYmxlQnl0ZXModm9pZCogcCkKK3sKKyAgICBNRU1PUllfQkFTSUNfSU5GT1JN
QVRJT04gYnVmOworICAgIERXT1JEIHJlc3VsdCA9IFZpcnR1YWxRdWVyeShwLCAmYnVmLCBzaXpl
b2YoYnVmKSk7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBzaXplb2YoYnVmKSk7CisgICAgRFdPUkQg
cHJvdGVjdCA9IChidWYuUHJvdGVjdCAmIH4oUEFHRV9HVUFSRCB8IFBBR0VfTk9DQUNIRSkpOwor
CisgICAgLy8gY2hlY2sgaWYgdGhlIHBhZ2UgaXMgd3JpdGFibGUKKyAgICBpZiAocHJvdGVjdCAh
PSBQQUdFX1JFQURXUklURSAmJiBwcm90ZWN0ICE9IFBBR0VfV1JJVEVDT1BZICYmCisgICAgICAg
IHByb3RlY3QgIT0gUEFHRV9FWEVDVVRFX1JFQURXUklURSAmJiBwcm90ZWN0ICE9IFBBR0VfRVhF
Q1VURV9XUklURUNPUFkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGJ1Zi5TdGF0ZSAh
PSBNRU1fQ09NTUlUKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBidWYuUmVnaW9u
U2l6ZTsKK30KKworc3RhdGljIERXT1JEIHN5c3RlbVBhZ2VTaXplKCkKKyB7CisgICAgU1lTVEVN
X0lORk8gc3lzSW5mbzsKKyAgICBHZXRTeXN0ZW1JbmZvKCZzeXNJbmZvKTsKKyAgICByZXR1cm4g
c3lzSW5mby5kd1BhZ2VTaXplOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQqIGN1cnJlbnRUaHJl
YWRTdGFja0Jhc2VXaW5DRSgpCit7CisgICAgc3RhdGljIERXT1JEIHBhZ2VTaXplID0gc3lzdGVt
UGFnZVNpemUoKTsKKyAgICBpbnQgZHVtbXk7CisgICAgdm9pZCogc3AgPSAmZHVtbXk7CisgICAg
Y2hhciogYWxpZ25lZFN0YWNrUHRyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oKERXT1JEKXNw
ICYgfihwYWdlU2l6ZSAtIDEpKTsKKyAgICBEV09SRCBzaXplID0gMDsKKyAgICB3aGlsZSAoc2l6
ZSA9IG51bWJlck9mV3JpdGFibGVCeXRlcyhhbGlnbmVkU3RhY2tQdHIpKQorICAgICAgICBhbGln
bmVkU3RhY2tQdHIgKz0gc2l6ZTsKKyAgICByZXR1cm4gYWxpZ25lZFN0YWNrUHRyOworfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKFdJTl9DRSkKKwogc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhy
ZWFkU3RhY2tCYXNlKCkKIHsKICNpZiBQTEFURk9STShEQVJXSU4pCiAgICAgcHRocmVhZF90IHRo
cmVhZCA9IHB0aHJlYWRfc2VsZigpOwogICAgIHJldHVybiBwdGhyZWFkX2dldF9zdGFja2FkZHJf
bnAodGhyZWFkKTsKKyNlbGlmIFBMQVRGT1JNKFdJTl9DRSkKKyAgICByZXR1cm4gY3VycmVudFRo
cmVhZFN0YWNrQmFzZVdpbkNFKCk7CiAjZWxpZiBQTEFURk9STShXSU5fT1MpICYmIFBMQVRGT1JN
KFg4NikgJiYgQ09NUElMRVIoTVNWQykKICAgICAvLyBvZmZzZXQgMHgxOCBmcm9tIHRoZSBGUyBz
ZWdtZW50IHJlZ2lzdGVyIGdpdmVzIGEgcG9pbnRlciB0bwogICAgIC8vIHRoZSB0aHJlYWQgaW5m
b3JtYXRpb24gYmxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>