<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>205241</bug_id>
          
          <creation_ts>2009-08-26 21:58:50 +0000</creation_ts>
          <short_desc>Snow Leopard 10.6 support</short_desc>
          <delta_ts>2023-02-18 21:09:21 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>6</classification_id>
          <classification>Developer tools</classification>
          <product>valgrind</product>
          <component>general</component>
          <version>3.5.0</version>
          <rep_platform>Compiled Sources</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>UNMAINTAINED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>blocking3.6.0</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>playmobil</reporter>
          <assigned_to name="Julian Seward">jseward</assigned_to>
          <cc>annacegu</cc>
    
    <cc>astrange</cc>
    
    <cc>charley.wang</cc>
    
    <cc>cpigat242</cc>
    
    <cc>cwatson</cc>
    
    <cc>daniel</cc>
    
    <cc>devchan1</cc>
    
    <cc>filcab</cc>
    
    <cc>fxcoudert</cc>
    
    <cc>gkodinov</cc>
    
    <cc>glider</cc>
    
    <cc>gparker</cc>
    
    <cc>gzjjgod</cc>
    
    <cc>hub</cc>
    
    <cc>ian</cc>
    
    <cc>johannes.simon</cc>
    
    <cc>jp-keyword-valbug.6b5314</cc>
    
    <cc>justus.c79</cc>
    
    <cc>kenny</cc>
    
    <cc>klaus</cc>
    
    <cc>konstantin.s.serebryany</cc>
    
    <cc>len.sassaman</cc>
    
    <cc>malaperle</cc>
    
    <cc>mark</cc>
    
    <cc>martin</cc>
    
    <cc>njn</cc>
    
    <cc>pjfloyd</cc>
    
    <cc>rhys.hill</cc>
    
    <cc>sean</cc>
    
    <cc>siegel</cc>
    
    <cc>tom</cc>
    
    <cc>trnsca</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>110</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>819398</commentid>
    <comment_count>0</comment_count>
    <who name="">playmobil</who>
    <bug_when>2009-08-26 21:58:50 +0000</bug_when>
    <thetext>Version:           3.5.0 (using Devel)
OS:                OS X
Installed from:    Compiled sources

Valgrind doesn&apos;t support Snow Leopard (10.6)

This is according to :
http://www.sealiesoftware.com/blog/archive/2009/06/03/Valgrind_for_Mac_OS_X_goes_mainline.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819503</commentid>
    <comment_count>1</comment_count>
    <who name="Tom Hughes">tom</who>
    <bug_when>2009-08-26 23:25:15 +0000</bug_when>
    <thetext>Do you actually have personal knowledge that it doesn&apos;t work, or is this &quot;bug report&quot; entirely based on a three month old blog posting by a third party?

Certainly Nicholas Nethercote, who has done most of the work of integrating the Darwin port, implied in a valgrind-developers post yesterday that it should work although it might be a bit slow as it will be using the 64 bit code which has some performance issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819561</commentid>
    <comment_count>2</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2009-08-27 00:28:08 +0000</bug_when>
    <thetext>Closing, because it&apos;s possibly true but is based on hearsay rather than direct experience.

Please reopen if you have actually run Valgrind on 10.6 and found it doesn&apos;t work;  if that happens please include the output of &quot;valgrind -d -v &lt;program&gt;&quot;.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820953</commentid>
    <comment_count>3</comment_count>
    <who name="">playmobil</who>
    <bug_when>2009-08-29 00:00:20 +0000</bug_when>
    <thetext>Here are some tests on Snow Leopard 10.6 10A432

To summarize:
* configure fails
* Hacking the configure files and building anyway - running valgrind on &quot;echo hello&quot; fails.

Configure output:

$ svn co svn://svn.valgrind.org/valgrind/trunk valgrind
$ cd valgrind/
$ ./autogen.sh
$ ./configure --prefix=/usr/local/valgrind

Here&apos;s the output from configure:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking whether ln -s works... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking whether gcc and cc understand -c and -o together... yes
checking how to run the C preprocessor... gcc -E
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking for ranlib... ranlib
checking for ar... /usr/bin/ar
checking for perl... /usr/bin/perl
checking for gdb... /usr/bin/gdb
checking dependency style of gcc... gcc3
checking for diff -u... yes
checking for a supported version of gcc... ok (686)
checking build system type... i386-apple-darwin10.0.0
checking host system type... i386-apple-darwin10.0.0
checking for a supported CPU... ok (i386)
checking for a 64-bit only build... no
checking for a 32-bit only build... no
checking for a supported OS... ok (darwin10.0.0)
checking for the kernel version... unsupported (10.0.0)
configure: error: Valgrind works on Darwin 9.x (Mac OS X 10.5)

After fixing the configure file and compiling successfully:
$ playmobil$ echo &quot;hi&quot;
hi
$ /usr/local/valgrind/bin/valgrind echo &quot;hi&quot;
==24152== Memcheck, a memory error detector
==24152== Copyright (C) 2002-2009, and GNU GPL&apos;d, by Julian Seward et al.
==24152== Using Valgrind-3.6.0.SVN and LibVEX; rerun with -h for copyright info
==24152== Command: echo hi
==24152== 
==24152== Invalid read of size 1
==24152==    at 0x33079: localeconv_l (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x2DA8B: __vfprintf (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x4B9E2: vfprintf_l (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x969CF: printf (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x22DD5: pthread_init (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x21C66: libSystem_initializer (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x8FE0ED6C: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&amp;) (in /usr/lib/dyld)
==24152==    by 0x8FE0D31D: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&amp;, unsigned int) (in /usr/lib/dyld)
==24152==    by 0x8FE0D2C1: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&amp;, unsigned int) (in /usr/lib/dyld)
==24152==    by 0x8FE0D3D0: ImageLoader::runInitializers(ImageLoader::LinkContext const&amp;) (in /usr/lib/dyld)
==24152==    by 0x8FE0248E: dyld::initializeMainExecutable() (in /usr/lib/dyld)
==24152==    by 0x8FE0794F: dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**) (in /usr/lib/dyld)
==24152==  Address 0x568 is not stack&apos;d, malloc&apos;d or (recently) free&apos;d
==24152== 
==24152== 
==24152== Process terminating with default action of signal 10 (SIGBUS)
==24152==  Non-existent physical address at address 0x568
==24152==    at 0x33079: localeconv_l (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x2DA8B: __vfprintf (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x4B9E2: vfprintf_l (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x969CF: printf (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x22DD5: pthread_init (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x21C66: libSystem_initializer (in /usr/lib/libSystem.B.dylib)
==24152==    by 0x8FE0ED6C: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&amp;) (in /usr/lib/dyld)
==24152==    by 0x8FE0D31D: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&amp;, unsigned int) (in /usr/lib/dyld)
==24152==    by 0x8FE0D2C1: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&amp;, unsigned int) (in /usr/lib/dyld)
==24152==    by 0x8FE0D3D0: ImageLoader::runInitializers(ImageLoader::LinkContext const&amp;) (in /usr/lib/dyld)
==24152==    by 0x8FE0248E: dyld::initializeMainExecutable() (in /usr/lib/dyld)
==24152==    by 0x8FE0794F: dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**) (in /usr/lib/dyld)
==24152== 
==24152== HEAP SUMMARY:
==24152==     in use at exit: 0 bytes in 0 blocks
==24152==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==24152== 
==24152== All heap blocks were freed -- no leaks are possible
==24152== 
==24152== For counts of detected and suppressed errors, rerun with: -v
==24152== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Bus error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820960</commentid>
    <comment_count>4</comment_count>
      <attachid>36550</attachid>
    <who name="">playmobil</who>
    <bug_when>2009-08-29 00:06:00 +0000</bug_when>
    <thetext>Created attachment 36550
valgrind -d -v echo &quot;hi&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820998</commentid>
    <comment_count>5</comment_count>
    <who name="Rich Siegel">siegel</who>
    <bug_when>2009-08-29 03:39:38 +0000</bug_when>
    <thetext>I can confirm the behavior of &quot;configure&quot; as reported; I haven&apos;t yet taken the time to hack the config file to see what happens, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821017</commentid>
    <comment_count>6</comment_count>
    <who name="Greg Parker">gparker</who>
    <bug_when>2009-08-29 07:54:09 +0000</bug_when>
    <thetext>I have a stack of changes that I should be able to sync next week and post once the xnu open-source release is out. (Most of the rest of open-source 10.6 is available, but not xnu.) This would cover most of the new syscalls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828846</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2009-09-11 16:58:16 +0000</bug_when>
    <thetext>By the way, xnu is out, see http://opensource.apple.com/source/xnu/xnu-1456.1.26/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831652</commentid>
    <comment_count>8</comment_count>
      <attachid>36999</attachid>
    <who name="Greg Parker">gparker</who>
    <bug_when>2009-09-16 21:06:19 +0000</bug_when>
    <thetext>Created attachment 36999
10.6 support for 3.5.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831664</commentid>
    <comment_count>9</comment_count>
    <who name="Greg Parker">gparker</who>
    <bug_when>2009-09-16 21:13:07 +0000</bug_when>
    <thetext>snowleopard.patch is the 80% solution. Unfortunately, I&apos;m out of town for the rest of the week so I can&apos;t polish it off.

Patch applies to tags/VALGRIND_3_5_0.
This merged code has been only trivially tested on 10.6 and not at all on 10.5. It runs `ls` and `defaults` and `TextEdit`, at least.

Bug: mpi doesn&apos;t build.
Bug: darwin10.supp and darwin10-drd.supp are empty and need to be repopulated.
Bug: priv_syswrap-darwin.h is probably not fully up-to-date.
Possible bugs: The latest comparison of vki-scnums-darwin.h to xnu/bsd/kern/syscalls.master was well before 10.6 GM
Possible bugs: I added $(srcdir) to the Makefiles in a few places to be compatible with Apple&apos;s internal build system (which uses separate source and build directories). My automake-fu is weak.
Bad policy decision: The code uses #ifdefs for Leopard vs SnowLeopard, building for whatever the build machine used. These choices should be made at runtime instead so a single binary can work everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831682</commentid>
    <comment_count>10</comment_count>
    <who name="Greg Parker">gparker</who>
    <bug_when>2009-09-16 21:25:06 +0000</bug_when>
    <thetext>Bug: valgrind doesn&apos;t handle the new malloc purgeable zone correctly. This will require real support for malloc zones, presumably using valgrind&apos;s mempool machinery.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831863</commentid>
    <comment_count>11</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2009-09-17 00:22:35 +0000</bug_when>
    <thetext>Thanks for this, Greg.  I&apos;ve marked this as blocking 3.5.1.  You could argue that this is more than just bug fixing and so shouldn&apos;t go in 3.5.x, but 3.6.0 won&apos;t come out for quite some time and we should add 10.6 support soon.

Greg, do you have any suggestions for testing 10.5 and 10.6?  I have two MacBook Pros, a newish one that I use 95% of the time and an older one that is much slower.  I currently have 10.5 on both, and have been holding off installing 10.6 because Valgrind wouldn&apos;t work.  One obvious thing to do is install 10.6 on the new one and keep the old one on 10.5, then I can test both versions.  It would be nice to be able to have both OSes on my newer machine and switch between them easily though... I guess VMWare is the only solution for that.  A dual-boot system wouldn&apos;t help me much, having to reboot would be a bigger pain than having to use the older machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831870</commentid>
    <comment_count>12</comment_count>
    <who name="Greg Parker">gparker</who>
    <bug_when>2009-09-17 00:28:52 +0000</bug_when>
    <thetext>I multi-boot all of my machines. I don&apos;t know how well virtualization of Mac OS X works; it might be too slow or memory-intensive to be practical for valgrind development.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831936</commentid>
    <comment_count>13</comment_count>
    <who name="Rich Siegel">siegel</who>
    <bug_when>2009-09-17 03:06:09 +0000</bug_when>
    <thetext>It is possible to run Mac OS X 10.5 as a guest OS in VMware Fusion on 10.6; I will be happy to advise if you contact me out-of-band since it&apos;s not really germane to this issue. :-) On a first-gen 2.66GHz quad-core Mac Pro with 9GB of physical RAM and 3GB allocated to the virtual machine, the virtualized OS performance is reasonable and should be OK for building and testing valgrind; but I wouldn&apos;t advocate it as a daily-use setup. :-) It&apos;s a little bit more of a chug on my 2.5GHz dual-core MacBook Pro with 6GB of RAM, but with the usual &quot;YMMV&quot; caveat it&apos;s probably worth trying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831940</commentid>
    <comment_count>14</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2009-09-17 03:27:17 +0000</bug_when>
    <thetext>(In reply to comment #13)
&gt; On a first-gen 2.66GHz quad-core Mac Pro with 9GB of
&gt; physical RAM and 3GB allocated to the virtual machine,

I haven&apos;t tried to run MacOS on VMware, but I have used VMware a lot
for testing Valgrind (w/ Linux guests).  It&apos;s perfectly viable to
build and test V using a guest with 1GB, or even less, on an older
Core 2 (E6600).  I don&apos;t expect a MacOSs guest&apos;s resource requirements
to be wildly different from a Linux guest&apos;s requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837697</commentid>
    <comment_count>15</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2009-09-30 07:25:31 +0000</bug_when>
    <thetext>I installed 10.6 and (lightly) tested the patch.  It seems to work ok, but the first real problem I&apos;ve hit is that configure still wants to categorise my machine as x86-darwin, ie. 32-bit.  This is a problem as GCC&apos;s default is to produce 64-bit binaries.

This x86 categorisation is determined by config.guess, which uses the output of uname, which looks like this:

  Darwin wave 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE_I386 i386

uname is claiming that I only have a 32-bit machine, sigh.

Does 10.6 run on any 32-bit only machines?  If not, we could do a hack like converting x86-darwin to amd64-darwin automatically if 10.6 is installed.  Otherwise I&apos;m not sure what to do, we may just have to tell people to configure with --build=amd64-darwin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837877</commentid>
    <comment_count>16</comment_count>
    <who name="Rich Siegel">siegel</who>
    <bug_when>2009-09-30 15:39:40 +0000</bug_when>
    <thetext>10.6 does run on any Mac with an Intel CPU, which includes the first-gen Core Duo machines. (I believe those are 32-bit only.) This article applies to Snow Lep Server and doesn&apos;t mention any of the laptops, but at least suggests that there are some 32-bit-kernel-only configurations: &lt;http://support.apple.com/kb/HT3770&gt;.

The fact that `uname -m` reports &quot;i386&quot; on a 64-bit capable machine means only that it&apos;s booted with the 32-bit kernel. It should be able to run a 64-bit valgrind (and in fact machines booted into the 32-bit kernel run 64-bit apps - you&apos;ll find that some are already running on your machine).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837998</commentid>
    <comment_count>17</comment_count>
    <who name="Alexander Strange">astrange</who>
    <bug_when>2009-09-30 18:49:02 +0000</bug_when>
    <thetext>If you update config.guess (you may have to get it from its own SVN, I&apos;m not sure), it checks the compiler target for darwin10 properly. I don&apos;t remember how it does it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838171</commentid>
    <comment_count>18</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2009-09-30 23:15:34 +0000</bug_when>
    <thetext>Alexander, config.guess is generated by automake.  I have automake 1.10 on my Mac, it&apos;s the one you get with Xcode.  Are you saying that if I update to automake 1.11 (which appears to the be latest one) the generated config.guess will work?  Even if so, I don&apos;t want to require 1.11 for it to work.

Maybe a compilation test within the configure script can be used to work out if 64-bit is supported and then we manually override the i386 setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838278</commentid>
    <comment_count>19</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2009-10-01 02:42:27 +0000</bug_when>
    <thetext>I get this a lot (eg. many of the regtests) with 32-bit programs:

+Process terminating with default action of signal 10 (SIGBUS)
+ Non-existent physical address at address 0x........
+   at 0x........: malloc (in /...libc...)
+   by 0x........: __smakebuf (in /...libc...)
+   by 0x........: __srefill0 (in /...libc...)
+   by 0x........: fread (in /...libc...)
+   by 0x........: arc4random (vg_preloaded.c:137)
+   by 0x........: create_scalable_zone (in /...libc...)
+   by 0x........: _malloc_initialize (in /...libc...)
+   by 0x........: malloc (in /...libc...)
+   by 0x........: get_or_create_key_element (in /...libc...)
+   by 0x........: _keymgr_get_and_lock_processwide_ptr_2 (in /...libc...)
+   by 0x........: __keymgr_initializer (in /...libc...)
+   by 0x........: libSystem_initializer (in /...libc...)

For example with none/tests/x86/insn_basic.c.  But I only get it with --tool=none, --tool=memcheck works ok, so it must be something to do with malloc replacement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839216</commentid>
    <comment_count>20</comment_count>
    <who name="">jp-keyword-valbug.6b5314</who>
    <bug_when>2009-10-02 20:27:05 +0000</bug_when>
    <thetext>FYI - I ran into this trying to run the patched valgrind on Snow Leopard.  I can try generating a smaller test case if this isn&apos;t a known problem.  Removing a call to a floating point &quot;ceil&quot; function allowed the program to run (at least until I ran out of memory - which is a different issue).

MacBook-Pro:CudaCutsAtomic jpbonn$ valgrind --leak-check=yes ./emudebug/cudaCuts data/sponge.txt 
==20103== Memcheck, a memory error detector
==20103== Copyright (C) 2002-2009, and GNU GPL&apos;d, by Julian Seward et al.
==20103== Using Valgrind-3.6.0.SVN and LibVEX; rerun with -h for copyright info
==20103== Command: ./emudebug/cudaCuts data/sponge.txt
==20103== 
--20103-- ./emudebug/cudaCuts:
--20103-- dSYM directory is missing; consider using --dsymutil=yes
enterd
No. of devices 2
vex x86-&gt;IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xA
==20103== valgrind: Unrecognised instruction at address 0x233ae2.
==20103== Your program just tried to execute an instruction that Valgrind
==20103== did not recognise.  There are two possible reasons for this.
==20103== 1. Your program has a bug and erroneously jumped to a non-code
==20103==    location.  If you are running Memcheck and you just saw a
==20103==    warning about a bad jump, it&apos;s probably your program&apos;s fault.
==20103== 2. The instruction is legitimate but Valgrind doesn&apos;t handle it,
==20103==    i.e. it&apos;s Valgrind&apos;s fault.  If you think this is the case or
==20103==    you are not sure, please let us know and we&apos;ll try to fix it.
==20103== Either way, Valgrind will now raise a SIGILL signal which will
==20103== probably kill your program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839259</commentid>
    <comment_count>21</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2009-10-02 22:28:57 +0000</bug_when>
    <thetext>jp, that&apos;s a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839264</commentid>
    <comment_count>22</comment_count>
    <who name="">jp-keyword-valbug.6b5314</who>
    <bug_when>2009-10-02 22:47:44 +0000</bug_when>
    <thetext>(In reply to comment #21)
&gt; jp, that&apos;s a separate bug.
OK, I didn&apos;t know where to report it since this patch, AFAIK, isn&apos;t in the trunk.  Although this maybe a problem in 10.5 too,  I just have 10.6 so I can&apos;t test it.   I didn&apos;t think I&apos;d get much response if I reported against a potential future version of the software. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866204</commentid>
    <comment_count>23</comment_count>
    <who name="Alexander Strange">astrange</who>
    <bug_when>2009-11-21 22:19:17 +0000</bug_when>
    <thetext>I get a lot of these messages with the patch:
--40886:0:aspacem  segment mismatch: V&apos;s seg 1st, kernel&apos;s 2nd:
--40886:0:aspacem  438: anon 0109956000-0109958fff   12288 rw--- SmFixed d=0x000 i=0       o=0       (-1) m=0 (none)
--40886:0:aspacem  ...: .... 0109956000-0109956fff    4096 ---.. ....... d=0x000 i=0       o=0       (.) m=. (none)
--40886:0:aspacem  sync check at wqthread_hijack:0 (after): FAILED
--40886:0:aspacem  


and:
--40886-- WARNING: unhandled syscall: unix:336
--40886-- You may be able to write your own handler.
--40886-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--40886-- Nevertheless we consider this a bug.  Please report
--40886-- it at http://valgrind.org/support/bug_reports.html.

which is proc_info (&lt;sys/proc_info.h&gt;).

but it seems to work more or less anyway. There are many more uninitialized value warnings in system frameworks, but they might be real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877507</commentid>
    <comment_count>24</comment_count>
    <who name="FX">fxcoudert</who>
    <bug_when>2009-12-10 23:58:52 +0000</bug_when>
    <thetext>Could the first draft patch be committed, to get things rolling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901754</commentid>
    <comment_count>25</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-01-19 16:19:44 +0000</bug_when>
    <thetext>*** This bug has been confirmed by popular vote. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901770</commentid>
    <comment_count>26</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-01-19 16:55:48 +0000</bug_when>
    <thetext>I&apos;ve bumped into the SIGBUS issue, too, trying to build ThreadSanitizer on top of Valgrind for Snow Leopard.

The crash is induced by the preloaded arc4random() function (vg_preloaded.c:164), which is a fix for some &quot;Darwin arc4random (rdar://6166275)&quot;
Could someone who knows the details of that issue write them down to openradar.appspot.com?

Looks like this can be easily fixed by removing this function from coregrind/vg_preloaded.c
Maybe the problem is fixed in Snow Leopard and we need the workaround no more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902791</commentid>
    <comment_count>27</comment_count>
      <attachid>40091</attachid>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-01-21 11:38:01 +0000</bug_when>
    <thetext>Created attachment 40091
Updated Greg&apos;s patch to apply to version 11026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902793</commentid>
    <comment_count>28</comment_count>
      <attachid>40092</attachid>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-01-21 11:42:34 +0000</bug_when>
    <thetext>Created attachment 40092
Disabled arcrandom interception in coregrind/vg_preloaded.c

This patch may help to run Nullgrind and some other tools on Snow Leopard.
OTOH it breaks Valgrind tools on Mac OS 10.5 and thus should not be used on Leopard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909759</commentid>
    <comment_count>29</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-02-01 18:30:48 +0000</bug_when>
    <thetext>A small test that makes V (even Nullgrind) with the current patch complain about unhandled instruction:
=====================================
#include &lt;pthread.h&gt;
typedef void *(*worker_t)(void*);
int     GLOB = 0;
void Worker1() {
  GLOB = 1;
}
void Worker2() {
  GLOB = 2;
}
int main() {
  pthread_t w_1;
  pthread_t w_2;
  pthread_create(&amp;w_1, NULL, worker_t(Worker1), NULL);
  pthread_create(&amp;w_2, NULL, worker_t(Worker2), NULL);
  pthread_join(w_1, NULL);
  pthread_join(w_2, NULL);
  return 0;
}
=====================================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919825</commentid>
    <comment_count>30</comment_count>
      <attachid>40900</attachid>
    <who name="Filipe Cabecinhas">filcab</who>
    <bug_when>2010-02-18 19:30:12 +0000</bug_when>
    <thetext>Created attachment 40900
Remove stdio depency from arc4random

Fixes arc4random so nullgrind can run.

Uses system calls instead of c library functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919830</commentid>
    <comment_count>31</comment_count>
    <who name="Filipe Cabecinhas">filcab</who>
    <bug_when>2010-02-18 19:39:08 +0000</bug_when>
    <thetext>Alexander Potapenko:

arc4random MUST be there, but can&apos;t be as it was (memcheck runs fine but other tools seem to just blow up, like nullgrind).

I changed it to use system calls instead of the C library functions (as per Greg Parker&apos;s suggestion) and it works.

Your test-case is calling a typedef... I assume that should be a cast (worker_t, in pthread_create).

Try with my patch to arc4random... It should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923503</commentid>
    <comment_count>32</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-02-24 14:54:44 +0000</bug_when>
    <thetext>Filipe,
thanks for the responce about arc4random, I&apos;ll invalidate my patch then.

However, your patch doesn&apos;t work with my test case. Have you tried building and running it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923504</commentid>
    <comment_count>33</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-02-24 14:54:55 +0000</bug_when>
    <thetext>Filipe,
thanks for the response about arc4random, I&apos;ll invalidate my patch then.

However, your patch doesn&apos;t work with my test case. Have you tried building and running it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924422</commentid>
    <comment_count>34</comment_count>
    <who name="Sean Farley">sean</who>
    <bug_when>2010-02-26 03:11:51 +0000</bug_when>
    <thetext>Alexander,

I am unable get your patch for revision 11026 to build:

$ svn up -r11026

...
Updated to revision 11026.

$ ./autogen.sh
$ ./configure

...

$ make
make: *** No rule to make target `darwin10-drd.supp&apos;, needed by `default.supp&apos;.  Stop.

Anything that I am missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924448</commentid>
    <comment_count>35</comment_count>
    <who name="Sean Farley">sean</who>
    <bug_when>2010-02-26 04:22:18 +0000</bug_when>
    <thetext>(In reply to comment #34)

&gt; Anything that I am missing?

I finally found the problem. The patch already assumes that you have darwin10.supp and darwin10-drd.supp, which can be fixed by copying the drawin9* files, respectively.

&gt; However, your patch doesn&apos;t work with my test case. Have you tried building and running it?

Alex, I was able to run your code example in valgrind by changing:

worker_t(Worker1)

to

(worker_t)(Worker1)

and similar for Worker2. What command did you use to run it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924579</commentid>
    <comment_count>36</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-02-26 11:16:09 +0000</bug_when>
    <thetext>(In reply to comment #35)
&gt; Alex, I was able to run your code example in valgrind by changing:
&gt; 
&gt; worker_t(Worker1)
&gt; 
&gt; to
&gt; 
&gt; (worker_t)(Worker1)
&gt; 
&gt; and similar for Worker2. What command did you use to run it?

I&apos;ve compiled the source with:
 $ g++ unhandled.cc -m32 -o unhandled
(Valgrind wants a 32-bit binary, though gcc produces a 64-bit by default)
And ran:
 $ valgrind --tool=none  ./unhandled
==66280== Nulgrind, the minimal Valgrind tool
==66280== Copyright (C) 2002-2009, and GNU GPL&apos;d, by Nicholas Nethercote.
==66280== Using Valgrind-3.6.0.SVN and LibVEX; rerun with -h for copyright info
==66280== Command: /Users/glider/src/valgrind-bug/unhandled
==66280== 
--66280-- /Users/glider/src/valgrind-bug/unhandled:
--66280-- dSYM directory is missing; consider using --dsymutil=yes
vex x86-&gt;IR: unhandled instruction bytes: 0xF 0x1 0xC 0x24
==66280== valgrind: Unrecognised instruction at address 0xffff01e6.
==66280== Your program just tried to execute an instruction that Valgrind
==66280== did not recognise.  There are two possible reasons for this.
==66280== 1. Your program has a bug and erroneously jumped to a non-code
==66280==    location.  If you are running Memcheck and you just saw a
==66280==    warning about a bad jump, it&apos;s probably your program&apos;s fault.
==66280== 2. The instruction is legitimate but Valgrind doesn&apos;t handle it,
==66280==    i.e. it&apos;s Valgrind&apos;s fault.  If you think this is the case or
==66280==    you are not sure, please let us know and we&apos;ll try to fix it.
==66280== Either way, Valgrind will now raise a SIGILL signal which will
==66280== probably kill your program.
==66280== 
==66280== Process terminating with default action of signal 4 (SIGILL)
==66280==  Illegal opcode at address 0xFFFF01E6
==66280==    at 0xFFFF01E6: ???
==66280==    by 0xD6A51: szone_malloc_should_clear (in /usr/lib/libSystem.B.dylib)
==66280==    by 0xD6987: malloc_zone_malloc (in /usr/lib/libSystem.B.dylib)
==66280==    by 0xDB6E3: realloc (in /usr/lib/libSystem.B.dylib)
==66280==    by 0x10076C: new_sem_from_pool (in /usr/lib/libSystem.B.dylib)
==66280==    by 0x1088C7: _pthread_exit (in /usr/lib/libSystem.B.dylib)
==66280==    by 0xFFE41: thread_start (in /usr/lib/libSystem.B.dylib)
--66280:0:schedule VG_(sema_down): read returned -4
==66280== 
Killed

BTW, I haven&apos;t had any problems with the compilation (i.e &quot;worker_t(Worker1)&quot; was ok for me)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924929</commentid>
    <comment_count>37</comment_count>
    <who name="Sean Farley">sean</who>
    <bug_when>2010-02-26 18:05:32 +0000</bug_when>
    <thetext>(In reply to comment #36)
&gt; I&apos;ve compiled the source with:
&gt;  $ g++ unhandled.cc -m32 -o unhandled
&gt; (Valgrind wants a 32-bit binary, though gcc produces a 64-bit by default)

Using svn revision 11055 I was able to use both 32 and 64 binaries in valgrind
:-)

&gt; And ran:
&gt;  $ valgrind --tool=none  ./unhandled
&gt; ...

Ah, I wasn&apos;t using --tool=none. I produce the same output you have now

&gt; BTW, I haven&apos;t had any problems with the compilation (i.e &quot;worker_t(Worker1)&quot;
&gt; was ok for me)

I see the problem now, I was using &apos;gcc&apos; as opposed to &apos;g++&apos;. Your test still
seems to be a problem with nulgrind, indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930984</commentid>
    <comment_count>38</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-03-09 11:32:27 +0000</bug_when>
    <thetext>For the record, 0f 01 0c 24 are decoded to &quot;sidt (%rsp)&quot; (store interrupt descriptor table register). Does anyone know how to handle this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945902</commentid>
    <comment_count>39</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-04-06 16:08:20 +0000</bug_when>
    <thetext>I&apos;ve implemented the SIDT handler for x86 (see bug 93498, http://bugsfiles.kde.org/attachment.cgi?id=42530). The patched Valgrind version works correctly with the test from https://bugs.kde.org/show_bug.cgi?id=205241#c29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949075</commentid>
    <comment_count>40</comment_count>
    <who name="Anna C">annacegu</who>
    <bug_when>2010-04-13 13:37:44 +0000</bug_when>
    <thetext>Hi,
I just tried both of the patches, and they don&apos;t work with revision 11104. Here is the first part of the output:
patching file Makefile.all.am
Reversed (or previously applied) patch detected!  Assume -R? [n] n

Regards,
Anna.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949833</commentid>
    <comment_count>41</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-04-15 12:12:53 +0000</bug_when>
    <thetext>I&apos;ve put an instruction for using the patches to http://code.google.com/p/data-race-test/wiki/ValgrindOnSnowLeopard

Hope that helps to speed up the testing of the patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950030</commentid>
    <comment_count>42</comment_count>
    <who name="Charley">charley.wang</who>
    <bug_when>2010-04-15 21:14:00 +0000</bug_when>
    <thetext>Just wanted to say that Alexander&apos;s instructions worked for me. 

OS: OS X 10.6.2 (Snow Leopard) Kernel: Darwin 10.2.0. x86_64

I was able to run valgrind via the eclipse-valgrind tool and get working results for a binary compiled with -m32 on my machine.

Thanks! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951477</commentid>
    <comment_count>43</comment_count>
    <who name="Klaus Kuehnhammer">klaus</who>
    <bug_when>2010-04-19 13:46:55 +0000</bug_when>
    <thetext>Hi!

I was able to compile and run valgrind under Snow Leopard with these instructions. Thanks!

There seems to be an issue w/signals though. Debug output reports:
&apos;Max kernel-supported signal is 8&apos;

This can&apos;t be right, and causes the program to abort when installing signal handlers higher that that, eg sigaction( SIGTERM, &amp;sa, NULL ).

regards,
Klaus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951482</commentid>
    <comment_count>44</comment_count>
      <attachid>42892</attachid>
    <who name="Klaus Kuehnhammer">klaus</who>
    <bug_when>2010-04-19 14:11:01 +0000</bug_when>
    <thetext>Created attachment 42892
don&apos;t touch SIGKILL and SIGSTOP

Was missing an #ifdef for amd64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954250</commentid>
    <comment_count>45</comment_count>
    <who name="Georgi Kodinov">gkodinov</who>
    <bug_when>2010-04-27 17:49:57 +0000</bug_when>
    <thetext>I&apos;ve tried the procedure described by Alexander and it worked on my SL. However when trying to valgrind a mysql test run I&apos;ve got the following : 
valgrind: m_sigframe/sigframe-amd64-darwin.c:59 (vgPlain_sigframe_create): Assertion &apos;Unimplemented functionality&apos; failed.
valgrind: valgrind

Here&apos;s how to repeat this : 
lp:~mysql/mysql-server/mysql-5.1-bugteam
cd mysql-5.1-bugteam
./BUILD/compile-pentium-valgrind-max
cd mysql-test
./mysql-test-run.pl --valgrind t/alias.test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954251</commentid>
    <comment_count>46</comment_count>
    <who name="Georgi Kodinov">gkodinov</who>
    <bug_when>2010-04-27 17:50:56 +0000</bug_when>
    <thetext>a typo : it&apos;s &apos;bzr clone lp:~mysql/mysql-server/mysql-5.1-bugteam&apos;, not &apos;lp:~mysql/mysql-server/mysql-5.1-bugteam&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955940</commentid>
    <comment_count>47</comment_count>
    <who name="Martin Storsjö">martin</who>
    <bug_when>2010-05-02 19:30:18 +0000</bug_when>
    <thetext>As noted above, signal handling doesn&apos;t work well on x86_64 (on i386 it works just fine, though).

This can be demonstrated with a simple test application:

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;signal.h&gt;
#include &lt;unistd.h&gt;

int fib(int n) {
        if (n &lt;= 1)
                return n;
        return fib(n-1) + fib(n-2);
}

void sighandler(int sig) {
        printf(&quot;signal %d\n&quot;, sig);
}

int main(int argc, char* argv[]) {
        if (argc &lt; 2) {
                printf(&quot;%s n\n&quot;, argv[0]);
                return 1;
        }
        signal(SIGINT, sighandler);
        printf(&quot;%d\n&quot;, fib(atoi(argv[1])));
        return 0;
}

Compile this, and run with e.g. valgrind ./test 100, abort the calculation with a ctrl+c and you&apos;ll get the
valgrind: m_sigframe/sigframe-amd64-darwin.c:59 (vgPlain_sigframe_create): Assertion &apos;Unimplemented functionality&apos; failed.
error as reported above. As the error message says, coregrind/m_sigframe/sigframe-amd64-darwin.c is totally unimplemented.

If no signal handler is installed, the application terminates cleanly.

In x86_64 mode, valgrind seems to drop signals while doing a system call. If the calculation/printf above is replaced with sleep(10), the SIGINT from ctrl+c is never received at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960067</commentid>
    <comment_count>48</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-05-10 23:47:15 +0000</bug_when>
    <thetext>Am just starting to look at this now.

Given the scale of the changes required, I&apos;m inclined to make a branch
to experiment on, so as not to disturb the trunk until such time as
it becomes clear what the consequences for the trunk will be.

One thing I&apos;d like to ask is:

&gt; Comment #10
&gt; [...]
&gt; Bug: valgrind doesn&apos;t handle the new malloc purgeable zone
&gt; correctly.  This will require real support for malloc zones,
&gt; presumably using valgrind&apos;s mempool machinery.

This concerns me somewhat.  I don&apos;t know anything about these
new malloc purgeable zones.  Does anybody have an explanation
of what they are, and ideally a test program that shows 
Memcheck mis-handling them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972038</commentid>
    <comment_count>49</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-02 14:10:54 +0000</bug_when>
    <thetext>As a first step, I have made a new branch in the repo, to fold in and
test 10.6 support.  Right now it contains a copy of trunk r11142
plus a change to the way the tool executables are linked on Darwin,
which improves 64-bit support, gets rid of the 4 second startup
delay for 64-bit programs.  It does not yet contain the main 10.6
patch in this report, although that is the next thing to merge.

If you want to try out this branch, here&apos;s what to do:

  svn co svn://svn.valgrind.org/valgrind/branches/MACOSX106 mx106
  cd mx106
  ./autogen.sh
  ./configure --prefix=`pwd`/Inst --build=amd64-darwin
  make -j2 all
  make install

That should do a biarch build (meaning, both 32- and 64-bit
Valgrinds).  At least it does on 10.5.8.  If you want only a 32-bit
version, omit the --build=amd64-darwin

I will post a status update when the main patch is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972852</commentid>
    <comment_count>50</comment_count>
      <attachid>42892</attachid>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-03 23:26:16 +0000</bug_when>
    <thetext>Comment on attachment 42892
don&apos;t touch SIGKILL and SIGSTOP

Committed (r11150) on
branches/MACOSX106.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974000</commentid>
    <comment_count>51</comment_count>
    <who name="Len Sassaman">len.sassaman</who>
    <bug_when>2010-06-06 16:46:54 +0000</bug_when>
    <thetext>I&apos;ve applied this patch (mostly by hand) to the mx106 branch 11152. I&apos;ve run into a few problems that make me think the code in mx106 is older than the code this patch was generated against. For example, I see nowhere to apply this patch:
@@ -1471,10 +1480,22 @@
 
 #----------------------------------------------------------------------------
 # Check for /proc filesystem
+# This doesn&apos;t work when cross-compiling, including Darwin universal builds.
 #----------------------------------------------------------------------------
+if test &quot;x$cross_compiling&quot; = &quot;xno&quot;; then
 AC_CHECK_FILES(/proc/self/fd /proc/self/exe /proc/self/maps, 
     [ AC_DEFINE([HAVE_PROC], 1, [can use /proc filesystem]) ], 
     [])
+else
+     # assume /proc/self/* is available everywhere except Darwin
+     case &quot;$VGCONF_OS&quot; in
+        darwin)
+             ;;
+        *)
+           AC_DEFINE([HAVE_PROC], 1, [can use /proc filesystem])
+           ;;
+     esac
+fi
 
Nor this one:
Index: coregrind/m_main.c
===================================================================
--- coregrind/m_main.c  (revision 10888)
+++ coregrind/m_main.c  (working copy)
@@ -1510,7 +1510,7 @@
    VG_(do_syscall2)(__NR_munmap, 0x00000000, 0xf0000000);
 # else
    // open up client space
-   VG_(do_syscall2)(__NR_munmap, 0x100000000, 0x700000000000-0x100000000);
+   VG_(do_syscall2)(__NR_munmap, 0x100000000, 0x7fff50000000-0x100000000);
    // open up client stack and dyld
    VG_(do_syscall2)(__NR_munmap, 0x7fff5c000000, 0x4000000);
 # endif

Also, the part about the /proc file system is missing, so that patch was left off. And in the patch to Makefile.vex.am, the file in TRUNK is longer: 

--- Makefile.vex.am     (revision 10888)
+++ Makefile.vex.am     (working copy)
@@ -51,14 +51,11 @@
 # This is very uggerly.  Need to sed out both &quot;xyzzyN&quot; and
 # &quot;xyzzy$N&quot; since gcc on different targets emits the constants
 # differently -- with a leading $ on x86/amd64 but none on ppc32/64.
-pub/libvex_guest_offsets.h:
-       rm -f auxprogs/genoffsets.s
-       $(CC) $(LIBVEX_CFLAGS) -O -S -o auxprogs/genoffsets.s \
-                                       auxprogs/genoffsets.c
-       grep xyzzy auxprogs/genoffsets.s | grep define \
+pub/libvex_guest_offsets.h: $(srcdir)/auxprogs/genoffsets.c
+       $(CC) $(LIBVEX_CFLAGS) -O -S -o - $(srcdir)/auxprogs/genoffsets.c \
+          | grep xyzzy | grep define \
           | sed &quot;s/xyzzy\\$$//g&quot; | sed &quot;s/xyzzy//g&quot; \
-          &gt; pub/libvex_guest_offsets.h
-       rm -f auxprogs/genoffsets.s
+          &gt; $(srcdir)/pub/libvex_guest_offsets.h
 


Would it be helpful for me to submit my cleaned-up patch, with these bugs still blocking it? I&apos;ll work on trying to get the TRUNK features being relied upon backported if no one else gets to it in the mean time, but if the patch helps, all the better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974012</commentid>
    <comment_count>52</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-06 17:01:09 +0000</bug_when>
    <thetext>// fixed the CC list. Please do not delete anyone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974168</commentid>
    <comment_count>53</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-06 21:23:58 +0000</bug_when>
    <thetext>(In reply to comment #51)
&gt; I&apos;ve applied this patch (mostly by hand) to the mx106 branch 11152. I&apos;ve run
&gt; into a few problems that make me think the code in mx106 is older than the code
&gt; this patch was generated against.

No .. the mx106 code is very new -- it was branched from trunk less
than a week ago.

&gt; For example, I see nowhere to apply this
&gt; patch:
&gt; @@ -1471,10 +1480,22 @@
&gt; 
&gt;  #----------------------------------------------------------------------------
&gt;  # Check for /proc filesystem
&gt; +# This doesn&apos;t work when cross-compiling, including Darwin universal builds.
&gt;  #----------------------------------------------------------------------------
&gt; +if test &quot;x$cross_compiling&quot; = &quot;xno&quot;; then

I don&apos;t see any such stuff in the version of the patch at 
https://bugs.kde.org/show_bug.cgi?id=205241#c27.  Is that
the version you are using?

Overall I saw no significant merge problems for the #c27 patch.  Am
trying it out now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974345</commentid>
    <comment_count>54</comment_count>
    <who name="Len Sassaman">len.sassaman</who>
    <bug_when>2010-06-07 00:55:49 +0000</bug_when>
    <thetext>I was using the patch in c50, against the mx106 tree. I got a different (less problematic) set of problems applying patch c50 against branches/MACOSX106 after trying to do a straight-up compile from that branch, thinking it was pre-patched. It&apos;s possible my earlier report included cruft that somehow got in there from patching/restoring mistakes, but the fact remains I had no success from the start, using --dry-run. 

I just tried c27 against the mx106 tree, and that was the best result yet -- only four failures in the patching. 

Let me ask this, please, since I&apos;m joining the discussion late and might have missed something that makes it more obvious: if one is looking to use Valgrind on OS 10.6.3, which of the two OS X 10.6 branches should we be using, and what patches do we need to apply (if any, and of course, what order do you recommend?)

Thanks a ton for looking into this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974369</commentid>
    <comment_count>55</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 01:10:15 +0000</bug_when>
    <thetext>(In reply to comment #54)
&gt; Let me ask this, please, since I&apos;m joining the discussion late and might have
&gt; missed something that makes it more obvious: if one is looking to use Valgrind
&gt; on OS 10.6.3, which of the two OS X 10.6 branches

Two OS X 10.6 branches?  There is only one.  There is no mx106 branch.
&quot;mx106&quot; is merely a directory name I made up as part of the
how-to-check-out examples in Comment #49.  The only OS X 10.6 branch
is svn://svn.valgrind.org/valgrind/branches/MACOSX106 as stated in
Comment #49.

Anyway, the MACOSX106 branch + the comment 27 patch produces two patch
failures, both of which are insignificant, and produce a valgrind
which can run 32- and 64-bit hello-world, programs, at least.  I will
tidy the patch up and commit it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974409</commentid>
    <comment_count>56</comment_count>
    <who name="Len Sassaman">len.sassaman</who>
    <bug_when>2010-06-07 01:51:18 +0000</bug_when>
    <thetext>(In reply to comment #55)
&gt; (In reply to comment #54)
&gt; &gt; Let me ask this, please, since I&apos;m joining the discussion late and might have
&gt; &gt; missed something that makes it more obvious: if one is looking to use Valgrind
&gt; &gt; on OS 10.6.3, which of the two OS X 10.6 branches
&gt; 
&gt; Two OS X 10.6 branches?  There is only one.  There is no mx106 branch.

Oh, right. That&apos;s just the destination directory. I clearly need more caffeine. 

&gt; Anyway, the MACOSX106 branch + the comment 27 patch produces two patch
&gt; failures, both of which are insignificant, and produce a valgrind
&gt; which can run 32- and 64-bit hello-world, programs, at least.  I will
&gt; tidy the patch up and commit it tomorrow.

Great. I&apos;m not sure what I did wrong, but I&apos;m at the point now where I&apos;m Hello World tests certainly work. Thanks for being so responsive.

I&apos;m sure this has been asked elsewhere, but is there an ETA on the official release that will include Snow Leopard? I saw discussion about 3.5.1 vs. 3.6, but that didn&apos;t really reveal much.

Also, are these instructions still useful? 

http://code.google.com/p/data-race-test/wiki/ValgrindOnSnowLeopard

(Are any of those patches still relevant, or are they all subsumed by MACOSX106+c27 (plus your commit tomorrow?) If so, maybe that page should be updated? 

Again, thanks for your help!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974821</commentid>
    <comment_count>57</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 15:09:57 +0000</bug_when>
    <thetext>Does anyone know what the purpose of the arc4random intercept is?
I&apos;d like to get rid of it if possible, but I don&apos;t know why we have it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974872</commentid>
    <comment_count>58</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-07 16:54:29 +0000</bug_when>
    <thetext>(In reply to comment #56)
Len, the instruction at http://code.google.com/p/data-race-test/wiki/ValgrindOnSnowLeopard is still useful. At the moment it patches Valgrind trunk, but I&apos;m planning to update that page to use MACOSX106 branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974873</commentid>
    <comment_count>59</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-07 16:54:29 +0000</bug_when>
    <thetext>(In reply to comment #56)
Len, the instruction at http://code.google.com/p/data-race-test/wiki/ValgrindOnSnowLeopard is still useful. At the moment it patches Valgrind trunk, but I&apos;m planning to update that page to use MACOSX106 branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974918</commentid>
    <comment_count>60</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 18:24:59 +0000</bug_when>
    <thetext>(In reply to comment #39)
&gt; I&apos;ve implemented the SIDT handler for x86

Committed, vex r1982.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974920</commentid>
    <comment_count>61</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 18:26:29 +0000</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=40900) [details]
&gt; Remove stdio depency from arc4random

Committed, r11158.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974921</commentid>
    <comment_count>62</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 18:27:24 +0000</bug_when>
    <thetext>(In reply to comment #44)
&gt; Created an attachment (id=42892) [details]
&gt; don&apos;t touch SIGKILL and SIGSTOP

Committed, r11150.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974922</commentid>
    <comment_count>63</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 18:28:23 +0000</bug_when>
    <thetext>(In reply to comment #27)
&gt; Created an attachment (id=40091) [details]
&gt; Updated Greg&apos;s patch to apply to version 11026

Committed in pieces,  r11153,4,5,6,7.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974941</commentid>
    <comment_count>64</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 18:36:24 +0000</bug_when>
    <thetext>The initial set of patches associated with this bug have now been
committed.  This should give at least initial Snow Leopard support,
both for 32- and 64-bit processes.  If you want to try it out, follow
the instructions as given in comment #49 above.

Other stuff that still needs fixing:

* write a sigframe builder, as per comment #47, and generally make
  signal handling work for 64-bit processes.  (Should be OK for 32-bit
  processes).

* https://bugs.kde.org/show_bug.cgi?id=216837, maybe.

* building the regression tests now fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975001</commentid>
    <comment_count>65</comment_count>
    <who name="Greg Parker">gparker</who>
    <bug_when>2010-06-07 20:17:56 +0000</bug_when>
    <thetext>&quot;Does anyone know what the purpose of the arc4random intercept is?&quot;
Noise suppression. libc&apos;s arc4random() copies uninitialized bytes from the stack into the entropy pool. That taints every arc4random() result after that. I couldn&apos;t find a cleaner way to suppress it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975095</commentid>
    <comment_count>66</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-07 23:09:03 +0000</bug_when>
    <thetext>(In reply to comment #47)
&gt; As noted above, signal handling doesn&apos;t work well on x86_64 (on i386 it works
&gt; just fine, though).
&gt; [...]
&gt; valgrind: m_sigframe/sigframe-amd64-darwin.c:59 (vgPlain_sigframe_create):
&gt; Assertion &apos;Unimplemented functionality&apos; failed.

As of r11162 (on branches/MACOSX106) this assertion is fixed, so
signal delivery works for both 32- and 64-bit processes.  But only on
10.5.x.  For whatever reason it doesn&apos;t work at all on 10.6.x, for
either 32- or 64-bit.  I will look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975430</commentid>
    <comment_count>67</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-08 12:28:41 +0000</bug_when>
    <thetext>(In reply to comment #66)

&gt; As of r11162 (on branches/MACOSX106) this assertion is fixed, so
&gt; signal delivery works for both 32- and 64-bit processes.  But only on
&gt; 10.5.x.  For whatever reason it doesn&apos;t work at all on 10.6.x, for
&gt; either 32- or 64-bit.  I will look into it.

At least for simple signal delivery (eg the program in comment #47)
I have the following results w/ r11162:

  10.5.8, 32-bit   works
  10.5.8, 64-bit   works
  10.6.3, 32-bit   doesn&apos;t work (hangs)
  10.6.3, 64-bit   works

Having dug around in the signal handling mechanism for an hour I
have no idea why 10.6.3 32-bit hangs when it doesn&apos;t on 10.5.8.
It&apos;s the syscall sigsuspend_nocancel in VG_(sigtimedwait_zero)
in m_libcsignal.c that is hanging.  VG_(sigtimedwait_zero) is used
to periodically poll the host for signals that might need to be
delivered to the guest.  I am completely mystified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975859</commentid>
    <comment_count>68</comment_count>
    <who name="Martin Storsjö">martin</who>
    <bug_when>2010-06-09 13:01:57 +0000</bug_when>
    <thetext>I tested the latest from the MACOSX106 branch (rev 11164) now, but I&apos;m unable to launch even minimal test apps with this version, I get this error:

valgrind: mmap(0x100000000, 4096) failed in UME (load_segment1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976257</commentid>
    <comment_count>69</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-06-10 10:23:31 +0000</bug_when>
    <thetext>(In reply to comment #68)
&gt; I tested the latest from the MACOSX106 branch (rev 11164) now, but I&apos;m unable
&gt; to launch even minimal test apps with this version, I get this error:
&gt; valgrind: mmap(0x100000000, 4096) failed in UME (load_segment1).

This is with a completely clean build of the branch?  It works ok
for me and also for Nick Nethercote, who tried it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976420</commentid>
    <comment_count>70</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-10 15:29:38 +0000</bug_when>
    <thetext>Valgrind built from the branch works ok for me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976421</commentid>
    <comment_count>71</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-10 15:29:40 +0000</bug_when>
    <thetext>Valgrind built from the branch works ok for me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976439</commentid>
    <comment_count>72</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-10 16:07:52 +0000</bug_when>
    <thetext>BTW, I&apos;m constantly getting the following error message trying to run autogen.sh for every revision in the trunk and in the MACOSX106 branch:

$ ./autogen.sh 
running: aclocal
running: autoheader
aclocal.m4:14: error: this file was generated for autoconf 2.61.
You have another version of autoconf.  If you want to use that,
you should regenerate the build system entirely.
aclocal.m4:14: the top level
autom4te: /opt/local/bin/gm4 failed with exit status: 63
autoheader: &apos;/opt/local/bin/autom4te&apos; failed with exit status: 63
error: while running &apos;autoheader&apos;

My autoconf and autoheader utilities claim they have the 2.61 version.

To overcome this I have to run:
$ ./autogen.sh || autoreconf -fvi

Am I doing something wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978343</commentid>
    <comment_count>73</comment_count>
    <who name="Martin Storsjö">martin</who>
    <bug_when>2010-06-14 12:11:35 +0000</bug_when>
    <thetext>(In reply to comment #69)
&gt; (In reply to comment #68)
&gt; &gt; I tested the latest from the MACOSX106 branch (rev 11164) now, but I&apos;m unable
&gt; &gt; to launch even minimal test apps with this version, I get this error:
&gt; &gt; valgrind: mmap(0x100000000, 4096) failed in UME (load_segment1).
&gt; 
&gt; This is with a completely clean build of the branch?  It works ok
&gt; for me and also for Nick Nethercote, who tried it.

Sorry for the noise, it does work after I did a full rebuild including rerunning autogen.sh, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981679</commentid>
    <comment_count>74</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-06-22 14:41:24 +0000</bug_when>
    <thetext>A new problem observed under 10.6: sync check fails when a stack is reused.

=================================
$ cat stack-reuse.c 
#include &lt;pthread.h&gt;

void RealWorker() {
  int stack_var = 0;
  stack_var++;
}

void Worker() {
  pthread_t thread;
  pthread_create(&amp;thread, NULL, RealWorker, NULL);
  pthread_join(thread, NULL);
}

void Worker0() { sleep(0); Worker(); }
void Worker1() { sleep(1); Worker(); }

int main() {
  pthread_t th0, th1;
  pthread_create(&amp;th0, NULL, Worker0, NULL);
  pthread_create(&amp;th1, NULL, Worker1, NULL);
  pthread_join(th0, NULL);
  pthread_join(th1, NULL);
  return 0;
}
=================================
$ gcc stack-reuse.c -m32 -o stack-reuse32  # some warnings may be reported
$ gcc stack-reuse.c -m64 -o stack-reuse64

$ inst/bin/valgrind --tool=none   ~/src/stack-reuse/stack-reuse64
...

--7171:0:aspacem  segment mismatch: V&apos;s seg 1st, kernel&apos;s 2nd:
--7171:0:aspacem   23:      0100400000-0100482fff  536576 ----- SmFixed d=0x000 i=0       o=0       (-1) m=0 (none)
--7171:0:aspacem  ...: .... 0100400000-0100400fff    4096 ---.. ....... d=0x000 i=0       o=0       (.) m=. (none)
--7171:0:aspacem  segment mismatch: V&apos;s seg 1st, kernel&apos;s 2nd:
--7171:0:aspacem   23:      0100400000-0100482fff  536576 ----- SmFixed d=0x000 i=0       o=0       (-1) m=0 (none)
--7171:0:aspacem  ...: .... 0100401000-0100480fff  524288 rw-.. ....... d=0x000 i=0       o=0       (.) m=. (none)
--7171:0:aspacem  segment mismatch: V&apos;s seg 1st, kernel&apos;s 2nd:
--7171:0:aspacem   27:      0100506000-01005fffff 1024000 ----- SmFixed d=0x000 i=0       o=0       (-1) m=0 (none)
--7171:0:aspacem  ...: .... 0100506000-0100506fff    4096 ---.. ....... d=0x000 i=0       o=0       (.) m=. (none)
--7171:0:aspacem  segment mismatch: V&apos;s seg 1st, kernel&apos;s 2nd:
--7171:0:aspacem   27:      0100506000-01005fffff 1024000 ----- SmFixed d=0x000 i=0       o=0       (-1) m=0 (none)
--7171:0:aspacem  ...: .... 0100507000-0100586fff  524288 rw-.. ....... d=0x000 i=0       o=0       (.) m=. (none)
--7171:0:aspacem  sync check at pthread_hijack:0 (after): FAILED
--7171:0:aspacem  
...

No errors are reported for stack-reuse32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985029</commentid>
    <comment_count>75</comment_count>
    <who name="Nicholas Nethercote">njn</who>
    <bug_when>2010-07-01 02:54:09 +0000</bug_when>
    <thetext>I just merged the branch to the trunk (r11194, with a few follow-up fixes).  The branch is now closed.

10.6 support is fairly good, but not perfect.  Perhaps we should close this bug and open new bugs for more specific problems as they occur?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985109</commentid>
    <comment_count>76</comment_count>
    <who name="Sean Farley">sean</who>
    <bug_when>2010-07-01 11:57:55 +0000</bug_when>
    <thetext>&gt; I just merged the branch to the trunk (r11194, with a few follow-up fixes). 
&gt; The branch is now closed.

This is great!

&gt; 10.6 support is fairly good, but not perfect.  Perhaps we should close this bug
&gt; and open new bugs for more specific problems as they occur?

I still have problems building since it picks up my MPI compilers. Is this still broken? The error is:

mpicc -g -O -fno-omit-frame-pointer -Wall -dynamic -arch x86_64  -dynamic -dynamiclib -all_load  -o libmpiwrap-amd64-darwin.so libmpiwrap_amd64_darwin_so-libmpiwrap.o  
mpicc    -I../include  -g -O -fno-omit-frame-pointer -Wall -dynamic -arch i386  -MT libmpiwrap_x86_darwin_so-libmpiwrap.o -MD -MP -MF .deps/libmpiwrap_x86_darwin_so-libmpiwrap.Tpo -c -o libmpiwrap_x86_darwin_so-libmpiwrap.o `test -f &apos;libmpiwrap.c&apos; || echo &apos;./&apos;`libmpiwrap.c
gcc-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985115</commentid>
    <comment_count>77</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-07-01 12:22:31 +0000</bug_when>
    <thetext>(In reply to comment #76)

&gt; I still have problems building since it picks up my MPI compilers. Is this
&gt; still broken? The error is:
&gt; 
&gt; mpicc -g -O -fno-omit-frame-pointer -Wall -dynamic -arch x86_64  -dynamic
&gt; -dynamiclib -all_load  -o libmpiwrap-amd64-darwin.so
&gt; libmpiwrap_amd64_darwin_so-libmpiwrap.o  
&gt; mpicc    -I../include  -g -O -fno-omit-frame-pointer -Wall -dynamic -arch i386 
&gt; -MT libmpiwrap_x86_darwin_so-libmpiwrap.o -MD -MP -MF
&gt; .deps/libmpiwrap_x86_darwin_so-libmpiwrap.Tpo -c -o
&gt; libmpiwrap_x86_darwin_so-libmpiwrap.o `test -f &apos;libmpiwrap.c&apos; || echo
&gt; &apos;./&apos;`libmpiwrap.c
&gt; gcc-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch
&gt; flags

I don&apos;t know if this is Darwin-specific or not.  An easy workaround is
to configure V with --with-mpicc=/some/path/that/doesnt/exist so as to
throw it off the trail; then it can&apos;t find any such compiler and so
skips building the MPI stuff.  (At least, that&apos;s the theory.  It would
be good if you could confirm this kludge still works.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985120</commentid>
    <comment_count>78</comment_count>
    <who name="Sean Farley">sean</who>
    <bug_when>2010-07-01 12:31:00 +0000</bug_when>
    <thetext>&gt; I don&apos;t know if this is Darwin-specific or not.  An easy workaround is
&gt; to configure V with --with-mpicc=/some/path/that/doesnt/exist so as to
&gt; throw it off the trail; then it can&apos;t find any such compiler and so
&gt; skips building the MPI stuff.  (At least, that&apos;s the theory.  It would
&gt; be good if you could confirm this kludge still works.)

That does indeed work and I meant to say that I had already tried that in my previous response. It also works if you specify --enable-only[32|64]bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985128</commentid>
    <comment_count>79</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-07-01 12:45:06 +0000</bug_when>
    <thetext>(In reply to comment #75)
&gt; 10.6 support is fairly good, but not perfect.  Perhaps we should
&gt; close this bug and open new bugs for more specific problems as they
&gt; occur?

I think we should do that, but first record here all currently known
problems.  I know of these:

* re comment #67, signal delivery is broken on 32-bit 10.6 but not
  on any other combination.  I tracked this down some more.  It 
  seems that the kernel is delivering signals to Valgrind 
  (which we will eventually forward to the application), but V&apos;s
  signal handler (darwin_signal_demux) segfaults on its first
  instruction, hence leading to an infinite signal delivery loop.
  Despite some digging around I am absolutely mystified.  If any
  Darwin kernel gurus want to help out with this, I&apos;d be happy to
  hear from you.

* &quot;WARNING: unhandled syscall: unix:277&quot;

* a whole bunch of sync check failures, as per comment #74

* need to investigate
  https://bugs.kde.org/show_bug.cgi?id=216837
  and commit it if necessary.  My reluctance to do so partly
  comes from the fact that it adds Darwin-specific calls
  (track_pre_wqthread_ll_create) to the core-tool interface.

If people know of any other obvious breakage for 10.6, or bugs/
patches that need to be fixed/committed to make it work better, please
summarise them here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988641</commentid>
    <comment_count>80</comment_count>
    <who name="Sean">cwatson</who>
    <bug_when>2010-07-11 18:59:22 +0000</bug_when>
    <thetext>I built trunk r11212, and tried it out.  I can successfully run &quot;ls&quot; under valgrind on 10.6.4.  But not much luck with GUI apps. I created a plain Cocoa app from a new Xcode project and it launched, but crashes as soon as I touch the menu bar. This is running the app as 64 bit.

--50425-- ./PlainApp.app//Contents/MacOS/PlainApp:
--50425-- dSYM directory is missing; consider using --dsymutil=yes
--50425:0:aspacem  segment mismatch: V&apos;s seg 1st, kernel&apos;s 2nd:
--50425:0:aspacem  316: anon 010699d000-010699ffff   12288 rw--- SmFixed d=0x000 i=0       o=0       (-1) m=0 (none)
--50425:0:aspacem  ...: .... 010699d000-010699dfff    4096 ---.. ....... d=0x000 i=0       o=0       (.) m=. (none)
--50425:0:aspacem  sync check at wqthread_hijack:0 (after): FAILED
--50425:0:aspacem  
==50425== Jump to the invalid address stated on the next line
==50425==    at 0x1000272FA: ???
==50425==    by 0x1030CD3A1: ???
==50425==    by 0x1030CCE28: ???
==50425==    by 0x101E7C6EB: ???
==50425==    by 0x101E7745E: ???
==50425==    by 0x101E76DA3: ???
==50425==    by 0x101E76BC2: ???
==50425==    by 0x101E6304A: ???
==50425==    by 0x101E62F18: ???
==50425==    by 0x101E62996: ???
==50425==    by 0x101E61EE5: ???
==50425==    by 0x101E61D56: ???
==50425==  Address 0x1000272fa is not stack&apos;d, malloc&apos;d or (recently) free&apos;d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988897</commentid>
    <comment_count>81</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-07-12 15:40:51 +0000</bug_when>
    <thetext>(In reply to comment #80)
&gt; I built trunk r11212, and tried it out.  I can successfully run &quot;ls&quot; under
&gt; valgrind on 10.6.4.  But not much luck with GUI apps. I created a plain Cocoa
&gt; app from a new Xcode project and it launched, but crashes as soon as I touch
&gt; the menu bar. This is running the app as 64 bit.

Please send a simple test case program + instructions on how to
compile it, so I can look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988930</commentid>
    <comment_count>82</comment_count>
    <who name="Rich Siegel">siegel</who>
    <bug_when>2010-07-12 17:13:12 +0000</bug_when>
    <thetext>What should our expectations be for using trunk r11212 &quot;out of the box&quot;? I updated and built clean, but I am unable to valgrind a 32-bit app. When I do, here&apos;s what I get:


RoadHawg:valgrind siegel$ valgrind ~/svn/builds/Debug/RecentItems.app
==50002== Memcheck, a memory error detector
==50002== Copyright (C) 2002-2010, and GNU GPL&apos;d, by Julian Seward et al.
==50002== Using Valgrind-3.6.0.SVN and LibVEX; rerun with -h for copyright info
==50002== Command: /Users/siegel/svn/builds/Debug/RecentItems.app/Contents/MacOS/RecentItems
==50002== 
--50002-- /Users/siegel/svn/builds/Debug/RecentItems.app/Contents/MacOS/RecentItems:
--50002-- dSYM directory is missing; consider using --dsymutil=yes
--50002-- WARNING: unhandled syscall: unix:336
--50002-- You may be able to write your own handler.
--50002-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--50002-- Nevertheless we consider this a bug.  Please report
--50002-- it at http://valgrind.org/support/bug_reports.html.
vex x86-&gt;IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xA
==50002== valgrind: Unrecognised instruction at address 0x83272.
==50002== Your program just tried to execute an instruction that Valgrind
==50002== did not recognise.  There are two possible reasons for this.
==50002== 1. Your program has a bug and erroneously jumped to a non-code
==50002==    location.  If you are running Memcheck and you just saw a
==50002==    warning about a bad jump, it&apos;s probably your program&apos;s fault.
==50002== 2. The instruction is legitimate but Valgrind doesn&apos;t handle it,
==50002==    i.e. it&apos;s Valgrind&apos;s fault.  If you think this is the case or
==50002==    you are not sure, please let us know and we&apos;ll try to fix it.
==50002== Either way, Valgrind will now raise a SIGILL signal which will
==50002== probably kill your program.
==50002== 
==50002== Process terminating with default action of signal 4 (SIGILL)
==50002==  Illegal opcode at address 0x83272
==50002==    at 0x83272: floorf$fenv_access_off (in /usr/lib/libSystem.B.dylib)
==50002==    by 0x6BC324: IBCarbonContainer::initWithDecoder(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F4A6: IBXObjectElement::instantiate(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F7DE: IBXObjectElement::instantiateChild(void const*, __CFString const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F798: IBXDecoderDecodeObject (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x6C5CCC: IBCarbonWindow::initWithDecoder(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F4A6: IBXObjectElement::instantiate(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F828: IBXArrayElement::instantiate(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F7DE: IBXObjectElement::instantiateChild(void const*, __CFString const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F798: IBXDecoderDecodeObject (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F688: IBCarbonNib::initWithDecoder(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002==    by 0x57F4A6: IBXObjectElement::instantiate(void const*) (in /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox)
==50002== 
==50002== HEAP SUMMARY:
==50002==     in use at exit: 294,429 bytes in 4,387 blocks
==50002==   total heap usage: 18,565 allocs, 14,178 frees, 1,373,169 bytes allocated
==50002== 
==50002== LEAK SUMMARY:
==50002==    definitely lost: 0 bytes in 0 blocks
==50002==    indirectly lost: 0 bytes in 0 blocks
==50002==      possibly lost: 28,256 bytes in 2 blocks
==50002==    still reachable: 262,193 bytes in 4,286 blocks
==50002==         suppressed: 3,980 bytes in 99 blocks
==50002== Rerun with --leak-check=full to see details of leaked memory
==50002== 
==50002== For counts of detected and suppressed errors, rerun with: -v
==50002== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Killed

I will email a zip of the app&apos;s source code (it&apos;s one of the sample apps from developer.apple.com) and the built app under separate cover.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989056</commentid>
    <comment_count>83</comment_count>
    <who name="Alexander Potapenko">glider</who>
    <bug_when>2010-07-12 18:29:55 +0000</bug_when>
    <thetext>(In reply to comment #82)
Rich, please take a look at https://bugs.kde.org/show_bug.cgi?id=241377#c6
SSE4 support is 64-bit only now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989067</commentid>
    <comment_count>84</comment_count>
    <who name="Rich Siegel">siegel</who>
    <bug_when>2010-07-12 18:59:55 +0000</bug_when>
    <thetext>(In reply to comment #83)

Aha, thank you - I have added a comment to that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989243</commentid>
    <comment_count>85</comment_count>
    <who name="Sean">cwatson</who>
    <bug_when>2010-07-13 02:50:52 +0000</bug_when>
    <thetext>(In reply to comment #81)
&gt; Please send a simple test case program + instructions on how to
&gt; compile it, so I can look at this.

You can repro like so:
- on 10.6.4, launch Xcode 3.2.2
- File &gt; New Project
- choose Mac OS X &gt; Application &gt; Cocoa Application
- press Choose button
- save to Desktop or wherever
- build in Debug
- run with valgrind

Incase you&apos;re not familiar with Xcode, I&apos;ll attached the project and binary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989244</commentid>
    <comment_count>86</comment_count>
      <attachid>49086</attachid>
    <who name="Sean">cwatson</who>
    <bug_when>2010-07-13 02:55:49 +0000</bug_when>
    <thetext>Created attachment 49086
for comment #85</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989260</commentid>
    <comment_count>87</comment_count>
    <who name="Georgi Kodinov">gkodinov</who>
    <bug_when>2010-07-13 05:52:04 +0000</bug_when>
    <thetext>I&apos;ve tried running mysql&apos;s test suites under valgrind using the latest (11212) valgrind trunk on my MacOSX 10.6.
I&apos;m still getting &quot;unimplemented functionality&quot; : 
--83142-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting

valgrind: m_signals.c:513 (VG_UCONTEXT_STACK_PTR): Assertion &apos;Unimplemented functionality&apos; failed.
valgrind: valgrind
==83142==    at 0x13802F257: ???
==83142==    by 0x13802F494: ???
==83142==    by 0x1380436A9: ???
==83142==    by 0x13803365F: ???

sched status:
  running_tid=2

Thread 1: status = VgTs_WaitSys
==83142==    at 0x100DAAEB6: __semwait_signal (in /usr/lib/libSystem.B.dylib)
==83142==    by 0x1004CFDA6: safe_cond_wait (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x100110003: start_signal_handler() (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x1001156E0: main (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)

Thread 2: status = VgTs_Runnable
==83142==    at 0x100E4B9D2: __pthread_kill (in /usr/lib/libSystem.B.dylib)
==83142==    by 0x1004C3C12: my_write_core (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x10011091A: handle_segfault (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x138046963: ???
==83142==    by 0x100333DF1: Events::dump_internal_status() (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x1001E55D4: mysql_print_status() (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x10010FDCF: signal_hand (in /Users/kgeorge/mysql/work/test-vg-5.1-bugteam/sql/mysqld)
==83142==    by 0x100DA9455: _pthread_start (in /usr/lib/libSystem.B.dylib)
==83142==    by 0x100DA9308: thread_start (in /usr/lib/libSystem.B.dylib)

The way to reproduce is as follows : 
1. compile valgrind with &quot; ./configure --prefix=`pwd`/install --enable-only64bit --build=amd64-darwin &quot;
2. checkout the mysql source : bzr clone https://code.launchpad.net/~mysql/mysql-server/mysql-5.1 
3. compile the mysql source using : BUILD/compile-pentium-valgrind-max
4. &quot;cd mysql-test&quot; and run &quot;./mysql-test-run.pl --valgrind t/alias.test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989261</commentid>
    <comment_count>88</comment_count>
    <who name="Georgi Kodinov">gkodinov</who>
    <bug_when>2010-07-13 05:54:21 +0000</bug_when>
    <thetext>hmm, there&apos;s a typo in step 3 : it should be : bzr branch lp:mysql-server/5.1. You can also get a source package from the mysql download site</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992645</commentid>
    <comment_count>89</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-07-21 19:52:25 +0000</bug_when>
    <thetext>(In reply to comment #85)
&gt; You can repro like so:
&gt; - on 10.6.4, launch Xcode 3.2.2
&gt; - File &gt; New Project
&gt; - choose Mac OS X &gt; Application &gt; Cocoa Application
&gt; - press Choose button
&gt; - save to Desktop or wherever
&gt; - build in Debug
&gt; - run with valgrind

Sean: I succeeded in building it using these instructions, and I can get
the sync check messages, but not the &quot;Jump to invalid address&quot; that 
follows.  This is with current valgrind svn trunk (r11221) on 10.6.4.
Are you still able to reproduce this problem?  I also tried with the
exe you attached, same result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992860</commentid>
    <comment_count>90</comment_count>
    <who name="Julian Seward">jseward</who>
    <bug_when>2010-07-22 10:50:02 +0000</bug_when>
    <thetext>(In reply to comment #74)
&gt; A new problem observed under 10.6: sync check fails when a stack is reused.

&quot;Fixed&quot; (for some definition of &quot;fixed&quot;, possibly including &quot;merely
hides the problem&quot;) by r11223.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055006</commentid>
    <comment_count>91</comment_count>
    <who name="">trnsca</who>
    <bug_when>2010-12-07 19:52:42 +0000</bug_when>
    <thetext>(In reply to comment #68)
&gt; I tested the latest from the MACOSX106 branch (rev 11164) now, but I&apos;m unable
&gt; to launch even minimal test apps with this version, I get this error:
&gt; 
&gt; valgrind: mmap(0x100000000, 4096) failed in UME (load_segment1).

I just tried building from the 3.6.0 release tarball on a 10.6.5 MacBook Pro (XCode 3.2.5) and get the same error...even on a hello_world program...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057146</commentid>
    <comment_count>92</comment_count>
    <who name="Sean">cwatson</who>
    <bug_when>2010-12-12 06:27:19 +0000</bug_when>
    <thetext>valgrind 3.6 is working well for me on 10.6.5 with Xcode 3.2.5.  The problem I reported in comment #85 no longer occurs. I&apos;m able to run even medium-sized Cocoa apps.

Now if only garbage collection was supported... bug #208215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209495</commentid>
    <comment_count>93</comment_count>
    <who name="Paul Floyd">pjfloyd</who>
    <bug_when>2023-02-18 21:09:21 +0000</bug_when>
    <thetext>Snow Leopard is too old.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>36550</attachid>
            <date>2009-08-29 00:06:00 +0000</date>
            <delta_ts>2009-08-29 00:06:00 +0000</delta_ts>
            <desc>valgrind -d -v echo &quot;hi&quot;</desc>
            <filename>output.txt</filename>
            <type>text/plain</type>
            <size>17056</size>
            <attacher>playmobil</attacher>
            
              <data encoding="base64">JCAvdXNyL2xvY2FsL3ZhbGdyaW5kL2Jpbi92YWxncmluZCAtZCAtdiBlY2hvICJoaSIKLS0yNDE4
MzoxOmRlYnVnbG9nIERlYnVnTG9nIHN5c3RlbSBzdGFydGVkIGJ5IFN0YWdlIDEsIGxldmVsIDEg
bG9nZ2luZyByZXF1ZXN0ZWQKLS0yNDE4MzoxOmxhdW5jaGVyIG5vIHRvb2wgcmVxdWVzdGVkLCBk
ZWZhdWx0aW5nIHRvICdtZW1jaGVjaycKLS0yNDE4MzoxOmxhdW5jaGVyIHZhbGdyaW5kX2xpYiA9
IC91c3IvbG9jYWwvdmFsZ3JpbmQvbGliL3ZhbGdyaW5kCi0tMjQxODM6MTpsYXVuY2hlciBhcmNo
ICd4ODYnIElTIGluc3RhbGxlZAotLTI0MTgzOjE6bGF1bmNoZXIgYXJjaCAnYW1kNjQnIElTIE5P
VCBpbnN0YWxsZWQKLS0yNDE4MzoxOmxhdW5jaGVyIGFyY2ggJ2FybScgSVMgTk9UIGluc3RhbGxl
ZAotLTI0MTgzOjE6bGF1bmNoZXIgYXJjaCAncHBjMzInIElTIE5PVCBpbnN0YWxsZWQKLS0yNDE4
MzoxOmxhdW5jaGVyIGFyY2ggJ3BwYzY0JyBJUyBOT1QgaW5zdGFsbGVkCi0tMjQxODM6MTpsYXVu
Y2hlciBzZWxlY3RlZCBhcmNoICd4ODYnCi0tMjQxODM6MTpsYXVuY2hlciBsYXVuY2hlcl9uYW1l
ID0gL3Vzci9sb2NhbC92YWxncmluZC9iaW4vdmFsZ3JpbmQKLS0yNDE4MzoxOmxhdW5jaGVyIGxh
dW5jaGluZyAvdXNyL2xvY2FsL3ZhbGdyaW5kL2xpYi92YWxncmluZC9tZW1jaGVjay14ODYtZGFy
d2luCi0tMjQxODM6MTpkZWJ1Z2xvZyBEZWJ1Z0xvZyBzeXN0ZW0gc3RhcnRlZCBieSBTdGFnZSAy
IChtYWluKSwgbGV2ZWwgMSBsb2dnaW5nIHJlcXVlc3RlZAotLTI0MTgzOjE6bWFpbiAgICAgV2Vs
Y29tZSB0byBWYWxncmluZCB2ZXJzaW9uIDMuNi4wLlNWTiBkZWJ1ZyBsb2dnaW5nCi0tMjQxODM6
MTptYWluICAgICBTdGFydGluZyB0aGUgYWRkcmVzcyBzcGFjZSBtYW5hZ2VyCi0tMjQxODM6MTpt
YWluICAgICBBZGRyZXNzIHNwYWNlIG1hbmFnZXIgaXMgcnVubmluZwotLTI0MTgzOjE6bWFpbiAg
ICAgU3RhcnRpbmcgdGhlIGR5bmFtaWMgbWVtb3J5IG1hbmFnZXIKLS0yNDE4MzoxOm1hbGxvY2Zy
IG5ld1N1cGVyYmxvY2sgYXQgMHhGMEFFOTAwMCAocHN6QiA0MTk0Mjg4KSBvd25lciBWQUxHUklO
RC90b29sCi0tMjQxODM6MTptYWluICAgICBEeW5hbWljIG1lbW9yeSBtYW5hZ2VyIGlzIHJ1bm5p
bmcKLS0yNDE4MzoxOm1haW4gICAgIEluaXRpYWxpc2UgbV9kZWJ1Z2luZm8KLS0yNDE4MzoxOm1h
aW4gICAgIFZHXyhsaWJkaXIpID0gL3Vzci9sb2NhbC92YWxncmluZC9saWIvdmFsZ3JpbmQKLS0y
NDE4MzoxOm1haW4gICAgIEdldHRpbmcgbGF1bmNoZXIncyBuYW1lIC4uLgotLTI0MTgzOjE6bWFp
biAgICAgLi4uIC91c3IvbG9jYWwvdmFsZ3JpbmQvYmluL3ZhbGdyaW5kCi0tMjQxODM6MTptYWlu
ICAgICBHZXQgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIC4uLgotLTI0MTgzOjE6bWFpbiAgICAgLi4u
IGFyY2ggPSBYODYsIGh3Y2FwcyA9IHg4Ni1zc2UxLXNzZTIKLS0yNDE4MzoxOm1haW4gICAgIEdl
dHRpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGF0IHN0YXJ0dXAKLS0yNDE4MzoxOm1haW4gICAg
IC4uLiAvVXNlcnMvcGxheW1vYmlsCi0tMjQxODM6MTptYWluICAgICBTcGxpdCB1cCBjb21tYW5k
IGxpbmUKLS0yNDE4MzoxOm1haW4gICAgIChlYXJseV8pIFByb2Nlc3MgVmFsZ3JpbmQncyBjb21t
YW5kIGxpbmUgb3B0aW9ucwotLTI0MTgzOjE6bWFpbiAgICAgQ3JlYXRlIGluaXRpYWwgaW1hZ2UK
LS0yNDE4MzoxOmluaXRpbWcgIExvYWRpbmcgY2xpZW50Ci0tMjQxODM6MTppbml0aW1nICBTZXR1
cCBjbGllbnQgZW52Ci0tMjQxODM6MTptYWluICAgICBTZXR1cCBmaWxlIGRlc2NyaXB0b3JzCi0t
MjQxODM6MTptYWluICAgICBJbml0aWFsaXNlIHRoZSB0b29sIHBhcnQgMSAocHJlX2Nsb19pbml0
KQotLTI0MTgzOjE6bWFsbG9jZnIgbmV3U3VwZXJibG9jayBhdCAweEYwRUU5MDAwIChwc3pCIDEw
NDg1NjApIG93bmVyIFZBTEdSSU5EL2V4ZWN0eHQKLS0yNDE4MzoxOm1haW4gICAgIFByaW50IGhl
bHAgYW5kIHF1aXQsIGlmIHJlcXVlc3RlZAotLTI0MTgzOjE6bWFpbiAgICAgKG1haW5fKSBQcm9j
ZXNzIFZhbGdyaW5kJ3MgY29tbWFuZCBsaW5lIG9wdGlvbnMsIHNldHVwIGxvZ2dpbmcKLS0yNDE4
MzoxOm1hbGxvY2ZyIG5ld1N1cGVyYmxvY2sgYXQgMHhGMEZFOTAwMCAocHN6QiAxMDQ4NTYwKSBv
d25lciBWQUxHUklORC9jb3JlCi0tMjQxODM6MTptYWluICAgICBQcmludCB0aGUgcHJlYW1ibGUu
Li4KPT0yNDE4Mz09IE1lbWNoZWNrLCBhIG1lbW9yeSBlcnJvciBkZXRlY3Rvcgo9PTI0MTgzPT0g
Q29weXJpZ2h0IChDKSAyMDAyLTIwMDksIGFuZCBHTlUgR1BMJ2QsIGJ5IEp1bGlhbiBTZXdhcmQg
ZXQgYWwuCj09MjQxODM9PSBVc2luZyBWYWxncmluZC0zLjYuMC5TVk4gYW5kIExpYlZFWDsgcmVy
dW4gd2l0aCAtaCBmb3IgY29weXJpZ2h0IGluZm8KPT0yNDE4Mz09IENvbW1hbmQ6IGVjaG8gaGkK
PT0yNDE4Mz09IAotLTI0MTgzLS0gVmFsZ3JpbmQgb3B0aW9uczoKLS0yNDE4My0tICAgIC1kCi0t
MjQxODMtLSAgICAtdgotLTI0MTgzLS0gQ29udGVudHMgb2YgL3Byb2MvdmVyc2lvbjoKLS0yNDE4
My0tICAgY2FuJ3Qgb3BlbiAvcHJvYy92ZXJzaW9uCi0tMjQxODMtLSBBcmNoIGFuZCBod2NhcHM6
IFg4NiwgeDg2LXNzZTEtc3NlMgotLTI0MTgzLS0gUGFnZSBzaXplczogY3VycmVudGx5IDQwOTYs
IG1heCBzdXBwb3J0ZWQgNDA5NgotLTI0MTgzLS0gVmFsZ3JpbmQgbGlicmFyeSBkaXJlY3Rvcnk6
IC91c3IvbG9jYWwvdmFsZ3JpbmQvbGliL3ZhbGdyaW5kCi0tMjQxODM6MTptYWluICAgICAuLi5m
aW5pc2hlZCB0aGUgcHJlYW1ibGUKLS0yNDE4MzoxOm1haW4gICAgIEluaXRpYWxpc2UgdGhlIHRv
b2wgcGFydCAyIChwb3N0X2Nsb19pbml0KQotLTI0MTgzOjE6bWFpbiAgICAgSW5pdGlhbGlzZSBU
VC9UQwotLTI0MTgzOjE6bWFpbiAgICAgSW5pdGlhbGlzZSByZWRpcmVjdHMKLS0yNDE4MzoxOm1h
bGxvY2ZyIG5ld1N1cGVyYmxvY2sgYXQgMHhGMTE2NDAwMCAocHN6QiAxMDQ4NTYwKSBvd25lciBW
QUxHUklORC9kaW5mbwotLTI0MTgzOjE6bWFpbiAgICAgTG9hZCBpbml0aWFsIGRlYnVnIGluZm8K
LS0yNDE4My0tIC9iaW4vZWNobyAoMHgxMDAwKQotLTI0MTgzLS0gICAgcmVhZGluZyBzeW1zICAg
ZnJvbSBwcmltYXJ5IGZpbGUgKDEgMSkKLS0yNDE4My0tIC91c3IvbGliL2R5bGQgKDB4OGZlMDAw
MDApCi0tMjQxODMtLSAgICByZWFkaW5nIHN5bXMgICBmcm9tIHByaW1hcnkgZmlsZSAoNiAxMjU5
KQotLTI0MTgzOjE6cmVkaXIgICAgdHJhbnNmZXIgb3duZXJzaGlwIFYgLT4gQyBvZiAweGYwMGMy
MDAwIC4uIDB4ZjAwYzJmZmYKLS0yNDE4MzoxOm1haW4gICAgIEluaXRpYWxpc2Ugc2NoZWR1bGVy
IChwaGFzZSAxKQotLTI0MTgzOjE6c2NoZWQgICAgc2NoZWRfaW5pdF9waGFzZTEKLS0yNDE4Mzox
Om1haW4gICAgIFRlbGwgdG9vbCBhYm91dCBpbml0aWFsIHBlcm1pc3Npb25zCi0tMjQxODM6MTpt
YWluICAgICBJbml0aWFsaXNlIHNjaGVkdWxlciAocGhhc2UgMikKLS0yNDE4MzoxOnNjaGVkICAg
IHNjaGVkX2luaXRfcGhhc2UyOiB0aWRfbWFpbj0xLCBjbHNfZW5kPTB4YmZmZmZmZmYsIGNsc19z
ej04Mzg4NjA4Ci0tMjQxODM6MTptYWluICAgICBGaW5hbGlzZSBpbml0aWFsIGltYWdlCi0tMjQx
ODM6MTptYWluICAgICBJbml0aWFsaXNlIHNpZ25hbCBtYW5hZ2VtZW50Ci0tMjQxODM6MTptYWlu
ICAgICBMb2FkIHN1cHByZXNzaW9ucwotLTI0MTgzLS0gUmVhZGluZyBzdXBwcmVzc2lvbnMgZmls
ZTogL3Vzci9sb2NhbC92YWxncmluZC9saWIvdmFsZ3JpbmQvZGVmYXVsdC5zdXBwCi0tMjQxODM6
MTptYWluICAgICAKLS0yNDE4MzoxOm1haW4gICAgIAotLTI0MTgzOjE6YXNwYWNlbSAgPDw8IFNI
T1dfU0VHTUVOVFM6IE1lbW9yeSBsYXlvdXQgYXQgY2xpZW50IHN0YXJ0dXAgKDI3IHNlZ21lbnRz
LCAyIHNlZ25hbWVzKQotLTI0MTgzOjE6YXNwYWNlbSAgKCAwKSAvYmluL2VjaG8KLS0yNDE4Mzox
OmFzcGFjZW0gICggMSkgL3Vzci9saWIvZHlsZAotLTI0MTgzOjE6YXNwYWNlbSAgICAwOiBhbm9u
IDAwMDAwMDAwMDAtMDAwMDAwMGZmZiAgICA0MDk2IC0tLS0tCi0tMjQxODM6MTphc3BhY2VtICAg
IDE6IGZpbGUgMDAwMDAwMTAwMC0wMDAwMDAxZmZmICAgIDQwOTYgci14LS0gZD0weGUwMDAwMDUg
aT02MTI1NzYgIG89MjA0ODAgICAoMCkKLS0yNDE4MzoxOmFzcGFjZW0gICAgMjogZmlsZSAwMDAw
MDAyMDAwLTAwMDAwMDJmZmYgICAgNDA5NiBydy0tLSBkPTB4ZTAwMDAwNSBpPTYxMjU3NiAgbz0y
NDU3NiAgICgwKQotLTI0MTgzOjE6YXNwYWNlbSAgICAzOiBmaWxlIDAwMDAwMDMwMDAtMDAwMDAw
NGZmZiAgICA4MTkyIHItLS0tIGQ9MHhlMDAwMDA1IGk9NjEyNTc2ICBvPTI4NjcyICAgKDApCi0t
MjQxODM6MTphc3BhY2VtICAgIDQ6ICAgICAgMDAwMDAwNTAwMC0wMDhmZGZmZmZmICAgMjMwMW0K
LS0yNDE4MzoxOmFzcGFjZW0gICAgNTogZmlsZSAwMDhmZTAwMDAwLTAwOGZlNDFmZmYgIDI3MDMz
NiByLXgtLSBkPTB4ZTAwMDAwNSBpPTYxMTU4MCAgbz0zNTIyNTYgICgxKQotLTI0MTgzOjE6YXNw
YWNlbSAgICA2OiBmaWxlIDAwOGZlNDIwMDAtMDA4ZmU0NGZmZiAgIDEyMjg4IHJ3LS0tIGQ9MHhl
MDAwMDA1IGk9NjExNTgwICBvPTYyMjU5MiAgKDEpCi0tMjQxODM6MTphc3BhY2VtICAgIDc6IGFu
b24gMDA4ZmU0NTAwMC0wMDhmZTZlZmZmICAxNzIwMzIgcnctLS0KLS0yNDE4MzoxOmFzcGFjZW0g
ICAgODogZmlsZSAwMDhmZTZmMDAwLTAwOGZlNmZmZmYgICAgNDA5NiByd3gtLSBkPTB4ZTAwMDAw
NSBpPTYxMTU4MCAgbz02MzQ4ODAgICgxKQotLTI0MTgzOjE6YXNwYWNlbSAgICA5OiBmaWxlIDAw
OGZlNzAwMDAtMDA4ZmU4M2ZmZiAgIDgxOTIwIHItLS0tIGQ9MHhlMDAwMDA1IGk9NjExNTgwICBv
PTYzODk3NiAgKDEpCi0tMjQxODM6MTphc3BhY2VtICAgMTA6ICAgICAgMDA4ZmU4NDAwMC0wMGJm
N2ZmZmZmICAgIDc2MW0KLS0yNDE4MzoxOmFzcGFjZW0gICAxMTogYW5vbiAwMGJmODAwMDAwLTAw
YmZmZmZmZmYgODM4ODYwOCByd3gtLQotLTI0MTgzOjE6YXNwYWNlbSAgIDEyOiAgICAgIDAwYzAw
MDAwMDAtMDBlZmZmZmZmZiAgICA3NjhtCi0tMjQxODM6MTphc3BhY2VtICAgMTM6IEFOT04gMDBm
MDAwMDAwMC0wMGYwMDdmZmZmICA1MjQyODggcnctLS0KLS0yNDE4MzoxOmFzcGFjZW0gICAxNDog
QU5PTiAwMGYwMDgwMDAwLTAwZjAwYzFmZmYgIDI3MDMzNiByLXgtLQotLTI0MTgzOjE6YXNwYWNl
bSAgIDE1OiBhbm9uIDAwZjAwYzIwMDAtMDBmMDBjMmZmZiAgICA0MDk2IHIteC0tCi0tMjQxODM6
MTphc3BhY2VtICAgMTY6IEFOT04gMDBmMDBjMzAwMC0wMGYwMjQ1ZmZmIDE1ODUxNTIgci14LS0K
LS0yNDE4MzoxOmFzcGFjZW0gICAxNzogQU5PTiAwMGYwMjQ2MDAwLTAwZjA5ZTFmZmYgNzk3OTAw
OCBydy0tLQotLTI0MTgzOjE6YXNwYWNlbSAgIDE4OiBGSUxFIDAwZjA5ZTIwMDAtMDBmMGE2NGZm
ZiAgNTM2NTc2IHItLS0tIGQ9MHgwMDAgaT0wICAgICAgIG89MjI2OTE4NCAoLTEpCi0tMjQxODM6
MTphc3BhY2VtICAgMTk6IEZJTEUgMDBmMGE2NTAwMC0wMGYwYWE2ZmZmICAyNzAzMzYgci14LS0g
ZD0weDAwMCBpPTAgICAgICAgbz0zNTIyNTYgICgtMSkKLS0yNDE4MzoxOmFzcGFjZW0gICAyMDog
QU5PTiAwMGYwYWE3MDAwLTAwZjBhZDNmZmYgIDE4NDMyMCBydy0tLQotLTI0MTgzOjE6YXNwYWNl
bSAgIDIxOiBBTk9OIDAwZjBhZDQwMDAtMDBmMGFkNGZmZiAgICA0MDk2IHJ3eC0tCi0tMjQxODM6
MTphc3BhY2VtICAgMjI6IEZJTEUgMDBmMGFkNTAwMC0wMGYwYWU4ZmZmICAgODE5MjAgci0tLS0g
ZD0weDAwMCBpPTAgICAgICAgbz02Mzg5NzYgICgtMSkKLS0yNDE4MzoxOmFzcGFjZW0gICAyMzog
QU5PTiAwMGYwYWU5MDAwLTAwZjEyODNmZmYgNzk3NDkxMiByd3gtLQotLTI0MTgzOjE6YXNwYWNl
bSAgIDI0OiAgICAgIDAwZjEyODQwMDAtMDBmZmZlYmZmZiAgICAyMzdtCi0tMjQxODM6MTphc3Bh
Y2VtICAgMjU6IGZpbGUgMDBmZmZlYzAwMC0wMGZmZmZlZmZmICAgNzc4MjQgci14LS0gZD0weDAw
MCBpPTAgICAgICAgbz0wICAgICAgICgtMSkKLS0yNDE4MzoxOmFzcGFjZW0gICAyNjogICAgICAw
MGZmZmZmMDAwLTAwZmZmZmZmZmYgICAgNDA5NgotLTI0MTgzOjE6YXNwYWNlbSAgPj4+Ci0tMjQx
ODM6MTptYWluICAgICAKLS0yNDE4MzoxOm1haW4gICAgIAotLTI0MTgzOjE6bWFpbiAgICAgUnVu
bmluZyB0aHJlYWQgMQotLTI0MTgzOjE6c3lzd3JhcC0gZW50ZXJpbmcgVkdfKG1haW5fdGhyZWFk
X3dyYXBwZXJfTk9SRVRVUk4pCi0tMjQxODM6MTphc3BhY2VtICBhbGxvY2F0ZWQgdGhyZWFkIHN0
YWNrIGF0IDB4ZjEyODQwMDAgc2l6ZSA4MTkyMAotLTI0MTgzOjE6c3lzd3JhcC0gcnVuX2FfdGhy
ZWFkX05PUkVUVVJOKHRpZD0xKTogcHJlLXRocmVhZF93cmFwcGVyCi0tMjQxODM6MTpzeXN3cmFw
LSB0aHJlYWRfd3JhcHBlcih0aWQ9MSk6IGVudHJ5Ci0tMjQxODM6MTp0cmFuc3RhYiBhbGxvY2F0
ZSBzZWN0b3IgMAotLTI0MTgzOjE6bWFsbG9jZnIgbmV3U3VwZXJibG9jayBhdCAweEYzM0JEMDAw
IChwc3pCICAgNjU1MjApIG93bmVyIFZBTEdSSU5EL3R0YXV4Ci0tMjQxODMtLSBSRURJUjogMHg4
ZmUyZGFjMCAoc3RybGVuKSByZWRpcmVjdGVkIHRvIDB4ZjAwYzIyYmMgKD8/PykKLS0yNDE4My0t
IFJFRElSOiAweDhmZTJkYjEwIChzdHJjcHkpIHJlZGlyZWN0ZWQgdG8gMHhmMDBjMjMwZiAoPz8/
KQotLTI0MTgzLS0gUkVESVI6IDB4OGZlMmRiZDAgKHN0cmNtcCkgcmVkaXJlY3RlZCB0byAweGYw
MGMyMmVmICg/Pz8pCi0tMjQxODMtLSBSRURJUjogMHg4ZmUyZGM4OSAoc3RyY2F0KSByZWRpcmVj
dGVkIHRvIDB4ZjAwYzIyY2QgKD8/PykKLS0yNDE4My0tIC91c3IvbG9jYWwvdmFsZ3JpbmQvbGli
L3ZhbGdyaW5kL3ZncHJlbG9hZF9jb3JlLXg4Ni1kYXJ3aW4uc28gKDB4NTAwMCkKLS0yNDE4My0t
ICAgIHJlYWRpbmcgc3ltcyAgIGZyb20gcHJpbWFyeSBmaWxlICgzIDYzNCkKLS0yNDE4My0tICAg
IGRTWU09IC91c3IvbG9jYWwvdmFsZ3JpbmQvbGliL3ZhbGdyaW5kL3ZncHJlbG9hZF9jb3JlLXg4
Ni1kYXJ3aW4uc28uZFNZTS9Db250ZW50cy9SZXNvdXJjZXMvRFdBUkYvdmdwcmVsb2FkX2NvcmUt
eDg2LWRhcndpbi5zbwotLTI0MTgzLS0gICAgcmVhZGluZyBkd2FyZjMgZnJvbSBkc3ltcyBmaWxl
Ci0tMjQxODMtLSAvdXNyL2xvY2FsL3ZhbGdyaW5kL2xpYi92YWxncmluZC92Z3ByZWxvYWRfbWVt
Y2hlY2steDg2LWRhcndpbi5zbyAoMHhlMDAwKQotLTI0MTgzLS0gICAgcmVhZGluZyBzeW1zICAg
ZnJvbSBwcmltYXJ5IGZpbGUgKDExMSAxMDk1KQotLTI0MTgzLS0gICAgZFNZTT0gL3Vzci9sb2Nh
bC92YWxncmluZC9saWIvdmFsZ3JpbmQvdmdwcmVsb2FkX21lbWNoZWNrLXg4Ni1kYXJ3aW4uc28u
ZFNZTS9Db250ZW50cy9SZXNvdXJjZXMvRFdBUkYvdmdwcmVsb2FkX21lbWNoZWNrLXg4Ni1kYXJ3
aW4uc28KLS0yNDE4My0tICAgIHJlYWRpbmcgZHdhcmYzIGZyb20gZHN5bXMgZmlsZQo9PTI0MTgz
PT0gV0FSTklORzogbmV3IHJlZGlyZWN0aW9uIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIC0tIGln
bm9yaW5nIGl0Ci0tMjQxODMtLSAgICAgbmV3OiAweDhmZTI4NmMwIChzdHJsY2F0ICAgICAgICAg
ICAgICkgUi0+IDB4MDAwMTMwMDAgc3RybGNhdAo9PTI0MTgzPT0gV0FSTklORzogbmV3IHJlZGly
ZWN0aW9uIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIC0tIGlnbm9yaW5nIGl0Ci0tMjQxODMtLSAg
ICAgbmV3OiAweDhmZTJkYjEwIChzdHJjcHkgICAgICAgICAgICAgICkgUi0+IDB4MDAwMTJlNjAg
c3RyY3B5Ci0tMjQxODMtLSBSRURJUjogMHg4ZmUyZGZkNCAobWVtc2V0KSByZWRpcmVjdGVkIHRv
IDB4MTFkYjAgKG1lbXNldCkKLS0yNDE4My0tIC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliICgw
eDIxMDAwKQotLTI0MTgzLS0gICAgcmVhZGluZyBzeW1zICAgZnJvbSBwcmltYXJ5IGZpbGUgKDQ2
OTUgMzgxNSkKLS0yNDE4My0tIFJFRElSOiAweDhmZTJjNzU3IChzdHJyY2hyKSByZWRpcmVjdGVk
IHRvIDB4MTE3OTAgKHN0cnJjaHIpCi0tMjQxODMtLSBSRURJUjogMHg4ZmUyYjM2MCAoc3RybGNw
eSkgcmVkaXJlY3RlZCB0byAweDEyOWUwIChzdHJsY3B5KQotLTI0MTgzLS0gUkVESVI6IDB4MjMw
MGMgKG1lbWNweSkgcmVkaXJlY3RlZCB0byAweDEyODkwIChtZW1jcHkpCi0tMjQxODMtLSBSRURJ
UjogMHgyMWE0MCAobWVtc2V0KSByZWRpcmVjdGVkIHRvIDB4MTFkNTAgKG1lbXNldCkKLS0yNDE4
My0tIFJFRElSOiAweDIzNGNhIChfX21lbWNweV9jaGspIHJlZGlyZWN0ZWQgdG8gMHgxMjI1MCAo
X19tZW1jcHlfY2hrKQotLTI0MTgzOjE6bWFsbG9jZnIgbmV3U3VwZXJibG9jayBhdCAweEYzM0Ux
MDAwIChwc3pCICAgNjU1MjApIG93bmVyIFZBTEdSSU5EL2Vycm9ycwo9PTI0MTgzPT0gSW52YWxp
ZCByZWFkIG9mIHNpemUgMQo9PTI0MTgzPT0gICAgYXQgMHgzMzA3OTogbG9jYWxlY29udl9sIChp
biAvdXNyL2xpYi9saWJTeXN0ZW0uQi5keWxpYikKPT0yNDE4Mz09ICAgIGJ5IDB4MkRBOEI6IF9f
dmZwcmludGYgKGluIC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliKQo9PTI0MTgzPT0gICAgYnkg
MHg0QjlFMjogdmZwcmludGZfbCAoaW4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIpCj09MjQx
ODM9PSAgICBieSAweDk2OUNGOiBwcmludGYgKGluIC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGli
KQo9PTI0MTgzPT0gICAgYnkgMHgyMkRENTogcHRocmVhZF9pbml0IChpbiAvdXNyL2xpYi9saWJT
eXN0ZW0uQi5keWxpYikKPT0yNDE4Mz09ICAgIGJ5IDB4MjFDNjY6IGxpYlN5c3RlbV9pbml0aWFs
aXplciAoaW4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIpCi0tMjQxODM6MTptYWxsb2NmciBu
ZXdTdXBlcmJsb2NrIGF0IDB4RjMzRjEwMDAgKHBzekIgICA2NTUyMCkgb3duZXIgVkFMR1JJTkQv
ZGVtYW5nbGUKPT0yNDE4Mz09ICAgIGJ5IDB4OEZFMEVENkM6IEltYWdlTG9hZGVyTWFjaE86OmRv
TW9kSW5pdEZ1bmN0aW9ucyhJbWFnZUxvYWRlcjo6TGlua0NvbnRleHQgY29uc3QmKSAoaW4gL3Vz
ci9saWIvZHlsZCkKPT0yNDE4Mz09ICAgIGJ5IDB4OEZFMEQzMUQ6IEltYWdlTG9hZGVyOjpyZWN1
cnNpdmVJbml0aWFsaXphdGlvbihJbWFnZUxvYWRlcjo6TGlua0NvbnRleHQgY29uc3QmLCB1bnNp
Z25lZCBpbnQpIChpbiAvdXNyL2xpYi9keWxkKQo9PTI0MTgzPT0gICAgYnkgMHg4RkUwRDJDMTog
SW1hZ2VMb2FkZXI6OnJlY3Vyc2l2ZUluaXRpYWxpemF0aW9uKEltYWdlTG9hZGVyOjpMaW5rQ29u
dGV4dCBjb25zdCYsIHVuc2lnbmVkIGludCkgKGluIC91c3IvbGliL2R5bGQpCj09MjQxODM9PSAg
ICBieSAweDhGRTBEM0QwOiBJbWFnZUxvYWRlcjo6cnVuSW5pdGlhbGl6ZXJzKEltYWdlTG9hZGVy
OjpMaW5rQ29udGV4dCBjb25zdCYpIChpbiAvdXNyL2xpYi9keWxkKQo9PTI0MTgzPT0gICAgYnkg
MHg4RkUwMjQ4RTogZHlsZDo6aW5pdGlhbGl6ZU1haW5FeGVjdXRhYmxlKCkgKGluIC91c3IvbGli
L2R5bGQpCj09MjQxODM9PSAgICBieSAweDhGRTA3OTRGOiBkeWxkOjpfbWFpbihtYWNob19oZWFk
ZXIgY29uc3QqLCB1bnNpZ25lZCBsb25nLCBpbnQsIGNoYXIgY29uc3QqKiwgY2hhciBjb25zdCoq
LCBjaGFyIGNvbnN0KiopIChpbiAvdXNyL2xpYi9keWxkKQo9PTI0MTgzPT0gIEFkZHJlc3MgMHg1
NjggaXMgbm90IHN0YWNrJ2QsIG1hbGxvYydkIG9yIChyZWNlbnRseSkgZnJlZSdkCj09MjQxODM9
PSAKPT0yNDE4Mz09IAo9PTI0MTgzPT0gUHJvY2VzcyB0ZXJtaW5hdGluZyB3aXRoIGRlZmF1bHQg
YWN0aW9uIG9mIHNpZ25hbCAxMCAoU0lHQlVTKQo9PTI0MTgzPT0gIE5vbi1leGlzdGVudCBwaHlz
aWNhbCBhZGRyZXNzIGF0IGFkZHJlc3MgMHg1NjgKPT0yNDE4Mz09ICAgIGF0IDB4MzMwNzk6IGxv
Y2FsZWNvbnZfbCAoaW4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIpCj09MjQxODM9PSAgICBi
eSAweDJEQThCOiBfX3ZmcHJpbnRmIChpbiAvdXNyL2xpYi9saWJTeXN0ZW0uQi5keWxpYikKPT0y
NDE4Mz09ICAgIGJ5IDB4NEI5RTI6IHZmcHJpbnRmX2wgKGluIC91c3IvbGliL2xpYlN5c3RlbS5C
LmR5bGliKQo9PTI0MTgzPT0gICAgYnkgMHg5NjlDRjogcHJpbnRmIChpbiAvdXNyL2xpYi9saWJT
eXN0ZW0uQi5keWxpYikKPT0yNDE4Mz09ICAgIGJ5IDB4MjJERDU6IHB0aHJlYWRfaW5pdCAoaW4g
L3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIpCj09MjQxODM9PSAgICBieSAweDIxQzY2OiBsaWJT
eXN0ZW1faW5pdGlhbGl6ZXIgKGluIC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGliKQo9PTI0MTgz
PT0gICAgYnkgMHg4RkUwRUQ2QzogSW1hZ2VMb2FkZXJNYWNoTzo6ZG9Nb2RJbml0RnVuY3Rpb25z
KEltYWdlTG9hZGVyOjpMaW5rQ29udGV4dCBjb25zdCYpIChpbiAvdXNyL2xpYi9keWxkKQo9PTI0
MTgzPT0gICAgYnkgMHg4RkUwRDMxRDogSW1hZ2VMb2FkZXI6OnJlY3Vyc2l2ZUluaXRpYWxpemF0
aW9uKEltYWdlTG9hZGVyOjpMaW5rQ29udGV4dCBjb25zdCYsIHVuc2lnbmVkIGludCkgKGluIC91
c3IvbGliL2R5bGQpCj09MjQxODM9PSAgICBieSAweDhGRTBEMkMxOiBJbWFnZUxvYWRlcjo6cmVj
dXJzaXZlSW5pdGlhbGl6YXRpb24oSW1hZ2VMb2FkZXI6OkxpbmtDb250ZXh0IGNvbnN0JiwgdW5z
aWduZWQgaW50KSAoaW4gL3Vzci9saWIvZHlsZCkKPT0yNDE4Mz09ICAgIGJ5IDB4OEZFMEQzRDA6
IEltYWdlTG9hZGVyOjpydW5Jbml0aWFsaXplcnMoSW1hZ2VMb2FkZXI6OkxpbmtDb250ZXh0IGNv
bnN0JikgKGluIC91c3IvbGliL2R5bGQpCj09MjQxODM9PSAgICBieSAweDhGRTAyNDhFOiBkeWxk
Ojppbml0aWFsaXplTWFpbkV4ZWN1dGFibGUoKSAoaW4gL3Vzci9saWIvZHlsZCkKPT0yNDE4Mz09
ICAgIGJ5IDB4OEZFMDc5NEY6IGR5bGQ6Ol9tYWluKG1hY2hvX2hlYWRlciBjb25zdCosIHVuc2ln
bmVkIGxvbmcsIGludCwgY2hhciBjb25zdCoqLCBjaGFyIGNvbnN0KiosIGNoYXIgY29uc3QqKikg
KGluIC91c3IvbGliL2R5bGQpCi0tMjQxODM6MTpzeXN3cmFwLSB0aHJlYWRfd3JhcHBlcih0aWQ9
MSk6IGRvbmUKLS0yNDE4MzoxOnN5c3dyYXAtIHJ1bl9hX3RocmVhZF9OT1JFVFVSTih0aWQ9MSk6
IHBvc3QtdGhyZWFkX3dyYXBwZXIKLS0yNDE4MzoxOnN5c3dyYXAtIHJ1bl9hX3RocmVhZF9OT1JF
VFVSTih0aWQ9MSk6IGxhc3Qgb25lIHN0YW5kaW5nCi0tMjQxODM6MTptYWluICAgICBlbnRlcmlu
ZyBWR18oc2h1dGRvd25fYWN0aW9uc19OT1JFVFVSTikKLS0yNDE4MzoxOmFzcGFjZW0gIDw8PCBT
SE9XX1NFR01FTlRTOiBNZW1vcnkgbGF5b3V0IGF0IGNsaWVudCBzaHV0ZG93biAoNDMgc2VnbWVu
dHMsIDYgc2VnbmFtZXMpCi0tMjQxODM6MTphc3BhY2VtICAoIDApIC9iaW4vZWNobwotLTI0MTgz
OjE6YXNwYWNlbSAgKCAxKSAvdXNyL2xpYi9keWxkCi0tMjQxODM6MTphc3BhY2VtICAoIDIpIC91
c3IvbG9jYWwvdmFsZ3JpbmQvbGliL3ZhbGdyaW5kL3ZncHJlbG9hZF9jb3JlLXg4Ni1kYXJ3aW4u
c28KLS0yNDE4MzoxOmFzcGFjZW0gICggMykgL3Vzci9sb2NhbC92YWxncmluZC9saWIvdmFsZ3Jp
bmQvdmdwcmVsb2FkX21lbWNoZWNrLXg4Ni1kYXJ3aW4uc28KLS0yNDE4MzoxOmFzcGFjZW0gICgg
NCkgL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIKLS0yNDE4MzoxOmFzcGFjZW0gICggNSkgL3Vz
ci9saWIvc3lzdGVtL2xpYm1hdGhDb21tb24uQS5keWxpYgotLTI0MTgzOjE6YXNwYWNlbSAgICAw
OiBhbm9uIDAwMDAwMDAwMDAtMDAwMDAwMGZmZiAgICA0MDk2IC0tLS0tCi0tMjQxODM6MTphc3Bh
Y2VtICAgIDE6IGZpbGUgMDAwMDAwMTAwMC0wMDAwMDAxZmZmICAgIDQwOTYgci14LS0gZD0weGUw
MDAwMDUgaT02MTI1NzYgIG89MjA0ODAgICAoMCkKLS0yNDE4MzoxOmFzcGFjZW0gICAgMjogZmls
ZSAwMDAwMDAyMDAwLTAwMDAwMDJmZmYgICAgNDA5NiBydy0tLSBkPTB4ZTAwMDAwNSBpPTYxMjU3
NiAgbz0yNDU3NiAgICgwKQotLTI0MTgzOjE6YXNwYWNlbSAgICAzOiBmaWxlIDAwMDAwMDMwMDAt
MDAwMDAwNGZmZiAgICA4MTkyIHItLS0tIGQ9MHhlMDAwMDA1IGk9NjEyNTc2ICBvPTI4NjcyICAg
KDApCi0tMjQxODM6MTphc3BhY2VtICAgIDQ6IGZpbGUgMDAwMDAwNTAwMC0wMDAwMDA4ZmZmICAg
MTYzODQgci14LS0gZD0weGUwMDAwMDUgaT0xNDE1NzgyIG89MCAgICAgICAoMikKLS0yNDE4Mzox
OmFzcGFjZW0gICAgNTogZmlsZSAwMDAwMDA5MDAwLTAwMDAwMDlmZmYgICAgNDA5NiBydy0tLSBk
PTB4ZTAwMDAwNSBpPTE0MTU3ODIgbz0xNjM4NCAgICgyKQotLTI0MTgzOjE6YXNwYWNlbSAgICA2
OiBmaWxlIDAwMDAwMGEwMDAtMDAwMDAwZGZmZiAgIDE2Mzg0IHItLS0tIGQ9MHhlMDAwMDA1IGk9
MTQxNTc4MiBvPTIwNDgwICAgKDIpCi0tMjQxODM6MTphc3BhY2VtICAgIDc6IGZpbGUgMDAwMDAw
ZTAwMC0wMDAwMDE2ZmZmICAgMzY4NjQgci14VC0gZD0weGUwMDAwMDUgaT0xNDE1ODA0IG89MCAg
ICAgICAoMykKLS0yNDE4MzoxOmFzcGFjZW0gICAgODogZmlsZSAwMDAwMDE3MDAwLTAwMDAwMTdm
ZmYgICAgNDA5NiBydy0tLSBkPTB4ZTAwMDAwNSBpPTE0MTU4MDQgbz0zNjg2NCAgICgzKQotLTI0
MTgzOjE6YXNwYWNlbSAgICA5OiBmaWxlIDAwMDAwMTgwMDAtMDAwMDAyMGZmZiAgIDM2ODY0IHIt
LS0tIGQ9MHhlMDAwMDA1IGk9MTQxNTgwNCBvPTQwOTYwICAgKDMpCi0tMjQxODM6MTphc3BhY2Vt
ICAgMTA6IGZpbGUgMDAwMDAyMTAwMC0wMDAwMWM1ZmZmIDE3MjQ0MTYgci14VC0gZD0weGUwMDAw
MDUgaT02MDI5NTggIG89MjM1OTI5NiAoNCkKLS0yNDE4MzoxOmFzcGFjZW0gICAxMTogZmlsZSAw
MDAwMWM2MDAwLTAwMDAxZDJmZmYgICA1MzI0OCBydy0tLSBkPTB4ZTAwMDAwNSBpPTYwMjk1OCAg
bz00MDgzNzEyICg0KQotLTI0MTgzOjE6YXNwYWNlbSAgIDEyOiBhbm9uIDAwMDAxZDMwMDAtMDAw
MDFkZGZmZiAgIDQ1MDU2IHJ3LS0tCi0tMjQxODM6MTphc3BhY2VtICAgMTM6IGZpbGUgMDAwMDFk
ZTAwMC0wMDAwMjQ0ZmZmICA0MjE4ODggci0tLS0gZD0weGUwMDAwMDUgaT02MDI5NTggIG89NDEz
Njk2MCAoNCkKLS0yNDE4MzoxOmFzcGFjZW0gICAxNDogZmlsZSAwMDAwMjQ1MDAwLTAwMDAyNDhm
ZmYgICAxNjM4NCByLXgtLSBkPTB4ZTAwMDAwNSBpPTYwMjk0NyAgbz0zMjc2OCAgICg1KQotLTI0
MTgzOjE6YXNwYWNlbSAgIDE1OiBmaWxlIDAwMDAyNDkwMDAtMDAwMDI0YWZmZiAgICA4MTkyIHIt
LS0tIGQ9MHhlMDAwMDA1IGk9NjAyOTQ3ICBvPTQ5MTUyICAgKDUpCi0tMjQxODM6MTphc3BhY2Vt
ICAgMTY6ICAgICAgMDAwMDI0YjAwMC0wMDhmZGZmZmZmICAgMjI5OW0KLS0yNDE4MzoxOmFzcGFj
ZW0gICAxNzogZmlsZSAwMDhmZTAwMDAwLTAwOGZlNDFmZmYgIDI3MDMzNiByLXhULSBkPTB4ZTAw
MDAwNSBpPTYxMTU4MCAgbz0zNTIyNTYgICgxKQotLTI0MTgzOjE6YXNwYWNlbSAgIDE4OiBmaWxl
IDAwOGZlNDIwMDAtMDA4ZmU0NGZmZiAgIDEyMjg4IHJ3LS0tIGQ9MHhlMDAwMDA1IGk9NjExNTgw
ICBvPTYyMjU5MiAgKDEpCi0tMjQxODM6MTphc3BhY2VtICAgMTk6IGFub24gMDA4ZmU0NTAwMC0w
MDhmZTZlZmZmICAxNzIwMzIgcnctLS0KLS0yNDE4MzoxOmFzcGFjZW0gICAyMDogZmlsZSAwMDhm
ZTZmMDAwLTAwOGZlNmZmZmYgICAgNDA5NiByd3gtLSBkPTB4ZTAwMDAwNSBpPTYxMTU4MCAgbz02
MzQ4ODAgICgxKQotLTI0MTgzOjE6YXNwYWNlbSAgIDIxOiBmaWxlIDAwOGZlNzAwMDAtMDA4ZmU4
M2ZmZiAgIDgxOTIwIHItLS0tIGQ9MHhlMDAwMDA1IGk9NjExNTgwICBvPTYzODk3NiAgKDEpCi0t
MjQxODM6MTphc3BhY2VtICAgMjI6ICAgICAgMDA4ZmU4NDAwMC0wMGJmN2ZmZmZmICAgIDc2MW0K
LS0yNDE4MzoxOmFzcGFjZW0gICAyMzogYW5vbiAwMGJmODAwMDAwLTAwYmZmZmZmZmYgODM4ODYw
OCByd3gtLQotLTI0MTgzOjE6YXNwYWNlbSAgIDI0OiAgICAgIDAwYzAwMDAwMDAtMDBlZmZmZmZm
ZiAgICA3NjhtCi0tMjQxODM6MTphc3BhY2VtICAgMjU6IEFOT04gMDBmMDAwMDAwMC0wMGYwMDdm
ZmZmICA1MjQyODggcnctLS0KLS0yNDE4MzoxOmFzcGFjZW0gICAyNjogQU5PTiAwMGYwMDgwMDAw
LTAwZjAwYzFmZmYgIDI3MDMzNiByLXgtLQotLTI0MTgzOjE6YXNwYWNlbSAgIDI3OiBhbm9uIDAw
ZjAwYzIwMDAtMDBmMDBjMmZmZiAgICA0MDk2IHIteFQtCi0tMjQxODM6MTphc3BhY2VtICAgMjg6
IEFOT04gMDBmMDBjMzAwMC0wMGYwMjQ1ZmZmIDE1ODUxNTIgci14LS0KLS0yNDE4MzoxOmFzcGFj
ZW0gICAyOTogQU5PTiAwMGYwMjQ2MDAwLTAwZjA5ZTFmZmYgNzk3OTAwOCBydy0tLQotLTI0MTgz
OjE6YXNwYWNlbSAgIDMwOiBGSUxFIDAwZjA5ZTIwMDAtMDBmMGE2NGZmZiAgNTM2NTc2IHItLS0t
IGQ9MHgwMDAgaT0wICAgICAgIG89MjI2OTE4NCAoLTEpCi0tMjQxODM6MTphc3BhY2VtICAgMzE6
IEZJTEUgMDBmMGE2NTAwMC0wMGYwYWE2ZmZmICAyNzAzMzYgci14LS0gZD0weDAwMCBpPTAgICAg
ICAgbz0zNTIyNTYgICgtMSkKLS0yNDE4MzoxOmFzcGFjZW0gICAzMjogQU5PTiAwMGYwYWE3MDAw
LTAwZjBhZDNmZmYgIDE4NDMyMCBydy0tLQotLTI0MTgzOjE6YXNwYWNlbSAgIDMzOiBBTk9OIDAw
ZjBhZDQwMDAtMDBmMGFkNGZmZiAgICA0MDk2IHJ3eC0tCi0tMjQxODM6MTphc3BhY2VtICAgMzQ6
IEZJTEUgMDBmMGFkNTAwMC0wMGYwYWU4ZmZmICAgODE5MjAgci0tLS0gZD0weDAwMCBpPTAgICAg
ICAgbz02Mzg5NzYgICgtMSkKLS0yNDE4MzoxOmFzcGFjZW0gICAzNTogQU5PTiAwMGYwYWU5MDAw
LTAwZjEyODNmZmYgNzk3NDkxMiByd3gtLQotLTI0MTgzOjE6YXNwYWNlbSAgIDM2OiBBTk9OIDAw
ZjEyODQwMDAtMDBmMTI4NWZmZiAgICA4MTkyIC0tLS0tCi0tMjQxODM6MTphc3BhY2VtICAgMzc6
IEFOT04gMDBmMTI4NjAwMC0wMGYxMjk1ZmZmICAgNjU1MzYgcnd4LS0KLS0yNDE4MzoxOmFzcGFj
ZW0gICAzODogQU5PTiAwMGYxMjk2MDAwLTAwZjEyOTdmZmYgICAgODE5MiAtLS0tLQotLTI0MTgz
OjE6YXNwYWNlbSAgIDM5OiBBTk9OIDAwZjEyOTgwMDAtMDBmMzQwMGZmZiAgICAgMzNtIHJ3eC0t
Ci0tMjQxODM6MTphc3BhY2VtICAgNDA6ICAgICAgMDBmMzQwMTAwMC0wMGZmZmViZmZmICAgIDIw
M20KLS0yNDE4MzoxOmFzcGFjZW0gICA0MTogZmlsZSAwMGZmZmVjMDAwLTAwZmZmZmVmZmYgICA3
NzgyNCByLXhULSBkPTB4MDAwIGk9MCAgICAgICBvPTAgICAgICAgKC0xKQotLTI0MTgzOjE6YXNw
YWNlbSAgIDQyOiAgICAgIDAwZmZmZmYwMDAtMDBmZmZmZmZmZiAgICA0MDk2Ci0tMjQxODM6MTph
c3BhY2VtICA+Pj4KPT0yNDE4Mz09IAo9PTI0MTgzPT0gSEVBUCBTVU1NQVJZOgo9PTI0MTgzPT0g
ICAgIGluIHVzZSBhdCBleGl0OiAwIGJ5dGVzIGluIDAgYmxvY2tzCj09MjQxODM9PSAgIHRvdGFs
IGhlYXAgdXNhZ2U6IDAgYWxsb2NzLCAwIGZyZWVzLCAwIGJ5dGVzIGFsbG9jYXRlZAo9PTI0MTgz
PT0gCj09MjQxODM9PSBBbGwgaGVhcCBibG9ja3Mgd2VyZSBmcmVlZCAtLSBubyBsZWFrcyBhcmUg
cG9zc2libGUKPT0yNDE4Mz09IAo9PTI0MTgzPT0gRVJST1IgU1VNTUFSWTogMSBlcnJvcnMgZnJv
bSAxIGNvbnRleHRzIChzdXBwcmVzc2VkOiAwIGZyb20gMCkKPT0yNDE4Mz09IAo9PTI0MTgzPT0g
MSBlcnJvcnMgaW4gY29udGV4dCAxIG9mIDE6Cj09MjQxODM9PSBJbnZhbGlkIHJlYWQgb2Ygc2l6
ZSAxCj09MjQxODM9PSAgICBhdCAweDMzMDc5OiBsb2NhbGVjb252X2wgKGluIC91c3IvbGliL2xp
YlN5c3RlbS5CLmR5bGliKQo9PTI0MTgzPT0gICAgYnkgMHgyREE4QjogX192ZnByaW50ZiAoaW4g
L3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIpCj09MjQxODM9PSAgICBieSAweDRCOUUyOiB2ZnBy
aW50Zl9sIChpbiAvdXNyL2xpYi9saWJTeXN0ZW0uQi5keWxpYikKPT0yNDE4Mz09ICAgIGJ5IDB4
OTY5Q0Y6IHByaW50ZiAoaW4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIpCj09MjQxODM9PSAg
ICBieSAweDIyREQ1OiBwdGhyZWFkX2luaXQgKGluIC91c3IvbGliL2xpYlN5c3RlbS5CLmR5bGli
KQo9PTI0MTgzPT0gICAgYnkgMHgyMUM2NjogbGliU3lzdGVtX2luaXRpYWxpemVyIChpbiAvdXNy
L2xpYi9saWJTeXN0ZW0uQi5keWxpYikKPT0yNDE4Mz09ICAgIGJ5IDB4OEZFMEVENkM6IEltYWdl
TG9hZGVyTWFjaE86OmRvTW9kSW5pdEZ1bmN0aW9ucyhJbWFnZUxvYWRlcjo6TGlua0NvbnRleHQg
Y29uc3QmKSAoaW4gL3Vzci9saWIvZHlsZCkKPT0yNDE4Mz09ICAgIGJ5IDB4OEZFMEQzMUQ6IElt
YWdlTG9hZGVyOjpyZWN1cnNpdmVJbml0aWFsaXphdGlvbihJbWFnZUxvYWRlcjo6TGlua0NvbnRl
eHQgY29uc3QmLCB1bnNpZ25lZCBpbnQpIChpbiAvdXNyL2xpYi9keWxkKQo9PTI0MTgzPT0gICAg
YnkgMHg4RkUwRDJDMTogSW1hZ2VMb2FkZXI6OnJlY3Vyc2l2ZUluaXRpYWxpemF0aW9uKEltYWdl
TG9hZGVyOjpMaW5rQ29udGV4dCBjb25zdCYsIHVuc2lnbmVkIGludCkgKGluIC91c3IvbGliL2R5
bGQpCj09MjQxODM9PSAgICBieSAweDhGRTBEM0QwOiBJbWFnZUxvYWRlcjo6cnVuSW5pdGlhbGl6
ZXJzKEltYWdlTG9hZGVyOjpMaW5rQ29udGV4dCBjb25zdCYpIChpbiAvdXNyL2xpYi9keWxkKQo9
PTI0MTgzPT0gICAgYnkgMHg4RkUwMjQ4RTogZHlsZDo6aW5pdGlhbGl6ZU1haW5FeGVjdXRhYmxl
KCkgKGluIC91c3IvbGliL2R5bGQpCj09MjQxODM9PSAgICBieSAweDhGRTA3OTRGOiBkeWxkOjpf
bWFpbihtYWNob19oZWFkZXIgY29uc3QqLCB1bnNpZ25lZCBsb25nLCBpbnQsIGNoYXIgY29uc3Qq
KiwgY2hhciBjb25zdCoqLCBjaGFyIGNvbnN0KiopIChpbiAvdXNyL2xpYi9keWxkKQo9PTI0MTgz
PT0gIEFkZHJlc3MgMHg1NjggaXMgbm90IHN0YWNrJ2QsIG1hbGxvYydkIG9yIChyZWNlbnRseSkg
ZnJlZSdkCj09MjQxODM9PSAKPT0yNDE4Mz09IEVSUk9SIFNVTU1BUlk6IDEgZXJyb3JzIGZyb20g
MSBjb250ZXh0cyAoc3VwcHJlc3NlZDogMCBmcm9tIDApCi0tMjQxODM6MTpjb3JlX29zICBWR18o
dGVybWluYXRlX05PUkVUVVJOKSh0aWQ9MSkKQnVzIGVycm9yCmRoY3AtMTcyLTIyLTcxLTIyMzp+
IHBsYXltb2JpbCQgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>36999</attachid>
            <date>2009-09-16 21:06:19 +0000</date>
            <delta_ts>2009-09-16 21:06:19 +0000</delta_ts>
            <desc>10.6 support for 3.5.0.</desc>
            <filename>snowleopard.patch</filename>
            <type>text/plain</type>
            <size>39215</size>
            <attacher name="Greg Parker">gparker</attacher>
            
              <data encoding="base64">SW5kZXg6IE1ha2VmaWxlLmFsbC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBNYWtlZmlsZS5hbGwuYW0JKHJl
dmlzaW9uIDEwODg4KQorKysgTWFrZWZpbGUuYWxsLmFtCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2
ICs4OCw3IEBACiAJLVdwb2ludGVyLWFyaXRoIFwKIAktV3N0cmljdC1wcm90b3R5cGVzIFwKIAkt
V21pc3NpbmctZGVjbGFyYXRpb25zIFwKKwktV25vLXBvaW50ZXItc2lnbiBcCiAJQEZMQUdfV19O
T19GT1JNQVRfWkVST19MRU5HVEhAIFwKIAktZm5vLXN0cmljdC1hbGlhc2luZwogCkluZGV4OiBt
cGkvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbXBpL01ha2VmaWxlLmFtCShyZXZpc2lvbiAx
MDg4OCkKKysrIG1waS9NYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTYsMTUgKzU2LDE1
IEBACiAKIAogaWYgQlVJTERfTVBJV1JBUF9QUkkKLWxpYm1waXdyYXBfQFZHQ09ORl9BUkNIX1BS
SUBfQFZHQ09ORl9PU0Bfc29fU09VUkNFUyAgPSBsaWJtcGl3cmFwLmMKLWxpYm1waXdyYXBfQFZH
Q09ORl9BUkNIX1BSSUBfQFZHQ09ORl9PU0Bfc29fQ1BQRkxBR1MgPSAtSS4uL2luY2x1ZGUKK2xp
Ym1waXdyYXBfQFZHQ09ORl9BUkNIX1BSSUBfQFZHQ09ORl9PU0Bfc29fU09VUkNFUyAgPSAkKHNy
Y2RpcikvbGlibXBpd3JhcC5jCitsaWJtcGl3cmFwX0BWR0NPTkZfQVJDSF9QUklAX0BWR0NPTkZf
T1NAX3NvX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvLi4vaW5jbHVkZQogbGlibXBpd3JhcF9AVkdD
T05GX0FSQ0hfUFJJQF9AVkdDT05GX09TQF9zb19DRkxBR1MgICA9IFwKIAkkKENGTEFHU19NUEkp
ICQoTVBJX0ZMQUdfTTMyNjRfUFJJKQogbGlibXBpd3JhcF9AVkdDT05GX0FSQ0hfUFJJQF9AVkdD
T05GX09TQF9zb19MREZMQUdTICA9ICQoTERGTEFHU19NUEkpCiBlbmRpZgogaWYgQlVJTERfTVBJ
V1JBUF9TRUMKLWxpYm1waXdyYXBfQFZHQ09ORl9BUkNIX1NFQ0BfQFZHQ09ORl9PU0Bfc29fU09V
UkNFUyAgPSBsaWJtcGl3cmFwLmMKLWxpYm1waXdyYXBfQFZHQ09ORl9BUkNIX1NFQ0BfQFZHQ09O
Rl9PU0Bfc29fQ1BQRkxBR1MgPSAtSS4uL2luY2x1ZGUKK2xpYm1waXdyYXBfQFZHQ09ORl9BUkNI
X1NFQ0BfQFZHQ09ORl9PU0Bfc29fU09VUkNFUyAgPSAkKHNyY2RpcikvbGlibXBpd3JhcC5jCits
aWJtcGl3cmFwX0BWR0NPTkZfQVJDSF9TRUNAX0BWR0NPTkZfT1NAX3NvX0NQUEZMQUdTID0gLUkk
KHNyY2RpcikvLi4vaW5jbHVkZQogbGlibXBpd3JhcF9AVkdDT05GX0FSQ0hfU0VDQF9AVkdDT05G
X09TQF9zb19DRkxBR1MgICA9IFwKIAkkKENGTEFHU19NUEkpICQoTVBJX0ZMQUdfTTMyNjRfU0VD
KQogbGlibXBpd3JhcF9AVkdDT05GX0FSQ0hfU0VDQF9AVkdDT05GX09TQF9zb19MREZMQUdTICA9
ICQoTERGTEFHU19NUEkpCkluZGV4OiBkYXJ3aW4xMC1kcmQuc3VwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBk
YXJ3aW4xMC1kcmQuc3VwcAkocmV2aXNpb24gMCkKKysrIGRhcndpbjEwLWRyZC5zdXBwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKKworIyBEUkQgc3VwcHJlc3Npb25zIGZvciBEYXJ3aW4g
MTAueCAvIE1hYyBPUyBYIDEwLjYgU25vdyBMZW9wYXJkCkluZGV4OiBpbmNsdWRlL3ZraS92a2kt
ZGFyd2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS92a2kvdmtpLWRhcndpbi5oCShyZXZpc2lv
biAxMDg4OCkKKysrIGluY2x1ZGUvdmtpL3ZraS1kYXJ3aW4uaAkod29ya2luZyBjb3B5KQpAQCAt
NzkyLDYgKzc5MiwxMSBAQAogdHlwZWRlZiBzdHJ1Y3QgZXZlbnRyZXEgdmtpX2V2ZW50cmVxOwog
CiAKKyNpbmNsdWRlIDxzeXMvYWNsLmg+CisKKyNkZWZpbmUgdmtpX2thdXRoX2ZpbGVzZWMga2F1
dGhfZmlsZXNlYworCisKICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CiAKICNkZWZpbmUgVktJX1BU
UkFDRV9UUkFDRU1FICAgUFRfVFJBQ0VfTUUKQEAgLTEwMjEsNiArMTAyNiwxMCBAQAogI2RlZmlu
ZQlWS0lfQV9HRVRQSU5GT19BRERSCUFfR0VUUElORk9fQUREUgkKICNkZWZpbmUJVktJX0FfR0VU
S0FVRElUCUFfR0VUS0FVRElUCQogI2RlZmluZQlWS0lfQV9TRVRLQVVESVQJQV9TRVRLQVVESVQJ
CisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyNkZWZpbmUgVktJX0FfU0VORFRSSUdH
RVIgQV9TRU5EVFJJR0dFUgorI2RlZmluZSBWS0lfQV9HRVRTSU5GT19BRERSIEFfR0VUU0lORk9f
QUREUgorI2VuZGlmCiAKIAogI2luY2x1ZGUgPHN5cy9haW8uaD4KSW5kZXg6IGluY2x1ZGUvdmtp
L3ZraS1zY251bXMtZGFyd2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS92a2kvdmtpLXNjbnVt
cy1kYXJ3aW4uaAkocmV2aXNpb24gMTA4ODgpCisrKyBpbmNsdWRlL3ZraS92a2ktc2NudW1zLWRh
cndpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw5IEBACiAjZGVmaW5lIF9fVktJX1ND
TlVNU19EQVJXSU5fSAogCiAKKy8vIG5lZWQgREFSV0lOXzEwX3ggZGVmaW5pdGlvbnMKKyNpbmNs
dWRlICJjb25maWcuaCIKKwogLy8gb3NmbWsvbWFjaC9pMzg2L3N5c2NhbGxfc3cuaAogCiAvLyBU
aGVyZSBhcmUgdHdvIHN5c2NhbGwgbnVtYmVyIGVuY29kaW5ncyBpbiBEYXJ3aW4uCkBAIC0zNzYs
NyArMzc5LDExIEBACiAjZGVmaW5lIF9fTlJfc2lncmV0dXJuICAgICAgVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMTg0KQogI2RlZmluZSBfX05SX2NodWQgICAgICAgICAgIFZHX0RB
UldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDE4NSkKIAkJCS8qIDE4NiAgKi8KKyNpZiBEQVJX
SU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorI2RlZmluZSBfX05SX2ZkYXRhc3luYyAgICAgIFZHX0RB
UldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDE4NykKKyNlbHNlCiAJCQkvKiAxODcgICovCisj
ZW5kaWYKICNkZWZpbmUJX19OUl9zdGF0ICAgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCgxODgpCiAjZGVmaW5lCV9fTlJfZnN0YXQgICAgICAgICAgVkdfREFSV0lOX1NZ
U0NBTExfQ09OU1RSVUNUX1VOSVgoMTg5KQogI2RlZmluZQlfX05SX2xzdGF0ICAgICAgICAgIFZH
X0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDE5MCkKQEAgLTQwMyw4ICs0MTAsMTMgQEAK
ICNkZWZpbmUJX19OUl9BVFBnZXRyZXEgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1Rf
VU5JWCgyMTEpCiAjZGVmaW5lCV9fTlJfQVRQZ2V0cnNwICAgICAgVkdfREFSV0lOX1NZU0NBTExf
Q09OU1RSVUNUX1VOSVgoMjEyKQogCQkJLyogMjEzICBSZXNlcnZlZCBmb3IgQXBwbGVUYWxrICov
Ci0jZGVmaW5lCV9fTlJfa3F1ZXVlX2Zyb21fcG9ydHNldF9ucCBWR19EQVJXSU5fU1lTQ0FMTF9D
T05TVFJVQ1RfVU5JWCgyMTQpCi0jZGVmaW5lCV9fTlJfa3F1ZXVlX3BvcnRzZXRfbnAgVkdfREFS
V0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjE1KQorI2lmIERBUldJTl9WRVJTID49IERBUldJ
Tl8xMF82CisgICAgICAgICAgICAgICAgICAgICAgICAvKiAyMTQgIG9sZCBrcXVldWVfZnJvbV9w
b3J0c2V0X25wKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIDIxNSAgb2xkIGtxdWV1ZV9w
b3J0c2V0X25wKi8KKyNlbHNlCisjZGVmaW5lIF9fTlJfa3F1ZXVlX2Zyb21fcG9ydHNldF9ucCBW
R19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMTQpCisjZGVmaW5lIF9fTlJfa3F1ZXVl
X3BvcnRzZXRfbnAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjE1KQorI2VuZGlm
CiAjZGVmaW5lCV9fTlJfbWtjb21wbGV4ICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNU
X1VOSVgoMjE2KQogI2RlZmluZQlfX05SX3N0YXR2ICAgICAgICAgIFZHX0RBUldJTl9TWVNDQUxM
X0NPTlNUUlVDVF9VTklYKDIxNykKICNkZWZpbmUJX19OUl9sc3RhdHYgICAgICAgICBWR19EQVJX
SU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMTgpCkBAIC00MTMsMTIgKzQyNSwxNyBAQAogI2Rl
ZmluZQlfX05SX3NldGF0dHJsaXN0ICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklY
KDIyMSkKICNkZWZpbmUJX19OUl9nZXRkaXJlbnRyaWVzYXR0ciBWR19EQVJXSU5fU1lTQ0FMTF9D
T05TVFJVQ1RfVU5JWCgyMjIpCiAjZGVmaW5lCV9fTlJfZXhjaGFuZ2VkYXRhICAgVkdfREFSV0lO
X1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjIzKQotCQkJLyogMjI0ICBjaGVja3VzZXJhY2Nlc3Mg
Ki8KKwkJCS8qIDIyNCAgb2xkIGNoZWNrdXNlcmFjY2VzcyAqLwogI2RlZmluZQlfX05SX3NlYXJj
aGZzICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIyNSkKICNkZWZpbmUJ
X19OUl9kZWxldGUgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMjYp
CiAjZGVmaW5lCV9fTlJfY29weWZpbGUgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNU
X1VOSVgoMjI3KQorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisjZGVmaW5lIF9fTlJf
ZmdldGF0dHJsaXN0ICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjI4KQorI2Rl
ZmluZSBfX05SX2ZzZXRhdHRybGlzdCAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklY
KDIyOSkKKyNlbHNlCiAJCQkvKiAyMjggICovCiAJCQkvKiAyMjkgICovCisjZW5kaWYKICNkZWZp
bmUJX19OUl9wb2xsICAgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgy
MzApCiAjZGVmaW5lCV9fTlJfd2F0Y2hldmVudCAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RS
VUNUX1VOSVgoMjMxKQogI2RlZmluZQlfX05SX3dhaXRldmVudCAgICAgIFZHX0RBUldJTl9TWVND
QUxMX0NPTlNUUlVDVF9VTklYKDIzMikKQEAgLTQzNCw3ICs0NTEsMTEgQEAKICNkZWZpbmUJX19O
Ul9mc2N0bCAgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyNDIpCiAj
ZGVmaW5lCV9fTlJfaW5pdGdyb3VwcyAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VO
SVgoMjQzKQogI2RlZmluZSBfX05SX3Bvc2l4X3NwYXduICAgIFZHX0RBUldJTl9TWVNDQUxMX0NP
TlNUUlVDVF9VTklYKDI0NCkKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorI2RlZmlu
ZSBfX05SX2Zmc2N0bCAgICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI0
NSkKKyNlbHNlCiAJCQkvKiAyNDUgICovCisjZW5kaWYKIAkJCS8qIDI0NiAgKi8KICNkZWZpbmUg
X19OUl9uZnNjbG50ICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyNDcp
CiAjZGVmaW5lIF9fTlJfZmhvcGVuICAgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNU
X1VOSVgoMjQ4KQpAQCAtNDg1LDIzICs1MDYsMjcgQEAKICNkZWZpbmUJX19OUl9pZGVudGl0eXN2
YyAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyOTMpCiAjZGVmaW5lCV9fTlJf
c2hhcmVkX3JlZ2lvbl9jaGVja19ucCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgy
OTQpCiAjZGVmaW5lCV9fTlJfc2hhcmVkX3JlZ2lvbl9tYXBfbnAgICBWR19EQVJXSU5fU1lTQ0FM
TF9DT05TVFJVQ1RfVU5JWCgyOTUpCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyNk
ZWZpbmUgX19OUl92bV9wcmVzc3VyZV9tb25pdG9yICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNU
UlVDVF9VTklYKDI5NikKKyNlbHNlCiAJCQkvKiAyOTYgIG9sZCBsb2FkX3NoYXJlZF9maWxlICov
CisjZW5kaWYKIAkJCS8qIDI5NyAgb2xkIHJlc2V0X3NoYXJlZF9maWxlICovCiAJCQkvKiAyOTgg
IG9sZCBuZXdfc3lzdGVtX3NoYXJlZF9yZWdpb25zICovCiAJCQkvKiAyOTkgIG9sZCBzaGFyZWRf
cmVnaW9uX21hcF9maWxlX25wICovCiAJCQkvKiAzMDAgIG9sZCBzaGFyZWRfcmVnaW9uX21ha2Vf
cHJpdmF0ZV9ucCAqLwotI2RlZmluZSBfX05SX19fcHRocmVhZF9tdXRleF9kZXN0cm95IFZHX0RB
UldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwMSkKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRf
bXV0ZXhfaW5pdCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMDIpCi0jZGVmaW5l
IF9fTlJfX19wdGhyZWFkX211dGV4X2xvY2sgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VO
SVgoMzAzKQotI2RlZmluZSBfX05SX19fcHRocmVhZF9tdXRleF90cnlsb2NrIFZHX0RBUldJTl9T
WVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwNCkKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfbXV0ZXhf
dW5sb2NrIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwNSkKLSNkZWZpbmUgX19O
Ul9fX3B0aHJlYWRfY29uZF9pbml0IFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMw
NikKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfY29uZF9kZXN0cm95IFZHX0RBUldJTl9TWVNDQUxM
X0NPTlNUUlVDVF9VTklYKDMwNykKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfY29uZF9icm9hZGNh
c3QgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzA4KQotI2RlZmluZSBfX05SX19f
cHRocmVhZF9jb25kX3NpZ25hbCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMDkp
CisJCQkvKiAzMDEgKi8KKwkJCS8qIDMwMiAqLworCQkJLyogMzAzICovCisJCQkvKiAzMDQgKi8K
KwkJCS8qIDMwNSAqLworCQkJLyogMzA2ICovCisJCQkvKiAzMDcgKi8KKwkJCS8qIDMwOCAqLwor
CQkJLyogMzA5ICovCiAjZGVmaW5lCV9fTlJfZ2V0c2lkICAgICAgICAgVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMzEwKQogI2RlZmluZQlfX05SX3NldHRpZF93aXRoX3BpZCBWR19E
QVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMTEpCi0jZGVmaW5lIF9fTlJfX19wdGhyZWFk
X2NvbmRfdGltZWR3YWl0IFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMxMikKKwkJ
CS8qIDMxMiAqLwogI2RlZmluZQlfX05SX2Fpb19mc3luYyAgICAgIFZHX0RBUldJTl9TWVNDQUxM
X0NPTlNUUlVDVF9VTklYKDMxMykKICNkZWZpbmUJX19OUl9haW9fcmV0dXJuICAgICBWR19EQVJX
SU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMTQpCiAjZGVmaW5lCV9fTlJfYWlvX3N1c3BlbmQg
ICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzE1KQpAQCAtNTEwLDcgKzUzNSw3
IEBACiAjZGVmaW5lCV9fTlJfYWlvX3JlYWQgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RS
VUNUX1VOSVgoMzE4KQogI2RlZmluZQlfX05SX2Fpb193cml0ZSAgICAgIFZHX0RBUldJTl9TWVND
QUxMX0NPTlNUUlVDVF9VTklYKDMxOSkKICNkZWZpbmUJX19OUl9saW9fbGlzdGlvICAgICBWR19E
QVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMjApCi0jZGVmaW5lIF9fTlJfX19wdGhyZWFk
X2NvbmRfd2FpdCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMjEpCisJCQkvKiAz
MjEgKi8KICNkZWZpbmUgX19OUl9pb3BvbGljeXN5cyAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCgzMjIpCiAJCQkvKiAzMjMgICovCiAjZGVmaW5lCV9fTlJfbWxvY2thbGwgICAg
ICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzI0KQpAQCAtNTU5LDEwICs1ODQs
MTggQEAKICNkZWZpbmUgX19OUl9ic2R0aHJlYWRfcmVnaXN0ZXIgVkdfREFSV0lOX1NZU0NBTExf
Q09OU1RSVUNUX1VOSVgoMzY2KQogI2RlZmluZSBfX05SX3dvcmtxX29wZW4gICAgIFZHX0RBUldJ
Tl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDM2NykKICNkZWZpbmUgX19OUl93b3JrcV9vcHMgICAg
ICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzNjgpCisjaWYgREFSV0lOX1ZFUlMg
Pj0gREFSV0lOXzEwXzYKKyNkZWZpbmUgX19OUl9rZXZlbnQ2NCAgICAgICBWR19EQVJXSU5fU1lT
Q0FMTF9DT05TVFJVQ1RfVU5JWCgzNjkpCisjZWxzZQogCQkJLyogMzY5ICAqLworI2VuZGlmCiAJ
CQkvKiAzNzAgICovCiAJCQkvKiAzNzEgICovCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEw
XzYKKyNkZWZpbmUgX19OUl9fX3RocmVhZF9zZWxmaWQgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RS
VUNUX1VOSVgoMzcyKSAgLy8gd2FzIFVYNjQKKyNlbHNlCiAJCQkvKiAzNzIgICovCisjZW5kaWYK
IAkJCS8qIDM3MyAgKi8KIAkJCS8qIDM3NCAgKi8KIAkJCS8qIDM3NSAgKi8KQEAgLTYxNyw3ICs2
NTAsMTkgQEAKICNkZWZpbmUgX19OUl9fX21hY19tb3VudCAgICAgICAgICAgIFZHX0RBUldJTl9T
WVNDQUxMX0NPTlNUUlVDVF9VTklYKDQyNCkKICNkZWZpbmUgX19OUl9fX21hY19nZXRfbW91bnQg
ICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDQyNSkKICNkZWZpbmUgX19O
Ul9fX21hY19nZXRmc3N0YXQgICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklY
KDQyNikKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorI2RlZmluZSBfX05SX2ZzZ2V0
cGF0aCAgICAgICAgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoNDI3KQor
I2RlZmluZSBfX05SX2F1ZGl0X3Nlc3Npb25fc2VsZiAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09O
U1RSVUNUX1VOSVgoNDI4KQorI2RlZmluZSBfX05SX2F1ZGl0X3Nlc3Npb25fam9pbiAgICAgVkdf
REFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoNDI5KQorI2VuZGlmCisKKyNpZiBEQVJXSU5f
VkVSUyA8IERBUldJTl8xMF82CiAjZGVmaW5lCV9fTlJfTUFYU1lTQ0FMTCAgICAgICAgICAgICBW
R19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCg0MjcpCisjZWxpZiBEQVJXSU5fVkVSU0lP
TiA8IERBUldJTl8xMF83CisjZGVmaW5lCV9fTlJfTUFYU1lTQ0FMTCAgICAgICAgICAgICBWR19E
QVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCg0MzApCisjZWxzZQorI2Vycm9yIHVua25vd24g
ZGFyd2luIHZlcnNpb24KKyNlbmRpZgogCiAjZGVmaW5lIF9fTlJfREFSV0lOX0ZBS0VfU0lHUkVU
VVJOICgxICsgX19OUl9NQVhTWVNDQUxMKQogCkluZGV4OiBjb25maWd1cmUuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gY29uZmlndXJlLmluCShyZXZpc2lvbiAxMDg4OCkKKysrIGNvbmZpZ3VyZS5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw5IEBACiAgICAgICpkYXJ3aW4qKQogICAgICAgICBB
Q19NU0dfUkVTVUxUKFtvayAoJHtob3N0X29zfSldKQogICAgICAgICBWR0NPTkZfT1M9ImRhcndp
biIKKyAgICAgICAgQUNfREVGSU5FKFtEQVJXSU5fMTBfNV0sIDEwMDUwMCwgW0RBUldJTl9WRVJT
IHZhbHVlIGZvciBNYWMgT1MgWCAxMC41XSkKKyAgICAgICAgQUNfREVGSU5FKFtEQVJXSU5fMTBf
Nl0sIDEwMDYwMCwgW0RBUldJTl9WRVJTIHZhbHVlIGZvciBNYWMgT1MgWCAxMC42XSkKKyAgICAg
ICAgQUNfREVGSU5FKFtEQVJXSU5fMTBfN10sIDEwMDcwMCwgW0RBUldJTl9WRVJTIHZhbHVlIGZv
ciBNYWMgT1MgWCAxMC43XSkKIAogCUFDX01TR19DSEVDS0lORyhbZm9yIHRoZSBrZXJuZWwgdmVy
c2lvbl0pCiAJa2VybmVsPWB1bmFtZSAtcmAKQEAgLTI1NCwyMSArMjU3LDI3IEBACiAgICAgICAg
ICMgTmI6IGZvciBEYXJ3aW4gd2Ugc2V0IERFRkFVTFRfU1VQUCBoZXJlLiAgVGhhdCdzIGJlY2F1
c2UgRGFyd2luCiAgICAgICAgICMgaGFzIG9ubHkgb25lIHJlbGV2YW50IHZlcnNpb24sIHRoZSBP
UyB2ZXJzaW9uLiBUaGUgYHVuYW1lYCBjaGVjawogICAgICAgICAjIGlzIGEgZ29vZCB3YXkgdG8g
Z2V0IHRoYXQgdmVyc2lvbiAoaS5lLiAiRGFyd2luIDkuNi4wIiBpcyBNYWMgT1MKLSAgICAgICAg
IyBYIDEwLjUuNiwgYW5kICJEYXJ3aW4gMTAueCIgd291bGQgcHJlc3VtYWJseSBiZSBNYWMgT1Mg
WCAxMC42LngKLSAgICAgICAgIyBTbm93IExlb3BhcmQgYW5kIGRhcndpbjEwLnN1cHApLCBhbmQg
d2UgZG9uJ3Qga25vdyBvZiBhbiBtYWNyb3MKLSAgICAgICAgIyBzaW1pbGFyIHRvIF9fR0xJQkNf
XyB0byBnZXQgdGhhdCBpbmZvLgorICAgICAgICAjIFggMTAuNS42LCBhbmQgIkRhcndpbiAxMC54
IiBpcyBNYWMgT1MgWCAxMC42LnggU25vdyBMZW9wYXJkKSwgCisgICAgICAgICMgYW5kIHdlIGRv
bid0IGtub3cgb2YgYW4gbWFjcm9zIHNpbWlsYXIgdG8gX19HTElCQ19fIHRvIGdldCB0aGF0IGlu
Zm8uCiAgICAgICAgICMKICAgICAgICAgIyBYWFg6IGB1bmFtZSAtcmAgd29uJ3QgZG8gdGhlIHJp
Z2h0IHRoaW5nIGZvciBjcm9zcy1jb21waWxlcywgYnV0CiAgICAgICAgICMgdGhhdCdzIG5vdCBh
IHByb2JsZW0geWV0LgogCWNhc2UgIiR7a2VybmVsfSIgaW4KIAkgICAgIDkuKikKIAkJICBBQ19N
U0dfUkVTVUxUKFtEYXJ3aW4gOS54ICgke2tlcm5lbH0pIC8gTWFjIE9TIFggMTAuNSBMZW9wYXJk
XSkKKwkJICBBQ19ERUZJTkUoW0RBUldJTl9WRVJTXSwgREFSV0lOXzEwXzUsIFtEYXJ3aW4gLyBN
YWMgT1MgWCB2ZXJzaW9uXSkKIAkJICBERUZBVUxUX1NVUFA9ImRhcndpbjkuc3VwcCAke0RFRkFV
TFRfU1VQUH0iCiAJCSAgREVGQVVMVF9TVVBQPSJkYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9T
VVBQfSIKIAkJICA7OworCSAgICAgMTAuKikKKwkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gMTAu
eCAoJHtrZXJuZWx9KSAvIE1hYyBPUyBYIDEwLjYgU25vdyBMZW9wYXJkXSkKKwkJICBBQ19ERUZJ
TkUoW0RBUldJTl9WRVJTXSwgREFSV0lOXzEwXzYsIFtEYXJ3aW4gLyBNYWMgT1MgWCB2ZXJzaW9u
XSkKKwkJICBERUZBVUxUX1NVUFA9ImRhcndpbjEwLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorCQkg
IERFRkFVTFRfU1VQUD0iZGFyd2luMTAtZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorCQkgIDs7
CiAgICAgICopIAogCQkgIEFDX01TR19SRVNVTFQoW3Vuc3VwcG9ydGVkICgke2tlcm5lbH0pXSkK
LQkJICBBQ19NU0dfRVJST1IoW1ZhbGdyaW5kIHdvcmtzIG9uIERhcndpbiA5LnggKE1hYyBPUyBY
IDEwLjUpXSkKKwkJICBBQ19NU0dfRVJST1IoW1ZhbGdyaW5kIHdvcmtzIG9uIERhcndpbiA5Lngg
YW5kIDEwLnggKE1hYyBPUyBYIDEwLjUgYW5kIDEwLjYpXSkKIAkJICA7OwogCWVzYWMKICAgICAg
ICAgOzsKQEAgLTE0NzEsMTAgKzE0ODAsMjIgQEAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMg
Q2hlY2sgZm9yIC9wcm9jIGZpbGVzeXN0ZW0KKyMgVGhpcyBkb2Vzbid0IHdvcmsgd2hlbiBjcm9z
cy1jb21waWxpbmcsIGluY2x1ZGluZyBEYXJ3aW4gdW5pdmVyc2FsIGJ1aWxkcy4KICMtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSAieG5vIjsgdGhlbgog
QUNfQ0hFQ0tfRklMRVMoL3Byb2Mvc2VsZi9mZCAvcHJvYy9zZWxmL2V4ZSAvcHJvYy9zZWxmL21h
cHMsIAogICAgIFsgQUNfREVGSU5FKFtIQVZFX1BST0NdLCAxLCBbY2FuIHVzZSAvcHJvYyBmaWxl
c3lzdGVtXSkgXSwgCiAgICAgW10pCitlbHNlCisgICAgICMgYXNzdW1lIC9wcm9jL3NlbGYvKiBp
cyBhdmFpbGFibGUgZXZlcnl3aGVyZSBleGNlcHQgRGFyd2luCisgICAgIGNhc2UgIiRWR0NPTkZf
T1MiIGluCisgICAgICAgIGRhcndpbikKKwkgICAgICA7OworICAgICAgICAqKQorICAgICAgICAg
ICBBQ19ERUZJTkUoW0hBVkVfUFJPQ10sIDEsIFtjYW4gdXNlIC9wcm9jIGZpbGVzeXN0ZW1dKQor
ICAgICAgICAgICA7OworICAgICBlc2FjCitmaQogCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklu
ZGV4OiBhdXhwcm9ncy9NYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdXhwcm9ncy9NYWtlZmls
ZS5hbQkocmV2aXNpb24gMTA4ODgpCisrKyBhdXhwcm9ncy9NYWtlZmlsZS5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjksNCArMjksMyBAQAogdmFsZ3JpbmRfbGlzdGVuZXJfQ0ZMQUdTICAgID0gJChB
TV9DRkxBR1NfUFJJKQogdmFsZ3JpbmRfbGlzdGVuZXJfQ0NBU0ZMQUdTID0gJChBTV9DQ0FTRkxB
R1NfUFJJKQogdmFsZ3JpbmRfbGlzdGVuZXJfTERGTEFHUyAgID0gJChBTV9DRkxBR1NfUFJJKQot
CkluZGV4OiBNYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBNYWtlZmlsZS5hbQkocmV2aXNpb24g
MTA4ODgpCisrKyBNYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAog
CiAjIFB1dCBkb2NzIGxhc3QgYmVjYXVzZSBidWlsZGluZyB0aGUgSFRNTCBpcyBzbG93IGFuZCB3
ZSB3YW50IHRvIGdldAogIyBldmVyeXRoaW5nIGVsc2Ugd29ya2luZyBiZWZvcmUgd2UgdHJ5IGl0
LgorIyBHclAgU25vd0xlb3BhcmQ6CisjCW1waQogU1VCRElSUyA9IFwKIAlpbmNsdWRlIFwKIAlW
RVggXApAQCAtMzYsNyArMzgsNiBAQAogCXRlc3RzIFwKIAlwZXJmIFwKIAlhdXhwcm9ncyBcCi0J
bXBpIFwKIAlkb2NzCiBESVNUX1NVQkRJUlMgID0gJChTVUJESVJTKQogCkBAIC00OCw3ICs0OSw4
IEBACiAJZ2xpYmMtMi4yLUxpbnV4VGhyZWFkcy1oZWxncmluZC5zdXBwIFwKIAlnbGliYy0yLlgt
ZHJkLnN1cHAgXAogCWV4cC1wdHJjaGVjay5zdXBwIFwKLQlkYXJ3aW45LnN1cHAgZGFyd2luOS1k
cmQuc3VwcAorCWRhcndpbjkuc3VwcCBkYXJ3aW45LWRyZC5zdXBwIFwKKwlkYXJ3aW4xMC5zdXBw
IGRhcndpbjEwLWRyZC5zdXBwCiBERUZBVUxUX1NVUFBfRklMRVMgPSBAREVGQVVMVF9TVVBQQAog
CiAjIFdlIGluY2x1ZGUgYWxsIHRoZSBiYXNlIC5zdXBwIGZpbGVzIGluIHRoZSBkaXN0cmlidXRp
b24sIGJ1dCBub3QKQEAgLTYzLDEwICs2NSwxMCBAQAogQlVJTFRfU09VUkNFUyAgPSBkZWZhdWx0
LnN1cHAgdmFsZ3JpbmQucGMKIENMRUFORklMRVMgICAgID0gZGVmYXVsdC5zdXBwCiAKLWRlZmF1
bHQuc3VwcDogJChERUZBVUxUX1NVUFBfRklMRVMpCitkZWZhdWx0LnN1cHA6ICQoYWRkcHJlZml4
ICQoc3JjZGlyKS8sJChERUZBVUxUX1NVUFBfRklMRVMpKQogCWVjaG8gIiMgVGhpcyBpcyBhIGdl
bmVyYXRlZCBmaWxlLCBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHN1cHByZXNzaW9uIHJ1bGVz
OiIgPiBkZWZhdWx0LnN1cHAKIAllY2hvICIjICIgJChERUZBVUxUX1NVUFBfRklMRVMpID4+IGRl
ZmF1bHQuc3VwcAotCWNhdCAkKERFRkFVTFRfU1VQUF9GSUxFUykgPj4gZGVmYXVsdC5zdXBwCisJ
Y2F0ICQoYWRkcHJlZml4ICQoc3JjZGlyKS8sJChERUZBVUxUX1NVUFBfRklMRVMpKSA+PiBkZWZh
dWx0LnN1cHAKIAogIyMgUHJlcHJlbmQgQFBFUkxAIGJlY2F1c2UgdGVzdHMvdmdfcmVndGVzdCBp
c24ndCBleGVjdXRhYmxlCiByZWd0ZXN0OiBjaGVjawpJbmRleDogZGFyd2luOS1kcmQuc3VwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBkYXJ3aW45LWRyZC5zdXBwCShyZXZpc2lvbiAxMDg4OCkKKysrIGRhcndp
bjktZHJkLnN1cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2IEBACisKKyMgRFJEIHN1cHBy
ZXNzaW9ucyBmb3IgRGFyd2luIDkueCAvIE1hYyBPUyBYIDEwLjUgTGVvcGFyZAorCiAjCiAjIFN1
cHByZXNzaW9uIHBhdHRlcm5zIGZvciBkeWxkLCB0aGUgZHluYW1pYyBsb2FkZXIuCiAjCkluZGV4
OiBNYWtlZmlsZS52ZXguYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTWFrZWZpbGUudmV4LmFtCShyZXZpc2lv
biAxMDg4OCkKKysrIE1ha2VmaWxlLnZleC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTEsMTQgKzUx
LDExIEBACiAjIFRoaXMgaXMgdmVyeSB1Z2dlcmx5LiAgTmVlZCB0byBzZWQgb3V0IGJvdGggInh5
enp5TiIgYW5kCiAjICJ4eXp6eSROIiBzaW5jZSBnY2Mgb24gZGlmZmVyZW50IHRhcmdldHMgZW1p
dHMgdGhlIGNvbnN0YW50cwogIyBkaWZmZXJlbnRseSAtLSB3aXRoIGEgbGVhZGluZyAkIG9uIHg4
Ni9hbWQ2NCBidXQgbm9uZSBvbiBwcGMzMi82NC4KLXB1Yi9saWJ2ZXhfZ3Vlc3Rfb2Zmc2V0cy5o
OgotCXJtIC1mIGF1eHByb2dzL2dlbm9mZnNldHMucwotCSQoQ0MpICQoTElCVkVYX0NGTEFHUykg
LU8gLVMgLW8gYXV4cHJvZ3MvZ2Vub2Zmc2V0cy5zIFwKLQkJCQkJYXV4cHJvZ3MvZ2Vub2Zmc2V0
cy5jCi0JZ3JlcCB4eXp6eSBhdXhwcm9ncy9nZW5vZmZzZXRzLnMgfCBncmVwIGRlZmluZSBcCitw
dWIvbGlidmV4X2d1ZXN0X29mZnNldHMuaDogJChzcmNkaXIpL2F1eHByb2dzL2dlbm9mZnNldHMu
YworCSQoQ0MpICQoTElCVkVYX0NGTEFHUykgLU8gLVMgLW8gLSAkKHNyY2RpcikvYXV4cHJvZ3Mv
Z2Vub2Zmc2V0cy5jIFwKKwkgICB8IGdyZXAgeHl6enkgfCBncmVwIGRlZmluZSBcCiAJICAgfCBz
ZWQgInMveHl6enlcXCQkLy9nIiB8IHNlZCAicy94eXp6eS8vZyIgXAotCSAgID4gcHViL2xpYnZl
eF9ndWVzdF9vZmZzZXRzLmgKLQlybSAtZiBhdXhwcm9ncy9nZW5vZmZzZXRzLnMKKwkgICA+ICQo
c3JjZGlyKS9wdWIvbGlidmV4X2d1ZXN0X29mZnNldHMuaAogCiAjLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogIyBsaWJ2ZXgtPHBsYXRmb3JtPi5hCkluZGV4OiBkYXJ3aW4xMC5zdXBwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGRhcndpbjEwLnN1cHAJKHJldmlzaW9uIDApCisrKyBkYXJ3aW4xMC5zdXBwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIgQEAKKworIyBTdXBwcmVzc2lvbnMgZm9yIERhcndpbiAxMC54IC8g
TWFjIE9TIFggMTAuNiBTbm93IExlb3BhcmQKSW5kZXg6IGNvcmVncmluZC9tX3N5c3dyYXAvcHJp
dl9zeXN3cmFwLWRhcndpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNvcmVncmluZC9tX3N5c3dyYXAvcHJp
dl9zeXN3cmFwLWRhcndpbi5oCShyZXZpc2lvbiAxMDg4OCkKKysrIGNvcmVncmluZC9tX3N5c3dy
YXAvcHJpdl9zeXN3cmFwLWRhcndpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjksNyArNDI5LDcg
QEAKIC8vIDM2OQogLy8gMzcwCiAvLyAzNzEKLS8vIDM3MgorREVDTF9URU1QTEFURShkYXJ3aW4s
IF9fdGhyZWFkX3NlbGZpZCk7ICAgICAgICAgLy8gMzcyCiAvLyAzNzMKIC8vIDM3NAogLy8gMzc1
CkBAIC00ODQsNiArNDg0LDkgQEAKIC8vIE5ZSSBfX21hY19tb3VudCA0MjQKIC8vIE5ZSSBfX21h
Y19nZXRfbW91bnQgNDI1CiAvLyBOWUkgX19tYWNfZ2V0ZnNzdGF0IDQyNgorREVDTF9URU1QTEFU
RShkYXJ3aW4sIGZzZ2V0cGF0aCk7ICAgICAgICAgICAvLyA0MjcKKy8vIE5ZSSBhdWRpdF9zZXNz
aW9uX3NlbGYgNDI4CisvLyBOWUkgYXVkaXRfc2Vzc2lvbl9qb2luIDQyOQogCiAvLyBNYWNoIG1l
c3NhZ2UgaGVscGVycwogREVDTF9URU1QTEFURShkYXJ3aW4sIGhvc3RfaW5mbyk7CkBAIC00OTgs
OSArNTAxLDExIEBACiBERUNMX1RFTVBMQVRFKGRhcndpbiwgbWFjaF9wb3J0X2dldF9yZWZzKTsK
IERFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3BvcnRfbW9kX3JlZnMpOwogREVDTF9URU1QTEFU
RShkYXJ3aW4sIG1hY2hfcG9ydF9nZXRfc2V0X3N0YXR1cyk7CitERUNMX1RFTVBMQVRFKGRhcndp
biwgbWFjaF9wb3J0X21vdmVfbWVtYmVyKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3Bv
cnRfZGVzdHJveSk7CiBERUNMX1RFTVBMQVRFKGRhcndpbiwgbWFjaF9wb3J0X3JlcXVlc3Rfbm90
aWZpY2F0aW9uKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0
KTsKK0RFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3BvcnRfZXh0cmFjdF9yaWdodCk7CiBERUNM
X1RFTVBMQVRFKGRhcndpbiwgbWFjaF9wb3J0X2dldF9hdHRyaWJ1dGVzKTsKIERFQ0xfVEVNUExB
VEUoZGFyd2luLCBtYWNoX3BvcnRfc2V0X2F0dHJpYnV0ZXMpOwogREVDTF9URU1QTEFURShkYXJ3
aW4sIG1hY2hfcG9ydF9pbnNlcnRfbWVtYmVyKTsKQEAgLTUzNyw2ICs1NDIsNyBAQAogREVDTF9U
RU1QTEFURShkYXJ3aW4sIHRocmVhZF9zdXNwZW5kKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCB0
aHJlYWRfZ2V0X3N0YXRlKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCB0aHJlYWRfcG9saWN5KTsK
K0RFQ0xfVEVNUExBVEUoZGFyd2luLCB0aHJlYWRfcG9saWN5X3NldCk7CiBERUNMX1RFTVBMQVRF
KGRhcndpbiwgdGhyZWFkX2luZm8pOwogREVDTF9URU1QTEFURShkYXJ3aW4sIGJvb3RzdHJhcF9y
ZWdpc3Rlcik7CiBERUNMX1RFTVBMQVRFKGRhcndpbiwgYm9vdHN0cmFwX2xvb2tfdXApOwpJbmRl
eDogY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWFtZDY0LWRhcndpbi5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGNvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1hbWQ2NC1kYXJ3aW4uYwkocmV2aXNpb24g
MTA4ODgpCisrKyBjb3JlZ3JpbmQvbV9zeXN3cmFwL3N5c3dyYXAtYW1kNjQtZGFyd2luLmMJKHdv
cmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsMjMgQEAKICAgIFZleEd1ZXN0QU1ENjRTdGF0ZSAq
dmV4OwogICAgQWRkciBzdGFjazsKICAgIFNpemVUIHN0YWNrc2l6ZTsKKyAgIHZraV9zaWdzZXRf
dCBibG9ja2FsbDsKIAorICAgLyogV2hlbiB3ZSBlbnRlciBoZXJlIHdlIGhvbGQgbm8gbG9jayAo
ISksIHNvIHdlIGJldHRlciBhY3F1aXJlIGl0CisgICAgICBwcm9udG8uICBXaHkgZG8gd2UgaG9s
ZCBubyBsb2NrPyAgQmVjYXVzZSAocHJlc3VtYWJseSkgdGhlIG9ubHkKKyAgICAgIHdheSB0byBn
ZXQgaGVyZSBpcyBhcyBhIHJlc3VsdCBvZiBhIFNmTWF5QmxvY2sgc3lzY2FsbAorICAgICAgIndv
cmtxX29wcyhXUU9QU19USFJFQURfUkVUVVJOKSIsIHdoaWNoIHdpbGwgaGF2ZSBkcm9wcGVkIHRo
ZQorICAgICAgbG9jay4gIEF0IGxlYXN0IHRoYXQncyBjbGVhciBmb3IgdGhlICdyZXVzZScgY2Fz
ZS4gIFRoZQorICAgICAgbm9uLXJldXNlIGNhc2U/ICBEdW5ubywgcGVyaGFwcyBpdCdzIGEgbmV3
IHRocmVhZCB0aGUga2VybmVsCisgICAgICBwdWxsZWQgb3V0IG9mIGEgaGF0LiAgSW4gYW55IGNh
c2Ugd2Ugc3RpbGwgbmVlZCB0byB0YWtlIGEKKyAgICAgIGxvY2suICovCisgICBWR18oYWNxdWly
ZV9CaWdMb2NrX0xMKSgid3F0aHJlYWRfaGlqYWNrIik7CisKKyAgIC8qIFN0YXJ0IHRoZSB0aHJl
YWQgd2l0aCBhbGwgc2lnbmFscyBibG9ja2VkLiAgVkdfKHNjaGVkdWxlcikgd2lsbAorICAgICAg
c2V0IHRoZSBtYXNrIGNvcnJlY3RseSB3aGVuIHdlIGZpbmFsbHkgZ2V0IHRoZXJlLiAqLworICAg
VkdfKHNpZ2ZpbGxzZXQpKCZibG9ja2FsbCk7CisgICBWR18oc2lncHJvY21hc2spKFZLSV9TSUdf
U0VUTUFTSywgJmJsb2NrYWxsLCBOVUxMKTsKKwogICAgaWYgKHJldXNlKSB7CiAgICAgICAgLy8g
VGhpcyB0aHJlYWQgYWxyZWFkeSBleGlzdHM7IHdlJ3JlIG1lcmVseSByZS1lbnRlcmluZyAKICAg
ICAgICAvLyBhZnRlciBsZWF2aW5nIHZpYSB3b3JrcV9vcHMoV1FPUFNfVEhSRUFEX1JFVFVSTiku
IApAQCAtNDE4LDYgKzQzNCwxNSBAQAogICAgaWYgKHJldXNlKSB7CiAgICAgICAvLyBDb250aW51
ZSBWJ3MgdGhyZWFkIGJhY2sgaW4gdGhlIHNjaGVkdWxlci4gCiAgICAgICAvLyBUaGUgY2xpZW50
IHRocmVhZCBpcyBvZiBjb3Vyc2UgaW4gYW5vdGhlciBsb2NhdGlvbiBlbnRpcmVseS4KKworICAg
ICAgLyogRHJvcCB0aGUgbG9jayBiZWZvcmUgZ29pbmcgaW50bworICAgICAgICAgTUxfKHdxdGhy
ZWFkX2NvbnRpbnVlX05PUkVUVVJOKS4gIFRoZSBsYXR0ZXIgd2lsbCBpbW1lZGlhdGVseQorICAg
ICAgICAgYXR0ZW1wdCB0byByZWFjcXVpcmUgaXQgaW4gbm9uLUxMIG1vZGUsIHdoaWNoIGlzIGEg
Yml0CisgICAgICAgICB3YXN0ZWZ1bCBidXQgSSBkb24ndCB0aGluayBpcyBoYXJtZnVsLiAgQSBi
ZXR0ZXIgc29sdXRpb24KKyAgICAgICAgIHdvdWxkIGJlIHRvIG5vdCBkcm9wIHRoZSBsb2NrIGJ1
dCBpbnN0ZWFkICJ1cGdyYWRlIiBpdCBmcm9tIGEKKyAgICAgICAgIExMIGxvY2sgdG8gYSBmdWxs
IGxvY2ssIGJ1dCB0aGF0J3MgdG9vIG11Y2ggbGlrZSBoYXJkIHdvcmsKKyAgICAgICAgIHJpZ2h0
IG5vdy4gKi8KKyAgICAgIFZHXyhyZWxlYXNlX0JpZ0xvY2tfTEwpKCJ3cXRocmVhZF9oaWphY2so
MSkiKTsKICAgICAgIE1MXyh3cXRocmVhZF9jb250aW51ZV9OT1JFVFVSTikodHN0LT50aWQpOwog
ICAgfSAKICAgIGVsc2UgewpAQCAtNDUwLDYgKzQ3NSwxNiBAQAogICAgICAgVkdfKGFtX2RvX3N5
bmNfY2hlY2spKCJhZnRlciIsICJ3cXRocmVhZF9oaWphY2siLCAwKTsKIAogICAgICAgLy8gR28h
CisgICAgICAvKiBTYW1lIGNvbW1lbnRzIGFzIHRoZSAncmVsZWFzZScgaW4gdGhlIHRoZW4tY2xh
dXNlLgorICAgICAgICAgc3RhcnRfdGhyZWFkX05PUkVUVVJOIGNhbGxzIHJ1bl90aHJlYWRfTk9S
RVRVUk4gY2FsbHMKKyAgICAgICAgIHRocmVhZF93cmFwcGVyIHdoaWNoIGFjcXVpcmVzIHRoZSBs
b2NrIGJlZm9yZSBjb250aW51aW5nLgorICAgICAgICAgTGV0J3MgaG9wZSBub3RoaW5nIG5vbi10
aHJlYWQtbG9jYWwgaGFwcGVucyB1bnRpbCB0aGF0IHBvaW50LgorCisgICAgICAgICBEREQ6IEkg
dGhpbmsgdGhpcyBpcyBwbGFpbiB3cm9uZyAuLiBpZiB3ZSBnZXQgdG8KKyAgICAgICAgIHRocmVh
ZF93cmFwcGVyIG5vdCBob2xkaW5nIHRoZSBsb2NrLCBhbmQgc29tZW9uZSBoYXMgcmVjeWNsZWQK
KyAgICAgICAgIHRoaXMgdGhyZWFkIHNsb3QgaW4gdGhlIG1lYW50aW1lLCB3ZSdyZSBob3NlZC4g
IElzIHRoYXQKKyAgICAgICAgIHBvc3NpYmxlLCB0aG91Z2g/ICovCisgICAgICBWR18ocmVsZWFz
ZV9CaWdMb2NrX0xMKSgid3F0aHJlYWRfaGlqYWNrKDIpIik7CiAgICAgICBjYWxsX29uX25ld19z
dGFja18wXzEodHN0LT5vc19zdGF0ZS52YWxncmluZF9zdGFja19pbml0X1NQLCAwLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydF90aHJlYWRfTk9SRVRVUk4sIChXb3JkKXRzdCk7
CiAgICB9CkluZGV4OiBjb3JlZ3JpbmQvbV9zeXN3cmFwL3ByaXZfc3lzd3JhcC1nZW5lcmljLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gY29yZWdyaW5kL21fc3lzd3JhcC9wcml2X3N5c3dyYXAtZ2VuZXJpYy5o
CShyZXZpc2lvbiAxMDg4OCkKKysrIGNvcmVncmluZC9tX3N5c3dyYXAvcHJpdl9zeXN3cmFwLWdl
bmVyaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBACiBERUNMX1RFTVBMQVRF
KGdlbmVyaWMsIHN5c19nZXRybGltaXQpOyAgICAgICAgICAgICAvLyAqICg/KQogREVDTF9URU1Q
TEFURShnZW5lcmljLCBzeXNfdHJ1bmNhdGU2NCk7ICAgICAgICAgICAgLy8gJSUgKFA/KQogREVD
TF9URU1QTEFURShnZW5lcmljLCBzeXNfZnRydW5jYXRlNjQpOyAgICAgICAgICAgLy8gJSUgKFA/
KQotREVDTF9URU1QTEFURShnZW5lcmljLCBzeXNfbGNob3duKTsgICAgICAgICAgICAgICAgLy8g
KiAoTD8pCitERUNMX1RFTVBMQVRFKGdlbmVyaWMsIHN5c19sY2hvd24pOyAgICAgICAgICAgICAg
ICAvLyAqIChMPykgRnJlZUJTRCAzLjAKIERFQ0xfVEVNUExBVEUoZ2VuZXJpYywgc3lzX21pbmNv
cmUpOyAgICAgICAgICAgICAgIC8vICogTD8KIERFQ0xfVEVNUExBVEUoZ2VuZXJpYywgc3lzX2dl
dGRlbnRzNjQpOyAgICAgICAgICAgIC8vICogKFNWcjQsU1ZJRD8pCiBERUNMX1RFTVBMQVRFKGdl
bmVyaWMsIHN5c19zdGF0ZnM2NCk7ICAgICAgICAgICAgICAvLyAqICg/KQpJbmRleDogY29yZWdy
aW5kL21fc3lzd3JhcC9zeXN3cmFwLW1haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb3JlZ3JpbmQvbV9z
eXN3cmFwL3N5c3dyYXAtbWFpbi5jCShyZXZpc2lvbiAxMDg4OCkKKysrIGNvcmVncmluZC9tX3N5
c3dyYXAvc3lzd3JhcC1tYWluLmMJKHdvcmtpbmcgY29weSkKQEAgLTExNTUsNyArMTE1NSw3IEBA
CiAjICAgIGVycm9yIFVua25vd24gT1MKICMgIGVuZGlmCiAKLSAgIHJldHVybiBzeXMgPT0gTlVM
TCAgPyAmYmFkX3N5cyAgOiBzeXM7CisgICByZXR1cm4gKHN5cyAmJiBzeXMtPmJlZm9yZSkgPyBz
eXMgOiAmYmFkX3N5czsKIH0KIAogCkluZGV4OiBjb3JlZ3JpbmQvbV9zeXN3cmFwL3N5c3dyYXAt
ZGFyd2luLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWRhcndp
bi5jCShyZXZpc2lvbiAxMDg4OCkKKysrIGNvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1kYXJ3
aW4uYwkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBAQAogI2luY2x1ZGUgPG1hY2gvbWFj
aC5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF92bS5oPgogI2luY2x1ZGUgPHNlbWFwaG9yZS5oPgot
I2luY2x1ZGUgPHN5cy9hY2wuaD4gICAvKiBzdHJ1Y3Qga2F1dGhfZmlsZXNlYyAqLwogLyogLS0t
ICEhISAtLS0gRVhURVJOQUwgSEVBREVSUyBlbmQgLS0tICEhISAtLS0gKi8KIAogI2RlZmluZSBt
c2doX3JlcXVlc3RfcG9ydCAgICAgIG1zZ2hfcmVtb3RlX3BvcnQKQEAgLTEyNDAsNyArMTIzOSw5
IEBACiB7CiAgICBQUklOVCgiZnV0aW1lcyAoICVsZCwgJSNseCApIiwgQVJHMSxBUkcyKTsKICAg
IFBSRV9SRUdfUkVBRDIobG9uZywgImZ1dGltZXMiLCBpbnQsIGZkLCBzdHJ1Y3QgdGltZXZhbCAq
LCB0dnApOwotICAgaWYgKEFSRzIgIT0gMCkgeworICAgaWYgKCFNTF8oZmRfYWxsb3dlZCkoQVJH
MSwgImZ1dGltZXMiLCB0aWQsIEZhbHNlKSkgeworICAgICAgU0VUX1NUQVRVU19GYWlsdXJlKCBW
S0lfRUJBREYgKTsKKyAgIH0gZWxzZSBpZiAoQVJHMiAhPSAwKSB7CiAgICAgICBQUkVfdGltZXZh
bF9SRUFEKCAiZnV0aW1lcyh0dnBbMF0pIiwgQVJHMiApOwogICAgICAgUFJFX3RpbWV2YWxfUkVB
RCggImZ1dGltZXModHZwWzFdKSIsIEFSRzIrc2l6ZW9mKHN0cnVjdCB2a2lfdGltZXZhbCkgKTsK
ICAgIH0KQEAgLTE2MzUsMTAgKzE2MzYsMTIgQEAKIHsKICAgIFBSSU5UKCJrZGVidWdfdHJhY2Uo
JWxkLCAlbGQsICVsZCwgJWxkLCAlbGQsICVsZCkiLCAKICAgICAgICAgIEFSRzEsIEFSRzIsIEFS
RzMsIEFSRzQsIEFSRzUsIEFSRzYpOworICAgLyoKKyAgICAgRG9uJ3QgY2hlY2sgYW55dGhpbmcg
LSBzb21lIGNsaWVudHMgcGFzcyBmZXdlciBhcmd1bWVudHMuCiAgICBQUkVfUkVHX1JFQUQ2KGxv
bmcsICJrZGVidWdfdHJhY2UiLCAKICAgICAgICAgICAgICAgICAgaW50LCJjb2RlIiwgaW50LCJh
cmcxIiwgaW50LCJhcmcyIiwgCiAgICAgICAgICAgICAgICAgIGludCwiYXJnMyIsIGludCwiYXJn
NCIsIGludCwiYXJnNSIpOwotICAgLy8gR3JQIGZpeG1lIGFueXRoaW5nIGVsc2U/CisgICAqLwog
fQogCiAKQEAgLTIwMTgsNyArMjAyMSw3IEBACiAgICAgICBpcyBqdXN0IHdheSB3cm9uZy4gIFtU
aGUgdHJvdWJsZSBpcyB3aXRoIHRoZSBzaXplLCB3aGljaCBkZXBlbmRzIG9uIGEKICAgICAgIG5v
bi10cml2YWwga2VybmVsIGNvbXB1dGF0aW9uXSAqLwogICAgUFJFX01FTV9SRUFEKCAiZmNobW9k
X2V4dGVuZGVkKHhzZWN1cml0eSkiLCBBUkc1LCAKLSAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0
cnVjdCBrYXV0aF9maWxlc2VjKSApOworICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZr
aV9rYXV0aF9maWxlc2VjKSApOwogfQogCiBQUkUoY2htb2RfZXh0ZW5kZWQpCkBAIC0yMDM4LDcg
KzIwNDEsNyBAQAogICAgICAgaXMganVzdCB3YXkgd3JvbmcuICBbVGhlIHRyb3VibGUgaXMgd2l0
aCB0aGUgc2l6ZSwgd2hpY2ggZGVwZW5kcyBvbiBhCiAgICAgICBub24tdHJpdmFsIGtlcm5lbCBj
b21wdXRhdGlvbl0gKi8KICAgIFBSRV9NRU1fUkVBRCggImNobW9kX2V4dGVuZGVkKHhzZWN1cml0
eSkiLCBBUkc1LCAKLSAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBrYXV0aF9maWxlc2Vj
KSApOworICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZraV9rYXV0aF9maWxlc2VjKSAp
OwogfQogCiAKQEAgLTIyNDEsNiArMjI0NCw5IEBACiAgICB9IGF0dHJzcGVjOwogICAgc3RhdGlj
IGNvbnN0IGF0dHJzcGVjIGNvbW1vbmF0dHJbXSA9IHsKICAgICAgIC8vIFRoaXMgb3JkZXIgaXMg
aW1wb3J0YW50LgorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICAgICB7IEFUVFJf
Q01OX1JFVFVSTkVEX0FUVFJTLCAgc2l6ZW9mKGF0dHJpYnV0ZV9zZXRfdCkgfSwgCisjZW5kaWYK
ICAgICAgIHsgQVRUUl9DTU5fTkFNRSwgICAgICAgICAgICAtMSB9LCAKICAgICAgIHsgQVRUUl9D
TU5fREVWSUQsICAgICAgICAgICBzaXplb2YoZGV2X3QpIH0sIAogICAgICAgeyBBVFRSX0NNTl9G
U0lELCAgICAgICAgICAgIHNpemVvZihmc2lkX3QpIH0sIApAQCAtMjI2Myw4ICsyMjY5LDE0IEBA
CiAgICAgICB7IEFUVFJfQ01OX05BTUVEQVRUUkxJU1QsICAgLTEgfSwgCiAgICAgICB7IEFUVFJf
Q01OX0ZMQUdTLCAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSB9LCAKICAgICAgIHsgQVRUUl9D
TU5fVVNFUkFDQ0VTUywgICAgICBzaXplb2YodWludDMyX3QpIH0sIAorICAgICAgeyBBVFRSX0NN
Tl9FWFRFTkRFRF9TRUNVUklUWSwgLTEgfSwgCisgICAgICB7IEFUVFJfQ01OX1VVSUQsICAgICAg
ICAgICAgc2l6ZW9mKGd1aWRfdCkgfSwgCisgICAgICB7IEFUVFJfQ01OX0dSUFVVSUQsICAgICAg
ICAgc2l6ZW9mKGd1aWRfdCkgfSwgCiAgICAgICB7IEFUVFJfQ01OX0ZJTEVJRCwgICAgICAgICAg
c2l6ZW9mKHVpbnQ2NF90KSB9LCAKICAgICAgIHsgQVRUUl9DTU5fUEFSRU5USUQsICAgICAgICBz
aXplb2YodWludDY0X3QpIH0sIAorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICAg
ICB7IEFUVFJfQ01OX0ZVTExQQVRILCAgICAgICAgLTEgfSwgCisjZW5kaWYKICAgICAgIHsgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAwIH0KICAgIH07CiAgICBzdGF0aWMgY29uc3QgYXR0cnNw
ZWMgdm9sYXR0cltdID0gewpAQCAtMjI4OCw2ICsyMzAwLDkgQEAKICAgICAgIHsgQVRUUl9WT0xf
TU9VTlRFRERFVklDRSwgICAtMSB9LCAKICAgICAgIHsgQVRUUl9WT0xfRU5DT0RJTkdTVVNFRCwg
ICBzaXplb2YodWludDY0X3QpIH0sIAogICAgICAgeyBBVFRSX1ZPTF9DQVBBQklMSVRJRVMsICAg
IHNpemVvZih2b2xfY2FwYWJpbGl0aWVzX2F0dHJfdCkgfSwgCisjaWYgREFSV0lOX1ZFUlMgPj0g
REFSV0lOXzEwXzYKKyAgICAgIHsgQVRUUl9WT0xfVVVJRCwgICAgICAgICAgICBzaXplb2YodXVp
ZF90KSB9LCAKKyNlbmRpZgogICAgICAgeyBBVFRSX1ZPTF9BVFRSSUJVVEVTLCAgICAgIHNpemVv
Zih2b2xfYXR0cmlidXRlc19hdHRyX3QpIH0sIAogICAgICAgeyAwLCAgICAgICAgICAgICAgICAg
ICAgICAgIDAgfQogICAgfTsKQEAgLTIzMzYsNiArMjM1MSwxNiBAQAogICAgZCA9IGF0dHJCdWY7
CiAgICBkZW5kID0gZCArIGF0dHJCdWZTaXplOwogCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lO
XzEwXzYKKyAgIC8vIEFUVFJfQ01OX1JFVFVSTkVEX0FUVFJTIHRlbGxzIHVzIHdoYXQncyByZWFs
bHkgaGVyZSwgaWYgc2V0CisgICBpZiAoYVswXSAmIEFUVFJfQ01OX1JFVFVSTkVEX0FUVFJTKSB7
CisgICAgICAgLy8gZml4bWUgcmFuZ2UgY2hlY2sgdGhpcz8KKyAgICAgICBhWzBdICY9IH5BVFRS
X0NNTl9SRVRVUk5FRF9BVFRSUzsKKyAgICAgICBmbih0aWQsIGQsIHNpemVvZihhdHRyaWJ1dGVf
c2V0X3QpKTsKKyAgICAgICBWR18obWVtY3B5KShhLCBkLCBzaXplb2YoYSkpOworICAgfQorI2Vu
ZGlmCisKICAgIGZvciAoZyA9IDA7IGcgPCA1OyBnKyspIHsKICAgICAgIGZvciAoaSA9IDA7IGF0
dHJkZWZzW2ddW2ldLmF0dHJCaXQ7IGkrKykgewogICAgICAgICAgdWludDMyX3QgYml0ID0gYXR0
cmRlZnNbZ11baV0uYXR0ckJpdDsKQEAgLTIzOTgsMTAgKzI0MjMsMTUgQEAKIFBPU1QoZ2V0YXR0
cmxpc3QpIAogewogICAgaWYgKEFSRzQgPiBzaXplb2YodmtpX3VpbnQzMl90KSkgewotICAgICAg
Ly8gYXR0ckJ1ZiBpcyB1aW50MzJfdCBieXRlcyB3cml0dGVuIGZvbGxvd2VkIGJ5IGF0dHIgZGF0
YQorICAgICAgLy8gYXR0ckJ1ZiBpcyB1aW50MzJfdCBzaXplIGZvbGxvd2VkIGJ5IGF0dHIgZGF0
YQogICAgICAgdmtpX3VpbnQzMl90ICpzaXplcCA9ICh2a2lfdWludDMyX3QgKilBUkczOwogICAg
ICAgUE9TVF9NRU1fV1JJVEUoQVJHMywgc2l6ZW9mKHZraV91aW50MzJfdCkpOwotICAgICAgc2Nh
bl9hdHRybGlzdCh0aWQsIChzdHJ1Y3QgdmtpX2F0dHJsaXN0ICopQVJHMiwgc2l6ZXArMSwgKnNp
emVwLCAmZ2V0MWF0dHIpOworICAgICAgaWYgKEFSRzUgJiBGU09QVF9SRVBPUlRfRlVMTFNJWkUp
IHsKKyAgICAgICAgIC8vICpzaXplcCBpcyBieXRlcyByZXF1aXJlZCBmb3IgcmV0dXJuIHZhbHVl
LCBpbmNsdWRpbmcgKnNpemVwCisgICAgICB9IGVsc2UgeworICAgICAgICAgLy8gKnNpemVwIGlz
IGFjdHVhbCBieXRlcyByZXR1cm5lZCwgaW5jbHVkaW5nICpzaXplcAorICAgICAgfQorICAgICAg
c2Nhbl9hdHRybGlzdCh0aWQsIChzdHJ1Y3QgdmtpX2F0dHJsaXN0ICopQVJHMiwgc2l6ZXArMSwg
TUlOKCpzaXplcCwgQVJHNCksICZnZXQxYXR0cik7CiAgICB9CiB9CiAKQEAgLTI0NTcsMTAgKzI0
ODcsMzYgQEAKIAogICAgUE9TVF9NRU1fV1JJVEUoQVJHMywgcCAtIChjaGFyICopQVJHMyk7CiAK
LSAgIFBSSU5UKCJnb3QgJWQgcmVjb3JkcywgJWQvJWx1IGJ5dGVzXG4iLCBjb3VudCwgcC0oY2hh
ciAqKUFSRzMsIEFSRzQpOworICAgUFJJTlQoImdvdCAlZCByZWNvcmRzLCAlbGQvJWx1IGJ5dGVz
XG4iLCBjb3VudCwgcC0oY2hhciAqKUFSRzMsIEFSRzQpOwogfQogCiAKK1BSRShmc2dldHBhdGgp
Cit7CisjaWYgVkdfV09SRFNJWkUgPT0gNAorICAgUFJJTlQoImZzZ2V0cGF0aCglI2x4LCAlbGQs
ICUjbHggeyVsdSwlbHV9LCAlbGx1KSIsIAorICAgICAgICAgQVJHMSwgQVJHMiwgQVJHMywgKCh1
bnNpZ25lZCBpbnQgKilBUkczKVswXSwgKCh1bnNpZ25lZCBpbnQgKilBUkczKVsxXSwgTE9ISTY0
KEFSRzQsIEFSRzUpKTsKKyAgIFBSRV9SRUdfUkVBRDUoc3NpemVfdCwgImZzZ2V0cGF0aCIsIAor
ICAgICAgICAgICAgICAgICB2b2lkKiwiYnVmIiwgc2l6ZV90LCJidWZzaXplIiwgCisgICAgICAg
ICAgICAgICAgIGZzaWRfdCAqLCJmc2lkIiwKKyAgICAgICAgICAgICAgICAgdmtpX3VpbnQzMl90
LCAib2JqaWRfbG93MzIiLCB2a2lfdWludDMyX3QsICJvYmppZF9oaWdoMzIiKTsKKyNlbHNlCisg
ICBQUklOVCgiZnNnZXRwYXRoKCUjbHgsICVsZCwgJSNseCB7JXUsJXV9LCAlbGx1KSIsIAorICAg
ICAgICAgQVJHMSwgQVJHMiwgQVJHMywgKCh1bnNpZ25lZCBpbnQgKilBUkczKVswXSwgKCh1bnNp
Z25lZCBpbnQgKilBUkczKVsxXSwgQVJHNCk7CisgICBQUkVfUkVHX1JFQUQ0KHNzaXplX3QsICJm
c2dldHBhdGgiLCAKKyAgICAgICAgICAgICAgICAgdm9pZCosImJ1ZiIsIHNpemVfdCwiYnVmc2l6
ZSIsIAorICAgICAgICAgICAgICAgICBmc2lkX3QgKiwiZnNpZCIsIHVpbnQ2NF90LCJvYmppZCIp
OworI2VuZGlmCisgICBQUkVfTUVNX1JFQUQoImZzZ2V0cGF0aChmc2lkKSIsIEFSRzMsIHNpemVv
Zihmc2lkX3QpKTsKKyAgIFBSRV9NRU1fV1JJVEUoImZzZ2V0cGF0aChidWYpIiwgQVJHMSwgQVJH
Mik7Cit9CisKK1BPU1QoZnNnZXRwYXRoKQoreworICAgUE9TVF9NRU1fV1JJVEUoQVJHMSwgUkVT
KTsKK30KKworCiBQUkUoZXhjaGFuZ2VkYXRhKQogewogICAgUFJJTlQoImV4Y2hhbmdlZGF0YSgl
I2x4KCVzKSwgJSNseCglcyksICVsdSkiLApAQCAtMzI0Miw2ICszMjk4LDkgQEAKICAgIGNhc2Ug
VktJX0FfU0VUQ0xBU1M6CiAgICBjYXNlIFZLSV9BX1NFVFBNQVNLOgogICAgY2FzZSBWS0lfQV9T
RVRGU0laRToKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorICAgY2FzZSBWS0lfQV9T
RU5EVFJJR0dFUjoKKyNlbmRpZgogICAgICAgLy8ga2VybmVsIHJlYWRzIGRhdGEuLmRhdGErbGVu
Z3RoCiAgICAgICBQUkVfTUVNX1JFQUQoImF1ZGl0b24oZGF0YSkiLCBBUkcyLCBBUkczKTsKICAg
ICAgIGJyZWFrOwpAQCAtMzI2MCw2ICszMzE5LDkgQEAKICAgIGNhc2UgVktJX0FfR0VUQ0xBU1M6
CiAgICBjYXNlIFZLSV9BX0dFVFBJTkZPOgogICAgY2FzZSBWS0lfQV9HRVRQSU5GT19BRERSOgor
I2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICBjYXNlIFZLSV9BX0dFVFNJTkZPX0FE
RFI6CisjZW5kaWYKICAgICAgIC8vIGtlcm5lbCByZWFkcyBhbmQgd3JpdGVzIGRhdGEuLmRhdGEr
bGVuZ3RoCiAgICAgICAvLyBHclAgZml4bWUgYmUgcHJlY2lzZSBhYm91dCB3aGF0IGdldHMgcmVh
ZCBhbmQgd3JpdHRlbgogICAgICAgUFJFX01FTV9SRUFEKCJhdWRpdG9uKGRhdGEpIiwgQVJHMiwg
QVJHMyk7CkBAIC0zMjkzLDYgKzMzNTUsOSBAQAogICAgY2FzZSBWS0lfQV9TRVRDTEFTUzoKICAg
IGNhc2UgVktJX0FfU0VUUE1BU0s6CiAgICBjYXNlIFZLSV9BX1NFVEZTSVpFOgorI2lmIERBUldJ
Tl9WRVJTID49IERBUldJTl8xMF82CisgICBjYXNlIFZLSV9BX1NFTkRUUklHR0VSOgorI2VuZGlm
CiAgICAgICAvLyBrZXJuZWwgcmVhZHMgZGF0YS4uZGF0YStsZW5ndGgKICAgICAgIGJyZWFrOwog
CkBAIC0zMzEwLDYgKzMzNzUsOSBAQAogICAgY2FzZSBWS0lfQV9HRVRDTEFTUzoKICAgIGNhc2Ug
VktJX0FfR0VUUElORk86CiAgICBjYXNlIFZLSV9BX0dFVFBJTkZPX0FERFI6CisjaWYgREFSV0lO
X1ZFUlMgPj0gREFSV0lOXzEwXzYKKyAgIGNhc2UgVktJX0FfR0VUU0lORk9fQUREUjoKKyNlbmRp
ZgogICAgICAgLy8ga2VybmVsIHJlYWRzIGFuZCB3cml0ZXMgZGF0YS4uZGF0YStsZW5ndGgKICAg
ICAgIC8vIEdyUCBmaXhtZSBiZSBwcmVjaXNlIGFib3V0IHdoYXQgZ2V0cyByZWFkIGFuZCB3cml0
dGVuCiAgICAgICBQT1NUX01FTV9XUklURShBUkcyLCBBUkczKTsKQEAgLTQzNzgsNiArNDQ0Niw1
MSBAQAogfQogCiAKK1BSRShtYWNoX3BvcnRfbW92ZV9tZW1iZXIpCit7CisjcHJhZ21hIHBhY2so
NCkKKyAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgICAgIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7
CisgICAgICAgIE5EUl9yZWNvcmRfdCBORFI7CisgICAgICAgIG1hY2hfcG9ydF9uYW1lX3QgbWVt
YmVyOworICAgICAgICBtYWNoX3BvcnRfbmFtZV90IGFmdGVyOworICAgIH0gUmVxdWVzdDsKKyNw
cmFnbWEgcGFjaygpCisKKyAgICBSZXF1ZXN0ICpyZXEgPSAoUmVxdWVzdCAqKUFSRzE7CisKKyAg
ICBQUklOVCgibWFjaF9wb3J0X21vdmVfbWVtYmVyKCVzLCAlcywgJXMpIiwgCisgICAgICAgICAg
bmFtZV9mb3JfcG9ydChNQUNIX1JFTU9URSksIAorICAgICAgICAgIG5hbWVfZm9yX3BvcnQocmVx
LT5tZW1iZXIpLCAKKyAgICAgICAgICBuYW1lX2Zvcl9wb3J0KHJlcS0+YWZ0ZXIpKTsKKyAgICAv
KgorICAgIE1BQ0hfQVJHKG1hY2hfcG9ydF9tb3ZlX21lbWJlci5tZW1iZXIpID0gcmVxLT5tZW1i
ZXI7CisgICAgTUFDSF9BUkcobWFjaF9wb3J0X21vdmVfbWVtYmVyLmFmdGVyKSA9IHJlcS0+YWZ0
ZXI7CisgICAgKi8KKyAgICBBRlRFUiA9IFBPU1RfRk4obWFjaF9wb3J0X21vdmVfbWVtYmVyKTsK
K30KKworUE9TVChtYWNoX3BvcnRfbW92ZV9tZW1iZXIpCit7CisjcHJhZ21hIHBhY2soNCkKKyAg
IHR5cGVkZWYgc3RydWN0IHsKKyAgICAgIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CisgICAgICBO
RFJfcmVjb3JkX3QgTkRSOworICAgICAga2Vybl9yZXR1cm5fdCBSZXRDb2RlOworICAgICAgbWFj
aF9tc2dfdHJhaWxlcl90IHRyYWlsZXI7CisgICB9IFJlcGx5OworI3ByYWdtYSBwYWNrKCkKKwor
ICAgUmVwbHkgKnJlcGx5ID0gKFJlcGx5ICopQVJHMTsKKworICAgaWYgKCFyZXBseS0+UmV0Q29k
ZSkgeworICAgICAgLy8gZml4bWUgcG9ydCBzZXQgdHJhY2tlcj8KKyAgIH0gZWxzZSB7CisgICAg
ICBQUklOVCgibWlnIHJldHVybiAlZCIsIHJlcGx5LT5SZXRDb2RlKTsKKyAgIH0KK30KKworCiBQ
UkUobWFjaF9wb3J0X2Rlc3Ryb3kpCiB7CiAjcHJhZ21hIHBhY2soNCkKQEAgLTQ0OTgsNiArNDYx
MSwzNCBAQAogfQogCiAKK1BSRShtYWNoX3BvcnRfZXh0cmFjdF9yaWdodCkKK3sKKyNwcmFnbWEg
cGFjayg0KQorICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgbWFjaF9tc2dfaGVhZGVyX3QgSGVh
ZDsKKyAgICAgIE5EUl9yZWNvcmRfdCBORFI7CisgICAgICBtYWNoX3BvcnRfbmFtZV90IG5hbWU7
CisgICAgICBtYWNoX21zZ190eXBlX25hbWVfdCBtc2d0X25hbWU7CisgICB9IFJlcXVlc3Q7Cisj
cHJhZ21hIHBhY2soKQorCisgICBSZXF1ZXN0ICpyZXEgPSAoUmVxdWVzdCAqKUFSRzE7CisgICAK
KyAgIFBSSU5UKCJtYWNoX3BvcnRfZXh0cmFjdF9yaWdodCglcywgJXMsICVkKSIsIAorICAgICAg
ICAgbmFtZV9mb3JfcG9ydChNQUNIX1JFTU9URSksIAorICAgICAgICAgbmFtZV9mb3JfcG9ydChy
ZXEtPm5hbWUpLCByZXEtPm1zZ3RfbmFtZSk7CisgICAKKyAgIEFGVEVSID0gUE9TVF9GTihtYWNo
X3BvcnRfZXh0cmFjdF9yaWdodCk7CisgICAKKyAgIC8vIGZpeG1lIHBvcnQgdHJhY2tlcj8KK30K
KworUE9TVChtYWNoX3BvcnRfZXh0cmFjdF9yaWdodCkKK3sKKyAgIC8vIGZpeG1lIGltcG9ydF9j
b21wbGV4X21lc3NhZ2UgaGFuZGxlcyB0aGUgcmV0dXJuZWQgcmVzdWx0LCByaWdodD8KK30KKwor
CiBQUkUobWFjaF9wb3J0X2dldF9hdHRyaWJ1dGVzKQogewogI3ByYWdtYSBwYWNrKDQpCkBAIC02
MDg2LDYgKzYyMjcsNyBAQAogCiAgICAvLyBHclAgZml4bWUgc2VtYXBob3JlIGRlc3Ryb3kgbmVl
ZGVkIHdoZW4gdGhyZWFkIGNyZWF0aW9uIGZhaWxzCiAgICAvLyBHclAgZml4bWUgcHJvYmFibHkg
b3RoZXIgY2xlYW51cCB0b28KKyAgIC8vIEdyUCBmaXhtZSBzcGlubG9ja3MgbWlnaHQgYmUgZ29v
ZCBlbm91Z2g/CiAKICAgIC8vIERERDogSSdtIG5vdCBhdCBhbGwgc3VyZSB0aGlzIGlzIHRoZSBy
aWdodCBzcG90IGZvciB0aGlzLiAgSXQgcHJvYmFibHkKICAgIC8vIHNob3VsZCBiZSBpbiBwdGhy
ZWFkX2hpamFjayBpbnN0ZWFkLCBqdXN0IGJlZm9yZSB0aGUgY2FsbCB0bwpAQCAtNjIwNCwxMCAr
NjM0Niw2IEBACiB9CiAKIAotUE9TVCh0aHJlYWRfcG9saWN5KQotewotfQotCiBQUkUodGhyZWFk
X3BvbGljeSkKIHsKICAgIG1hY2hfbXNnX2hlYWRlcl90ICptaCA9IChtYWNoX21zZ19oZWFkZXJf
dCAqKUFSRzE7CkBAIC02MjIyLDcgKzYzNjAsMjUgQEAKICAgIEFGVEVSID0gUE9TVF9GTih0aHJl
YWRfcG9saWN5KTsKIH0KIAorUE9TVCh0aHJlYWRfcG9saWN5KQoreworfQogCisKK1BSRSh0aHJl
YWRfcG9saWN5X3NldCkKK3sKKyAgIG1hY2hfbXNnX2hlYWRlcl90ICptaCA9IChtYWNoX21zZ19o
ZWFkZXJfdCAqKUFSRzE7CisKKyAgIFBSSU5UKCJ0aHJlYWRfcG9saWN5X3NldCglcywgLi4uKSIs
IG5hbWVfZm9yX3BvcnQobWgtPm1zZ2hfcmVxdWVzdF9wb3J0KSk7CisKKyAgIEFGVEVSID0gUE9T
VF9GTih0aHJlYWRfcG9saWN5X3NldCk7Cit9CisKK1BPU1QodGhyZWFkX3BvbGljeV9zZXQpCit7
Cit9CisKKwogUFJFKHRocmVhZF9pbmZvKQogewogICAgbWFjaF9tc2dfaGVhZGVyX3QgKm1oID0g
KG1hY2hfbXNnX2hlYWRlcl90ICopQVJHMTsKQEAgLTY0NDksMTIgKzY2MDUsMTggQEAKICAgIGNh
c2UgMzIxMToKICAgICAgIENBTExfUFJFKG1hY2hfcG9ydF9nZXRfc2V0X3N0YXR1cyk7CiAgICAg
ICByZXR1cm47CisgICBjYXNlIDMyMTI6CisgICAgICBDQUxMX1BSRShtYWNoX3BvcnRfbW92ZV9t
ZW1iZXIpOworICAgICAgcmV0dXJuOwogICAgY2FzZSAzMjEzOgogICAgICAgQ0FMTF9QUkUobWFj
aF9wb3J0X3JlcXVlc3Rfbm90aWZpY2F0aW9uKTsKICAgICAgIHJldHVybjsKICAgIGNhc2UgMzIx
NDoKICAgICAgIENBTExfUFJFKG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQpOwogICAgICAgcmV0dXJu
OworICAgY2FzZSAzMjE1OgorICAgICAgQ0FMTF9QUkUobWFjaF9wb3J0X2V4dHJhY3RfcmlnaHQp
OworICAgICAgcmV0dXJuOwogICAgY2FzZSAzMjE3OgogICAgICAgQ0FMTF9QUkUobWFjaF9wb3J0
X2dldF9hdHRyaWJ1dGVzKTsKICAgICAgIHJldHVybjsKQEAgLTY1OTYsNiArNjc1OCw5IEBACiAg
ICBjYXNlIDM2MTY6IAogICAgICAgQ0FMTF9QUkUodGhyZWFkX3BvbGljeSk7CiAgICAgICByZXR1
cm47CisgICBjYXNlIDM2MTc6IAorICAgICAgQ0FMTF9QUkUodGhyZWFkX3BvbGljeV9zZXQpOwor
ICAgICAgcmV0dXJuOwogICAgZGVmYXVsdDoKICAgICAgIC8vIHVua25vd24gbWVzc2FnZSB0byBh
IHRocmVhZAogICAgICAgVkdfKHByaW50ZikoIlVOS05PV04gdGhyZWFkIG1lc3NhZ2UgW2lkICVk
LCB0byAlcywgcmVwbHkgMHgleF1cbiIsIApAQCAtNjc2MCw3ICs2OTI1LDcgQEAKIAogUE9TVCht
YWNoX21zZ191bmhhbmRsZWQpCiB7Ci0gICBNTF8oc3luY19tYXBwaW5ncykoImFmdGVyIiwgIm1h
Y2hfbXNnX3VuaGFuZGxlZCIsIDApOworICAgTUxfKHN5bmNfbWFwcGluZ3MpKCJhZnRlciIsICJt
YWNoX21zZ19yZWNlaXZlICh1bmhhbmRsZWQpIiwgMCk7CiB9CiAKIApAQCAtNjkwMCwxMSArNzA2
NSwxMiBAQAogfQogCiAKKyNpZiBEQVJXSU5fVkVSUyA8PSBEQVJXSU5fMTBfNQogUFJFKF9fc2Vt
d2FpdF9zaWduYWwpCiB7Ci0gICAvKiBhcmdzOiBpbnQgY29uZF9zZW0sIGludCBtdXRleF9zZW0s
Ci0gICAgICAgICAgICBpbnQgdGltZW91dCwgaW50IHJlbGF0aXZlLAotICAgICAgICAgICAgdGlt
ZV90IHR2X3NlYywgdGltZV90IHR2X25zZWMgKi8KKyAgIC8qIDEwLjUgYXJnczogaW50IGNvbmRf
c2VtLCBpbnQgbXV0ZXhfc2VtLAorICAgICAgICAgICAgICAgICBpbnQgdGltZW91dCwgaW50IHJl
bGF0aXZlLAorICAgICAgICAgICAgICAgICB0aW1lX3QgdHZfc2VjLCB0aW1lX3QgdHZfbnNlYyAq
LwogICAgUFJJTlQoIl9fc2Vtd2FpdF9zaWduYWwod2FpdCAlcywgc2lnbmFsICVzLCAlbGQsICVs
ZCwgJWxkczolbGRucykiLCAKICAgICAgICAgIG5hbWVfZm9yX3BvcnQoQVJHMSksIG5hbWVfZm9y
X3BvcnQoQVJHMiksIEFSRzMsIEFSRzQsIEFSRzUsIEFSRzYpOwogICAgUFJFX1JFR19SRUFENihs
b25nLCAiX19zZW13YWl0X3NpZ25hbCIsIApAQCAtNjkxNCw4ICs3MDgwLDMzIEBACiAKICAgICpm
bGFncyB8PSBTZk1heUJsb2NrOwogfQorI2Vsc2UKK1BSRShfX3NlbXdhaXRfc2lnbmFsKQorewor
ICAgLyogMTAuNSBhcmdzOiBpbnQgY29uZF9zZW0sIGludCBtdXRleF9zZW0sCisgICAgICAgICAg
ICAgICAgIGludCB0aW1lb3V0LCBpbnQgcmVsYXRpdmUsCisgICAgICAgICAgICAgICAgIGNvbnN0
IHRpbWVzcGVjICp0cyAqLworICAgUFJJTlQoIl9fc2Vtd2FpdF9zaWduYWwod2FpdCAlcywgc2ln
bmFsICVzLCAlbGQsICVsZCwgJSNseCkiLCAKKyAgICAgICAgIG5hbWVfZm9yX3BvcnQoQVJHMSks
IG5hbWVfZm9yX3BvcnQoQVJHMiksIEFSRzMsIEFSRzQsIEFSRzUpOworICAgUFJFX1JFR19SRUFE
NShpbnQsICJfX3NlbXdhaXRfc2lnbmFsIiwgCisgICAgICAgICAgICAgICAgIGludCxjb25kX3Nl
bSwgaW50LG11dGV4X3NlbSwKKyAgICAgICAgICAgICAgICAgaW50LHRpbWVvdXQsIGludCxyZWxh
dGl2ZSwgCisgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2a2lfdGltZXNwZWMgKix0cyk7
CisgICAKKyAgIGlmIChBUkc1KSBQUkVfTUVNX1JFQUQgKCJfX3NlbXdhaXRfc2lnbmFsKHRzKSIs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJHNSwgc2l6ZW9mKHN0cnVjdCB2a2lfdGlt
ZXNwZWMpKTsKKyAgIAorICAgKmZsYWdzIHw9IFNmTWF5QmxvY2s7Cit9CisjZW5kaWYKIAogCitQ
UkUoX190aHJlYWRfc2VsZmlkKQoreworICAgUFJJTlQoIl9fdGhyZWFkX3NlbGZpZCAoKSIpOwor
ICAgUFJFX1JFR19SRUFEMCh2a2lfdWludDY0X3QsICJfX3RocmVhZF9zZWxmaWQiKTsKK30KKwog
UFJFKHRhc2tfZm9yX3BpZCkKIHsKICAgIFBSSU5UKCJ0YXNrX2Zvcl9waWQoJXMsICVsZCwgJSNs
eCkiLCBuYW1lX2Zvcl9wb3J0KEFSRzEpLCBBUkcyLCBBUkczKTsKQEAgLTc0NjgsNyArNzY1OSwx
MSBAQAogICAgTUFDWF8oX19OUl9zaWdyZXR1cm4sICAgc2lncmV0dXJuKSwgCiAvLyBfX19fXyhf
X05SX2NodWQpLCAKICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDE4
NikpLCAgIC8vID8/PyAKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorLy8gX19fX18o
X19OUl9mZGF0YXN5bmMpLCAKKyNlbHNlCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCgxODcpKSwgICAvLyA/Pz8gCisjZW5kaWYKICAgIEdFTlhZKF9fTlJfc3RhdCwg
ICAgICAgIHN5c19uZXdzdGF0KSwgCiAgICBHRU5YWShfX05SX2ZzdGF0LCAgICAgICBzeXNfbmV3
ZnN0YXQpLCAKICAgIEdFTlhZKF9fTlJfbHN0YXQsICAgICAgIHN5c19uZXdsc3RhdCksIApAQCAt
NzQ5NSw4ICs3NjkwLDEzIEBACiAvLyBfX19fXyhfX05SX0FUUGdldHJlcSksIAogLy8gX19fX18o
X19OUl9BVFBnZXRyc3ApLCAKICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9V
TklYKDIxMykpLCAgIC8vIFJlc2VydmVkIGZvciBBcHBsZVRhbGsKKyNpZiBEQVJXSU5fVkVSUyA+
PSBEQVJXSU5fMTBfNgorICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgo
MjE0KSksICAgLy8gb2xkIGtxdWV1ZV9mcm9tX3BvcnRzZXRfbnAKKyAgIF9fX19fKFZHX0RBUldJ
Tl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIxNSkpLCAgIC8vIG9sZCBrcXVldWVfcG9ydHNldF9u
cAorI2Vsc2UKIC8vIF9fX19fKF9fTlJfa3F1ZXVlX2Zyb21fcG9ydHNldF9ucCksIAogLy8gX19f
X18oX19OUl9rcXVldWVfcG9ydHNldF9ucCksIAorI2VuZGlmCiAvLyBfX19fXyhfX05SX21rY29t
cGxleCksIAogLy8gX19fX18oX19OUl9zdGF0diksIAogLy8gX19fX18oX19OUl9sc3RhdHYpLCAK
QEAgLTc1MDksOCArNzcwOSwxMyBAQAogLy8gX19fX18oX19OUl9zZWFyY2hmcyksIAogICAgR0VO
WF8oX19OUl9kZWxldGUsICAgICAgc3lzX3VubGluayksIAogLy8gX19fX18oX19OUl9jb3B5Zmls
ZSksIAorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisvLyBfX19fXyhfX05SX2ZnZXRh
dHRybGlzdCksIAorLy8gX19fX18oX19OUl9mc2V0YXR0cmxpc3QpLCAKKyNlbHNlCiAgICBfX19f
XyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMjgpKSwgICAvLyA/PyAKICAgIF9f
X19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIyOSkpLCAgIC8vID8/IAorI2Vu
ZGlmCiAgICBHRU5YWShfX05SX3BvbGwsICAgICAgICBzeXNfcG9sbCksIAogICAgTUFDWF8oX19O
Ul93YXRjaGV2ZW50LCAgd2F0Y2hldmVudCksIAogICAgTUFDWFkoX19OUl93YWl0ZXZlbnQsICAg
d2FpdGV2ZW50KSwgCkBAIC03NTI2LDcgKzc3MzEsMTEgQEAKICAgIE1BQ1hZKF9fTlJfZnNjdGws
ICAgICAgIGZzY3RsKSwgCiAgICBNQUNYXyhfX05SX2luaXRncm91cHMsICBpbml0Z3JvdXBzKSwg
CiAgICBNQUNYWShfX05SX3Bvc2l4X3NwYXduLCBwb3NpeF9zcGF3biksIAorI2lmIERBUldJTl9W
RVJTID49IERBUldJTl8xMF82CisvLyBfX19fXyhfX05SX2Zmc2N0bCksIAorI2Vsc2UKICAgIF9f
X19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI0NSkpLCAgIC8vID8/PworI2Vu
ZGlmCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyNDYpKSwgICAv
LyA/Pz8KIC8vIF9fX19fKF9fTlJfbmZzY2xudCksIAogLy8gX19fX18oX19OUl9maG9wZW4pLCAK
QEAgLTc1NzcsMjMgKzc3ODYsMjcgQEAKIC8vIF9fX19fKF9fTlJfaWRlbnRpdHlzdmMpLCAKIC8v
IF9fX19fKF9fTlJfc2hhcmVkX3JlZ2lvbl9jaGVja19ucCksIAogLy8gX19fX18oX19OUl9zaGFy
ZWRfcmVnaW9uX21hcF9ucCksIAorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisvLyBf
X19fXyhfX05SX3ZtX3ByZXNzdXJlX21vbml0b3IpLCAKKyNlbHNlCiAgICBfX19fXyhWR19EQVJX
SU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyOTYpKSwgICAvLyBvbGQgbG9hZF9zaGFyZWRfZmls
ZSAKKyNlbmRpZgogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjk3
KSksICAgLy8gb2xkIHJlc2V0X3NoYXJlZF9maWxlIAogICAgX19fX18oVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMjk4KSksICAgLy8gb2xkIG5ld19zeXN0ZW1fc2hhcmVkX3JlZ2lv
bnMgCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyOTkpKSwgICAv
LyBvbGQgc2hhcmVkX3JlZ2lvbl9tYXBfZmlsZV9ucCAKICAgIF9fX19fKFZHX0RBUldJTl9TWVND
QUxMX0NPTlNUUlVDVF9VTklYKDMwMCkpLCAgIC8vIG9sZCBzaGFyZWRfcmVnaW9uX21ha2VfcHJp
dmF0ZV9ucAotLy8gX19fX18oX19OUl9fX3B0aHJlYWRfbXV0ZXhfZGVzdHJveSksIAotLy8gX19f
X18oX19OUl9fX3B0aHJlYWRfbXV0ZXhfaW5pdCksIAotLy8gX19fX18oX19OUl9fX3B0aHJlYWRf
bXV0ZXhfbG9jayksIAotLy8gX19fX18oX19OUl9fX3B0aHJlYWRfbXV0ZXhfdHJ5bG9jayksIAot
Ly8gX19fX18oX19OUl9fX3B0aHJlYWRfbXV0ZXhfdW5sb2NrKSwgCi0vLyBfX19fXyhfX05SX19f
cHRocmVhZF9jb25kX2luaXQpLCAKLS8vIF9fX19fKF9fTlJfX19wdGhyZWFkX2NvbmRfZGVzdHJv
eSksIAotLy8gX19fX18oX19OUl9fX3B0aHJlYWRfY29uZF9icm9hZGNhc3QpLCAKLS8vIF9fX19f
KF9fTlJfX19wdGhyZWFkX2NvbmRfc2lnbmFsKSwgCisgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FM
TF9DT05TVFJVQ1RfVU5JWCgzMDEpKSwgICAvLyA/Pz8KKyAgIF9fX19fKFZHX0RBUldJTl9TWVND
QUxMX0NPTlNUUlVDVF9VTklYKDMwMikpLCAgIC8vID8/PworICAgX19fX18oVkdfREFSV0lOX1NZ
U0NBTExfQ09OU1RSVUNUX1VOSVgoMzAzKSksICAgLy8gPz8/CisgICBfX19fXyhWR19EQVJXSU5f
U1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMDQpKSwgICAvLyA/Pz8KKyAgIF9fX19fKFZHX0RBUldJ
Tl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwNSkpLCAgIC8vID8/PworICAgX19fX18oVkdfREFS
V0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzA2KSksICAgLy8gPz8/CisgICBfX19fXyhWR19E
QVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMDcpKSwgICAvLyA/Pz8KKyAgIF9fX19fKFZH
X0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwOCkpLCAgIC8vID8/PworICAgX19fX18o
VkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzA5KSksICAgLy8gPz8/CiAvLyBfX19f
XyhfX05SX2dldHNpZCksIAogLy8gX19fX18oX19OUl9zZXR0aWRfd2l0aF9waWQpLCAKLS8vIF9f
X19fKF9fTlJfX19wdGhyZWFkX2NvbmRfdGltZWR3YWl0KSwgCisgICBfX19fXyhWR19EQVJXSU5f
U1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMTIpKSwgICAvLyA/Pz8KIC8vIF9fX19fKF9fTlJfYWlv
X2ZzeW5jKSwgCiAgICBNQUNYWShfX05SX2Fpb19yZXR1cm4sICAgICBhaW9fcmV0dXJuKSwgCiAg
ICBNQUNYXyhfX05SX2Fpb19zdXNwZW5kLCAgICBhaW9fc3VzcGVuZCksIApAQCAtNzYwMiw3ICs3
ODE1LDcgQEAKICAgIE1BQ1hZKF9fTlJfYWlvX3JlYWQsICAgICAgIGFpb19yZWFkKSwgCiAgICBN
QUNYXyhfX05SX2Fpb193cml0ZSwgICAgICBhaW9fd3JpdGUpLCAKIC8vIF9fX19fKF9fTlJfbGlv
X2xpc3RpbyksICAgLy8gMzIwCi0vLyBfX19fXyhfX05SX19fcHRocmVhZF9jb25kX3dhaXQpLCAK
KyAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMyMSkpLCAgIC8vID8/
PwogLy8gX19fX18oX19OUl9pb3BvbGljeXN5cyksIAogICAgX19fX18oVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMzIzKSksICAgLy8gPz8/CiAvLyBfX19fXyhfX05SX21sb2NrYWxs
KSwgCkBAIC03NjQ1LDE1ICs3ODU4LDIzIEBACiAgICBNQUNYXyhfX05SX2JzZHRocmVhZF90ZXJt
aW5hdGUsICBic2R0aHJlYWRfdGVybWluYXRlKSwgCiAgICBNQUNYWShfX05SX2txdWV1ZSwgICAg
ICBrcXVldWUpLCAKICAgIE1BQ1hZKF9fTlJfa2V2ZW50LCAgICAgIGtldmVudCksIAotLy8gX19f
X18oX19OUl9sY2hvd24pLCAKKyAgIEdFTlhfKF9fTlJfbGNob3duLCAgICAgIHN5c19sY2hvd24p
LCAKIC8vIF9fX19fKF9fTlJfc3RhY2tfc25hcHNob3QpLCAKICAgIE1BQ1hfKF9fTlJfYnNkdGhy
ZWFkX3JlZ2lzdGVyLCBic2R0aHJlYWRfcmVnaXN0ZXIpLCAKICAgIE1BQ1hfKF9fTlJfd29ya3Ff
b3BlbiwgIHdvcmtxX29wZW4pLCAKICAgIE1BQ1hZKF9fTlJfd29ya3Ffb3BzLCAgIHdvcmtxX29w
cyksIAorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisvLyBfX19fXyhfX05SX2tldmVu
dDY0KSwgCisjZWxzZQogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgo
MzY5KSksICAgLy8gPz8/CisjZW5kaWYKICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNU
UlVDVF9VTklYKDM3MCkpLCAgIC8vID8/PwogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09O
U1RSVUNUX1VOSVgoMzcxKSksICAgLy8gPz8/CisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEw
XzYKKyAgIE1BQ1hfKF9fTlJfX190aHJlYWRfc2VsZmlkLCBfX3RocmVhZF9zZWxmaWQpLCAKKyNl
bHNlCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzNzIpKSwgICAv
LyA/Pz8KKyNlbmRpZgogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgo
MzczKSksICAgLy8gPz8/CiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5J
WCgzNzQpKSwgICAvLyA/Pz8KICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9V
TklYKDM3NSkpLCAgIC8vID8/PwpAQCAtNzcwOSw2ICs3OTMwLDEyIEBACiAvLyBfX19fXyhfX05S
X19fbWFjX21vdW50KSwKIC8vIF9fX19fKF9fTlJfX19tYWNfZ2V0X21vdW50KSwKIC8vIF9fX19f
KF9fTlJfX19tYWNfZ2V0ZnNzdGF0KSwKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgor
ICAgTUFDWFkoX19OUl9mc2dldHBhdGgsIGZzZ2V0cGF0aCksIAorLy8gX19fX18oX19OUl9hdWRp
dF9zZXNzaW9uX3NlbGYpLAorLy8gX19fX18oX19OUl9hdWRpdF9zZXNzaW9uX2pvaW4pLAorI2Vu
ZGlmCisKIC8vIF9fX19fKF9fTlJfTUFYU1lTQ0FMTCkKICAgIE1BQ1hfKF9fTlJfREFSV0lOX0ZB
S0VfU0lHUkVUVVJOLCBGQUtFX1NJR1JFVFVSTikKIH07CkluZGV4OiBjb3JlZ3JpbmQvbV9tYWlu
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gY29yZWdyaW5kL21fbWFpbi5jCShyZXZpc2lvbiAxMDg4OCkKKysr
IGNvcmVncmluZC9tX21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtMTUxMCw3ICsxNTEwLDcgQEAK
ICAgIFZHXyhkb19zeXNjYWxsMikoX19OUl9tdW5tYXAsIDB4MDAwMDAwMDAsIDB4ZjAwMDAwMDAp
OwogIyBlbHNlCiAgICAvLyBvcGVuIHVwIGNsaWVudCBzcGFjZQotICAgVkdfKGRvX3N5c2NhbGwy
KShfX05SX211bm1hcCwgMHgxMDAwMDAwMDAsIDB4NzAwMDAwMDAwMDAwLTB4MTAwMDAwMDAwKTsK
KyAgIFZHXyhkb19zeXNjYWxsMikoX19OUl9tdW5tYXAsIDB4MTAwMDAwMDAwLCAweDdmZmY1MDAw
MDAwMC0weDEwMDAwMDAwMCk7CiAgICAvLyBvcGVuIHVwIGNsaWVudCBzdGFjayBhbmQgZHlsZAog
ICAgVkdfKGRvX3N5c2NhbGwyKShfX05SX211bm1hcCwgMHg3ZmZmNWMwMDAwMDAsIDB4NDAwMDAw
MCk7CiAjIGVuZGlmCkluZGV4OiBjb3JlZ3JpbmQvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
Y29yZWdyaW5kL01ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDg4OCkKKysrIGNvcmVncmluZC9NYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTExLDkgKzExMSwxMSBAQAogCiAjIEJlIGNhcmVm
dWwgdy5yLnQuIHBhcmVsbGVsIGJ1aWxkcy4gIFNlZSBzZWN0aW9uIDI3Ljkgb2YgdGhlIGF1dG9t
YWtlIGluZm8KICMgcGFnZSwgIkhhbmRsaW5nIFRvb2xzIHRoYXQgUHJvZHVjZSBtYW55IE91dHB1
dHMiLgotJChtYWNoX3VzZXJfc3Jjcyk6ICQobWFjaF9kZWZzKQorJChhYnNfYnVpbGRkaXIpL21f
bWFjaDogCisJbWtkaXIgLXAgJEAKKyQobWFjaF91c2VyX3NyY3MpOiAkKG1hY2hfZGVmcykgJChh
YnNfYnVpbGRkaXIpL21fbWFjaAogCShjZCBtX21hY2ggJiYgbWlnICQobWFjaF9kZWZzKSkKLSQo
bWFjaF9oZHJzKTogJChtYWNoX2RlZnMpICQobWFjaF91c2VyX3NyY3MpCiskKG1hY2hfaGRycyk6
ICQobWFjaF9kZWZzKSAkKG1hY2hfdXNlcl9zcmNzKSAkKGFic19idWlsZGRpcikvbV9tYWNoCiAJ
KGNkIG1fbWFjaCAmJiBtaWcgJChtYWNoX2RlZnMpKQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40091</attachid>
            <date>2010-01-21 11:38:01 +0000</date>
            <delta_ts>2010-01-21 11:38:01 +0000</delta_ts>
            <desc>Updated Greg&apos;s patch to apply to version 11026</desc>
            <filename>snow-leopard.11026.patch</filename>
            <type>text/plain</type>
            <size>36950</size>
            <attacher name="Alexander Potapenko">glider</attacher>
            
              <data encoding="base64">SW5kZXg6IE1ha2VmaWxlLmFsbC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBNYWtlZmlsZS5hbGwuYW0JKHJl
dmlzaW9uIDExMDI2KQorKysgTWFrZWZpbGUuYWxsLmFtCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2
ICs4OCw3IEBACiAJLVdwb2ludGVyLWFyaXRoIFwKIAktV3N0cmljdC1wcm90b3R5cGVzIFwKIAkt
V21pc3NpbmctZGVjbGFyYXRpb25zIFwKKwktV25vLXBvaW50ZXItc2lnbiBcCiAJQEZMQUdfV19O
T19GT1JNQVRfWkVST19MRU5HVEhAIFwKIAktZm5vLXN0cmljdC1hbGlhc2luZwogCkluZGV4OiBt
cGkvTWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbXBpL01ha2VmaWxlLmFtCShyZXZpc2lvbiAx
MTAyNikKKysrIG1waS9NYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTYsMTUgKzU2LDE1
IEBACiAKIAogaWYgQlVJTERfTVBJV1JBUF9QUkkKLWxpYm1waXdyYXBfQFZHQ09ORl9BUkNIX1BS
SUBfQFZHQ09ORl9PU0Bfc29fU09VUkNFUyAgPSBsaWJtcGl3cmFwLmMKLWxpYm1waXdyYXBfQFZH
Q09ORl9BUkNIX1BSSUBfQFZHQ09ORl9PU0Bfc29fQ1BQRkxBR1MgPSAtSS4uL2luY2x1ZGUKK2xp
Ym1waXdyYXBfQFZHQ09ORl9BUkNIX1BSSUBfQFZHQ09ORl9PU0Bfc29fU09VUkNFUyAgPSAkKHNy
Y2RpcikvbGlibXBpd3JhcC5jCitsaWJtcGl3cmFwX0BWR0NPTkZfQVJDSF9QUklAX0BWR0NPTkZf
T1NAX3NvX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvLi4vaW5jbHVkZQogbGlibXBpd3JhcF9AVkdD
T05GX0FSQ0hfUFJJQF9AVkdDT05GX09TQF9zb19DRkxBR1MgICA9IFwKIAkkKENGTEFHU19NUEkp
ICQoTVBJX0ZMQUdfTTMyNjRfUFJJKQogbGlibXBpd3JhcF9AVkdDT05GX0FSQ0hfUFJJQF9AVkdD
T05GX09TQF9zb19MREZMQUdTICA9ICQoTERGTEFHU19NUEkpCiBlbmRpZgogaWYgQlVJTERfTVBJ
V1JBUF9TRUMKLWxpYm1waXdyYXBfQFZHQ09ORl9BUkNIX1NFQ0BfQFZHQ09ORl9PU0Bfc29fU09V
UkNFUyAgPSBsaWJtcGl3cmFwLmMKLWxpYm1waXdyYXBfQFZHQ09ORl9BUkNIX1NFQ0BfQFZHQ09O
Rl9PU0Bfc29fQ1BQRkxBR1MgPSAtSS4uL2luY2x1ZGUKK2xpYm1waXdyYXBfQFZHQ09ORl9BUkNI
X1NFQ0BfQFZHQ09ORl9PU0Bfc29fU09VUkNFUyAgPSAkKHNyY2RpcikvbGlibXBpd3JhcC5jCits
aWJtcGl3cmFwX0BWR0NPTkZfQVJDSF9TRUNAX0BWR0NPTkZfT1NAX3NvX0NQUEZMQUdTID0gLUkk
KHNyY2RpcikvLi4vaW5jbHVkZQogbGlibXBpd3JhcF9AVkdDT05GX0FSQ0hfU0VDQF9AVkdDT05G
X09TQF9zb19DRkxBR1MgICA9IFwKIAkkKENGTEFHU19NUEkpICQoTVBJX0ZMQUdfTTMyNjRfU0VD
KQogbGlibXBpd3JhcF9AVkdDT05GX0FSQ0hfU0VDQF9AVkdDT05GX09TQF9zb19MREZMQUdTICA9
ICQoTERGTEFHU19NUEkpCkluZGV4OiBpbmNsdWRlL3ZraS92a2ktZGFyd2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gaW5jbHVkZS92a2kvdmtpLWRhcndpbi5oCShyZXZpc2lvbiAxMTAyNikKKysrIGluY2x1
ZGUvdmtpL3ZraS1kYXJ3aW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzkyLDYgKzc5MiwxMSBAQAog
dHlwZWRlZiBzdHJ1Y3QgZXZlbnRyZXEgdmtpX2V2ZW50cmVxOwogCiAKKyNpbmNsdWRlIDxzeXMv
YWNsLmg+CisKKyNkZWZpbmUgdmtpX2thdXRoX2ZpbGVzZWMga2F1dGhfZmlsZXNlYworCisKICNp
bmNsdWRlIDxzeXMvcHRyYWNlLmg+CiAKICNkZWZpbmUgVktJX1BUUkFDRV9UUkFDRU1FICAgUFRf
VFJBQ0VfTUUKQEAgLTEwMjEsNiArMTAyNiwxMCBAQAogI2RlZmluZQlWS0lfQV9HRVRQSU5GT19B
RERSCUFfR0VUUElORk9fQUREUgkKICNkZWZpbmUJVktJX0FfR0VUS0FVRElUCUFfR0VUS0FVRElU
CQogI2RlZmluZQlWS0lfQV9TRVRLQVVESVQJQV9TRVRLQVVESVQJCisjaWYgREFSV0lOX1ZFUlMg
Pj0gREFSV0lOXzEwXzYKKyNkZWZpbmUgVktJX0FfU0VORFRSSUdHRVIgQV9TRU5EVFJJR0dFUgor
I2RlZmluZSBWS0lfQV9HRVRTSU5GT19BRERSIEFfR0VUU0lORk9fQUREUgorI2VuZGlmCiAKIAog
I2luY2x1ZGUgPHN5cy9haW8uaD4KSW5kZXg6IGluY2x1ZGUvdmtpL3ZraS1zY251bXMtZGFyd2lu
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gaW5jbHVkZS92a2kvdmtpLXNjbnVtcy1kYXJ3aW4uaAkocmV2aXNp
b24gMTEwMjYpCisrKyBpbmNsdWRlL3ZraS92a2ktc2NudW1zLWRhcndpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw5IEBACiAjZGVmaW5lIF9fVktJX1NDTlVNU19EQVJXSU5fSAogCiAK
Ky8vIG5lZWQgREFSV0lOXzEwX3ggZGVmaW5pdGlvbnMKKyNpbmNsdWRlICJjb25maWcuaCIKKwog
Ly8gb3NmbWsvbWFjaC9pMzg2L3N5c2NhbGxfc3cuaAogCiAvLyBUaGVyZSBhcmUgdHdvIHN5c2Nh
bGwgbnVtYmVyIGVuY29kaW5ncyBpbiBEYXJ3aW4uCkBAIC0zNzYsNyArMzc5LDExIEBACiAjZGVm
aW5lIF9fTlJfc2lncmV0dXJuICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgo
MTg0KQogI2RlZmluZSBfX05SX2NodWQgICAgICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNU
UlVDVF9VTklYKDE4NSkKIAkJCS8qIDE4NiAgKi8KKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5f
MTBfNgorI2RlZmluZSBfX05SX2ZkYXRhc3luYyAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNU
UlVDVF9VTklYKDE4NykKKyNlbHNlCiAJCQkvKiAxODcgICovCisjZW5kaWYKICNkZWZpbmUJX19O
Ul9zdGF0ICAgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgxODgpCiAj
ZGVmaW5lCV9fTlJfZnN0YXQgICAgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VO
SVgoMTg5KQogI2RlZmluZQlfX05SX2xzdGF0ICAgICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NP
TlNUUlVDVF9VTklYKDE5MCkKQEAgLTQwMyw4ICs0MTAsMTMgQEAKICNkZWZpbmUJX19OUl9BVFBn
ZXRyZXEgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMTEpCiAjZGVmaW5l
CV9fTlJfQVRQZ2V0cnNwICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjEy
KQogCQkJLyogMjEzICBSZXNlcnZlZCBmb3IgQXBwbGVUYWxrICovCi0jZGVmaW5lCV9fTlJfa3F1
ZXVlX2Zyb21fcG9ydHNldF9ucCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMTQp
Ci0jZGVmaW5lCV9fTlJfa3F1ZXVlX3BvcnRzZXRfbnAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RS
VUNUX1VOSVgoMjE1KQorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICAgICAgICAg
ICAgICAgICAgICAgICAvKiAyMTQgIG9sZCBrcXVldWVfZnJvbV9wb3J0c2V0X25wKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDIxNSAgb2xkIGtxdWV1ZV9wb3J0c2V0X25wKi8KKyNlbHNl
CisjZGVmaW5lIF9fTlJfa3F1ZXVlX2Zyb21fcG9ydHNldF9ucCBWR19EQVJXSU5fU1lTQ0FMTF9D
T05TVFJVQ1RfVU5JWCgyMTQpCisjZGVmaW5lIF9fTlJfa3F1ZXVlX3BvcnRzZXRfbnAgVkdfREFS
V0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjE1KQorI2VuZGlmCiAjZGVmaW5lCV9fTlJfbWtj
b21wbGV4ICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjE2KQogI2RlZmlu
ZQlfX05SX3N0YXR2ICAgICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIx
NykKICNkZWZpbmUJX19OUl9sc3RhdHYgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJV
Q1RfVU5JWCgyMTgpCkBAIC00MTMsMTIgKzQyNSwxNyBAQAogI2RlZmluZQlfX05SX3NldGF0dHJs
aXN0ICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIyMSkKICNkZWZpbmUJX19O
Ul9nZXRkaXJlbnRyaWVzYXR0ciBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMjIp
CiAjZGVmaW5lCV9fTlJfZXhjaGFuZ2VkYXRhICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNU
X1VOSVgoMjIzKQotCQkJLyogMjI0ICBjaGVja3VzZXJhY2Nlc3MgKi8KKwkJCS8qIDIyNCAgb2xk
IGNoZWNrdXNlcmFjY2VzcyAqLwogI2RlZmluZQlfX05SX3NlYXJjaGZzICAgICAgIFZHX0RBUldJ
Tl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIyNSkKICNkZWZpbmUJX19OUl9kZWxldGUgICAgICAg
ICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMjYpCiAjZGVmaW5lCV9fTlJfY29w
eWZpbGUgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjI3KQorI2lmIERB
UldJTl9WRVJTID49IERBUldJTl8xMF82CisjZGVmaW5lIF9fTlJfZmdldGF0dHJsaXN0ICAgVkdf
REFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjI4KQorI2RlZmluZSBfX05SX2ZzZXRhdHRy
bGlzdCAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIyOSkKKyNlbHNlCiAJCQkv
KiAyMjggICovCiAJCQkvKiAyMjkgICovCisjZW5kaWYKICNkZWZpbmUJX19OUl9wb2xsICAgICAg
ICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMzApCiAjZGVmaW5lCV9fTlJf
d2F0Y2hldmVudCAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjMxKQogI2Rl
ZmluZQlfX05SX3dhaXRldmVudCAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklY
KDIzMikKQEAgLTQzNCw3ICs0NTEsMTEgQEAKICNkZWZpbmUJX19OUl9mc2N0bCAgICAgICAgICBW
R19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyNDIpCiAjZGVmaW5lCV9fTlJfaW5pdGdy
b3VwcyAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjQzKQogI2RlZmluZSBf
X05SX3Bvc2l4X3NwYXduICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI0NCkK
KyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorI2RlZmluZSBfX05SX2Zmc2N0bCAgICAg
ICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI0NSkKKyNlbHNlCiAJCQkvKiAy
NDUgICovCisjZW5kaWYKIAkJCS8qIDI0NiAgKi8KICNkZWZpbmUgX19OUl9uZnNjbG50ICAgICAg
ICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyNDcpCiAjZGVmaW5lIF9fTlJfZmhv
cGVuICAgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjQ4KQpAQCAtNDg1
LDIzICs1MDYsMjcgQEAKICNkZWZpbmUJX19OUl9pZGVudGl0eXN2YyAgICBWR19EQVJXSU5fU1lT
Q0FMTF9DT05TVFJVQ1RfVU5JWCgyOTMpCiAjZGVmaW5lCV9fTlJfc2hhcmVkX3JlZ2lvbl9jaGVj
a19ucCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyOTQpCiAjZGVmaW5lCV9fTlJf
c2hhcmVkX3JlZ2lvbl9tYXBfbnAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgy
OTUpCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyNkZWZpbmUgX19OUl92bV9wcmVz
c3VyZV9tb25pdG9yICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI5NikKKyNl
bHNlCiAJCQkvKiAyOTYgIG9sZCBsb2FkX3NoYXJlZF9maWxlICovCisjZW5kaWYKIAkJCS8qIDI5
NyAgb2xkIHJlc2V0X3NoYXJlZF9maWxlICovCiAJCQkvKiAyOTggIG9sZCBuZXdfc3lzdGVtX3No
YXJlZF9yZWdpb25zICovCiAJCQkvKiAyOTkgIG9sZCBzaGFyZWRfcmVnaW9uX21hcF9maWxlX25w
ICovCiAJCQkvKiAzMDAgIG9sZCBzaGFyZWRfcmVnaW9uX21ha2VfcHJpdmF0ZV9ucCAqLwotI2Rl
ZmluZSBfX05SX19fcHRocmVhZF9tdXRleF9kZXN0cm95IFZHX0RBUldJTl9TWVNDQUxMX0NPTlNU
UlVDVF9VTklYKDMwMSkKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfbXV0ZXhfaW5pdCBWR19EQVJX
SU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMDIpCi0jZGVmaW5lIF9fTlJfX19wdGhyZWFkX211
dGV4X2xvY2sgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzAzKQotI2RlZmluZSBf
X05SX19fcHRocmVhZF9tdXRleF90cnlsb2NrIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9V
TklYKDMwNCkKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfbXV0ZXhfdW5sb2NrIFZHX0RBUldJTl9T
WVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwNSkKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfY29uZF9p
bml0IFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMwNikKLSNkZWZpbmUgX19OUl9f
X3B0aHJlYWRfY29uZF9kZXN0cm95IFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMw
NykKLSNkZWZpbmUgX19OUl9fX3B0aHJlYWRfY29uZF9icm9hZGNhc3QgVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMzA4KQotI2RlZmluZSBfX05SX19fcHRocmVhZF9jb25kX3NpZ25h
bCBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMDkpCisJCQkvKiAzMDEgKi8KKwkJ
CS8qIDMwMiAqLworCQkJLyogMzAzICovCisJCQkvKiAzMDQgKi8KKwkJCS8qIDMwNSAqLworCQkJ
LyogMzA2ICovCisJCQkvKiAzMDcgKi8KKwkJCS8qIDMwOCAqLworCQkJLyogMzA5ICovCiAjZGVm
aW5lCV9fTlJfZ2V0c2lkICAgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgo
MzEwKQogI2RlZmluZQlfX05SX3NldHRpZF93aXRoX3BpZCBWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCgzMTEpCi0jZGVmaW5lIF9fTlJfX19wdGhyZWFkX2NvbmRfdGltZWR3YWl0IFZH
X0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMxMikKKwkJCS8qIDMxMiAqLwogI2RlZmlu
ZQlfX05SX2Fpb19mc3luYyAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMx
MykKICNkZWZpbmUJX19OUl9haW9fcmV0dXJuICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJV
Q1RfVU5JWCgzMTQpCiAjZGVmaW5lCV9fTlJfYWlvX3N1c3BlbmQgICAgVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMzE1KQpAQCAtNTEwLDcgKzUzNSw3IEBACiAjZGVmaW5lCV9fTlJf
YWlvX3JlYWQgICAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzE4KQogI2Rl
ZmluZQlfX05SX2Fpb193cml0ZSAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklY
KDMxOSkKICNkZWZpbmUJX19OUl9saW9fbGlzdGlvICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCgzMjApCi0jZGVmaW5lIF9fTlJfX19wdGhyZWFkX2NvbmRfd2FpdCBWR19EQVJX
SU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMjEpCisJCQkvKiAzMjEgKi8KICNkZWZpbmUgX19O
Ul9pb3BvbGljeXN5cyAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMjIpCiAJ
CQkvKiAzMjMgICovCiAjZGVmaW5lCV9fTlJfbWxvY2thbGwgICAgICAgVkdfREFSV0lOX1NZU0NB
TExfQ09OU1RSVUNUX1VOSVgoMzI0KQpAQCAtNTU5LDEwICs1ODQsMTggQEAKICNkZWZpbmUgX19O
Ul9ic2R0aHJlYWRfcmVnaXN0ZXIgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzY2
KQogI2RlZmluZSBfX05SX3dvcmtxX29wZW4gICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVD
VF9VTklYKDM2NykKICNkZWZpbmUgX19OUl93b3JrcV9vcHMgICAgICBWR19EQVJXSU5fU1lTQ0FM
TF9DT05TVFJVQ1RfVU5JWCgzNjgpCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyNk
ZWZpbmUgX19OUl9rZXZlbnQ2NCAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5J
WCgzNjkpCisjZWxzZQogCQkJLyogMzY5ICAqLworI2VuZGlmCiAJCQkvKiAzNzAgICovCiAJCQkv
KiAzNzEgICovCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyNkZWZpbmUgX19OUl9f
X3RocmVhZF9zZWxmaWQgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzcyKSAgLy8g
d2FzIFVYNjQKKyNlbHNlCiAJCQkvKiAzNzIgICovCisjZW5kaWYKIAkJCS8qIDM3MyAgKi8KIAkJ
CS8qIDM3NCAgKi8KIAkJCS8qIDM3NSAgKi8KQEAgLTYxNyw3ICs2NTAsMTkgQEAKICNkZWZpbmUg
X19OUl9fX21hY19tb3VudCAgICAgICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9V
TklYKDQyNCkKICNkZWZpbmUgX19OUl9fX21hY19nZXRfbW91bnQgICAgICAgIFZHX0RBUldJTl9T
WVNDQUxMX0NPTlNUUlVDVF9VTklYKDQyNSkKICNkZWZpbmUgX19OUl9fX21hY19nZXRmc3N0YXQg
ICAgICAgIFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDQyNikKKyNpZiBEQVJXSU5f
VkVSUyA+PSBEQVJXSU5fMTBfNgorI2RlZmluZSBfX05SX2ZzZ2V0cGF0aCAgICAgICAgICAgICAg
VkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoNDI3KQorI2RlZmluZSBfX05SX2F1ZGl0
X3Nlc3Npb25fc2VsZiAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoNDI4KQor
I2RlZmluZSBfX05SX2F1ZGl0X3Nlc3Npb25fam9pbiAgICAgVkdfREFSV0lOX1NZU0NBTExfQ09O
U1RSVUNUX1VOSVgoNDI5KQorI2VuZGlmCisKKyNpZiBEQVJXSU5fVkVSUyA8IERBUldJTl8xMF82
CiAjZGVmaW5lCV9fTlJfTUFYU1lTQ0FMTCAgICAgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9D
T05TVFJVQ1RfVU5JWCg0MjcpCisjZWxpZiBEQVJXSU5fVkVSU0lPTiA8IERBUldJTl8xMF83Cisj
ZGVmaW5lCV9fTlJfTUFYU1lTQ0FMTCAgICAgICAgICAgICBWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCg0MzApCisjZWxzZQorI2Vycm9yIHVua25vd24gZGFyd2luIHZlcnNpb24KKyNl
bmRpZgogCiAjZGVmaW5lIF9fTlJfREFSV0lOX0ZBS0VfU0lHUkVUVVJOICgxICsgX19OUl9NQVhT
WVNDQUxMKQogCkluZGV4OiBjb25maWd1cmUuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29uZmlndXJlLmlu
CShyZXZpc2lvbiAxMTAyNikKKysrIGNvbmZpZ3VyZS5pbgkod29ya2luZyBjb3B5KQpAQCAtMjUy
LDYgKzI1Miw5IEBACiAgICAgICpkYXJ3aW4qKQogICAgICAgICBBQ19NU0dfUkVTVUxUKFtvayAo
JHtob3N0X29zfSldKQogICAgICAgICBWR0NPTkZfT1M9ImRhcndpbiIKKyAgICAgICAgQUNfREVG
SU5FKFtEQVJXSU5fMTBfNV0sIDEwMDUwMCwgW0RBUldJTl9WRVJTIHZhbHVlIGZvciBNYWMgT1Mg
WCAxMC41XSkKKyAgICAgICAgQUNfREVGSU5FKFtEQVJXSU5fMTBfNl0sIDEwMDYwMCwgW0RBUldJ
Tl9WRVJTIHZhbHVlIGZvciBNYWMgT1MgWCAxMC42XSkKKyAgICAgICAgQUNfREVGSU5FKFtEQVJX
SU5fMTBfN10sIDEwMDcwMCwgW0RBUldJTl9WRVJTIHZhbHVlIGZvciBNYWMgT1MgWCAxMC43XSkK
IAogCUFDX01TR19DSEVDS0lORyhbZm9yIHRoZSBrZXJuZWwgdmVyc2lvbl0pCiAJa2VybmVsPWB1
bmFtZSAtcmAKQEAgLTI1OSwyMSArMjYyLDI3IEBACiAgICAgICAgICMgTmI6IGZvciBEYXJ3aW4g
d2Ugc2V0IERFRkFVTFRfU1VQUCBoZXJlLiAgVGhhdCdzIGJlY2F1c2UgRGFyd2luCiAgICAgICAg
ICMgaGFzIG9ubHkgb25lIHJlbGV2YW50IHZlcnNpb24sIHRoZSBPUyB2ZXJzaW9uLiBUaGUgYHVu
YW1lYCBjaGVjawogICAgICAgICAjIGlzIGEgZ29vZCB3YXkgdG8gZ2V0IHRoYXQgdmVyc2lvbiAo
aS5lLiAiRGFyd2luIDkuNi4wIiBpcyBNYWMgT1MKLSAgICAgICAgIyBYIDEwLjUuNiwgYW5kICJE
YXJ3aW4gMTAueCIgd291bGQgcHJlc3VtYWJseSBiZSBNYWMgT1MgWCAxMC42LngKLSAgICAgICAg
IyBTbm93IExlb3BhcmQgYW5kIGRhcndpbjEwLnN1cHApLCBhbmQgd2UgZG9uJ3Qga25vdyBvZiBh
biBtYWNyb3MKLSAgICAgICAgIyBzaW1pbGFyIHRvIF9fR0xJQkNfXyB0byBnZXQgdGhhdCBpbmZv
LgorICAgICAgICAjIFggMTAuNS42LCBhbmQgIkRhcndpbiAxMC54IiBpcyBNYWMgT1MgWCAxMC42
LnggU25vdyBMZW9wYXJkKSwgCisgICAgICAgICMgYW5kIHdlIGRvbid0IGtub3cgb2YgYW4gbWFj
cm9zIHNpbWlsYXIgdG8gX19HTElCQ19fIHRvIGdldCB0aGF0IGluZm8uCiAgICAgICAgICMKICAg
ICAgICAgIyBYWFg6IGB1bmFtZSAtcmAgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciBjcm9z
cy1jb21waWxlcywgYnV0CiAgICAgICAgICMgdGhhdCdzIG5vdCBhIHByb2JsZW0geWV0LgogCWNh
c2UgIiR7a2VybmVsfSIgaW4KIAkgICAgIDkuKikKIAkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4g
OS54ICgke2tlcm5lbH0pIC8gTWFjIE9TIFggMTAuNSBMZW9wYXJkXSkKKwkJICBBQ19ERUZJTkUo
W0RBUldJTl9WRVJTXSwgREFSV0lOXzEwXzUsIFtEYXJ3aW4gLyBNYWMgT1MgWCB2ZXJzaW9uXSkK
IAkJICBERUZBVUxUX1NVUFA9ImRhcndpbjkuc3VwcCAke0RFRkFVTFRfU1VQUH0iCiAJCSAgREVG
QVVMVF9TVVBQPSJkYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKIAkJICA7OworCSAg
ICAgMTAuKikKKwkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gMTAueCAoJHtrZXJuZWx9KSAvIE1h
YyBPUyBYIDEwLjYgU25vdyBMZW9wYXJkXSkKKwkJICBBQ19ERUZJTkUoW0RBUldJTl9WRVJTXSwg
REFSV0lOXzEwXzYsIFtEYXJ3aW4gLyBNYWMgT1MgWCB2ZXJzaW9uXSkKKwkJICBERUZBVUxUX1NV
UFA9ImRhcndpbjEwLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorCQkgIERFRkFVTFRfU1VQUD0iZGFy
d2luMTAtZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorCQkgIDs7CiAgICAgICopIAogCQkgIEFD
X01TR19SRVNVTFQoW3Vuc3VwcG9ydGVkICgke2tlcm5lbH0pXSkKLQkJICBBQ19NU0dfRVJST1Io
W1ZhbGdyaW5kIHdvcmtzIG9uIERhcndpbiA5LnggKE1hYyBPUyBYIDEwLjUpXSkKKwkJICBBQ19N
U0dfRVJST1IoW1ZhbGdyaW5kIHdvcmtzIG9uIERhcndpbiA5LnggYW5kIDEwLnggKE1hYyBPUyBY
IDEwLjUgYW5kIDEwLjYpXSkKIAkJICA7OwogCWVzYWMKICAgICAgICAgOzsKSW5kZXg6IGF1eHBy
b2dzL01ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGF1eHByb2dzL01ha2VmaWxlLmFtCShyZXZp
c2lvbiAxMTAyNikKKysrIGF1eHByb2dzL01ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw0ICsyOSwzIEBACiB2YWxncmluZF9saXN0ZW5lcl9DRkxBR1MgICAgPSAkKEFNX0NGTEFHU19Q
UkkpCiB2YWxncmluZF9saXN0ZW5lcl9DQ0FTRkxBR1MgPSAkKEFNX0NDQVNGTEFHU19QUkkpCiB2
YWxncmluZF9saXN0ZW5lcl9MREZMQUdTICAgPSAkKEFNX0NGTEFHU19QUkkpCi0KSW5kZXg6IE1h
a2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIE1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMTAyNikKKysr
IE1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAKICMgUHV0IGRv
Y3MgbGFzdCBiZWNhdXNlIGJ1aWxkaW5nIHRoZSBIVE1MIGlzIHNsb3cgYW5kIHdlIHdhbnQgdG8g
Z2V0CiAjIGV2ZXJ5dGhpbmcgZWxzZSB3b3JraW5nIGJlZm9yZSB3ZSB0cnkgaXQuCisjIEdyUCBT
bm93TGVvcGFyZDoKKyMJbXBpCiBTVUJESVJTID0gXAogCWluY2x1ZGUgXAogCVZFWCBcCkBAIC0z
Niw3ICszOCw2IEBACiAJdGVzdHMgXAogCXBlcmYgXAogCWF1eHByb2dzIFwKLQltcGkgXAogCWRv
Y3MKIERJU1RfU1VCRElSUyAgPSAkKFNVQkRJUlMpCiAKQEAgLTQ4LDcgKzQ5LDggQEAKIAlnbGli
Yy0yLjItTGludXhUaHJlYWRzLWhlbGdyaW5kLnN1cHAgXAogCWdsaWJjLTIuWC1kcmQuc3VwcCBc
CiAJZXhwLXB0cmNoZWNrLnN1cHAgXAotCWRhcndpbjkuc3VwcCBkYXJ3aW45LWRyZC5zdXBwCisJ
ZGFyd2luOS5zdXBwIGRhcndpbjktZHJkLnN1cHAgXAorCWRhcndpbjEwLnN1cHAgZGFyd2luMTAt
ZHJkLnN1cHAKIERFRkFVTFRfU1VQUF9GSUxFUyA9IEBERUZBVUxUX1NVUFBACiAKICMgV2UgaW5j
bHVkZSBhbGwgdGhlIGJhc2UgLnN1cHAgZmlsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbiwgYnV0IG5v
dApAQCAtNjMsMTAgKzY1LDEwIEBACiBCVUlMVF9TT1VSQ0VTICA9IGRlZmF1bHQuc3VwcCB2YWxn
cmluZC5wYwogQ0xFQU5GSUxFUyAgICAgPSBkZWZhdWx0LnN1cHAKIAotZGVmYXVsdC5zdXBwOiAk
KERFRkFVTFRfU1VQUF9GSUxFUykKK2RlZmF1bHQuc3VwcDogJChhZGRwcmVmaXggJChzcmNkaXIp
LywkKERFRkFVTFRfU1VQUF9GSUxFUykpCiAJZWNobyAiIyBUaGlzIGlzIGEgZ2VuZXJhdGVkIGZp
bGUsIGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmcgc3VwcHJlc3Npb24gcnVsZXM6IiA+IGRlZmF1
bHQuc3VwcAogCWVjaG8gIiMgIiAkKERFRkFVTFRfU1VQUF9GSUxFUykgPj4gZGVmYXVsdC5zdXBw
Ci0JY2F0ICQoREVGQVVMVF9TVVBQX0ZJTEVTKSA+PiBkZWZhdWx0LnN1cHAKKwljYXQgJChhZGRw
cmVmaXggJChzcmNkaXIpLywkKERFRkFVTFRfU1VQUF9GSUxFUykpID4+IGRlZmF1bHQuc3VwcAog
CiAjIyBQcmVwcmVuZCBAUEVSTEAgYmVjYXVzZSB0ZXN0cy92Z19yZWd0ZXN0IGlzbid0IGV4ZWN1
dGFibGUKIHJlZ3Rlc3Q6IGNoZWNrCkluZGV4OiBkYXJ3aW45LWRyZC5zdXBwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGRhcndpbjktZHJkLnN1cHAJKHJldmlzaW9uIDExMDI2KQorKysgZGFyd2luOS1kcmQuc3Vw
cAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYgQEAKKworIyBEUkQgc3VwcHJlc3Npb25zIGZv
ciBEYXJ3aW4gOS54IC8gTWFjIE9TIFggMTAuNSBMZW9wYXJkCisKICMKICMgU3VwcHJlc3Npb24g
cGF0dGVybnMgZm9yIGR5bGQsIHRoZSBkeW5hbWljIGxvYWRlci4KICMKSW5kZXg6IGNvcmVncmlu
ZC9tX3N5c3dyYXAvcHJpdl9zeXN3cmFwLWRhcndpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNvcmVncmlu
ZC9tX3N5c3dyYXAvcHJpdl9zeXN3cmFwLWRhcndpbi5oCShyZXZpc2lvbiAxMTAyNikKKysrIGNv
cmVncmluZC9tX3N5c3dyYXAvcHJpdl9zeXN3cmFwLWRhcndpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MjksNyArNDI5LDcgQEAKIC8vIDM2OQogLy8gMzcwCiAvLyAzNzEKLS8vIDM3MgorREVDTF9U
RU1QTEFURShkYXJ3aW4sIF9fdGhyZWFkX3NlbGZpZCk7ICAgICAgICAgLy8gMzcyCiAvLyAzNzMK
IC8vIDM3NAogLy8gMzc1CkBAIC00ODQsNiArNDg0LDkgQEAKIC8vIE5ZSSBfX21hY19tb3VudCA0
MjQKIC8vIE5ZSSBfX21hY19nZXRfbW91bnQgNDI1CiAvLyBOWUkgX19tYWNfZ2V0ZnNzdGF0IDQy
NgorREVDTF9URU1QTEFURShkYXJ3aW4sIGZzZ2V0cGF0aCk7ICAgICAgICAgICAvLyA0MjcKKy8v
IE5ZSSBhdWRpdF9zZXNzaW9uX3NlbGYgNDI4CisvLyBOWUkgYXVkaXRfc2Vzc2lvbl9qb2luIDQy
OQogCiAvLyBNYWNoIG1lc3NhZ2UgaGVscGVycwogREVDTF9URU1QTEFURShkYXJ3aW4sIGhvc3Rf
aW5mbyk7CkBAIC00OTgsOSArNTAxLDExIEBACiBERUNMX1RFTVBMQVRFKGRhcndpbiwgbWFjaF9w
b3J0X2dldF9yZWZzKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3BvcnRfbW9kX3JlZnMp
OwogREVDTF9URU1QTEFURShkYXJ3aW4sIG1hY2hfcG9ydF9nZXRfc2V0X3N0YXR1cyk7CitERUNM
X1RFTVBMQVRFKGRhcndpbiwgbWFjaF9wb3J0X21vdmVfbWVtYmVyKTsKIERFQ0xfVEVNUExBVEUo
ZGFyd2luLCBtYWNoX3BvcnRfZGVzdHJveSk7CiBERUNMX1RFTVBMQVRFKGRhcndpbiwgbWFjaF9w
b3J0X3JlcXVlc3Rfbm90aWZpY2F0aW9uKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3Bv
cnRfaW5zZXJ0X3JpZ2h0KTsKK0RFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3BvcnRfZXh0cmFj
dF9yaWdodCk7CiBERUNMX1RFTVBMQVRFKGRhcndpbiwgbWFjaF9wb3J0X2dldF9hdHRyaWJ1dGVz
KTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCBtYWNoX3BvcnRfc2V0X2F0dHJpYnV0ZXMpOwogREVD
TF9URU1QTEFURShkYXJ3aW4sIG1hY2hfcG9ydF9pbnNlcnRfbWVtYmVyKTsKQEAgLTUzNyw2ICs1
NDIsNyBAQAogREVDTF9URU1QTEFURShkYXJ3aW4sIHRocmVhZF9zdXNwZW5kKTsKIERFQ0xfVEVN
UExBVEUoZGFyd2luLCB0aHJlYWRfZ2V0X3N0YXRlKTsKIERFQ0xfVEVNUExBVEUoZGFyd2luLCB0
aHJlYWRfcG9saWN5KTsKK0RFQ0xfVEVNUExBVEUoZGFyd2luLCB0aHJlYWRfcG9saWN5X3NldCk7
CiBERUNMX1RFTVBMQVRFKGRhcndpbiwgdGhyZWFkX2luZm8pOwogREVDTF9URU1QTEFURShkYXJ3
aW4sIGJvb3RzdHJhcF9yZWdpc3Rlcik7CiBERUNMX1RFTVBMQVRFKGRhcndpbiwgYm9vdHN0cmFw
X2xvb2tfdXApOwpJbmRleDogY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWFtZDY0LWRhcndp
bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGNvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1hbWQ2NC1kYXJ3
aW4uYwkocmV2aXNpb24gMTEwMjYpCisrKyBjb3JlZ3JpbmQvbV9zeXN3cmFwL3N5c3dyYXAtYW1k
NjQtZGFyd2luLmMJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsMjMgQEAKICAgIFZleEd1
ZXN0QU1ENjRTdGF0ZSAqdmV4OwogICAgQWRkciBzdGFjazsKICAgIFNpemVUIHN0YWNrc2l6ZTsK
KyAgIHZraV9zaWdzZXRfdCBibG9ja2FsbDsKIAorICAgLyogV2hlbiB3ZSBlbnRlciBoZXJlIHdl
IGhvbGQgbm8gbG9jayAoISksIHNvIHdlIGJldHRlciBhY3F1aXJlIGl0CisgICAgICBwcm9udG8u
ICBXaHkgZG8gd2UgaG9sZCBubyBsb2NrPyAgQmVjYXVzZSAocHJlc3VtYWJseSkgdGhlIG9ubHkK
KyAgICAgIHdheSB0byBnZXQgaGVyZSBpcyBhcyBhIHJlc3VsdCBvZiBhIFNmTWF5QmxvY2sgc3lz
Y2FsbAorICAgICAgIndvcmtxX29wcyhXUU9QU19USFJFQURfUkVUVVJOKSIsIHdoaWNoIHdpbGwg
aGF2ZSBkcm9wcGVkIHRoZQorICAgICAgbG9jay4gIEF0IGxlYXN0IHRoYXQncyBjbGVhciBmb3Ig
dGhlICdyZXVzZScgY2FzZS4gIFRoZQorICAgICAgbm9uLXJldXNlIGNhc2U/ICBEdW5ubywgcGVy
aGFwcyBpdCdzIGEgbmV3IHRocmVhZCB0aGUga2VybmVsCisgICAgICBwdWxsZWQgb3V0IG9mIGEg
aGF0LiAgSW4gYW55IGNhc2Ugd2Ugc3RpbGwgbmVlZCB0byB0YWtlIGEKKyAgICAgIGxvY2suICov
CisgICBWR18oYWNxdWlyZV9CaWdMb2NrX0xMKSgid3F0aHJlYWRfaGlqYWNrIik7CisKKyAgIC8q
IFN0YXJ0IHRoZSB0aHJlYWQgd2l0aCBhbGwgc2lnbmFscyBibG9ja2VkLiAgVkdfKHNjaGVkdWxl
cikgd2lsbAorICAgICAgc2V0IHRoZSBtYXNrIGNvcnJlY3RseSB3aGVuIHdlIGZpbmFsbHkgZ2V0
IHRoZXJlLiAqLworICAgVkdfKHNpZ2ZpbGxzZXQpKCZibG9ja2FsbCk7CisgICBWR18oc2lncHJv
Y21hc2spKFZLSV9TSUdfU0VUTUFTSywgJmJsb2NrYWxsLCBOVUxMKTsKKwogICAgaWYgKHJldXNl
KSB7CiAgICAgICAgLy8gVGhpcyB0aHJlYWQgYWxyZWFkeSBleGlzdHM7IHdlJ3JlIG1lcmVseSBy
ZS1lbnRlcmluZyAKICAgICAgICAvLyBhZnRlciBsZWF2aW5nIHZpYSB3b3JrcV9vcHMoV1FPUFNf
VEhSRUFEX1JFVFVSTikuIApAQCAtNDE4LDYgKzQzNCwxNSBAQAogICAgaWYgKHJldXNlKSB7CiAg
ICAgICAvLyBDb250aW51ZSBWJ3MgdGhyZWFkIGJhY2sgaW4gdGhlIHNjaGVkdWxlci4gCiAgICAg
ICAvLyBUaGUgY2xpZW50IHRocmVhZCBpcyBvZiBjb3Vyc2UgaW4gYW5vdGhlciBsb2NhdGlvbiBl
bnRpcmVseS4KKworICAgICAgLyogRHJvcCB0aGUgbG9jayBiZWZvcmUgZ29pbmcgaW50bworICAg
ICAgICAgTUxfKHdxdGhyZWFkX2NvbnRpbnVlX05PUkVUVVJOKS4gIFRoZSBsYXR0ZXIgd2lsbCBp
bW1lZGlhdGVseQorICAgICAgICAgYXR0ZW1wdCB0byByZWFjcXVpcmUgaXQgaW4gbm9uLUxMIG1v
ZGUsIHdoaWNoIGlzIGEgYml0CisgICAgICAgICB3YXN0ZWZ1bCBidXQgSSBkb24ndCB0aGluayBp
cyBoYXJtZnVsLiAgQSBiZXR0ZXIgc29sdXRpb24KKyAgICAgICAgIHdvdWxkIGJlIHRvIG5vdCBk
cm9wIHRoZSBsb2NrIGJ1dCBpbnN0ZWFkICJ1cGdyYWRlIiBpdCBmcm9tIGEKKyAgICAgICAgIExM
IGxvY2sgdG8gYSBmdWxsIGxvY2ssIGJ1dCB0aGF0J3MgdG9vIG11Y2ggbGlrZSBoYXJkIHdvcmsK
KyAgICAgICAgIHJpZ2h0IG5vdy4gKi8KKyAgICAgIFZHXyhyZWxlYXNlX0JpZ0xvY2tfTEwpKCJ3
cXRocmVhZF9oaWphY2soMSkiKTsKICAgICAgIE1MXyh3cXRocmVhZF9jb250aW51ZV9OT1JFVFVS
TikodHN0LT50aWQpOwogICAgfSAKICAgIGVsc2UgewpAQCAtNDUwLDYgKzQ3NSwxNiBAQAogICAg
ICAgVkdfKGFtX2RvX3N5bmNfY2hlY2spKCJhZnRlciIsICJ3cXRocmVhZF9oaWphY2siLCAwKTsK
IAogICAgICAgLy8gR28hCisgICAgICAvKiBTYW1lIGNvbW1lbnRzIGFzIHRoZSAncmVsZWFzZScg
aW4gdGhlIHRoZW4tY2xhdXNlLgorICAgICAgICAgc3RhcnRfdGhyZWFkX05PUkVUVVJOIGNhbGxz
IHJ1bl90aHJlYWRfTk9SRVRVUk4gY2FsbHMKKyAgICAgICAgIHRocmVhZF93cmFwcGVyIHdoaWNo
IGFjcXVpcmVzIHRoZSBsb2NrIGJlZm9yZSBjb250aW51aW5nLgorICAgICAgICAgTGV0J3MgaG9w
ZSBub3RoaW5nIG5vbi10aHJlYWQtbG9jYWwgaGFwcGVucyB1bnRpbCB0aGF0IHBvaW50LgorCisg
ICAgICAgICBEREQ6IEkgdGhpbmsgdGhpcyBpcyBwbGFpbiB3cm9uZyAuLiBpZiB3ZSBnZXQgdG8K
KyAgICAgICAgIHRocmVhZF93cmFwcGVyIG5vdCBob2xkaW5nIHRoZSBsb2NrLCBhbmQgc29tZW9u
ZSBoYXMgcmVjeWNsZWQKKyAgICAgICAgIHRoaXMgdGhyZWFkIHNsb3QgaW4gdGhlIG1lYW50aW1l
LCB3ZSdyZSBob3NlZC4gIElzIHRoYXQKKyAgICAgICAgIHBvc3NpYmxlLCB0aG91Z2g/ICovCisg
ICAgICBWR18ocmVsZWFzZV9CaWdMb2NrX0xMKSgid3F0aHJlYWRfaGlqYWNrKDIpIik7CiAgICAg
ICBjYWxsX29uX25ld19zdGFja18wXzEodHN0LT5vc19zdGF0ZS52YWxncmluZF9zdGFja19pbml0
X1NQLCAwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF90aHJlYWRfTk9SRVRV
Uk4sIChXb3JkKXRzdCk7CiAgICB9CkluZGV4OiBjb3JlZ3JpbmQvbV9zeXN3cmFwL3ByaXZfc3lz
d3JhcC1nZW5lcmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29yZWdyaW5kL21fc3lzd3JhcC9wcml2X3N5
c3dyYXAtZ2VuZXJpYy5oCShyZXZpc2lvbiAxMTAyNikKKysrIGNvcmVncmluZC9tX3N5c3dyYXAv
cHJpdl9zeXN3cmFwLWdlbmVyaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw3IEBA
CiBERUNMX1RFTVBMQVRFKGdlbmVyaWMsIHN5c19nZXRybGltaXQpOyAgICAgICAgICAgICAvLyAq
ICg/KQogREVDTF9URU1QTEFURShnZW5lcmljLCBzeXNfdHJ1bmNhdGU2NCk7ICAgICAgICAgICAg
Ly8gJSUgKFA/KQogREVDTF9URU1QTEFURShnZW5lcmljLCBzeXNfZnRydW5jYXRlNjQpOyAgICAg
ICAgICAgLy8gJSUgKFA/KQotREVDTF9URU1QTEFURShnZW5lcmljLCBzeXNfbGNob3duKTsgICAg
ICAgICAgICAgICAgLy8gKiAoTD8pCitERUNMX1RFTVBMQVRFKGdlbmVyaWMsIHN5c19sY2hvd24p
OyAgICAgICAgICAgICAgICAvLyAqIChMPykgRnJlZUJTRCAzLjAKIERFQ0xfVEVNUExBVEUoZ2Vu
ZXJpYywgc3lzX21pbmNvcmUpOyAgICAgICAgICAgICAgIC8vICogTD8KIERFQ0xfVEVNUExBVEUo
Z2VuZXJpYywgc3lzX2dldGRlbnRzNjQpOyAgICAgICAgICAgIC8vICogKFNWcjQsU1ZJRD8pCiBE
RUNMX1RFTVBMQVRFKGdlbmVyaWMsIHN5c19zdGF0ZnM2NCk7ICAgICAgICAgICAgICAvLyAqICg/
KQpJbmRleDogY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLWRhcndpbi5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGNvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1kYXJ3aW4uYwkocmV2aXNpb24gMTEwMjYp
CisrKyBjb3JlZ3JpbmQvbV9zeXN3cmFwL3N5c3dyYXAtZGFyd2luLmMJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDYgQEAKICNpbmNsdWRlIDxtYWNoL21hY2guaD4KICNpbmNsdWRlIDxtYWNo
L21hY2hfdm0uaD4KICNpbmNsdWRlIDxzZW1hcGhvcmUuaD4KLSNpbmNsdWRlIDxzeXMvYWNsLmg+
ICAgLyogc3RydWN0IGthdXRoX2ZpbGVzZWMgKi8KIC8qIC0tLSAhISEgLS0tIEVYVEVSTkFMIEhF
QURFUlMgZW5kIC0tLSAhISEgLS0tICovCiAKICNkZWZpbmUgbXNnaF9yZXF1ZXN0X3BvcnQgICAg
ICBtc2doX3JlbW90ZV9wb3J0CkBAIC0xMjQwLDcgKzEyMzksOSBAQAogewogICAgUFJJTlQoImZ1
dGltZXMgKCAlbGQsICUjbHggKSIsIEFSRzEsQVJHMik7CiAgICBQUkVfUkVHX1JFQUQyKGxvbmcs
ICJmdXRpbWVzIiwgaW50LCBmZCwgc3RydWN0IHRpbWV2YWwgKiwgdHZwKTsKLSAgIGlmIChBUkcy
ICE9IDApIHsKKyAgIGlmICghTUxfKGZkX2FsbG93ZWQpKEFSRzEsICJmdXRpbWVzIiwgdGlkLCBG
YWxzZSkpIHsKKyAgICAgIFNFVF9TVEFUVVNfRmFpbHVyZSggVktJX0VCQURGICk7CisgICB9IGVs
c2UgaWYgKEFSRzIgIT0gMCkgewogICAgICAgUFJFX3RpbWV2YWxfUkVBRCggImZ1dGltZXModHZw
WzBdKSIsIEFSRzIgKTsKICAgICAgIFBSRV90aW1ldmFsX1JFQUQoICJmdXRpbWVzKHR2cFsxXSki
LCBBUkcyK3NpemVvZihzdHJ1Y3QgdmtpX3RpbWV2YWwpICk7CiAgICB9CkBAIC0xNjM1LDEwICsx
NjM2LDEyIEBACiB7CiAgICBQUklOVCgia2RlYnVnX3RyYWNlKCVsZCwgJWxkLCAlbGQsICVsZCwg
JWxkLCAlbGQpIiwgCiAgICAgICAgICBBUkcxLCBBUkcyLCBBUkczLCBBUkc0LCBBUkc1LCBBUkc2
KTsKKyAgIC8qCisgICAgIERvbid0IGNoZWNrIGFueXRoaW5nIC0gc29tZSBjbGllbnRzIHBhc3Mg
ZmV3ZXIgYXJndW1lbnRzLgogICAgUFJFX1JFR19SRUFENihsb25nLCAia2RlYnVnX3RyYWNlIiwg
CiAgICAgICAgICAgICAgICAgIGludCwiY29kZSIsIGludCwiYXJnMSIsIGludCwiYXJnMiIsIAog
ICAgICAgICAgICAgICAgICBpbnQsImFyZzMiLCBpbnQsImFyZzQiLCBpbnQsImFyZzUiKTsKLSAg
IC8vIEdyUCBmaXhtZSBhbnl0aGluZyBlbHNlPworICAgKi8KIH0KIAogCkBAIC0yMDE4LDcgKzIw
MjEsNyBAQAogICAgICAgaXMganVzdCB3YXkgd3JvbmcuICBbVGhlIHRyb3VibGUgaXMgd2l0aCB0
aGUgc2l6ZSwgd2hpY2ggZGVwZW5kcyBvbiBhCiAgICAgICBub24tdHJpdmFsIGtlcm5lbCBjb21w
dXRhdGlvbl0gKi8KICAgIFBSRV9NRU1fUkVBRCggImZjaG1vZF9leHRlbmRlZCh4c2VjdXJpdHkp
IiwgQVJHNSwgCi0gICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qga2F1dGhfZmlsZXNlYykg
KTsKKyAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB2a2lfa2F1dGhfZmlsZXNlYykgKTsK
IH0KIAogUFJFKGNobW9kX2V4dGVuZGVkKQpAQCAtMjAzOCw3ICsyMDQxLDcgQEAKICAgICAgIGlz
IGp1c3Qgd2F5IHdyb25nLiAgW1RoZSB0cm91YmxlIGlzIHdpdGggdGhlIHNpemUsIHdoaWNoIGRl
cGVuZHMgb24gYQogICAgICAgbm9uLXRyaXZhbCBrZXJuZWwgY29tcHV0YXRpb25dICovCiAgICBQ
UkVfTUVNX1JFQUQoICJjaG1vZF9leHRlbmRlZCh4c2VjdXJpdHkpIiwgQVJHNSwgCi0gICAgICAg
ICAgICAgICAgIHNpemVvZihzdHJ1Y3Qga2F1dGhfZmlsZXNlYykgKTsKKyAgICAgICAgICAgICAg
ICAgc2l6ZW9mKHN0cnVjdCB2a2lfa2F1dGhfZmlsZXNlYykgKTsKIH0KIAogCkBAIC0yMjQxLDYg
KzIyNDQsOSBAQAogICAgfSBhdHRyc3BlYzsKICAgIHN0YXRpYyBjb25zdCBhdHRyc3BlYyBjb21t
b25hdHRyW10gPSB7CiAgICAgICAvLyBUaGlzIG9yZGVyIGlzIGltcG9ydGFudC4KKyNpZiBEQVJX
SU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorICAgICAgeyBBVFRSX0NNTl9SRVRVUk5FRF9BVFRSUywg
IHNpemVvZihhdHRyaWJ1dGVfc2V0X3QpIH0sIAorI2VuZGlmCiAgICAgICB7IEFUVFJfQ01OX05B
TUUsICAgICAgICAgICAgLTEgfSwgCiAgICAgICB7IEFUVFJfQ01OX0RFVklELCAgICAgICAgICAg
c2l6ZW9mKGRldl90KSB9LCAKICAgICAgIHsgQVRUUl9DTU5fRlNJRCwgICAgICAgICAgICBzaXpl
b2YoZnNpZF90KSB9LCAKQEAgLTIyNjMsOCArMjI2OSwxNCBAQAogICAgICAgeyBBVFRSX0NNTl9O
QU1FREFUVFJMSVNULCAgIC0xIH0sIAogICAgICAgeyBBVFRSX0NNTl9GTEFHUywgICAgICAgICAg
IHNpemVvZih1aW50MzJfdCkgfSwgCiAgICAgICB7IEFUVFJfQ01OX1VTRVJBQ0NFU1MsICAgICAg
c2l6ZW9mKHVpbnQzMl90KSB9LCAKKyAgICAgIHsgQVRUUl9DTU5fRVhURU5ERURfU0VDVVJJVFks
IC0xIH0sIAorICAgICAgeyBBVFRSX0NNTl9VVUlELCAgICAgICAgICAgIHNpemVvZihndWlkX3Qp
IH0sIAorICAgICAgeyBBVFRSX0NNTl9HUlBVVUlELCAgICAgICAgIHNpemVvZihndWlkX3QpIH0s
IAogICAgICAgeyBBVFRSX0NNTl9GSUxFSUQsICAgICAgICAgIHNpemVvZih1aW50NjRfdCkgfSwg
CiAgICAgICB7IEFUVFJfQ01OX1BBUkVOVElELCAgICAgICAgc2l6ZW9mKHVpbnQ2NF90KSB9LCAK
KyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorICAgICAgeyBBVFRSX0NNTl9GVUxMUEFU
SCwgICAgICAgIC0xIH0sIAorI2VuZGlmCiAgICAgICB7IDAsICAgICAgICAgICAgICAgICAgICAg
ICAgMCB9CiAgICB9OwogICAgc3RhdGljIGNvbnN0IGF0dHJzcGVjIHZvbGF0dHJbXSA9IHsKQEAg
LTIyODgsNiArMjMwMCw5IEBACiAgICAgICB7IEFUVFJfVk9MX01PVU5URURERVZJQ0UsICAgLTEg
fSwgCiAgICAgICB7IEFUVFJfVk9MX0VOQ09ESU5HU1VTRUQsICAgc2l6ZW9mKHVpbnQ2NF90KSB9
LCAKICAgICAgIHsgQVRUUl9WT0xfQ0FQQUJJTElUSUVTLCAgICBzaXplb2Yodm9sX2NhcGFiaWxp
dGllc19hdHRyX3QpIH0sIAorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICAgICB7
IEFUVFJfVk9MX1VVSUQsICAgICAgICAgICAgc2l6ZW9mKHV1aWRfdCkgfSwgCisjZW5kaWYKICAg
ICAgIHsgQVRUUl9WT0xfQVRUUklCVVRFUywgICAgICBzaXplb2Yodm9sX2F0dHJpYnV0ZXNfYXR0
cl90KSB9LCAKICAgICAgIHsgMCwgICAgICAgICAgICAgICAgICAgICAgICAwIH0KICAgIH07CkBA
IC0yMzM2LDYgKzIzNTEsMTYgQEAKICAgIGQgPSBhdHRyQnVmOwogICAgZGVuZCA9IGQgKyBhdHRy
QnVmU2l6ZTsKIAorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICAvLyBBVFRSX0NN
Tl9SRVRVUk5FRF9BVFRSUyB0ZWxscyB1cyB3aGF0J3MgcmVhbGx5IGhlcmUsIGlmIHNldAorICAg
aWYgKGFbMF0gJiBBVFRSX0NNTl9SRVRVUk5FRF9BVFRSUykgeworICAgICAgIC8vIGZpeG1lIHJh
bmdlIGNoZWNrIHRoaXM/CisgICAgICAgYVswXSAmPSB+QVRUUl9DTU5fUkVUVVJORURfQVRUUlM7
CisgICAgICAgZm4odGlkLCBkLCBzaXplb2YoYXR0cmlidXRlX3NldF90KSk7CisgICAgICAgVkdf
KG1lbWNweSkoYSwgZCwgc2l6ZW9mKGEpKTsKKyAgIH0KKyNlbmRpZgorCiAgICBmb3IgKGcgPSAw
OyBnIDwgNTsgZysrKSB7CiAgICAgICBmb3IgKGkgPSAwOyBhdHRyZGVmc1tnXVtpXS5hdHRyQml0
OyBpKyspIHsKICAgICAgICAgIHVpbnQzMl90IGJpdCA9IGF0dHJkZWZzW2ddW2ldLmF0dHJCaXQ7
CkBAIC0yMzk4LDEwICsyNDIzLDE1IEBACiBQT1NUKGdldGF0dHJsaXN0KSAKIHsKICAgIGlmIChB
Ukc0ID4gc2l6ZW9mKHZraV91aW50MzJfdCkpIHsKLSAgICAgIC8vIGF0dHJCdWYgaXMgdWludDMy
X3QgYnl0ZXMgd3JpdHRlbiBmb2xsb3dlZCBieSBhdHRyIGRhdGEKKyAgICAgIC8vIGF0dHJCdWYg
aXMgdWludDMyX3Qgc2l6ZSBmb2xsb3dlZCBieSBhdHRyIGRhdGEKICAgICAgIHZraV91aW50MzJf
dCAqc2l6ZXAgPSAodmtpX3VpbnQzMl90ICopQVJHMzsKICAgICAgIFBPU1RfTUVNX1dSSVRFKEFS
RzMsIHNpemVvZih2a2lfdWludDMyX3QpKTsKLSAgICAgIHNjYW5fYXR0cmxpc3QodGlkLCAoc3Ry
dWN0IHZraV9hdHRybGlzdCAqKUFSRzIsIHNpemVwKzEsICpzaXplcCwgJmdldDFhdHRyKTsKKyAg
ICAgIGlmIChBUkc1ICYgRlNPUFRfUkVQT1JUX0ZVTExTSVpFKSB7CisgICAgICAgICAvLyAqc2l6
ZXAgaXMgYnl0ZXMgcmVxdWlyZWQgZm9yIHJldHVybiB2YWx1ZSwgaW5jbHVkaW5nICpzaXplcAor
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vICpzaXplcCBpcyBhY3R1YWwgYnl0ZXMgcmV0dXJu
ZWQsIGluY2x1ZGluZyAqc2l6ZXAKKyAgICAgIH0KKyAgICAgIHNjYW5fYXR0cmxpc3QodGlkLCAo
c3RydWN0IHZraV9hdHRybGlzdCAqKUFSRzIsIHNpemVwKzEsIE1JTigqc2l6ZXAsIEFSRzQpLCAm
Z2V0MWF0dHIpOwogICAgfQogfQogCkBAIC0yNDU3LDEwICsyNDg3LDM2IEBACiAKICAgIFBPU1Rf
TUVNX1dSSVRFKEFSRzMsIHAgLSAoY2hhciAqKUFSRzMpOwogCi0gICBQUklOVCgiZ290ICVkIHJl
Y29yZHMsICVkLyVsdSBieXRlc1xuIiwgY291bnQsIHAtKGNoYXIgKilBUkczLCBBUkc0KTsKKyAg
IFBSSU5UKCJnb3QgJWQgcmVjb3JkcywgJWxkLyVsdSBieXRlc1xuIiwgY291bnQsIHAtKGNoYXIg
KilBUkczLCBBUkc0KTsKIH0KIAogCitQUkUoZnNnZXRwYXRoKQoreworI2lmIFZHX1dPUkRTSVpF
ID09IDQKKyAgIFBSSU5UKCJmc2dldHBhdGgoJSNseCwgJWxkLCAlI2x4IHslbHUsJWx1fSwgJWxs
dSkiLCAKKyAgICAgICAgIEFSRzEsIEFSRzIsIEFSRzMsICgodW5zaWduZWQgaW50ICopQVJHMylb
MF0sICgodW5zaWduZWQgaW50ICopQVJHMylbMV0sIExPSEk2NChBUkc0LCBBUkc1KSk7CisgICBQ
UkVfUkVHX1JFQUQ1KHNzaXplX3QsICJmc2dldHBhdGgiLCAKKyAgICAgICAgICAgICAgICAgdm9p
ZCosImJ1ZiIsIHNpemVfdCwiYnVmc2l6ZSIsIAorICAgICAgICAgICAgICAgICBmc2lkX3QgKiwi
ZnNpZCIsCisgICAgICAgICAgICAgICAgIHZraV91aW50MzJfdCwgIm9iamlkX2xvdzMyIiwgdmtp
X3VpbnQzMl90LCAib2JqaWRfaGlnaDMyIik7CisjZWxzZQorICAgUFJJTlQoImZzZ2V0cGF0aCgl
I2x4LCAlbGQsICUjbHggeyV1LCV1fSwgJWxsdSkiLCAKKyAgICAgICAgIEFSRzEsIEFSRzIsIEFS
RzMsICgodW5zaWduZWQgaW50ICopQVJHMylbMF0sICgodW5zaWduZWQgaW50ICopQVJHMylbMV0s
IEFSRzQpOworICAgUFJFX1JFR19SRUFENChzc2l6ZV90LCAiZnNnZXRwYXRoIiwgCisgICAgICAg
ICAgICAgICAgIHZvaWQqLCJidWYiLCBzaXplX3QsImJ1ZnNpemUiLCAKKyAgICAgICAgICAgICAg
ICAgZnNpZF90ICosImZzaWQiLCB1aW50NjRfdCwib2JqaWQiKTsKKyNlbmRpZgorICAgUFJFX01F
TV9SRUFEKCJmc2dldHBhdGgoZnNpZCkiLCBBUkczLCBzaXplb2YoZnNpZF90KSk7CisgICBQUkVf
TUVNX1dSSVRFKCJmc2dldHBhdGgoYnVmKSIsIEFSRzEsIEFSRzIpOworfQorCitQT1NUKGZzZ2V0
cGF0aCkKK3sKKyAgIFBPU1RfTUVNX1dSSVRFKEFSRzEsIFJFUyk7Cit9CisKKwogUFJFKGV4Y2hh
bmdlZGF0YSkKIHsKICAgIFBSSU5UKCJleGNoYW5nZWRhdGEoJSNseCglcyksICUjbHgoJXMpLCAl
bHUpIiwKQEAgLTMyNDgsNiArMzMwNCw5IEBACiAgICBjYXNlIFZLSV9BX1NFVENMQVNTOgogICAg
Y2FzZSBWS0lfQV9TRVRQTUFTSzoKICAgIGNhc2UgVktJX0FfU0VURlNJWkU6CisjaWYgREFSV0lO
X1ZFUlMgPj0gREFSV0lOXzEwXzYKKyAgIGNhc2UgVktJX0FfU0VORFRSSUdHRVI6CisjZW5kaWYK
ICAgICAgIC8vIGtlcm5lbCByZWFkcyBkYXRhLi5kYXRhK2xlbmd0aAogICAgICAgUFJFX01FTV9S
RUFEKCJhdWRpdG9uKGRhdGEpIiwgQVJHMiwgQVJHMyk7CiAgICAgICBicmVhazsKQEAgLTMyNjYs
NiArMzMyNSw5IEBACiAgICBjYXNlIFZLSV9BX0dFVENMQVNTOgogICAgY2FzZSBWS0lfQV9HRVRQ
SU5GTzoKICAgIGNhc2UgVktJX0FfR0VUUElORk9fQUREUjoKKyNpZiBEQVJXSU5fVkVSUyA+PSBE
QVJXSU5fMTBfNgorICAgY2FzZSBWS0lfQV9HRVRTSU5GT19BRERSOgorI2VuZGlmCiAgICAgICAv
LyBrZXJuZWwgcmVhZHMgYW5kIHdyaXRlcyBkYXRhLi5kYXRhK2xlbmd0aAogICAgICAgLy8gR3JQ
IGZpeG1lIGJlIHByZWNpc2UgYWJvdXQgd2hhdCBnZXRzIHJlYWQgYW5kIHdyaXR0ZW4KICAgICAg
IFBSRV9NRU1fUkVBRCgiYXVkaXRvbihkYXRhKSIsIEFSRzIsIEFSRzMpOwpAQCAtMzI5OSw2ICsz
MzYxLDkgQEAKICAgIGNhc2UgVktJX0FfU0VUQ0xBU1M6CiAgICBjYXNlIFZLSV9BX1NFVFBNQVNL
OgogICAgY2FzZSBWS0lfQV9TRVRGU0laRToKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBf
NgorICAgY2FzZSBWS0lfQV9TRU5EVFJJR0dFUjoKKyNlbmRpZgogICAgICAgLy8ga2VybmVsIHJl
YWRzIGRhdGEuLmRhdGErbGVuZ3RoCiAgICAgICBicmVhazsKIApAQCAtMzMxNiw2ICszMzgxLDkg
QEAKICAgIGNhc2UgVktJX0FfR0VUQ0xBU1M6CiAgICBjYXNlIFZLSV9BX0dFVFBJTkZPOgogICAg
Y2FzZSBWS0lfQV9HRVRQSU5GT19BRERSOgorI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82
CisgICBjYXNlIFZLSV9BX0dFVFNJTkZPX0FERFI6CisjZW5kaWYKICAgICAgIC8vIGtlcm5lbCBy
ZWFkcyBhbmQgd3JpdGVzIGRhdGEuLmRhdGErbGVuZ3RoCiAgICAgICAvLyBHclAgZml4bWUgYmUg
cHJlY2lzZSBhYm91dCB3aGF0IGdldHMgcmVhZCBhbmQgd3JpdHRlbgogICAgICAgUE9TVF9NRU1f
V1JJVEUoQVJHMiwgQVJHMyk7CkBAIC00Mzg0LDYgKzQ0NTIsNTEgQEAKIH0KIAogCitQUkUobWFj
aF9wb3J0X21vdmVfbWVtYmVyKQoreworI3ByYWdtYSBwYWNrKDQpCisgICAgdHlwZWRlZiBzdHJ1
Y3QgeworICAgICAgICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOworICAgICAgICBORFJfcmVjb3Jk
X3QgTkRSOworICAgICAgICBtYWNoX3BvcnRfbmFtZV90IG1lbWJlcjsKKyAgICAgICAgbWFjaF9w
b3J0X25hbWVfdCBhZnRlcjsKKyAgICB9IFJlcXVlc3Q7CisjcHJhZ21hIHBhY2soKQorCisgICAg
UmVxdWVzdCAqcmVxID0gKFJlcXVlc3QgKilBUkcxOworCisgICAgUFJJTlQoIm1hY2hfcG9ydF9t
b3ZlX21lbWJlciglcywgJXMsICVzKSIsIAorICAgICAgICAgIG5hbWVfZm9yX3BvcnQoTUFDSF9S
RU1PVEUpLCAKKyAgICAgICAgICBuYW1lX2Zvcl9wb3J0KHJlcS0+bWVtYmVyKSwgCisgICAgICAg
ICAgbmFtZV9mb3JfcG9ydChyZXEtPmFmdGVyKSk7CisgICAgLyoKKyAgICBNQUNIX0FSRyhtYWNo
X3BvcnRfbW92ZV9tZW1iZXIubWVtYmVyKSA9IHJlcS0+bWVtYmVyOworICAgIE1BQ0hfQVJHKG1h
Y2hfcG9ydF9tb3ZlX21lbWJlci5hZnRlcikgPSByZXEtPmFmdGVyOworICAgICovCisgICAgQUZU
RVIgPSBQT1NUX0ZOKG1hY2hfcG9ydF9tb3ZlX21lbWJlcik7Cit9CisKK1BPU1QobWFjaF9wb3J0
X21vdmVfbWVtYmVyKQoreworI3ByYWdtYSBwYWNrKDQpCisgICB0eXBlZGVmIHN0cnVjdCB7Cisg
ICAgICBtYWNoX21zZ19oZWFkZXJfdCBIZWFkOworICAgICAgTkRSX3JlY29yZF90IE5EUjsKKyAg
ICAgIGtlcm5fcmV0dXJuX3QgUmV0Q29kZTsKKyAgICAgIG1hY2hfbXNnX3RyYWlsZXJfdCB0cmFp
bGVyOworICAgfSBSZXBseTsKKyNwcmFnbWEgcGFjaygpCisKKyAgIFJlcGx5ICpyZXBseSA9IChS
ZXBseSAqKUFSRzE7CisKKyAgIGlmICghcmVwbHktPlJldENvZGUpIHsKKyAgICAgIC8vIGZpeG1l
IHBvcnQgc2V0IHRyYWNrZXI/CisgICB9IGVsc2UgeworICAgICAgUFJJTlQoIm1pZyByZXR1cm4g
JWQiLCByZXBseS0+UmV0Q29kZSk7CisgICB9Cit9CisKKwogUFJFKG1hY2hfcG9ydF9kZXN0cm95
KQogewogI3ByYWdtYSBwYWNrKDQpCkBAIC00NTA0LDYgKzQ2MTcsMzQgQEAKIH0KIAogCitQUkUo
bWFjaF9wb3J0X2V4dHJhY3RfcmlnaHQpCit7CisjcHJhZ21hIHBhY2soNCkKKyAgIHR5cGVkZWYg
c3RydWN0IHsKKyAgICAgIG1hY2hfbXNnX2hlYWRlcl90IEhlYWQ7CisgICAgICBORFJfcmVjb3Jk
X3QgTkRSOworICAgICAgbWFjaF9wb3J0X25hbWVfdCBuYW1lOworICAgICAgbWFjaF9tc2dfdHlw
ZV9uYW1lX3QgbXNndF9uYW1lOworICAgfSBSZXF1ZXN0OworI3ByYWdtYSBwYWNrKCkKKworICAg
UmVxdWVzdCAqcmVxID0gKFJlcXVlc3QgKilBUkcxOworICAgCisgICBQUklOVCgibWFjaF9wb3J0
X2V4dHJhY3RfcmlnaHQoJXMsICVzLCAlZCkiLCAKKyAgICAgICAgIG5hbWVfZm9yX3BvcnQoTUFD
SF9SRU1PVEUpLCAKKyAgICAgICAgIG5hbWVfZm9yX3BvcnQocmVxLT5uYW1lKSwgcmVxLT5tc2d0
X25hbWUpOworICAgCisgICBBRlRFUiA9IFBPU1RfRk4obWFjaF9wb3J0X2V4dHJhY3RfcmlnaHQp
OworICAgCisgICAvLyBmaXhtZSBwb3J0IHRyYWNrZXI/Cit9CisKK1BPU1QobWFjaF9wb3J0X2V4
dHJhY3RfcmlnaHQpCit7CisgICAvLyBmaXhtZSBpbXBvcnRfY29tcGxleF9tZXNzYWdlIGhhbmRs
ZXMgdGhlIHJldHVybmVkIHJlc3VsdCwgcmlnaHQ/Cit9CisKKwogUFJFKG1hY2hfcG9ydF9nZXRf
YXR0cmlidXRlcykKIHsKICNwcmFnbWEgcGFjayg0KQpAQCAtNjA5Miw2ICs2MjMzLDcgQEAKIAog
ICAgLy8gR3JQIGZpeG1lIHNlbWFwaG9yZSBkZXN0cm95IG5lZWRlZCB3aGVuIHRocmVhZCBjcmVh
dGlvbiBmYWlscwogICAgLy8gR3JQIGZpeG1lIHByb2JhYmx5IG90aGVyIGNsZWFudXAgdG9vCisg
ICAvLyBHclAgZml4bWUgc3BpbmxvY2tzIG1pZ2h0IGJlIGdvb2QgZW5vdWdoPwogCiAgICAvLyBE
REQ6IEknbSBub3QgYXQgYWxsIHN1cmUgdGhpcyBpcyB0aGUgcmlnaHQgc3BvdCBmb3IgdGhpcy4g
IEl0IHByb2JhYmx5CiAgICAvLyBzaG91bGQgYmUgaW4gcHRocmVhZF9oaWphY2sgaW5zdGVhZCwg
anVzdCBiZWZvcmUgdGhlIGNhbGwgdG8KQEAgLTYyMTAsMTAgKzYzNTIsNiBAQAogfQogCiAKLVBP
U1QodGhyZWFkX3BvbGljeSkKLXsKLX0KLQogUFJFKHRocmVhZF9wb2xpY3kpCiB7CiAgICBtYWNo
X21zZ19oZWFkZXJfdCAqbWggPSAobWFjaF9tc2dfaGVhZGVyX3QgKilBUkcxOwpAQCAtNjIyOCw3
ICs2MzY2LDI1IEBACiAgICBBRlRFUiA9IFBPU1RfRk4odGhyZWFkX3BvbGljeSk7CiB9CiAKK1BP
U1QodGhyZWFkX3BvbGljeSkKK3sKK30KIAorCitQUkUodGhyZWFkX3BvbGljeV9zZXQpCit7Cisg
ICBtYWNoX21zZ19oZWFkZXJfdCAqbWggPSAobWFjaF9tc2dfaGVhZGVyX3QgKilBUkcxOworCisg
ICBQUklOVCgidGhyZWFkX3BvbGljeV9zZXQoJXMsIC4uLikiLCBuYW1lX2Zvcl9wb3J0KG1oLT5t
c2doX3JlcXVlc3RfcG9ydCkpOworCisgICBBRlRFUiA9IFBPU1RfRk4odGhyZWFkX3BvbGljeV9z
ZXQpOworfQorCitQT1NUKHRocmVhZF9wb2xpY3lfc2V0KQoreworfQorCisKIFBSRSh0aHJlYWRf
aW5mbykKIHsKICAgIG1hY2hfbXNnX2hlYWRlcl90ICptaCA9IChtYWNoX21zZ19oZWFkZXJfdCAq
KUFSRzE7CkBAIC02NDU1LDEyICs2NjExLDE4IEBACiAgICBjYXNlIDMyMTE6CiAgICAgICBDQUxM
X1BSRShtYWNoX3BvcnRfZ2V0X3NldF9zdGF0dXMpOwogICAgICAgcmV0dXJuOworICAgY2FzZSAz
MjEyOgorICAgICAgQ0FMTF9QUkUobWFjaF9wb3J0X21vdmVfbWVtYmVyKTsKKyAgICAgIHJldHVy
bjsKICAgIGNhc2UgMzIxMzoKICAgICAgIENBTExfUFJFKG1hY2hfcG9ydF9yZXF1ZXN0X25vdGlm
aWNhdGlvbik7CiAgICAgICByZXR1cm47CiAgICBjYXNlIDMyMTQ6CiAgICAgICBDQUxMX1BSRSht
YWNoX3BvcnRfaW5zZXJ0X3JpZ2h0KTsKICAgICAgIHJldHVybjsKKyAgIGNhc2UgMzIxNToKKyAg
ICAgIENBTExfUFJFKG1hY2hfcG9ydF9leHRyYWN0X3JpZ2h0KTsKKyAgICAgIHJldHVybjsKICAg
IGNhc2UgMzIxNzoKICAgICAgIENBTExfUFJFKG1hY2hfcG9ydF9nZXRfYXR0cmlidXRlcyk7CiAg
ICAgICByZXR1cm47CkBAIC02NjAyLDYgKzY3NjQsOSBAQAogICAgY2FzZSAzNjE2OiAKICAgICAg
IENBTExfUFJFKHRocmVhZF9wb2xpY3kpOwogICAgICAgcmV0dXJuOworICAgY2FzZSAzNjE3OiAK
KyAgICAgIENBTExfUFJFKHRocmVhZF9wb2xpY3lfc2V0KTsKKyAgICAgIHJldHVybjsKICAgIGRl
ZmF1bHQ6CiAgICAgICAvLyB1bmtub3duIG1lc3NhZ2UgdG8gYSB0aHJlYWQKICAgICAgIFZHXyhw
cmludGYpKCJVTktOT1dOIHRocmVhZCBtZXNzYWdlIFtpZCAlZCwgdG8gJXMsIHJlcGx5IDB4JXhd
XG4iLCAKQEAgLTY3NjYsNyArNjkzMSw3IEBACiAKIFBPU1QobWFjaF9tc2dfdW5oYW5kbGVkKQog
ewotICAgTUxfKHN5bmNfbWFwcGluZ3MpKCJhZnRlciIsICJtYWNoX21zZ191bmhhbmRsZWQiLCAw
KTsKKyAgIE1MXyhzeW5jX21hcHBpbmdzKSgiYWZ0ZXIiLCAibWFjaF9tc2dfcmVjZWl2ZSAodW5o
YW5kbGVkKSIsIDApOwogfQogCiAKQEAgLTY5MDYsMTEgKzcwNzEsMTIgQEAKIH0KIAogCisjaWYg
REFSV0lOX1ZFUlMgPD0gREFSV0lOXzEwXzUKIFBSRShfX3NlbXdhaXRfc2lnbmFsKQogewotICAg
LyogYXJnczogaW50IGNvbmRfc2VtLCBpbnQgbXV0ZXhfc2VtLAotICAgICAgICAgICAgaW50IHRp
bWVvdXQsIGludCByZWxhdGl2ZSwKLSAgICAgICAgICAgIHRpbWVfdCB0dl9zZWMsIHRpbWVfdCB0
dl9uc2VjICovCisgICAvKiAxMC41IGFyZ3M6IGludCBjb25kX3NlbSwgaW50IG11dGV4X3NlbSwK
KyAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQsIGludCByZWxhdGl2ZSwKKyAgICAgICAgICAg
ICAgICAgdGltZV90IHR2X3NlYywgdGltZV90IHR2X25zZWMgKi8KICAgIFBSSU5UKCJfX3NlbXdh
aXRfc2lnbmFsKHdhaXQgJXMsIHNpZ25hbCAlcywgJWxkLCAlbGQsICVsZHM6JWxkbnMpIiwgCiAg
ICAgICAgICBuYW1lX2Zvcl9wb3J0KEFSRzEpLCBuYW1lX2Zvcl9wb3J0KEFSRzIpLCBBUkczLCBB
Ukc0LCBBUkc1LCBBUkc2KTsKICAgIFBSRV9SRUdfUkVBRDYobG9uZywgIl9fc2Vtd2FpdF9zaWdu
YWwiLCAKQEAgLTY5MjAsOCArNzA4NiwzMyBAQAogCiAgICAqZmxhZ3MgfD0gU2ZNYXlCbG9jazsK
IH0KKyNlbHNlCitQUkUoX19zZW13YWl0X3NpZ25hbCkKK3sKKyAgIC8qIDEwLjUgYXJnczogaW50
IGNvbmRfc2VtLCBpbnQgbXV0ZXhfc2VtLAorICAgICAgICAgICAgICAgICBpbnQgdGltZW91dCwg
aW50IHJlbGF0aXZlLAorICAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3BlYyAqdHMgKi8KKyAg
IFBSSU5UKCJfX3NlbXdhaXRfc2lnbmFsKHdhaXQgJXMsIHNpZ25hbCAlcywgJWxkLCAlbGQsICUj
bHgpIiwgCisgICAgICAgICBuYW1lX2Zvcl9wb3J0KEFSRzEpLCBuYW1lX2Zvcl9wb3J0KEFSRzIp
LCBBUkczLCBBUkc0LCBBUkc1KTsKKyAgIFBSRV9SRUdfUkVBRDUoaW50LCAiX19zZW13YWl0X3Np
Z25hbCIsIAorICAgICAgICAgICAgICAgICBpbnQsY29uZF9zZW0sIGludCxtdXRleF9zZW0sCisg
ICAgICAgICAgICAgICAgIGludCx0aW1lb3V0LCBpbnQscmVsYXRpdmUsIAorICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgdmtpX3RpbWVzcGVjICosdHMpOworICAgCisgICBpZiAoQVJHNSkg
UFJFX01FTV9SRUFEICgiX19zZW13YWl0X3NpZ25hbCh0cykiLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFSRzUsIHNpemVvZihzdHJ1Y3QgdmtpX3RpbWVzcGVjKSk7CisgICAKKyAgICpm
bGFncyB8PSBTZk1heUJsb2NrOworfQorI2VuZGlmCiAKIAorUFJFKF9fdGhyZWFkX3NlbGZpZCkK
K3sKKyAgIFBSSU5UKCJfX3RocmVhZF9zZWxmaWQgKCkiKTsKKyAgIFBSRV9SRUdfUkVBRDAodmtp
X3VpbnQ2NF90LCAiX190aHJlYWRfc2VsZmlkIik7Cit9CisKIFBSRSh0YXNrX2Zvcl9waWQpCiB7
CiAgICBQUklOVCgidGFza19mb3JfcGlkKCVzLCAlbGQsICUjbHgpIiwgbmFtZV9mb3JfcG9ydChB
UkcxKSwgQVJHMiwgQVJHMyk7CkBAIC03NDc0LDcgKzc2NjUsMTEgQEAKICAgIE1BQ1hfKF9fTlJf
c2lncmV0dXJuLCAgIHNpZ3JldHVybiksIAogLy8gX19fX18oX19OUl9jaHVkKSwgCiAgICBfX19f
XyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgxODYpKSwgICAvLyA/Pz8gCisjaWYg
REFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKy8vIF9fX19fKF9fTlJfZmRhdGFzeW5jKSwgCisj
ZWxzZQogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMTg3KSksICAg
Ly8gPz8/IAorI2VuZGlmCiAgICBHRU5YWShfX05SX3N0YXQsICAgICAgICBzeXNfbmV3c3RhdCks
IAogICAgR0VOWFkoX19OUl9mc3RhdCwgICAgICAgc3lzX25ld2ZzdGF0KSwgCiAgICBHRU5YWShf
X05SX2xzdGF0LCAgICAgICBzeXNfbmV3bHN0YXQpLCAKQEAgLTc1MDEsOCArNzY5NiwxMyBAQAog
Ly8gX19fX18oX19OUl9BVFBnZXRyZXEpLCAKIC8vIF9fX19fKF9fTlJfQVRQZ2V0cnNwKSwgCiAg
ICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgyMTMpKSwgICAvLyBSZXNl
cnZlZCBmb3IgQXBwbGVUYWxrCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyAgIF9f
X19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDIxNCkpLCAgIC8vIG9sZCBrcXVl
dWVfZnJvbV9wb3J0c2V0X25wCisgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1Rf
VU5JWCgyMTUpKSwgICAvLyBvbGQga3F1ZXVlX3BvcnRzZXRfbnAKKyNlbHNlCiAvLyBfX19fXyhf
X05SX2txdWV1ZV9mcm9tX3BvcnRzZXRfbnApLCAKIC8vIF9fX19fKF9fTlJfa3F1ZXVlX3BvcnRz
ZXRfbnApLCAKKyNlbmRpZgogLy8gX19fX18oX19OUl9ta2NvbXBsZXgpLCAKIC8vIF9fX19fKF9f
TlJfc3RhdHYpLCAKIC8vIF9fX19fKF9fTlJfbHN0YXR2KSwgCkBAIC03NTE1LDggKzc3MTUsMTMg
QEAKIC8vIF9fX19fKF9fTlJfc2VhcmNoZnMpLCAKICAgIEdFTlhfKF9fTlJfZGVsZXRlLCAgICAg
IHN5c191bmxpbmspLCAKIC8vIF9fX19fKF9fTlJfY29weWZpbGUpLCAKKyNpZiBEQVJXSU5fVkVS
UyA+PSBEQVJXSU5fMTBfNgorLy8gX19fX18oX19OUl9mZ2V0YXR0cmxpc3QpLCAKKy8vIF9fX19f
KF9fTlJfZnNldGF0dHJsaXN0KSwgCisjZWxzZQogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExf
Q09OU1RSVUNUX1VOSVgoMjI4KSksICAgLy8gPz8gCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FM
TF9DT05TVFJVQ1RfVU5JWCgyMjkpKSwgICAvLyA/PyAKKyNlbmRpZgogICAgR0VOWFkoX19OUl9w
b2xsLCAgICAgICAgc3lzX3BvbGwpLCAKICAgIE1BQ1hfKF9fTlJfd2F0Y2hldmVudCwgIHdhdGNo
ZXZlbnQpLCAKICAgIE1BQ1hZKF9fTlJfd2FpdGV2ZW50LCAgIHdhaXRldmVudCksIApAQCAtNzUz
Miw3ICs3NzM3LDExIEBACiAgICBNQUNYWShfX05SX2ZzY3RsLCAgICAgICBmc2N0bCksIAogICAg
TUFDWF8oX19OUl9pbml0Z3JvdXBzLCAgaW5pdGdyb3VwcyksIAogICAgTUFDWFkoX19OUl9wb3Np
eF9zcGF3biwgcG9zaXhfc3Bhd24pLCAKKyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgor
Ly8gX19fX18oX19OUl9mZnNjdGwpLCAKKyNlbHNlCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FM
TF9DT05TVFJVQ1RfVU5JWCgyNDUpKSwgICAvLyA/Pz8KKyNlbmRpZgogICAgX19fX18oVkdfREFS
V0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjQ2KSksICAgLy8gPz8/CiAvLyBfX19fXyhfX05S
X25mc2NsbnQpLCAKIC8vIF9fX19fKF9fTlJfZmhvcGVuKSwgCkBAIC03NTgzLDIzICs3NzkyLDI3
IEBACiAvLyBfX19fXyhfX05SX2lkZW50aXR5c3ZjKSwgCiAvLyBfX19fXyhfX05SX3NoYXJlZF9y
ZWdpb25fY2hlY2tfbnApLCAKIC8vIF9fX19fKF9fTlJfc2hhcmVkX3JlZ2lvbl9tYXBfbnApLCAK
KyNpZiBEQVJXSU5fVkVSUyA+PSBEQVJXSU5fMTBfNgorLy8gX19fX18oX19OUl92bV9wcmVzc3Vy
ZV9tb25pdG9yKSwgCisjZWxzZQogICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNU
X1VOSVgoMjk2KSksICAgLy8gb2xkIGxvYWRfc2hhcmVkX2ZpbGUgCisjZW5kaWYKICAgIF9fX19f
KFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI5NykpLCAgIC8vIG9sZCByZXNldF9z
aGFyZWRfZmlsZSAKICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDI5
OCkpLCAgIC8vIG9sZCBuZXdfc3lzdGVtX3NoYXJlZF9yZWdpb25zIAogICAgX19fX18oVkdfREFS
V0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMjk5KSksICAgLy8gb2xkIHNoYXJlZF9yZWdpb25f
bWFwX2ZpbGVfbnAgCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgz
MDApKSwgICAvLyBvbGQgc2hhcmVkX3JlZ2lvbl9tYWtlX3ByaXZhdGVfbnAKLS8vIF9fX19fKF9f
TlJfX19wdGhyZWFkX211dGV4X2Rlc3Ryb3kpLCAKLS8vIF9fX19fKF9fTlJfX19wdGhyZWFkX211
dGV4X2luaXQpLCAKLS8vIF9fX19fKF9fTlJfX19wdGhyZWFkX211dGV4X2xvY2spLCAKLS8vIF9f
X19fKF9fTlJfX19wdGhyZWFkX211dGV4X3RyeWxvY2spLCAKLS8vIF9fX19fKF9fTlJfX19wdGhy
ZWFkX211dGV4X3VubG9jayksIAotLy8gX19fX18oX19OUl9fX3B0aHJlYWRfY29uZF9pbml0KSwg
Ci0vLyBfX19fXyhfX05SX19fcHRocmVhZF9jb25kX2Rlc3Ryb3kpLCAKLS8vIF9fX19fKF9fTlJf
X19wdGhyZWFkX2NvbmRfYnJvYWRjYXN0KSwgCi0vLyBfX19fXyhfX05SX19fcHRocmVhZF9jb25k
X3NpZ25hbCksIAorICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzAx
KSksICAgLy8gPz8/CisgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgz
MDIpKSwgICAvLyA/Pz8KKyAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklY
KDMwMykpLCAgIC8vID8/PworICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VO
SVgoMzA0KSksICAgLy8gPz8/CisgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1Rf
VU5JWCgzMDUpKSwgICAvLyA/Pz8KKyAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVD
VF9VTklYKDMwNikpLCAgIC8vID8/PworICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RS
VUNUX1VOSVgoMzA3KSksICAgLy8gPz8/CisgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05T
VFJVQ1RfVU5JWCgzMDgpKSwgICAvLyA/Pz8KKyAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NP
TlNUUlVDVF9VTklYKDMwOSkpLCAgIC8vID8/PwogLy8gX19fX18oX19OUl9nZXRzaWQpLCAKIC8v
IF9fX19fKF9fTlJfc2V0dGlkX3dpdGhfcGlkKSwgCi0vLyBfX19fXyhfX05SX19fcHRocmVhZF9j
b25kX3RpbWVkd2FpdCksIAorICAgX19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VO
SVgoMzEyKSksICAgLy8gPz8/CiAvLyBfX19fXyhfX05SX2Fpb19mc3luYyksIAogICAgTUFDWFko
X19OUl9haW9fcmV0dXJuLCAgICAgYWlvX3JldHVybiksIAogICAgTUFDWF8oX19OUl9haW9fc3Vz
cGVuZCwgICAgYWlvX3N1c3BlbmQpLCAKQEAgLTc2MDgsNyArNzgyMSw3IEBACiAgICBNQUNYWShf
X05SX2Fpb19yZWFkLCAgICAgICBhaW9fcmVhZCksIAogICAgTUFDWF8oX19OUl9haW9fd3JpdGUs
ICAgICAgYWlvX3dyaXRlKSwgCiAvLyBfX19fXyhfX05SX2xpb19saXN0aW8pLCAgIC8vIDMyMAot
Ly8gX19fX18oX19OUl9fX3B0aHJlYWRfY29uZF93YWl0KSwgCisgICBfX19fXyhWR19EQVJXSU5f
U1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzMjEpKSwgICAvLyA/Pz8KIC8vIF9fX19fKF9fTlJfaW9w
b2xpY3lzeXMpLCAKICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDMy
MykpLCAgIC8vID8/PwogLy8gX19fX18oX19OUl9tbG9ja2FsbCksIApAQCAtNzY1MSwxNSArNzg2
NCwyMyBAQAogICAgTUFDWF8oX19OUl9ic2R0aHJlYWRfdGVybWluYXRlLCAgYnNkdGhyZWFkX3Rl
cm1pbmF0ZSksIAogICAgTUFDWFkoX19OUl9rcXVldWUsICAgICAga3F1ZXVlKSwgCiAgICBNQUNY
WShfX05SX2tldmVudCwgICAgICBrZXZlbnQpLCAKLS8vIF9fX19fKF9fTlJfbGNob3duKSwgCisg
ICBHRU5YXyhfX05SX2xjaG93biwgICAgICBzeXNfbGNob3duKSwgCiAvLyBfX19fXyhfX05SX3N0
YWNrX3NuYXBzaG90KSwgCiAgICBNQUNYXyhfX05SX2JzZHRocmVhZF9yZWdpc3RlciwgYnNkdGhy
ZWFkX3JlZ2lzdGVyKSwgCiAgICBNQUNYXyhfX05SX3dvcmtxX29wZW4sICB3b3JrcV9vcGVuKSwg
CiAgICBNQUNYWShfX05SX3dvcmtxX29wcywgICB3b3JrcV9vcHMpLCAKKyNpZiBEQVJXSU5fVkVS
UyA+PSBEQVJXSU5fMTBfNgorLy8gX19fX18oX19OUl9rZXZlbnQ2NCksIAorI2Vsc2UKICAgIF9f
X19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDM2OSkpLCAgIC8vID8/PworI2Vu
ZGlmCiAgICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzNzApKSwgICAv
LyA/Pz8KICAgIF9fX19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDM3MSkpLCAg
IC8vID8/PworI2lmIERBUldJTl9WRVJTID49IERBUldJTl8xMF82CisgICBNQUNYXyhfX05SX19f
dGhyZWFkX3NlbGZpZCwgX190aHJlYWRfc2VsZmlkKSwgCisjZWxzZQogICAgX19fX18oVkdfREFS
V0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzcyKSksICAgLy8gPz8/CisjZW5kaWYKICAgIF9f
X19fKFZHX0RBUldJTl9TWVNDQUxMX0NPTlNUUlVDVF9VTklYKDM3MykpLCAgIC8vID8/PwogICAg
X19fX18oVkdfREFSV0lOX1NZU0NBTExfQ09OU1RSVUNUX1VOSVgoMzc0KSksICAgLy8gPz8/CiAg
ICBfX19fXyhWR19EQVJXSU5fU1lTQ0FMTF9DT05TVFJVQ1RfVU5JWCgzNzUpKSwgICAvLyA/Pz8K
QEAgLTc3MTUsNiArNzkzNiwxMiBAQAogLy8gX19fX18oX19OUl9fX21hY19tb3VudCksCiAvLyBf
X19fXyhfX05SX19fbWFjX2dldF9tb3VudCksCiAvLyBfX19fXyhfX05SX19fbWFjX2dldGZzc3Rh
dCksCisjaWYgREFSV0lOX1ZFUlMgPj0gREFSV0lOXzEwXzYKKyAgIE1BQ1hZKF9fTlJfZnNnZXRw
YXRoLCBmc2dldHBhdGgpLCAKKy8vIF9fX19fKF9fTlJfYXVkaXRfc2Vzc2lvbl9zZWxmKSwKKy8v
IF9fX19fKF9fTlJfYXVkaXRfc2Vzc2lvbl9qb2luKSwKKyNlbmRpZgorCiAvLyBfX19fXyhfX05S
X01BWFNZU0NBTEwpCiAgICBNQUNYXyhfX05SX0RBUldJTl9GQUtFX1NJR1JFVFVSTiwgRkFLRV9T
SUdSRVRVUk4pCiB9OwpJbmRleDogY29yZWdyaW5kL21fc3lzd3JhcC9zeXN3cmFwLW1haW4uYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBjb3JlZ3JpbmQvbV9zeXN3cmFwL3N5c3dyYXAtbWFpbi5jCShyZXZpc2lv
biAxMTAyNikKKysrIGNvcmVncmluZC9tX3N5c3dyYXAvc3lzd3JhcC1tYWluLmMJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDUsNyArMTIwNSw3IEBACiAjICAgIGVycm9yIFVua25vd24gT1MKICMgIGVu
ZGlmCiAKLSAgIHJldHVybiBzeXMgPT0gTlVMTCAgPyAmYmFkX3N5cyAgOiBzeXM7CisgICByZXR1
cm4gKHN5cyAmJiBzeXMtPmJlZm9yZSkgPyBzeXMgOiAmYmFkX3N5czsKIH0KIAogCkluZGV4OiBj
b3JlZ3JpbmQvbV9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29yZWdyaW5kL21fbWFpbi5jCShyZXZp
c2lvbiAxMTAyNikKKysrIGNvcmVncmluZC9tX21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtMTUx
Nyw3ICsxNTE3LDcgQEAKICAgIFZHXyhkb19zeXNjYWxsMikoX19OUl9tdW5tYXAsIDB4MDAwMDAw
MDAsIDB4ZjAwMDAwMDApOwogIyBlbHNlCiAgICAvLyBvcGVuIHVwIGNsaWVudCBzcGFjZQotICAg
VkdfKGRvX3N5c2NhbGwyKShfX05SX211bm1hcCwgMHgxMDAwMDAwMDAsIDB4NzAwMDAwMDAwMDAw
LTB4MTAwMDAwMDAwKTsKKyAgIFZHXyhkb19zeXNjYWxsMikoX19OUl9tdW5tYXAsIDB4MTAwMDAw
MDAwLCAweDdmZmY1MDAwMDAwMC0weDEwMDAwMDAwMCk7CiAgICAvLyBvcGVuIHVwIGNsaWVudCBz
dGFjayBhbmQgZHlsZAogICAgVkdfKGRvX3N5c2NhbGwyKShfX05SX211bm1hcCwgMHg3ZmZmNWMw
MDAwMDAsIDB4NDAwMDAwMCk7CiAjIGVuZGlmCkluZGV4OiBjb3JlZ3JpbmQvTWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gY29yZWdyaW5kL01ha2VmaWxlLmFtCShyZXZpc2lvbiAxMTAyNikKKysr
IGNvcmVncmluZC9NYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTExLDkgKzExMSwxMSBA
QAogCiAjIEJlIGNhcmVmdWwgdy5yLnQuIHBhcmVsbGVsIGJ1aWxkcy4gIFNlZSBzZWN0aW9uIDI3
Ljkgb2YgdGhlIGF1dG9tYWtlIGluZm8KICMgcGFnZSwgIkhhbmRsaW5nIFRvb2xzIHRoYXQgUHJv
ZHVjZSBtYW55IE91dHB1dHMiLgotJChtYWNoX3VzZXJfc3Jjcyk6ICQobWFjaF9kZWZzKQorJChh
YnNfYnVpbGRkaXIpL21fbWFjaDogCisJbWtkaXIgLXAgJEAKKyQobWFjaF91c2VyX3NyY3MpOiAk
KG1hY2hfZGVmcykgJChhYnNfYnVpbGRkaXIpL21fbWFjaAogCShjZCBtX21hY2ggJiYgbWlnICQo
bWFjaF9kZWZzKSkKLSQobWFjaF9oZHJzKTogJChtYWNoX2RlZnMpICQobWFjaF91c2VyX3NyY3Mp
CiskKG1hY2hfaGRycyk6ICQobWFjaF9kZWZzKSAkKG1hY2hfdXNlcl9zcmNzKSAkKGFic19idWls
ZGRpcikvbV9tYWNoCiAJKGNkIG1fbWFjaCAmJiBtaWcgJChtYWNoX2RlZnMpKQogCiAjLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40092</attachid>
            <date>2010-01-21 11:42:34 +0000</date>
            <delta_ts>2010-02-24 16:12:47 +0000</delta_ts>
            <desc>Disabled arcrandom interception in coregrind/vg_preloaded.c</desc>
            <filename>arcrandom.patch</filename>
            <type>text/plain</type>
            <size>1339</size>
            <attacher name="Alexander Potapenko">glider</attacher>
            
              <data encoding="base64">SW5kZXg6IGNvcmVncmluZC92Z19wcmVsb2FkZWQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb3JlZ3JpbmQv
dmdfcHJlbG9hZGVkLmMJKHJldmlzaW9uIDExMDI3KQorKysgY29yZWdyaW5kL3ZnX3ByZWxvYWRl
ZC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMzggKzE0Nyw3IEBACiAgICAgZW52X3Vuc2V0ZW52
KGVudnAsICJEWUxEX0lOU0VSVF9MSUJSQVJJRVMiKTsKIH0gICAKIAotLyogLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0gICBEYXJ3aW4gYXJjNHJhbmRvbSAocmRhcjovLzYxNjYyNzUpCi0gICAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K
IAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLWludCBWR19SRVBMQUNFX0ZVTkNUSU9OX1pVKGxpYlN5
c3RlbVpkWmFaZGR5bGliLCBhcmM0cmFuZG9tKSh2b2lkKTsKLWludCBWR19SRVBMQUNFX0ZVTkNU
SU9OX1pVKGxpYlN5c3RlbVpkWmFaZGR5bGliLCBhcmM0cmFuZG9tKSh2b2lkKQotewotICAgIHN0
YXRpYyBGSUxFICpybmQgPSAwOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXJuZCkgcm5k
ID0gZm9wZW4oIi9kZXYvcmFuZG9tIiwgInIiKTsKLSAgICAKLSAgICBmcmVhZCgmcmVzdWx0LCBz
aXplb2YocmVzdWx0KSwgMSwgcm5kKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFZH
X1JFUExBQ0VfRlVOQ1RJT05fWlUobGliU3lzdGVtWmRaYVpkZHlsaWIsIGFyYzRyYW5kb21fc3Rp
cikodm9pZCk7Ci12b2lkIFZHX1JFUExBQ0VfRlVOQ1RJT05fWlUobGliU3lzdGVtWmRaYVpkZHls
aWIsIGFyYzRyYW5kb21fc3Rpcikodm9pZCkKLXsKLSAgICAvLyBkbyBub3RoaW5nCi19Ci0KLXZv
aWQgVkdfUkVQTEFDRV9GVU5DVElPTl9aVShsaWJTeXN0ZW1aZFphWmRkeWxpYiwgYXJjNHJhbmRv
bV9hZGRyYW5kb20pKHVuc2lnbmVkIGNoYXIgKmRhdCwgaW50IGRhdGxlbik7Ci12b2lkIFZHX1JF
UExBQ0VfRlVOQ1RJT05fWlUobGliU3lzdGVtWmRaYVpkZHlsaWIsIGFyYzRyYW5kb21fYWRkcmFu
ZG9tKSh1bnNpZ25lZCBjaGFyICpkYXQsIGludCBkYXRsZW4pCi17Ci0gICAgLy8gZG8gbm90aGlu
ZwotICAgIC8vIEdyUCBmaXhtZSBvdWdodCB0byBjaGVjayBbZGF0Li5kYXQrZGF0bGVuKSBpcyBk
ZWZpbmVkCi0gICAgLy8gYnV0IGRvbid0IGNhcmUgaWYgaXQncyBpbml0aWFsaXplZAotfQotCiAj
ZWxzZQogCiAjICBlcnJvciBVbmtub3duIE9TCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40900</attachid>
            <date>2010-02-18 19:30:12 +0000</date>
            <delta_ts>2010-02-18 19:30:12 +0000</delta_ts>
            <desc>Remove stdio depency from arc4random</desc>
            <filename>fix-arc4random.patch</filename>
            <type>text/plain</type>
            <size>725</size>
            <attacher name="Filipe Cabecinhas">filcab</attacher>
            
              <data encoding="base64">LS0tIGNvcmVncmluZC92Z19wcmVsb2FkZWQuYworKysgY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5j
CkBAIC0xNTEsMTcgKzE1MSwxOCBAQCBzdGF0aWMgdm9pZCB2Z19jbGVhbnVwX2Vudih2b2lkKQog
ICAgRGFyd2luIGFyYzRyYW5kb20gKHJkYXI6Ly82MTY2Mjc1KQogICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAK
LSNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAKIGludCBWR19SRVBMQUNFX0ZVTkNUSU9OX1pVKGxpYlN5c3RlbVpkWmFaZGR5bGliLCBh
cmM0cmFuZG9tKSh2b2lkKTsKIGludCBWR19SRVBMQUNFX0ZVTkNUSU9OX1pVKGxpYlN5c3RlbVpk
WmFaZGR5bGliLCBhcmM0cmFuZG9tKSh2b2lkKQogewotICAgIHN0YXRpYyBGSUxFICpybmQgPSAw
OworICAgIHN0YXRpYyBpbnQgcm5kID0gLTE7CiAgICAgaW50IHJlc3VsdDsKIAotICAgIGlmICgh
cm5kKSBybmQgPSBmb3BlbigiL2Rldi9yYW5kb20iLCAiciIpOwotICAgIAotICAgIGZyZWFkKCZy
ZXN1bHQsIHNpemVvZihyZXN1bHQpLCAxLCBybmQpOworICAgIGlmIChybmQgPCAwKSBybmQgPSBv
cGVuKCIvZGV2L3JhbmRvbSIsIE9fUkRPTkxZKTsKKworICAgIHJlYWQocm5kLCAmcmVzdWx0LCBz
aXplb2YocmVzdWx0KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42892</attachid>
            <date>2010-04-19 14:11:01 +0000</date>
            <delta_ts>2010-06-03 23:26:16 +0000</delta_ts>
            <desc>don&apos;t touch SIGKILL and SIGSTOP</desc>
            <filename>dont-touch-sigkill.patch</filename>
            <type>text/plain</type>
            <size>603</size>
            <attacher name="Klaus Kuehnhammer">klaus</attacher>
            
              <data encoding="base64">ZGlmZiAtTmF1ciB2YWxncmluZF9vcmkvY29yZWdyaW5kL21fc2lnbmFscy5jIHZhbGdyaW5kL2Nv
cmVncmluZC9tX3NpZ25hbHMuYwotLS0gdmFsZ3JpbmRfb3JpL2NvcmVncmluZC9tX3NpZ25hbHMu
YwkyMDEwLTA0LTE5IDE0OjAyOjIyLjAwMDAwMDAwMCArMDIwMAorKysgdmFsZ3JpbmQvY29yZWdy
aW5kL21fc2lnbmFscy5jCTIwMTAtMDQtMTkgMTQ6MDM6NTAuMDAwMDAwMDAwICswMjAwCkBAIC0y
NTQ2LDcgKzI1NDYsNyBAQAogICAgICAgLyogR2V0IHRoZSBvbGQgaG9zdCBhY3Rpb24gKi8KICAg
ICAgIHJldCA9IFZHXyhzaWdhY3Rpb24pKGksIE5VTEwsICZzYSk7CiAKLSMgICAgIGlmIGRlZmlu
ZWQoVkdQX3g4Nl9kYXJ3aW4pCisjICAgICBpZiBkZWZpbmVkKFZHUF94ODZfZGFyd2luKSB8fCBk
ZWZpbmVkKFZHUF9hbWQ2NF9kYXJ3aW4pCiAgICAgICAvKiBhcHBhcmVudGx5IHdlIG1heSBub3Qg
ZXZlbiBhc2sgYWJvdXQgdGhlIGRpc3Bvc2l0aW9uIG9mIHRoZXNlCiAgICAgICAgICBzaWduYWxz
LCBsZXQgYWxvbmUgY2hhbmdlIHRoZW0gKi8KICAgICAgIGlmIChyZXQgIT0gMCAmJiAoaSA9PSBW
S0lfU0lHS0lMTCB8fCBpID09IFZLSV9TSUdTVE9QKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>49086</attachid>
            <date>2010-07-13 02:55:49 +0000</date>
            <delta_ts>2010-07-13 02:55:49 +0000</delta_ts>
            <desc>for comment #85</desc>
            <filename>PlainCocoa.zip</filename>
            <type>application/zip</type>
            <size>52532</size>
            <attacher name="Sean">cwatson</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAOum7DwAAAAAAAAAAAAAAAALABAAUGxhaW5Db2NvYS9VWAwAn7c7THq5O0z1ARQA
UEsDBBQACAAIAO+m7DwAAAAAAAAAAAAAAAAUABAAUGxhaW5Db2NvYS8uRFNfU3RvcmVVWAwAhLk7
TIG5O0z1ARQA7ZhBCsIwEEX/1AoFN1m6zMYDeINQ6gm8gNRuhEIX4j5H1zYfqVQXrlr0PxheYCZJ
u0kzBWDlrdkDDkCBZOwwxR6xRo0bLmjRNNdzW3ddO+SyUY0Na7zmhRBCCLE8LKnYzPsYQogF0p8P
ng50TDbmMzofzXG0pwMdk411GZ3TBe1oTwc6JvPQMjYfxp2toB3t6fDVKwvxN6ySXP/9P+B9/y+E
+G0sr45ViWdDMC14xGk0jvh8CcjSD8XtaK6nAx2TdREQYi7uUEsHCF92h9nGAAAABBgAAFBLAwQK
AAAAAADwpuw8AAAAAAAAAAAAAAAACQAQAF9fTUFDT1NYL1VYDACEuTtMhLk7TPUBFABQSwMECgAA
AAAA8KbsPAAAAAAAAAAAAAAAABQAEABfX01BQ09TWC9QbGFpbkNvY29hL1VYDACEuTtMhLk7TPUB
FABQSwMEFAAIAAgA76bsPAAAAAAAAAAAAAAAAB8AEABfX01BQ09TWC9QbGFpbkNvY29hLy5fLkRT
X1N0b3JlVVgMAIS5O0yBuTtM9QEUAGNgFWNnYGJg8E1MVvAPVohQgAKQGAMnEBsBsQIQg/hBDEjA
gQE7AABQSwcI3JGPuCgAAABSAAAAUEsDBAoAAAAAAO+m7DwAAAAAAAAAAAAAAAARABAAUGxhaW5D
b2NvYS9idWlsZC9VWAwAqLc7TIG5O0z1ARQAUEsDBBQACAAIAO+m7DwAAAAAAAAAAAAAAAAaABAA
UGxhaW5Db2NvYS9idWlsZC8uRFNfU3RvcmVVWAwAhLk7TIG5O0z1ARQA7ZhBCsIwEEX/xAoBN1m6
zMYDeIMg9QReQKriptCFuM/RteYjFXXhqqL/wfACM0naTZopAFud90sgAPAoxgLP2DWmqHFAgzOO
+9OubbquveXcoMZuazzmhRBCCPF9WJGfjfsYQogvpD8fIp3oXGzMO7oazAl0pBOdi411jq5oTwc6
0onOxTy0jM2HcWfzdKAjnT56ZSH+hklR6L//a7zu/4UQv41V9aZe4d4QPBdcYzsYZ7y/BLjyQ3E+
mBvpROdiXQSEGIsLUEsHCDmVFFLGAAAABBgAAFBLAwQKAAAAAADwpuw8AAAAAAAAAAAAAAAAGgAQ
AF9fTUFDT1NYL1BsYWluQ29jb2EvYnVpbGQvVVgMAIS5O0yEuTtM9QEUAFBLAwQUAAgACADvpuw8
AAAAAAAAAAAAAAAAJQAQAF9fTUFDT1NYL1BsYWluQ29jb2EvYnVpbGQvLl8uRFNfU3RvcmVVWAwA
hLk7TIG5O0z1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwGxAhCD+EEMSMCBATsAAFBLBwjc
kY+4KAAAAFIAAABQSwMECgAAAAAA6KbsPAAAAAAAAAAAAAAAABcAEABQbGFpbkNvY29hL2J1aWxk
L0RlYnVnL1VYDABzuTtMc7k7TPUBFABQSwMECgAAAAAA6qbsPAAAAAAAAAAAAAAAACYAEABQbGFp
bkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29jb2EuYXBwL1VYDACEuTtMeLk7TPUBFABQSwMECgAA
AAAA6qbsPAAAAAAAAAAAAAAAAC8AEABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29jb2Eu
YXBwL0NvbnRlbnRzL1VYDACEuTtMd7k7TPUBFABQSwMEFAAIAAgA6KbsPAAAAAAAAAAAAAAAADkA
EABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29jb2EuYXBwL0NvbnRlbnRzL0luZm8ucGxp
c3RVWAwAhLk7THO5O0z1ARQAnZNRb4IwFIWf569gvNvqi1kWhlHQxARZM3DJHitUbCxtU4rKv99F
3cMgJMv6QkrPd+65za03v5bCOTNTcSXf3CmauA6Tmcq5LN7cXboev7hzf+Q9h+9B+kVWjha8sg7Z
LaNN4LhjjBdaC4ZxmIYOiTZJ6oAHxqvYddyjtfoV48vlgmirQpkqW2GFiVGaGdtEYDYGAOU2d6HM
3f1XHPib88z6oyfvxBo/WC9rmQsWsjMTSpdM2g9WgNrD7TGoKmsgvL+SBZgdPfzYd/jVlWW1pXvB
uiARlMtAZYoOsZscqvIDZ6bLQoOoUbWBr6ayQX/wkgcVQn/QATXN573zru0MTYb4mJb/6IDQ7EQL
lja6By8IiYaw5KiMfWRMboouPR1OmvBCUlubXsU5rCFo4EKmXX2UbLnkZV0mTWVZOYRN0KxLxskW
bivm+zXvz0J7tGWy7kMEthnXVASCVlWXi5P2WfCM2luKH9jD91H28G3Q/dE3UEsHCEKykAVxAQAA
fwMAAFBLAwQKAAAAAADqpuw8AAAAAAAAAAAAAAAANQAQAFBsYWluQ29jb2EvYnVpbGQvRGVidWcv
UGxhaW5Db2NvYS5hcHAvQ29udGVudHMvTWFjT1MvVVgMAHe5O0x4uTtM9QEUAFBLAwQUAAgACADq
puw8AAAAAAAAAAAAAAAAPwAQAFBsYWluQ29jb2EvYnVpbGQvRGVidWcvUGxhaW5Db2NvYS5hcHAv
Q29udGVudHMvTWFjT1MvUGxhaW5Db2NvYVVYDACEuTtMeLk7TPUBFADtW21sHEcZnj3bjUlMYqVB
ctvEcb6MA43PcU+RewV0F9vphjiO47OTYFQ2e3tj3yZ7u5fdPX+kNQqKWsWkESeBUgSICJEfkRBK
pPRHIoSUNlJxAamtAClC/KgggFNaFEGE3CrCzOzM3s7O7Z6NhIoE+0pzs8877/vMvPN19szeWx99
8M9VAAh1AJyJAQDWofRuIwAvAiKPoSSiJElD6Wf7x/qHD4EqEapVVYJ5OmKYZ6T/2EiAfxvnQDFq
G2hA6RGqliQbTtueGc/X00L4fs3gGMtbD86wUJKsmULW0CTLLmV3V/M1PUb4mjjsSiPl89qnWLap
6hMh7Wuh/maDh1mJ+SFuH2qYlIdaEZoBfF9vJXzbGeyTqnhL+pSq5yRVHzcC+K5RvhEG14NwkSSY
l8ZNuQCD423cTPjuM7iO8V8DwHGWD3dHSx3m6UuPpJmCNtrvzR4GDMbzBPN+otKuomlMoHZJk7Jp
hfN1MLihZpy65k6Vom1W8XVQvmYGs2OJ5weLJUmTa/H1cHw9HB+Olx0XSTKyJxQpJ9syxX4+kfIN
MZgdh+p4HT7F0C07iO/blO9Kg4dXwqfJlqWpls3zpdoJXyODV8CHBtk2gvjEdn//iSvjUwvyBMRL
g+c7xrUPY36t+vkqQ0Gxn+845bvG4Frt8/bhgf2DB/r79rtrrItbF10ku0MbiucJu19tRft8F0uM
wDkGnusia+IayhcBiRFtoeDKbkJ9K4FwvbNuK3NpM02rUdpJ6wyTKwlvr2RlLSBLGu+z8ZJlxjU1
G8/NaDla/gRtx0vvxxduN6757hu/7L98vftHP8XT7wYga+EzNer9uMT9/llOcJzHAImJzCP8zSuA
eGbGsmEhPqBmTdmcie/DW+uUYZ604r2GYsid464ifgSalorWZzxNiiq8PT7e5wmv26cokSo693ai
/lWzIMTvD1V+eIV0plkv4pf3+bWj7GLtOEy4zyjpaIGg5ocFxNoE9tdaNOS7atWTLhYPqHYQfy8t
+/eHN5JIIokkkkgiiSSSSCKJJJJI/q/kBBDn/iievXtfPD/bKF4oNc99dPZ14bXf14nC38S5d/5S
L559rVE8+zQo/QM/LeDjqLmfLVxC2YOyI6MOwfvNc7MPxbkS4indPz/7cGEKWbx5mzGZm110yudG
FwL150cXxQsND1EF4nkgXqiPoSyMgBq/xRjPvS6e718Q52Jv3l7a0b4KgKUdHegTn5EbUyC1dTBz
1HncCixok8ckmOxOpLqSPandewBK+BHIxaKmKs5xRZ+a26fqqpUfkEu6klf1iSQYYZiePELZhzRZ
1Z2zm3Sx2Ac1OCHbkGPqzcv6BMwoJoT6kIzPMmxoWknW6qiqaSPQLKg6ck9y/qPFHK/F9gFqZDwM
LXVCTyu2OlntElqIHPdCxSjAEMfQQtw8Pa/mAppXrUbGYpBpoLKq/5ny5BQyGDKhBXW73zQNMwlS
T3XT8Ux1J3yVGsrJg1AvIRNvyJnyTN4oaTlR1nMaHIZGEerJvGwdUS01q0Ey3GislO4e6qv46Yl7
ZezS42hsB2SLzrNezbBgDrsHVZ0smqpu71M1aKGI7HwG2jYK1UpaeWNqCJcNyTrUUPWHEwkvOhSq
kugKJkJVhXVEEseGbY6iqoySPbrf16eHUOmobqu2BnOEqSrKmiYO/QgsFINLSJRgctnWBdTLrIzD
XkcOZtLMKLtLLwctxVSLzpmjCW1ndZZ0Gxx2F3nJNkxkLFsQuPmRSVpIHFBmFQ09Z40YGWSh2Hh+
0RFMoooVQx83zAIqHsJ3F4qhJYFqHYSFLDQPjffi+5GK/TZkr1oH0GSolKgWcpueAQqttAhNTFep
Cs+EQ9kTCLCPIJXoog0gU6CWn7saiHGVpbsScDCnDR2CrzwvDWbG0NPnZ2mjLKiNA+eqB2xzVSXE
Q1RogeRRHP2nSjKKfTBDqgUDFzZdEgBIZ5Z2fAPlZXyqDO79aWlpKY8vP+79Dj2Rs/WNgORt9LsI
5+xdTA9NH272ML5baUKfLfR03kYPTeTu1VFsoL7C6WEgTDcLzU2rGsuo5Ela38CHS45scyupx7cc
a5tfitVj6k+6dxrL8Xya8rQsw4PtB1BaR+13rsD+BZQaqX1iGXtWcAe491F5mhdpPt0efJ/xHXpP
fLl1ZfcdPVuInXsPGSZntnhji/N5it178800x8Hgvyla6PNnqX4Pze+0+P3SNL9K9fs5+1davPtC
1i9Pc7fNZ9o93AGY+2Mqs9z7AR1blu+fRuBd3/E8t2h/uTzuvasrzVv895K4P/Bd2Te5+Fy5GaL/
VYj+XogePB6s3xiifzpEPxqiN0P050L0l0L010P0/Pi7Mh9iv0D1jzzh12+geCenT1AMOb1F8WVO
f5Xiu5x+keJ1G/36TRuD9Z/bGMz/pRD9CyE8Fyn+Maf/SYj9OxR/wOnd53m6bvD8fBSltZv869KV
x6m+fZNf3xlin6T6vZz9gRD7Yaof5+xPbQrunxep/iJn/4MQ/TWKb3D6WxT/mdMvUryB20e3UvwU
p/8Cxb2cfrQ1ON4xqj/O2edD9FZrcP9Ptwb3T7GNYHdfnA/5vlhOFum8Ob492P/tkH1U5PDXuHiK
IXzL8UQSSSSRRBJJJJH8r8r6FH7JkrxknlX1HDTBYbOj/GiKvhALC0V7RlJkJQ/BmY5Xy379pC1n
NQjM46+WN6SkQ3u/2Cv1DqQzGWm7VDnXMafLtOhg/0i6ulgsl1E7zJ5PpSTfodxBfJhWBmZqfUqC
06oNyk6DYxJosmzZtMEoaJBAVwGbjTn8QBo8ljYnwG8FqE+qpqGDvwogVsgjd6iUbCjloewE6Lwb
ruN31v8u4IOjOnCjC3086EKPbCODz+d/IdQuf1vYfyQ9HFbcSc/+fyPUgfkUqvU+/pjvRZEp4K4w
Ce6hgncHkG4Bf9zHH4sDzt+wOWbcfi748QOEx5HV1M1n8LGRY98pOOdcznMWxbmdwTjh3wy451kY
Dwp+nGP+cObrz8f8+Iex4Prdc5WtdaT+V7j6Wxh+XD+Lsb97XjNG/a9y/js5/52cv3sOdJr63+H8
E5y/i7+P7NtWe/G9weH3MF7D9Q/TX3harWXiTVJciYditz1fRam13vs9x8sorVvnnct9i2L3fO57
GK/2/v+6hfEa77zsPVrunretF4i/e57XKuBp31xpezctd8/9nsGYmS9pit33m58VcC5UfjIx5mDv
JwmnOPwywZVX3C9x+Drhqxzj3iTlFYzHtZM8pnBycRvY9eXAddZW+0LuuVA/sj7Dy71rwOdAG943
28iPcyy6/Sg0nwT+DTF4syA2K9kwqvfQEEbJ294kqXr3k9zNUXK2TrKXBmy9Idt5ja084Csj6NuC
7OZVXzvxUQt1YtwqKFlTzcF4H7RO2kYx7kUZxw3uLKzEMltStRyj6CSKPpgtTVSrSfutXbphFmQt
Pt2zR9qTILUZtJtWUGfw6H1szQ2u3vivro8Vz9n/6ErB8i9QSwcIRMh8MDgKAADYOAAAUEsDBBQA
CAAIAOim7DwAAAAAAAAAAAAAAAA2ABAAUGxhaW5Db2NvYS9idWlsZC9EZWJ1Zy9QbGFpbkNvY29h
LmFwcC9Db250ZW50cy9Qa2dJbmZvVVgMAIS5O0xzuTtM9QEUAHMMCPCxBwIAUEsHCEkEilsIAAAA
CAAAAFBLAwQKAAAAAADopuw8AAAAAAAAAAAAAAAAOQAQAFBsYWluQ29jb2EvYnVpbGQvRGVidWcv
UGxhaW5Db2NvYS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL1VYDACEuTtMc7k7TPUBFABQSwMECgAA
AAAA6KbsPAAAAAAAAAAAAAAAAEcAEABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29jb2Eu
YXBwL0NvbnRlbnRzL1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL1VYDACEuTtMc7k7TPUBFABQSwME
FAAIAAgA6KbsPAAAAAAAAAAAAAAAAFgAEABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29j
b2EuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdz
VVgMAIS5O0xzuTtM9QEUAB2MwQqAIBAF5+xXePZQ3xH4E1EJkWikCPXx1cPLzu4w7Psx4rB4Mgsz
kZ2HjVWuiRdFJpNEKwbNSVfQPnD2vlBlD9V3r5x+GswPUEsHCANeFx1KAAAAXAAAAFBLAwQUAAgA
CADopuw8AAAAAAAAAAAAAAAAUwAQAFBsYWluQ29jb2EvYnVpbGQvRGVidWcvUGxhaW5Db2NvYS5h
cHAvQ29udGVudHMvUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovTWFpbk1lbnUubmliVVgMAIS5O0xz
uTtM9QEUAJy9B2AUZfM//pTdzd3t7eY2vefSe+fSE3oTCISEXmIIBwRCElLoyD4qVSkiHekgvVdB
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
u4tDxJHiGPFlca64XFwvbha3itvFneJu8YD4jnhY/FD8XLwh3hS/E++J3zsDZ+gsOvs7BzoHOYc4
xzjnOLdz7uM80HmE80jnCudRzq86z3Je7LzceYfzQeePnT9zvuP8i/Nvzk+cnxp8DIGGIEOIIcwQ
YYg1xBsSDRmGLOofgwyDDUMMwwzDDdMMMwyvGWbRODefxsDFhk2GrYYdht2GvdTB7hp+Nfxu+MPw
TPKVjFKwFCqFS5FSnJQgJUm5UkupjdRe6i4VSoOkCmmUVC3VSgulZdJyaaW0WlorbZQ2S1ul3dJe
6aR0UfpEuixdlX6X/pT+lv51gS7YReOic9G7SC6uLkEu8S6JLskuzVz6uJS4mF2Gu5S5lLtUulS5
jHEZ5zLBZYbLay5LXTa4bHLZ4rLN5SOXyy5XXT5zuebypcs3Ljddbrs8dvnF5Zmrk6vWlXcVXONd
U1xNrmmuGa5Zri1cW7m2ce3h2su11HW061jX8a4TXZe7rnFd5/q260bXza47XHe57nE94PqO6xnX
y65XXT9zveb6u+sfrs9c/3L9xw27sW5Obt5uyW7N3Vq6tXZr6zbEbYTbSLcKt1Fu1W5j3ca7TXSb
5TbX7U23hW5L3Na5vet2zu282wW3i24/uf3m9sTtqdufbn+7I3fGnXP3cvdxN7onuae4m9zT3DPc
+7oXuRe7l7ib3Ye6l7mXu1e6v+z+qvss9znub7ivdN/sfsD9HffD7kfcr7vfcv/O/a77fffv3X9y
/9n9Vw/g4e0R7hHpEe0R69HFo7tHoUdPj94efT2KPIo9SjzKPKZ4zPOY77HQY7HHOx5HPY57nPR4
z+OMx3mPCx4XPb7yuOFx0+M7j188oafoafB08XTzNHlmemZ75nq28Gzl2d6zo2cnz76epZ6jPcd6
jvec6Lncc43nOs+3PTd6bvbc4bnLc4/ncc9Tnmc8z3l+5Pmx56eetzy/87zred9L5+XsJXm5erl7
eXr5eQV4Gb1ivOK80r3aerX36ujVyavMa5RXtVet1xivcV4vecleL3tN9ZruNctrqddbXiu8Vnmd
8Drj9b7XB14fen3kddnrqtdnXre97no98PrBG3kz3q7eRu9g71DvcO/23p2987y7eXf3LvTu493P
e4D3YO8y73HeE7wneU/2XuW93nuD9ybvLd7bvHd77/Xe7/2u91Hv096XvK94f+r9ufdT7398gA/y
YXw4H95H8HH2ifGJ82nu09knz6ebT3efap+xPuN9Jvq85CP7TPGZ5jPDZ7bPXJ+FPmt91vts8Nnk
85HPFZ9rPl/6fO1zw+dbnzs+93we+Dzxeebzty/w1fnqfcN9U3xNvmm+Gb4DfV/0NfsO9S31HeE7
0rfKt8Z3tC/xfcV3ru883/m+C30P+L7re9T3uO9J3/d8z/me973g+63vLT/sZ/Bz8XPz8/DL8svx
a+XXxq+dXwe/F/y6+uX7FfgV+5X4VfpV+dX4jfZb5PeW3wq/VX5r/Nb5bfLb4rfNb7ffXr9Dfmf9
zvmd97vg96PfL36/+T3xe+r3pz/wR/6Mf7B/a/9u/t39C/17+k/wn+T/sv+r/lP9p/vP9J/j/4b/
m/5b/bf7H/Y/4n/M/4T/Tf+7/vf9v/f/wf+R/6/+v/v/4f93gC7AM8A7wDfAPyA3oHVA24D2AR0D
OgV0C+geUBhQHDA4YGjA8IAxAeMC5gS8FbAiYFXAmoBTAe8HfBDwYcBHAR8HXA34LOBaIAgMDkwI
TApMCTQF9gzsFzggsCiwOLAkcFjg8MCywJmBawN3Bu4O3Bu4P/DLwG8CbwbeDrwTeC/wh8BHgY8D
/zFCI2N0MvoYTcZWxjbGdsYOxpHGKmONcbRxrHG8cbKRGF8xzjXuNZ4wnjKeNp41PjQ+Nv5i/M34
xPjU+E8QCEJBYlB8UPOglkGtg9oGtQ8aFjQyqCJoVFB1UG3Q+KCJQS8FzQmaF7QgaHHQsqC3g3YE
7QraE3Qi6POg+0HfB/0Q9CjocbBHsG+wf3BgcFBwSHBkcHRwbHBScEpwy+DuwYXBPYN7B/cNnhz8
avDU4OnBM4NfD34j+M3gBcFvBa8I3hK8LXhH8K7gS8GfBV8L/jL46+AbwbeD7wTfC/45+Nfgf0MM
IS4hbiEeIV4hOSGtQtqEtAvpEPJCSNeQ/JCCkL4h/UOGhYwLmRAyKWRyyMshG0I2hWwP2RmyO2Rv
yIGQd0OOhpwIORdyPuTzkC9Cvg75JhSGcqGaUF2oPtQ51C3UI9Q7NCw0IrR5aOfQvND80MLQ2tDx
oRNDXwqVQ18OnRY6I/T10EWhq0O3h+4M3RO6P/Sz0K9Cr4d+E3oz9Hbo/dDvQ38MfRbGhrmEuYV5
hvmEpYVlhmWH5Ya1CGsb1j7shbBeYX3DBoS9GFYWNjrslbApYdPDXgvbGLYlbFvYjrBdYfvDDoYd
DjsbdiXs27BbYXfC7odz4dpwPlwIdw53C/cI9w4PCY8PzwrPCW8R3jr8xfCScHP40PDS8PLwyvDq
8HHh08MXhC8KXxq+PPxQ+JHwY+Enwk+Fvx/+QfiF8MvhN8MfhT8O/zX8SYRbhGeEd4RvhH9EcERo
REREs4i0iMyInIgeEYMiBkcMjRgeMS1iZsTrEbMj5kYsiFgUsTRibcSBiPcizkSci/gw4n7Ew4gf
I36K+DniScTTiL8imUjPyNDI8MioyNjIjpGdI/Miu0V2j+wV2Seyf2RpZFlkRWRV5PTIBZGLIpdG
Lo88FHkk8ljkichTke9HfhB5IfJG5MPIHyMfR/4aJUW5RXlEeUX5RAVGBUWFRsVG5UZ1iuoS1S2q
IKoyqjqqNmpM1Liol6LkqFeiZkYtiXo7amPUlqjtUeejPor6OOpS1JWoa1FfRl2P+j7qx6jHUb9G
c9Hu0cHRodER0dHR7aM7RneK7hLdNbowumd0n+jx0Sujt0Zvj94VvTf6k+jL0VejP4u+Fn09+pvo
W9F/xHjFhMVExETHxMW8ENM5Ji+mW0z3mF4xfWL6x5TGvB6zJGZZzIqY1TFHY47HnIx5L+ZMzPmY
CzEfx9yKZWNdYt1iPWN9YtNiM2OzY3NjW8S2jW0f+0Js/9gRsWNjx8dOipVjl8euil0Tuy727dgt
sdtid8Yejr0Q+0XsV7E3Ym/G4ThNnC5OHyfGSXEecV5xvnEpcaa4jnE943rH9YsbGDc57tW4aXEz
4l6Lmx33ZtyCuMVxm+K2xu2I2x23L+5s3Lm4y3HfxN2M+y7uXrw2XoyX4l3j3eO94v3jA+OD4xPi
k+NN8enxrePbxneLHxBfFD8o3hw/Nf61+Nnxc+PnxS+IXxr/VvzK+LfjN8bviz8Z/1782fgP4u/G
P4h/GP9j/E/xv8U/iX+WgBLcEoISQhLCE6ISXkjomtA9oTChZ0KfhIEJLyaUJFQkjEqYlDAz4fWE
OQnzEnYk7E7Ym7A/4WDCkYRjCScTLiR8kXA34X7Cw4RHiYZE90SvRJ9Ev8SAxJDEsMTIxJTE3MRO
iV0SuyUWJNYkjkucmPhSopz4cuK0xBmJrycuTlyXuCtxT+L+xHcSP028lvhl4teJNxJvJ95JvJ/4
e+LTxL8S/03SJMUkpSdlJuUktUgakPRi0qCkwUlDkkYkjUyqTJqc9HbSnqR9SQeTDid9nvRl0tdJ
N5K+TbqTdC/p+6RnyUHJ8cmJySnJqckFyT2Teyf3Te6fXJxckjwkeUbywuTFycuSVyQfTj6afDz5
ZPJ7yeeSzyd/lPxbCkphUpxSdCkRKdEpsSnxKYkpppS0lMyU4pThKeNS5JTpKW+kzG92qtnpZu83
O9/so2afNLvc7NNm15p91ex6s2+b3Wp2p9n9Zt83+6HZo2Y/N/ut2R/N/mz2jwmaGBNn0pp4k2iS
TG4mT5O3ydcUYAoyhZjCTZGmGFO8KcmUYko1ZZiyTc1NrUxtTO1NHU2dTHmmbqbuph6mXqa+pv6m
gaZiU4lpiKnUVGaqMI0yVZtGm8aaxpsmmSabiOkV0xTTNNNM0+um2aa5pjdNC02LTUtNy02rTGtN
600bTVtM2027THtM+0wHTYdNR03HTSdNp03vm86bPjJ9bLps+tR0zfSV6brpG9Mt0x3TfdP3ph9N
j02/mp6Ynpr+Mv2bilKZVC5Vm6pPFVMNqS6p7qleqT6pfqkBqUGpIanhqVGpsanxqUmpKampqemp
Wak5qS1SW6e2S+2QOip1fOqrqdNSX0+dnTo3dV7q/NSFqctSl6euSj2Qeib1Yuql1Bup36beSr2T
ei/1QeoPaS5pxrS4tIS0pLSUNFNaWlp6WkZablqLtI5p3dJ6pI1Pm5j2Upqc9nLaq2lT0qamvZY2
K21/2jtpR9OOp51Mey/tTNr7aRfSLqZdSruWdi/tcdqvaU/T/kz7O11Ml9Ld0j3TfdJD0mPTE9IT
01ult0/vll6Q3ju9b3r/9Mr0cekT0+ekz0tfkL44fVn6ivTV6evSN6RvTj+ffiH94/RL6VfSP03/
LP2r9Bvp9zPEDEOGa4Z7hmeGd4ZPhm+GMSM4o3VG24wOGS9kdM7Iy+iaUZjRK6M4oyJjbMaEjJkZ
szLmZszLmJ+xKGNJxlsZJzJOZZzOOJtxLuN8xocZFzIuZVzJ+DrjTsb9jJ8yfsn4PeNpZkBmUGZo
ZkRmVGZMZlxmcmazzLTMDpmdMvMy8zMLM/tkDssclVmTOSZzfObUzNcy52cuytyeuTNzd+a+zIOZ
hzLfzTyaeTzzVObpzLOZP2X+kvlH5rPMvzL/yQJZKMspS5ulz/LKishKzErJSs1Kz8rPGp81MYtk
vZI1JWta1oysmVmvZc3Nmpd1OOtI1sms97LOZL2f9UHW+awPsz7Jupz1V9a/2Uw2l63J1mXrs8Vs
12z3bK9s/+zYbFN2enbr7LbZ7bM7ZnfK7pJdlV2TPTp7bPb47InZk7Jfyn4le0r25uxt2Tuzd2fv
zd6ffTD7SPax7JPZ57O/yL6VfSf7cfav2U+yn2X/nQNyonJichJzknOa5aTmpOdk5GTmNM9pmTM8
Z2ROVU5NzpiccTkTciblvJzzas7UnAU5K3JW5xzMOZRzJOd4zqmcMznncs7nXMi5mHMp50rObznP
cv7K+ScX5OJcTa4uV8gNz43Mzc8tyO2d2ze3f+7A3Bdzi3MH5Q7NLc2dl7sgd2nu8tyVuatz1+au
z92cuzV3R+7R3Lu593N/zP0p9+fcX3N/z32S+0fu37n/No9sHt08oXlS85TmpuZpzdObZzTPbd6i
eZfmVc1rmo9uPrb5+OYTm09q/lLz/6+q+I6v6WwcAE4i9i5il5faI/aK3rM95zz3PPdm3nuTmzzP
7XnGqdZobKk9gqKUl2qtKqVojCJiz9q1lZfGrk0pQoz8Pp/f+9f7/ec7wTPJs9qz1pPrWe/Z6Nnk
2ezZ4tnu2em54bntueu573noeez52/PCU+gpkspJlaVYqa7UXuoodZG6S72kjyVZ0qQ+kiXZUpY0
WBomjZCypVHSaGmMNFGaLK2RcqUN0iZpi7RV2ibtlvZKB6Sz0iupSHonFcsl5Wi5lBwjl5cryh3k
znI3uYfcS+4te2RNNmRTTpf7yoPkofIoeaw8QZ4sr5M3ynlyvrxD3iXvkffJh+Qj8nH5slJCiVZK
K+WUCkolpYpSQ6ml1FEaKe2VeMWjKIquICVBSVVCSlgZp0xUJitTla+UGcrXylxlnrJAWaz8omxR
8pUrSoFyTbmh3FLuKPeUh8oT5ZnyQnmlvFHeqyXVUmoZtY3aXu2odla7qt3VnqpHlVVNNdWgGlGp
2k8dqA5Sh6oj1EnqavUXdb36q7pZzVPz1V3qHnW/ekZ9o77XorUYraxWXquoVdY+0GpqtbXmml9L
1AJaSEvXMjSsES2icc3VsrRsbbQ2Q5ulzdHmaQu0hdoSbZl2TPtdO6ud1y5q/9GuaAXaTe22dld7
pL3VY/Syeku9td5Wj9M76p31rnoPvZfeW5d0VTd0U/fqPn24PlIfo4/TJ+iT9Bx9ij5Vn6nP0vP1
Hfpefb9+UD+kH9GP6af0M/p5/ZZRyahq1DRijbpGfaOh0cj4yGhutDI6GJJhGl4jxQgYISNsZBo5
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
bkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29jb2EuYXBwL1VYCACEuTtMeLk7TFBLAQIVAwoAAAAA
AOqm7DwAAAAAAAAAAAAAAAAvAAwAAAAAAAAAAEDtQRgFAABQbGFpbkNvY29hL2J1aWxkL0RlYnVn
L1BsYWluQ29jb2EuYXBwL0NvbnRlbnRzL1VYCACEuTtMd7k7TFBLAQIVAxQACAAIAOim7DxCspAF
cQEAAH8DAAA5AAwAAAAAAAAAAECkgXUFAABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29j
b2EuYXBwL0NvbnRlbnRzL0luZm8ucGxpc3RVWAgAhLk7THO5O0xQSwECFQMKAAAAAADqpuw8AAAA
AAAAAAAAAAAANQAMAAAAAAAAAABA7UFdBwAAUGxhaW5Db2NvYS9idWlsZC9EZWJ1Zy9QbGFpbkNv
Y29hLmFwcC9Db250ZW50cy9NYWNPUy9VWAgAd7k7THi5O0xQSwECFQMUAAgACADqpuw8RMh8MDgK
AADYOAAAPwAMAAAAAAAAAABA7YHABwAAUGxhaW5Db2NvYS9idWlsZC9EZWJ1Zy9QbGFpbkNvY29h
LmFwcC9Db250ZW50cy9NYWNPUy9QbGFpbkNvY29hVVgIAIS5O0x4uTtMUEsBAhUDFAAIAAgA6Kbs
PEkEilsIAAAACAAAADYADAAAAAAAAAAAQKSBdRIAAFBsYWluQ29jb2EvYnVpbGQvRGVidWcvUGxh
aW5Db2NvYS5hcHAvQ29udGVudHMvUGtnSW5mb1VYCACEuTtMc7k7TFBLAQIVAwoAAAAAAOim7DwA
AAAAAAAAAAAAAAA5AAwAAAAAAAAAAEDtQfESAABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWlu
Q29jb2EuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9VWAgAhLk7THO5O0xQSwECFQMKAAAAAADopuw8
AAAAAAAAAAAAAAAARwAMAAAAAAAAAABA7UFYEwAAUGxhaW5Db2NvYS9idWlsZC9EZWJ1Zy9QbGFp
bkNvY29hLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvRW5nbGlzaC5scHJvai9VWAgAhLk7THO5O0xQ
SwECFQMUAAgACADopuw8A14XHUoAAABcAAAAWAAMAAAAAAAAAABApIHNEwAAUGxhaW5Db2NvYS9i
dWlsZC9EZWJ1Zy9QbGFpbkNvY29hLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvRW5nbGlzaC5scHJv
ai9JbmZvUGxpc3Quc3RyaW5nc1VYCACEuTtMc7k7TFBLAQIVAxQACAAIAOim7DwdRB//g1QAAIKG
AABTAAwAAAAAAAAAAECkga0UAABQbGFpbkNvY29hL2J1aWxkL0RlYnVnL1BsYWluQ29jb2EuYXBw
L0NvbnRlbnRzL1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qL01haW5NZW51Lm5pYlVYCACEuTtMc7k7
TFBLAQIVAxQACAAIAO+m7Dx4jpb2VAAAAJ8AAAAbAAwAAAAAAAAAAECkgcFpAABfX01BQ09TWC9Q
bGFpbkNvY29hLy5fYnVpbGRVWAgAqLc7TIG5O0xQSwECFQMKAAAAAADupew8AAAAAAAAAAAAAAAA
GQAMAAAAAAAAAABA7UFuagAAUGxhaW5Db2NvYS9FbmdsaXNoLmxwcm9qL1VYCACftztMoLc7TFBL
AQIVAxQACAAIAO6l7DykSb8iLwAAAC0AAAAqAAwAAAAAAAAAAECkgbVqAABQbGFpbkNvY29hL0Vu
Z2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3NVWAgAhLk7TKC3O0xQSwECFQMUAAgACADupew8
JSkSjEgvAACMuwIAJQAMAAAAAAAAAABApIFMawAAUGxhaW5Db2NvYS9FbmdsaXNoLmxwcm9qL01h
aW5NZW51LnhpYlVYCACEuTtMoLc7TFBLAQIVAxQACAAIAO6l7Dw4mpPktgAAAP4AAAARAAwAAAAA
AAAAAECkgfeaAABQbGFpbkNvY29hL21haW4ubVVYCACEuTtMoLc7TFBLAQIVAxQACAAIAO6l7Dyi
in6MsAEAAOoDAAAgAAwAAAAAAAAAAECkgfybAABQbGFpbkNvY29hL1BsYWluQ29jb2EtSW5mby5w
bGlzdFVYCACEuTtMoLc7TFBLAQIVAwoAAAAAAO+l7DwAAAAAAAAAAAAAAAAgAAwAAAAAAAAAAEDt
QQqeAABQbGFpbkNvY29hL1BsYWluQ29jb2EueGNvZGVwcm9qL1VYCAB3uTtMobc7TFBLAQIVAxQA
CAAIAO+l7DxZdOW2TQgAANkqAAAvAAwAAAAAAAAAAECkgVieAABQbGFpbkNvY29hL1BsYWluQ29j
b2EueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvalVYCACEuTtMobc7TFBLAQIVAxQACAAIAO+l7Dxy
5Ep4zRIAAPakAAAwAAwAAAAAAAAAAECkgRKnAABQbGFpbkNvY29hL1BsYWluQ29jb2EueGNvZGVw
cm9qL3NtY2JyaWRlLm1vZGUydjNVWAgAhLk7TKG3O0xQSwECFQMUAAgACADvpew8fQOmdZcCAACQ
BgAAMAAMAAAAAAAAAABApIFNugAAUGxhaW5Db2NvYS9QbGFpbkNvY29hLnhjb2RlcHJvai9zbWNi
cmlkZS5wYnh1c2VyVVgIAIS5O0yhtztMUEsBAhUDFAAIAAgA7qXsPEzPbk91AAAAlwAAACAADAAA
AAAAAAAAQKSBUr0AAFBsYWluQ29jb2EvUGxhaW5Db2NvYV9QcmVmaXgucGNoVVgIAIS5O0ygtztM
UEsBAhUDFAAIAAgA7qXsPPKKPZfQAAAAQgEAACIADAAAAAAAAAAAQKSBJb4AAFBsYWluQ29jb2Ev
UGxhaW5Db2NvYUFwcERlbGVnYXRlLmhVWAgAhLk7TKC3O0xQSwECFQMUAAgACADupew8RUri2ukA
AAB6AQAAIgAMAAAAAAAAAABApIFVvwAAUGxhaW5Db2NvYS9QbGFpbkNvY29hQXBwRGVsZWdhdGUu
bVVYCACEuTtMoLc7TFBLBQYAAAAAIQAhAIAMAACewAAAAAA=
</data>

          </attachment>
      

    </bug>

</bugzilla>