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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>129429</bug_id>
          
          <creation_ts>2014-02-27 09:11:08 -0800</creation_ts>
          <short_desc>[Win32][LLINT] Crash when running JSC stress tests.</short_desc>
          <delta_ts>2014-03-06 16:01:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>peavo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985194</commentid>
    <comment_count>0</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 09:11:08 -0800</bug_when>
    <thetext>I&apos;m currently getting a crash when running the JSC stress tests.
This is caused by accessing uncommitted stack memory.
This happens when we move the stack pointer by a value larger than the Windows stack guard page size (4K).
The system does not get the chance to move the guard page then, because we are not doing any stack reading or writing in between.
The stack guard page is the barrier between committed and uncommitted stack memory on Windows.
When someone tries to read or write to the guard page, the system commits that memory, and moves the guard page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985200</commentid>
    <comment_count>1</comment_count>
      <attachid>225378</attachid>
    <who name="">peavo</who>
    <bug_when>2014-02-27 09:22:29 -0800</bug_when>
    <thetext>Created attachment 225378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985201</commentid>
    <comment_count>2</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 09:23:57 -0800</bug_when>
    <thetext>With this patch I&apos;m getting the results:

** The following JSC stress test failures have been introduced:
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-llint
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-baseline
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-dfg-eager-no-cjit-validate-phases
        stress/ftl-arithcos.js.default
        stress/ftl-arithcos.js.no-llint
        stress/ftl-arithcos.js.always-trigger-copy-phase
        stress/ftl-arithcos.js.no-cjit-validate-phases
        stress/ftl-arithcos.js.dfg-eager
        stress/ftl-arithcos.js.dfg-eager-no-cjit-validate
        jsc-layout-tests.yaml/js/script-tests/basic-map.js.layout
        jsc-layout-tests.yaml/js/script-tests/basic-map.js.layout-no-cjit
        jsc-layout-tests.yaml/js/script-tests/function-apply-many-args.js.layout
        jsc-layout-tests.yaml/js/script-tests/function-apply-many-args.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/function-apply-many-args.js.layout-no-cjit
        jsc-layout-tests.yaml/js/script-tests/function-apply-many-args.js.layout-dfg-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/reentrant-caching.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/reentrant-caching.js.layout-dfg-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout-no-cjit
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout-dfg-eager-no-cjit

Results for JSC stress tests:
    22 failures found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985202</commentid>
    <comment_count>3</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 09:25:38 -0800</bug_when>
    <thetext>When running with the C Loop LLINT, I get these results:

** The following JSC stress test failures have been introduced:
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-llint
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-baseline
        mozilla-tests.yaml/ecma_3/Date/15.9.5.6.js.mozilla-dfg-eager-no-cjit-validate-phases
        stress/ftl-arithcos.js.default
        stress/ftl-arithcos.js.no-llint
        stress/ftl-arithcos.js.always-trigger-copy-phase
        stress/ftl-arithcos.js.no-cjit-validate-phases
        stress/ftl-arithcos.js.dfg-eager
        stress/ftl-arithcos.js.dfg-eager-no-cjit-validate
        jsc-layout-tests.yaml/js/script-tests/basic-map.js.layout
        jsc-layout-tests.yaml/js/script-tests/basic-map.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/basic-map.js.layout-no-cjit
        jsc-layout-tests.yaml/js/script-tests/basic-map.js.layout-dfg-eager-no-cjit
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout-no-llint
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout-no-cjit
        jsc-layout-tests.yaml/js/script-tests/sort-stability.js.layout-dfg-eager-no-cjit

Results for JSC stress tests:
    18 failures found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985203</commentid>
    <comment_count>4</comment_count>
      <attachid>225378</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-27 09:28:06 -0800</bug_when>
    <thetext>Comment on attachment 225378
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:1136
&gt; +#if USE(TEXTURE_MAPPER_GL)
&gt;  PassOwnPtr&lt;TextureMapper&gt; TextureMapper::platformCreateAccelerated()
&gt;  {
&gt;      return TextureMapperGL::create();
&gt;  }
&gt; +#endif

It is an unrelated change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985211</commentid>
    <comment_count>5</comment_count>
      <attachid>225383</attachid>
    <who name="">peavo</who>
    <bug_when>2014-02-27 09:40:01 -0800</bug_when>
    <thetext>Created attachment 225383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985212</commentid>
    <comment_count>6</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 09:41:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 225378 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225378&amp;action=review
&gt; 
&gt; It is an unrelated change.

Thanks for looking into this, updated patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985226</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-27 10:12:15 -0800</bug_when>
    <thetext>Is this what C programs do on Windows as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985238</commentid>
    <comment_count>8</comment_count>
      <attachid>225383</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-27 10:38:33 -0800</bug_when>
    <thetext>Comment on attachment 225383
Patch

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

This still needs some work.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:78
&gt; +// See http ://msdn.microsoft.com/en-us/library/ms686774%28VS.85%29.aspx

Remove the space after &quot;http&quot;.

I didn&apos;t see anything on the MSDN web page that each intermediate page needs to be touched when the allocation grows by multiple pages.  Did you verify this through testing?

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:82
&gt; +    const int winStackGuardPageSize = 4096;

We should use a OS provided value for the page size instead of hard coding a value here.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:83
&gt; +    const TrustedImm32 delta(winStackGuardPageSize - 16);

Why subtract the 16?  It seems that the first time through the loop, we&apos;ll do the sub #0, [sp - 4080 (4k-16)].  The second time it is 8k - 32 and so on.  It seems that we might not touch all pages depending on where in the current page SP points.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:86
&gt; +    move(TrustedImm32(-offset), temp);
&gt; +    sub32(base, temp);

You should be using subPtr, since we want this to eventually work for 64 bit.

After these two instructions, temp = -offset - base.

If you want temp to be base - offset::
    move(base, temp);
    subPtr(TrustedImm32(offset), temp)
Or if you want temp to be the amount of bytes you&apos;re moving down, then the sub is not needed.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:94
&gt; +    sub32(TrustedImm32(0), Address(stackPointerRegister));

This ends up being a read followed by a write.  Are you doing this to avoid using another register?

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:95
&gt; +    Jump jmp = branch32(LessThan, temp, delta);
&gt; +    sub32(delta, temp);
&gt; +    sub32(delta, stackPointerRegister);
&gt; +    // Dummy operation to make sure the system commits memory, and moves the guard page.
&gt; +    sub32(TrustedImm32(0), Address(stackPointerRegister));
&gt; +    jump(moveGuardPageLoop);

Use subPtr.

I&apos;m not sure this is doing what you want.  Assuming that you want to enter the loop with temp pointing at the extent of the new allocation, the sub32(delta, temp) will reduce temp beyond the allocation.

I don&apos;t think you need to update the stack pointer.  You should be able to use temp for the dummy operation as well.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:97
&gt; +    Label doneMovingGuardPage(this);
&gt; +    jmp.linkTo(doneMovingGuardPage, this);

Replace this with a &quot;jmp.link(this)&quot;.  Also, change &quot;jmp&quot; to &quot;doneMovingGuardPage&quot;.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:393
&gt; +    const winStackGuardPageSize = 4096

Same comment as in AssemblyHelpers about using 4096 .

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:394
&gt; +    const delta = winStackGuardPageSize - 16

Same comment as in AssemblyHelpers about subtracting the 16 from the page size.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:397
&gt; +    subi reg, scratch
&gt; +    addi sp, scratch

After this, I think scratch = frameSize - reg + sp.  Given that reg is either cfr or the location of a callee&apos;s cfr, you end up with scratch = frameSize - cfr + sp.  cfr-sp is the currentFrame&apos;s local register space.
It appears that we want scratch to have the delta at the top of the loop and then want to advance one page at a time doing a dummy op.  Therefore the subi/addi at the top of the loop is not really needed.

You&apos;re doing pointer arithmetic, so you need to use addp / subp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985244</commentid>
    <comment_count>9</comment_count>
      <attachid>225383</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-27 10:44:24 -0800</bug_when>
    <thetext>Comment on attachment 225383
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:78
&gt;&gt; +#if PLATFORM(WIN)
&gt;&gt; +// On Windows we need to check if the stack pointer moves over the stack guard page of size 4K.
&gt;&gt; +// If so, we need to read or write some data on every following guard page
&gt;&gt; +// to make sure the system commits the previously uncommitted stack memory.
&gt;&gt; +// Otherwise we might crash later if we access uncommitted stack memory.
&gt;&gt; +// See http ://msdn.microsoft.com/en-us/library/ms686774%28VS.85%29.aspx
&gt; 
&gt; Remove the space after &quot;http&quot;.
&gt; 
&gt; I didn&apos;t see anything on the MSDN web page that each intermediate page needs to be touched when the allocation grows by multiple pages.  Did you verify this through testing?

Like Michael, I also don’t see anything from the docs at the url you provided that says that application code needs to touch the memory first.  Also, what is the difference between touching it here in moveStackPointerAndGuardPage vs touching it later?  

The only time when I can see this making a difference is if system memory is low to begin with and you’re eagerly touching it to get the physical stack pages committed before some other consumer gets it first.  If that is the case, I’m not convinced that this is a good solution.  It would involve competing in a race condition (i.e. doesn’t guarantee that we’ll succeed in claiming those pages), and it simply shifts the problem of dealing with lack of memory to some other part of the code.

Can you please provide some details (and data to back it up) on what the actual problem is that you’re trying to solve here?  If I missed the relevant details in a previous comment, please highlight it for me.  Thanks.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:390
&gt; +# On Windows we need to check if the stack pointer moves over the stack guard page of size 4K.
&gt; +# If so, we need to read or write some data on every following guard page
&gt; +# to make sure the system commits the previously uncommitted stack memory.
&gt; +# Otherwise we might crash later if we access uncommitted stack memory.
&gt; +# See http://msdn.microsoft.com/en-us/library/ms686774%28VS.85%29.aspx

Perhaps I’m missing it, but I don’t see anything from the docs at the url you provided that says that application code needs to touch the memory first.  Also, what is the difference between touching it here in moveStackPointerAndGuardPage vs touching it later?  

The only time when I can see this making a difference is if system memory is low to begin with and you’re eagerly touching it to get the physical stack pages committed before some other consumer gets it first.  If that is the case, I’m not convinced that this is a good solution.  It would involve competing in a race condition (i.e. doesn’t guarantee that we’ll succeed in claiming those pages), and it simply shifts the problem of dealing with lack of memory to some other part of the code.

Can you please provide some details (and data to back it up) on what the actual problem is that you’re trying to solve here?  If I missed the relevant details in a previous comment, please highlight it for me.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985249</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-02-27 10:45:20 -0800</bug_when>
    <thetext>(In reply to comment #9)

Sorry for the repeated comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985254</commentid>
    <comment_count>11</comment_count>
      <attachid>225383</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-27 10:52:13 -0800</bug_when>
    <thetext>Comment on attachment 225383
Patch

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

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.cpp:93
&gt; +    // Dummy operation to make sure the system commits memory, and moves the guard page.

I think this is the key misunderstanding in this patch.

What the Microsoft doc says is, &quot;... the reserved size minus one page (which is used as a guard page to prevent stack overflow)&quot;. So, the guard page starts out at the end of the reserved space, and is not moved by incremental virtual memory commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985260</commentid>
    <comment_count>12</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 11:04:50 -0800</bug_when>
    <thetext>Thanks for your comments :)

I have probably been doing some unnecessary work here.
As suggested, I created a test program in C with a simple function which had a
parameter of size &gt; 4K.
The assembly then shows a call to _chkstk, which probably does the job needed.

See

http://msdn.microsoft.com/en-us/library/ms648426(VS.85).aspx 

or e.g.

http://www.codeguru.com/cpp/v-s/debug/article.php/c19241/Adventures-with-chkstk.htm

Maybe we should be using this function instead?

I also believe the guard page is put between committed and uncommitted memory,
see e.g. the comment in WebKit\Source\WTF\wtf\StackBounds.cpp in the Windows implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985263</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2014-02-27 11:09:16 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Thanks for your comments :)
&gt; 
&gt; I have probably been doing some unnecessary work here.
&gt; As suggested, I created a test program in C with a simple function which had a
&gt; parameter of size &gt; 4K.
&gt; The assembly then shows a call to _chkstk, which probably does the job needed.
&gt; 
&gt; See
&gt; 
&gt; http://msdn.microsoft.com/en-us/library/ms648426(VS.85).aspx 
&gt; 
&gt; or e.g.
&gt; 
&gt; http://www.codeguru.com/cpp/v-s/debug/article.php/c19241/Adventures-with-chkstk.htm
&gt; 
&gt; Maybe we should be using this function instead?
&gt; 
&gt; I also believe the guard page is put between committed and uncommitted memory,
&gt; see e.g. the comment in WebKit\Source\WTF\wtf\StackBounds.cpp in the Windows implementation.

There is other support on the Web for the notion that Windows moves the guard page - yuck!

Old Microsoft post: http://support.microsoft.com/kb/100775
Someone&apos;s reverse engineering: http://j00ru.vexillium.org/?p=1594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985281</commentid>
    <comment_count>14</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 11:27:01 -0800</bug_when>
    <thetext>Here&apos;s the _chkstk implementation:

--- f:\dd\vctools\crt\crtw32\startup\i386\chkstk.asm ---------------------------
008A8980  push        ecx  
008A8981  lea         ecx,[esp+4]  
008A8985  sub         ecx,eax  
008A8987  sbb         eax,eax  
008A8989  not         eax  
008A898B  and         ecx,eax  
008A898D  mov         eax,esp  
008A898F  and         eax,0FFFFF000h  
008A8994  cmp         ecx,eax  
008A8996  jb          cs10+0Eh (08A89A2h)  
008A8998  mov         eax,ecx  
008A899A  pop         ecx  
008A899B  xchg        eax,esp  
008A899C  mov         eax,dword ptr [eax]  
008A899E  mov         dword ptr [esp],eax  
008A89A1  ret  
008A89A2  sub         eax,1000h  
008A89A7  test        dword ptr [eax],eax  
008A89A9  jmp         cs10 (08A8994h)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985282</commentid>
    <comment_count>15</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 11:30:53 -0800</bug_when>
    <thetext>It seems like the test instruction is used to touch the guard page here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985293</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-27 12:05:59 -0800</bug_when>
    <thetext>Can we just call _chkstk on the stack check slow path on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985305</commentid>
    <comment_count>17</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 12:22:06 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Can we just call _chkstk on the stack check slow path on Windows?

I&apos;m not sure, but isn&apos;t the stack check slow path called only if we have exceeded the stack bounds?
I don&apos;t think that is the case here, since the stack bounds include both the committed and uncommitted stack memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985306</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-27 12:23:29 -0800</bug_when>
    <thetext>OK -- on Windows, stack bounds should not include uncommitted memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985316</commentid>
    <comment_count>19</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 12:48:59 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; OK -- on Windows, stack bounds should not include uncommitted memory.

Thanks, I will try out calling _chkstk :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985318</commentid>
    <comment_count>20</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-02-27 12:56:49 -0800</bug_when>
    <thetext>Just included the _chkstk asm source for completeness sake :)

;***
;chkstk.asm - C stack checking routine
;
;       Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
;       Provides support for automatic stack checking in C procedures
;       when stack checking is enabled.
;
;*******************************************************************************

.xlist
        include cruntime.inc
.list

; size of a page of memory

_PAGESIZE_      equ     1000h


        CODESEG

page
;***
;_chkstk - check stack upon procedure entry
;
;Purpose:
;       Provide stack checking on procedure entry. Method is to simply probe
;       each page of memory required for the stack in descending order. This
;       causes the necessary pages of memory to be allocated via the guard
;       page scheme, if possible. In the event of failure, the OS raises the
;       _XCPT_UNABLE_TO_GROW_STACK exception.
;
;       NOTE:  Currently, the (EAX &lt; _PAGESIZE_) code path falls through
;       to the &quot;lastpage&quot; label of the (EAX &gt;= _PAGESIZE_) code path.  This
;       is small; a minor speed optimization would be to special case
;       this up top.  This would avoid the painful save/restore of
;       ecx and would shorten the code path by 4-6 instructions.
;
;Entry:
;       EAX = size of local frame
;
;Exit:
;       ESP = new stackframe, if successful
;
;Uses:
;       EAX
;
;Exceptions:
;       _XCPT_GUARD_PAGE_VIOLATION - May be raised on a page probe. NEVER TRAP
;                                    THIS!!!! It is used by the OS to grow the
;                                    stack on demand.
;       _XCPT_UNABLE_TO_GROW_STACK - The stack cannot be grown. More precisely,
;                                    the attempt by the OS memory manager to
;                                    allocate another guard page in response
;                                    to a _XCPT_GUARD_PAGE_VIOLATION has
;                                    failed.
;
;*******************************************************************************

public  _alloca_probe

_chkstk proc

_alloca_probe    =  _chkstk

        push    ecx

; Calculate new TOS.

        lea     ecx, [esp] + 8 - 4      ; TOS before entering function + size for ret value
        sub     ecx, eax                ; new TOS

; Handle allocation size that results in wraparound.
; Wraparound will result in StackOverflow exception.

        sbb     eax, eax                ; 0 if CF==0, ~0 if CF==1
        not     eax                     ; ~0 if TOS did not wrapped around, 0 otherwise
        and     ecx, eax                ; set to 0 if wraparound

        mov     eax, esp                ; current TOS
        and     eax, not ( _PAGESIZE_ - 1) ; Round down to current page boundary

cs10:
        cmp     ecx, eax                ; Is new TOS
        jb      short cs20              ; in probed page?
        mov     eax, ecx                ; yes.
        pop     ecx
        xchg    esp, eax                ; update esp
        mov     eax, dword ptr [eax]    ; get return address
        mov     dword ptr [esp], eax    ; and put it at new TOS
        ret

; Find next lower page and probe
cs20:
        sub     eax, _PAGESIZE_         ; decrease by PAGESIZE
        test    dword ptr [eax],eax     ; probe page.
        jmp     short cs10

_chkstk endp

        end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986363</commentid>
    <comment_count>21</comment_count>
      <attachid>225659</attachid>
    <who name="">peavo</who>
    <bug_when>2014-03-03 09:04:19 -0800</bug_when>
    <thetext>Created attachment 225659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986382</commentid>
    <comment_count>22</comment_count>
      <attachid>225664</attachid>
    <who name="">peavo</who>
    <bug_when>2014-03-03 09:55:38 -0800</bug_when>
    <thetext>Created attachment 225664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986392</commentid>
    <comment_count>23</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-03 10:25:36 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=225664) [details]
&gt; Patch

Updated the patch after review.

I&apos;ve also tried using the _chkstk() function, which fixes the crash as well,
but it introduced some new stress test failures.
I think this is caused by _chkstk() saving and restoring a register it uses (see source in a previous comment).
I&apos;m more comfortable with this routine not changing the contents of the stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986483</commentid>
    <comment_count>24</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-03 13:47:12 -0800</bug_when>
    <thetext>Ah, I didn&apos;t realize at first that this patch was emitting moveStackPointerAndGuardPage at the head of every function. Let&apos;s not do that: it&apos;s slow and brittle.

Instead, I think we should pre-commit stack space on Windows. The right place to do that is probably inside VM::updateStackLimit.

Pre-committing will be faster, but it will also remove lots of tricky Windows-specific code, which is a worthy goal to pursue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986485</commentid>
    <comment_count>25</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-03 13:50:00 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Ah, I didn&apos;t realize at first that this patch was emitting moveStackPointerAndGuardPage at the head of every function. Let&apos;s not do that: it&apos;s slow and brittle.
&gt; 
&gt; Instead, I think we should pre-commit stack space on Windows. The right place to do that is probably inside VM::updateStackLimit.
&gt; 
&gt; Pre-committing will be faster, but it will also remove lots of tricky Windows-specific code, which is a worthy goal to pursue.

Thanks, sounds good, will look into that :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986871</commentid>
    <comment_count>26</comment_count>
      <attachid>225791</attachid>
    <who name="">peavo</who>
    <bug_when>2014-03-04 10:51:05 -0800</bug_when>
    <thetext>Created attachment 225791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986921</commentid>
    <comment_count>27</comment_count>
      <attachid>225791</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-04 12:07:45 -0800</bug_when>
    <thetext>Comment on attachment 225791
Patch

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

Looking good, but I think this needs one more pass.

&gt; Source/JavaScriptCore/runtime/VM.cpp:763
&gt; +// when needed, see http://support.microsoft.com/kb/100775

&quot;.&quot; at the end of the sentence, please.

&gt; Source/JavaScriptCore/runtime/VM.cpp:778
&gt; +#if PLATFORM(WIN) &amp;&amp; ENABLE(LLINT)

I don&apos;t think we want to check ENABLE(LLINT) here. For example, if you disabled LLInt and enabled JIT, you would still need preCommitStackMemory. So, let&apos;s just check PLATFORM(WIN).

&gt; Source/JavaScriptCore/runtime/VM.cpp:803
&gt; +#if PLATFORM(WIN) &amp;&amp; ENABLE(LLINT)
&gt; +    if (lastStackLimit != m_stackLimit)
&gt; +        preCommitStackMemory(m_stackLimit);
&gt; +#endif

Looks good.

&gt; Source/WTF/wtf/WTFThreadData.h:99
&gt;          // We need to always get a fresh StackBounds from the OS due to how fibers work.
&gt;          // See https://bugs.webkit.org/show_bug.cgi?id=102411
&gt; -#if OS(WINDOWS)
&gt; +#if OS(WINDOWS) &amp;&amp; !ENABLE(LLINT)
&gt;          m_stackBounds = StackBounds::currentThreadStackBounds();
&gt;  #endif
&gt;          return m_stackBounds;

I don&apos;t think we want to check ENABLE(LLINT) here. A Windows client can use fibers regardless of LLInt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986926</commentid>
    <comment_count>28</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-03-04 12:20:39 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:778
&gt; &gt; +#if PLATFORM(WIN) &amp;&amp; ENABLE(LLINT)
&gt; 
&gt; I don&apos;t think we want to check ENABLE(LLINT) here. For example, if you disabled LLInt and enabled JIT, you would still need preCommitStackMemory. So, let&apos;s just check PLATFORM(WIN).

FYI, we already always require ENABLE(LLINT).  It&apos;s just a matter of ENABLE(JIT) or ENABLE(LLINT_C_LOOP) which is mutually exclusive.

Maybe the time has come for us to remove all references to ENABLE(LLINT) and ENABLE(LLINT_C_LOOP) (inferred by !ENABLE(JIT)) everywhere (but not for this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986929</commentid>
    <comment_count>29</comment_count>
      <attachid>225804</attachid>
    <who name="">peavo</who>
    <bug_when>2014-03-04 12:25:49 -0800</bug_when>
    <thetext>Created attachment 225804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986932</commentid>
    <comment_count>30</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-04 12:34:45 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 225791 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225791&amp;action=review
&gt; 

Thanks for reviewing :) Updated patch.

&gt; &gt; Source/WTF/wtf/WTFThreadData.h:99
&gt; &gt;          // We need to always get a fresh StackBounds from the OS due to how fibers work.
&gt; &gt;          // See https://bugs.webkit.org/show_bug.cgi?id=102411
&gt; &gt; -#if OS(WINDOWS)
&gt; &gt; +#if OS(WINDOWS) &amp;&amp; !ENABLE(LLINT)
&gt; &gt;          m_stackBounds = StackBounds::currentThreadStackBounds();
&gt; &gt;  #endif
&gt; &gt;          return m_stackBounds;
&gt; 
&gt; I don&apos;t think we want to check ENABLE(LLINT) here. A Windows client can use fibers regardless of LLInt.

Can we avoid updating the stack bounds?
I reverted this in the latest patch, but I see now that it introduces more stress test errors.
Probably because it gives different results after stack memory is precommitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986933</commentid>
    <comment_count>31</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-04 12:49:06 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:778
&gt; &gt; &gt; +#if PLATFORM(WIN) &amp;&amp; ENABLE(LLINT)
&gt; &gt; 
&gt; &gt; I don&apos;t think we want to check ENABLE(LLINT) here. For example, if you disabled LLInt and enabled JIT, you would still need preCommitStackMemory. So, let&apos;s just check PLATFORM(WIN).
&gt; 
&gt; FYI, we already always require ENABLE(LLINT).  It&apos;s just a matter of ENABLE(JIT) or ENABLE(LLINT_C_LOOP) which is mutually exclusive.
&gt; 
&gt; Maybe the time has come for us to remove all references to ENABLE(LLINT) and ENABLE(LLINT_C_LOOP) (inferred by !ENABLE(JIT)) everywhere (but not for this patch).

I see, thanks for clarifying :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986960</commentid>
    <comment_count>32</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-04 13:52:11 -0800</bug_when>
    <thetext>&gt; Can we avoid updating the stack bounds?

I don&apos;t think so :(. On Windows, a thread can switch to another fiber at any time.

&gt; I reverted this in the latest patch, but I see now that it introduces more stress test errors.
&gt; Probably because it gives different results after stack memory is precommitted.

What kind of errors?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986964</commentid>
    <comment_count>33</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-04 14:05:21 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; Can we avoid updating the stack bounds?
&gt; 
&gt; I don&apos;t think so :(. On Windows, a thread can switch to another fiber at any time.
&gt; 
&gt; &gt; I reverted this in the latest patch, but I see now that it introduces more stress test errors.
&gt; &gt; Probably because it gives different results after stack memory is precommitted.
&gt; 
&gt; What kind of errors?

Seems like stack overflow errors.
I have debugged when we enter the StackBounds::initialize() after precommitting,
and the result is different compared to the initial call, because we have precommitted memory.
There is now committed memory before and after the guard page, which produces different bounds result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986968</commentid>
    <comment_count>34</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-04 14:10:49 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; Can we avoid updating the stack bounds?
&gt; 
&gt; I don&apos;t think so :(. On Windows, a thread can switch to another fiber at any time.
&gt; 
&gt; &gt; I reverted this in the latest patch, but I see now that it introduces more stress test errors.
&gt; &gt; Probably because it gives different results after stack memory is precommitted.
&gt; 
&gt; What kind of errors?

It seems we also have to move the guard page, not only commit the memory.
I will add code for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986999</commentid>
    <comment_count>35</comment_count>
      <attachid>225818</attachid>
    <who name="">peavo</who>
    <bug_when>2014-03-04 14:55:20 -0800</bug_when>
    <thetext>Created attachment 225818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987001</commentid>
    <comment_count>36</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-04 14:58:12 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=225818) [details]
&gt; Patch

Added new patch which also moves the stack guard page when precommitting.
This fixes the new stack overflow errors in the stress tests I&apos;ve been having.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987005</commentid>
    <comment_count>37</comment_count>
      <attachid>225818</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-04 15:09:06 -0800</bug_when>
    <thetext>Comment on attachment 225818
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.cpp:790
&gt; +    MEMORY_BASIC_INFORMATION uncommittedMemory;
&gt; +    if (VirtualQuery(stackLimit, &amp;uncommittedMemory, sizeof(uncommittedMemory)) &gt; 0)
&gt; +        if (uncommittedMemory.State == MEM_RESERVE) {
&gt; +            int size = uncommittedMemory.RegionSize;
&gt; +            // Commit memory
&gt; +            OSAllocator::commit(stackLimit, size, true, false);
&gt; +
&gt; +            // Move guard page
&gt; +            MEMORY_BASIC_INFORMATION guardPage;
&gt; +            char* guardPagePointer = reinterpret_cast&lt;char*&gt;(stackLimit) + size;
&gt; +            if (VirtualQuery(guardPagePointer, &amp;guardPage, sizeof(guardPage)) &gt; 0) {
&gt; +                ASSERT(guardPage.Protect &amp; PAGE_GUARD);
&gt; +                DWORD oldProtect;
&gt; +                // Remove guard flag from old guard page
&gt; +                BOOL retval = VirtualProtect(guardPagePointer, guardPage.RegionSize, PAGE_READWRITE, &amp;oldProtect);
&gt; +                ASSERT(retval);
&gt; +                char* newGuardPagePointer = reinterpret_cast&lt;char*&gt;(stackLimit) - guardPage.RegionSize;
&gt; +                // Commit new guard page
&gt; +                OSAllocator::commit(newGuardPagePointer, guardPage.RegionSize, true, false);
&gt; +                // Set guard flag on new guard page
&gt; +                retval = VirtualProtect(newGuardPagePointer, guardPage.RegionSize, PAGE_READWRITE | PAGE_GUARD, &amp;oldProtect);
&gt; +                ASSERT(retval);
&gt; +            }
&gt; +        }

Are we just duplicating _chckstck here? Should we just call _chckstck instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987009</commentid>
    <comment_count>38</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-04 15:20:17 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 225818 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225818&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:790
&gt; &gt; +    MEMORY_BASIC_INFORMATION uncommittedMemory;
&gt; &gt; +    if (VirtualQuery(stackLimit, &amp;uncommittedMemory, sizeof(uncommittedMemory)) &gt; 0)
&gt; &gt; +        if (uncommittedMemory.State == MEM_RESERVE) {
&gt; &gt; +            int size = uncommittedMemory.RegionSize;
&gt; &gt; +            // Commit memory
&gt; &gt; +            OSAllocator::commit(stackLimit, size, true, false);
&gt; &gt; +
&gt; &gt; +            // Move guard page
&gt; &gt; +            MEMORY_BASIC_INFORMATION guardPage;
&gt; &gt; +            char* guardPagePointer = reinterpret_cast&lt;char*&gt;(stackLimit) + size;
&gt; &gt; +            if (VirtualQuery(guardPagePointer, &amp;guardPage, sizeof(guardPage)) &gt; 0) {
&gt; &gt; +                ASSERT(guardPage.Protect &amp; PAGE_GUARD);
&gt; &gt; +                DWORD oldProtect;
&gt; &gt; +                // Remove guard flag from old guard page
&gt; &gt; +                BOOL retval = VirtualProtect(guardPagePointer, guardPage.RegionSize, PAGE_READWRITE, &amp;oldProtect);
&gt; &gt; +                ASSERT(retval);
&gt; &gt; +                char* newGuardPagePointer = reinterpret_cast&lt;char*&gt;(stackLimit) - guardPage.RegionSize;
&gt; &gt; +                // Commit new guard page
&gt; &gt; +                OSAllocator::commit(newGuardPagePointer, guardPage.RegionSize, true, false);
&gt; &gt; +                // Set guard flag on new guard page
&gt; &gt; +                retval = VirtualProtect(newGuardPagePointer, guardPage.RegionSize, PAGE_READWRITE | PAGE_GUARD, &amp;oldProtect);
&gt; &gt; +                ASSERT(retval);
&gt; &gt; +            }
&gt; &gt; +        }
&gt; 
&gt; Are we just duplicating _chckstck here? Should we just call _chckstck instead?

I think calling _chkstk() from C/C++ is a bit tricky, since it requires the stack allocation size in eax, and we can&apos;t use inline assembly because of 64-bit.
Also, _chkstk() moves the stack guard page, one page at a time, while this does it just once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987337</commentid>
    <comment_count>39</comment_count>
      <attachid>225899</attachid>
    <who name="">peavo</who>
    <bug_when>2014-03-05 12:00:46 -0800</bug_when>
    <thetext>Created attachment 225899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987341</commentid>
    <comment_count>40</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-05 12:03:28 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created an attachment (id=225899) [details]
&gt; Patch

Updated patch with a platform independent way to precommit stack memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987364</commentid>
    <comment_count>41</comment_count>
      <attachid>225899</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-05 13:12:22 -0800</bug_when>
    <thetext>Comment on attachment 225899
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987366</commentid>
    <comment_count>42</comment_count>
    <who name="">peavo</who>
    <bug_when>2014-03-05 13:18:20 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 225899 [details])
&gt; r=me

Thanks :) Will have a look at 64-bit next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987384</commentid>
    <comment_count>43</comment_count>
      <attachid>225899</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-05 13:51:57 -0800</bug_when>
    <thetext>Comment on attachment 225899
Patch

Clearing flags on attachment: 225899

Committed r165128: &lt;http://trac.webkit.org/changeset/165128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987385</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-05 13:52:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987406</commentid>
    <comment_count>45</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 14:58:08 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 225899 [details])
&gt; Clearing flags on attachment: 225899
&gt; 
&gt; Committed r165128: &lt;http://trac.webkit.org/changeset/165128&gt;

This patch disabled write barriers in Repatch.cpp for platforms with !ENABLE(DFG_JIT). That&apos;s clearly wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987410</commentid>
    <comment_count>46</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-05 15:03:27 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #43)
&gt; &gt; (From update of attachment 225899 [details] [details])
&gt; &gt; Clearing flags on attachment: 225899
&gt; &gt; 
&gt; &gt; Committed r165128: &lt;http://trac.webkit.org/changeset/165128&gt;
&gt; 
&gt; This patch disabled write barriers in Repatch.cpp for platforms with !ENABLE(DFG_JIT). That&apos;s clearly wrong.

I take that back. It didn&apos;t disable them. It made them always take slow path. Which sort of defeats the purpose of inline caching, but it won&apos;t cause crashes. I filed bug 129760 for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987925</commentid>
    <comment_count>47</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-03-06 16:01:49 -0800</bug_when>
    <thetext>Please note that http://trac.webkit.org/changeset/165228 is also needed for this change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225378</attachid>
            <date>2014-02-27 09:22:29 -0800</date>
            <delta_ts>2014-02-27 09:39:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140227182213.patch</filename>
            <type>text/plain</type>
            <size>12442</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0ODA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE0LTAyLTI3ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gV2lu
ZG93cyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhl
IHN0YWNrIGd1YXJkIHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyAgICAgICAgSWYgc28sIHdlIG5lZWQgdG8g
cmVhZCBvciB3cml0ZSBzb21lIGRhdGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UKKyAg
ICAgICAgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisgICAgICAgIE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBs
YXRlciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3RhY2sgbWVtb3J5LgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2VtYmx5L2J1aWxkLUxMSW50QXNz
ZW1ibHkuc2g6IEVuYWJsZSBMTElOVC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjptb3ZlU3RhY2tHdWFyZFBhZ2UpOiBB
ZGRlZCBtZXRob2QgdG8gbW92ZSBzdGFjayBndWFyZCBwYWdlLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjptb3ZlU3RhY2tQ
b2ludGVyKTogQWRkZWQgbWV0aG9kIHRvIG1vdmUgc3RhY2sgcG9pbnRlci4KKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6IFVzZSBtb3Zl
U3RhY2tQb2ludGVyIG1ldGhvZCwgd2hpY2ggd2lsbCBtb3ZlIHRoZSBndWFyZCBwYWdlLgorICAg
ICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVM
b2FkVmFyYXJncyk6IERpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6d3JpdGVCYXJyaWVyKTogQ29tcGlsZSBmaXggd2hlbiBERkdfSklUIGlzIG5vdCBlbmFi
bGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZCBtYWNy
byB0byBtb3ZlIHN0YWNrIGd1YXJkIHBhZ2UuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6
IENvbXBpbGUgZml4LgorCiAyMDE0LTAyLTI3ICBHYWJvciBSYXBjc2FueWkgIDxyZ2Fib3JAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICByMTY0NzY0IGJyb2tlIHRoZSBBUk0gYnVpbGQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNz
ZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2VtYmx5L2J1aWxk
LUxMSW50QXNzZW1ibHkuc2gJKHJldmlzaW9uIDE2NDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJ
bnRBc3NlbWJseS5zaAkod29ya2luZyBjb3B5KQpAQCAtMjksNCArMjksNCBAQCBwcmludGYgIkVO
RCIgPiBMb3dMZXZlbEludGVycHJldGVyV2luLmFzCiAKICMgV2hlbiBlbmFibGluZyBMTElOVCBh
bmQgc3dpdGNoaW5nIHRvIHRoZSB4ODYgYmFja2VuZCwgdXNlICJMb3dMZXZlbEludGVycHJldGVy
V2luLmFzbSIgYXMgb3V0cHV0IGZpbGUgd2hlbiBydW5uaW5nIGFzbS5yYi4KIAotL3Vzci9iaW4v
ZW52IHJ1YnkgIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9hc20ucmIiICIke1NSQ1JPT1R9L2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci9MTEludE9mZnNldHNFeHRyYWN0b3IkezN9LmV4ZSIgIkxMSW50QXNzZW1i
bHkuaCIgfHwgZXhpdCAxCisvdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNt
L2FzbS5yYiIgIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciR7M30uZXhlIiAiTG93TGV2ZWxJbnRlcnByZXRlcldpbi5hc20iIHx8IGV4aXQgMQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2
aXNpb24gMTY0NzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwzNCBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6Y2xlYXJTYW1wbGluZ0ZsYWcoCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikK
Ky8vIE9uIFdpbmRvd3Mgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgc3RhY2sgcG9pbnRlciBtb3Zl
cyBvdmVyIHRoZSBzdGFjayBndWFyZCBwYWdlIG9mIHNpemUgNEsuCisvLyBJZiBzbywgd2UgbmVl
ZCB0byByZWFkIG9yIHdyaXRlIHNvbWUgZGF0YSBvbiBldmVyeSBmb2xsb3dpbmcgZ3VhcmQgcGFn
ZQorLy8gdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisvLyBPdGhlcndpc2Ugd2UgbWlnaHQgY3Jhc2ggbGF0ZXIg
aWYgd2UgYWNjZXNzIHVuY29tbWl0dGVkIHN0YWNrIG1lbW9yeS4KKy8vIFNlZSBodHRwIDovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjg2Nzc0JTI4VlMuODUlMjkuYXNweAor
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6bW92ZVN0YWNrR3VhcmRQYWdlKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB0ZW1wKQoreworICAgIGNvbnN0IGludCB3aW5TdGFj
a0d1YXJkUGFnZVNpemUgPSA0MDk2OworICAgIGNvbnN0IFRydXN0ZWRJbW0zMiBkZWx0YSh3aW5T
dGFja0d1YXJkUGFnZVNpemUgLSAxNik7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMigtb2Zmc2V0
KSwgdGVtcCk7CisgICAgc3ViMzIoYmFzZSwgdGVtcCk7CisgICAgYWRkMzIoc3RhY2tQb2ludGVy
UmVnaXN0ZXIsIHRlbXApOworCisgICAgTGFiZWwgbW92ZUd1YXJkUGFnZUxvb3AodGhpcyk7Cisg
ICAgSnVtcCBqbXAgPSBicmFuY2gzMihMZXNzVGhhbiwgdGVtcCwgZGVsdGEpOworICAgIHN1YjMy
KGRlbHRhLCB0ZW1wKTsKKyAgICBzdWIzMihkZWx0YSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIC8vIER1bW15IG9wZXJhdGlvbiB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSBjb21taXRzIG1l
bW9yeSwgYW5kIG1vdmVzIHRoZSBndWFyZCBwYWdlLgorICAgIHN1YjMyKFRydXN0ZWRJbW0zMigw
KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlcikpOworICAgIGp1bXAobW92ZUd1YXJkUGFn
ZUxvb3ApOworICAgIExhYmVsIGRvbmVNb3ZpbmdHdWFyZFBhZ2UodGhpcyk7CisgICAgam1wLmxp
bmtUbyhkb25lTW92aW5nR3VhcmRQYWdlLCB0aGlzKTsKK30KKyNlbmRpZgorCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogI2lmIFVTRShKU1ZBTFVFNjQpCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjQ3ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
NywyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBQTEFURk9STShXSU4pCisgICAg
dm9pZCBtb3ZlU3RhY2tHdWFyZFBhZ2UoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIHRlbXApOworI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZVN0YWNr
UG9pbnRlcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdGVtcCkKKyAg
ICB7CisgICAgICAgIHRlbXA7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICBtb3ZlU3RhY2tH
dWFyZFBhZ2Uob2Zmc2V0LCBiYXNlLCB0ZW1wKTsKKyNlbmRpZgorICAgICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKG9mZnNldCksIGJhc2UsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICB9CisK
KwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc2l6ZV90IHByb2xvZ3VlU3RhY2tQ
b2ludGVyRGVsdGEoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDE2NDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIyLDcgKzUyMiw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJp
dmF0ZUNvbXBpbGUoSkkKICAgICAgICAgc3RhY2tPdmVyZmxvdyA9IGJyYW5jaFB0cihBYm92ZSwg
QWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNrTGltaXQoKSksIHJlZ1QxKTsKICAg
ICB9CiAKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2Nv
ZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKKyAgICBtb3ZlU3RhY2tQb2ludGVyKHN0YWNrUG9pbnRlck9mZnNldEZv
cihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVn
VDIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKICAgICBwcml2YXRlQ29t
cGlsZU1haW5QYXNzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwCShyZXZpc2lvbiAxNjQ3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lk
IEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uCiAKICAgICBlbWl0TG9hZChhcmd1
bWVudHMsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJh
bWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFy
Z09mZnNldCk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpKSwgcmV0dXJuVmFsdWVHUFIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBtb3ZlU3Rh
Y2tQb2ludGVyKC1zaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHJldHVyblZhbHVlR1BSLCByZWdU
NCk7CiAgICAgZW1pdExvYWQodGhpc1ZhbHVlLCByZWdUMSwgcmVnVDQpOwogICAgIGVtaXRMb2Fk
KGFyZ3VtZW50cywgcmVnVDMsIHJlZ1QyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxv
YWRWYXJhcmdzLCByZXR1cm5WYWx1ZUdQUiwgcmVnVDEsIHJlZ1Q0LCByZWdUMywgcmVnVDIsIGZp
cnN0VmFyQXJnT2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkocmV2aXNpb24gMTY0NzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI0LDkgKzgyNCwxMyBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgd3JpdGVCYXJyaWVyCiAgICAgQVNTRVJUKG93bmVyICE9IHNjcmF0Y2gxKTsK
ICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDIpOwogCisjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IERGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIoaml0LCBvd25lcik7CisjZW5kaWYKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihqaXQs
IG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGFsbG9jYXRvcik7CisjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZqaXQpOworI2VuZGlmCiAgICAgcmV0
dXJuIGNhbGw7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9u
IDE2NDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4MywyOSBAQCBtYWNybyBjYWxsVG9K
YXZhU2NyaXB0RXBpbG9ndWUoKQogICAgIGVuZAogZW5kCiAKKyMgT24gV2luZG93cyB3ZSBuZWVk
IHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhlIHN0YWNrIGd1YXJk
IHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyMgSWYgc28sIHdlIG5lZWQgdG8gcmVhZCBvciB3cml0ZSBzb21l
IGRhdGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UKKyMgdG8gbWFrZSBzdXJlIHRoZSBz
eXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNvbW1pdHRlZCBzdGFjayBtZW1vcnkuCisj
IE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBsYXRlciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQg
c3RhY2sgbWVtb3J5LgorIyBTZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L21zNjg2Nzc0JTI4VlMuODUlMjkuYXNweAorCittYWNybyBtb3ZlU3RhY2tQb2ludGVyQW5k
R3VhcmRQYWdlKHJlZywgc2NyYXRjaCkKKyAgICBjb25zdCB3aW5TdGFja0d1YXJkUGFnZVNpemUg
PSA0MDk2CisgICAgY29uc3QgZGVsdGEgPSB3aW5TdGFja0d1YXJkUGFnZVNpemUgLSAxNgorCisg
ICAgc3ViaSByZWcsIHNjcmF0Y2gKKyAgICBhZGRpIHNwLCBzY3JhdGNoCisudXBkYXRlU3BMb29w
OgorICAgIGJpbHQgc2NyYXRjaCwgZGVsdGEsIC5hbG1vc3REb25lVXBkYXRlU3AKKyAgICBzdWJp
IGRlbHRhLCBzY3JhdGNoCisgICAgc3ViaSBkZWx0YSwgc3AKKyAgICAjIER1bW15IG9wZXJhdGlv
biB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSBjb21taXRzIG1lbW9yeSwgYW5kIG1vdmVzIHRoZSBn
dWFyZCBwYWdlLgorICAgIHN1YmkgMCwgW3NwXQorICAgIGptcCAudXBkYXRlU3BMb29wCisuYWxt
b3N0RG9uZVVwZGF0ZVNwOgorICAgIHN1Ymkgc2NyYXRjaCwgc3AKK2VuZAorCiBtYWNybyBtb3Zl
U3RhY2tQb2ludGVyRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywgc2NyYXRjaCkKICAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVCbG9ja10sIHNjcmF0Y2gKICAgICBs
c2hpZnRwIDMsIHNjcmF0Y2gKQEAgLTM5MCw2ICs0MTMsOCBAQCBtYWNybyBtb3ZlU3RhY2tQb2lu
dGVyRm9yQ29kZUJsb2NrKGNvZGVCCiAgICAgaWYgQVJNdjcKICAgICAgICAgc3VicCBjZnIsIHNj
cmF0Y2gsIHNjcmF0Y2gKICAgICAgICAgbW92ZSBzY3JhdGNoLCBzcAorICAgIGVsc2lmIFg4Nl9X
SU4KKyAgICAgICAgbW92ZVN0YWNrUG9pbnRlckFuZEd1YXJkUGFnZShjZnIsIHNjcmF0Y2gpCiAg
ICAgZWxzZQogICAgICAgICBzdWJwIGNmciwgc2NyYXRjaCwgc3AKICAgICBlbmQKQEAgLTk5MSw2
ICsxMDE2LDkgQEAgX2xsaW50X29wX2NhbGxfdmFyYXJnczoKICAgICAgICAgaWYgQVJNdjcKICAg
ICAgICAgICAgIHN1YnAgdDEsIENhbGxlckZyYW1lQW5kUENTaXplLCB0MgogICAgICAgICAgICAg
bW92ZSB0Miwgc3AKKyAgICAgICAgZWxzaWYgWDg2X1dJTgorICAgICAgICAgICAgbW92ZSBDYWxs
ZXJGcmFtZUFuZFBDU2l6ZSwgdDIKKyAgICAgICAgICAgIG1vdmVTdGFja1BvaW50ZXJBbmRHdWFy
ZFBhZ2UodDEsIHQyKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdWJwIHQxLCBDYWxsZXJG
cmFtZUFuZFBDU2l6ZSwgc3AKICAgICAgICAgZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxNjQ3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3ICs0MTQsNyBA
QCBjbGFzcyBCYXNlSW5kZXgKICAgICBlbmQKICAgICAKICAgICBkZWYgeDg2T3BlcmFuZChraW5k
KQotICAgICAgICBpZiAhaXNJbnRlbFN5bnRheCB8fCBraW5kICE9IDpkb3VibGUKKyAgICAgICAg
aWYgIWlzSW50ZWxTeW50YXgKICAgICAgICAgICAgIHg4NkFkZHJlc3NPcGVyYW5kKDpwdHIpCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICIje2dldFNpemVTdHJpbmcoa2luZCl9WyN7b2Zmc2V0
LnZhbHVlfSArICN7YmFzZS54ODZPcGVyYW5kKDpwdHIpfSArICN7aW5kZXgueDg2T3BlcmFuZCg6
cHRyKX0gKiAje3NjYWxlfV0iCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0ODA2KQorKysgU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMi0yNyAg
cGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KKworICAgICAgICBbV2luMzJd
W0xMSU5UXSBDcmFzaCB3aGVuIHJ1bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVu
YWJsZSBMTElOVCBvbiBXaW4zMi4KKwogMjAxNC0wMi0yNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgRmFzdE1hbGxvYyBzaG91bGQgdXNlIHZt
X3BhZ2Vfc2hpZnQgaW50ZWFkIG9mIFBBR0VfU0hJRlQuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlz
aW9uIDE2NDc4MSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY0MCw3ICs2NDAsNyBAQAogI2lmICFkZWZpbmVkKEVOQUJMRV9KSVQpIFwKICAgICAmJiAo
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUo
TUlQUykpIFwKICAgICAmJiAhT1MoV0lOQ0UpIFwKLSAgICAmJiAhT1MoV0lORE9XUykKKyAgICAm
JiAhKE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpKQogI2RlZmluZSBFTkFCTEVfSklUIDEKICNl
bmRpZgogCkBAIC02OTMsOCArNjkzLDggQEAKICAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8K
ICNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpIFwKICAgICAmJiBFTkFCTEUoSklUKSBcCi0gICAg
JiYgKE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSBcCi0gICAgJiYgKChP
UyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpKSB8fCBQTEFURk9STShHVEspKSBcCisgICAgJiYg
KE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpIHx8IE9TKFdJTkRPV1MpKSBc
CisgICAgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpKSB8fCBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikpIFwKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwg
Q1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9OQUwpIHx8IENQVShBUk02NCkgfHwg
Q1BVKE1JUFMpIHx8IENQVShTSDQpKQogI2RlZmluZSBFTkFCTEVfTExJTlQgMQogI2VuZGlmCkBA
IC03ODMsNyArNzgzLDcgQEAKICNlbmRpZgogCiAvKiBDb25maWd1cmUgdGhlIGludGVycHJldGVy
ICovCi0jaWYgQ09NUElMRVIoR0NDKQorI2lmIENPTVBJTEVSKEdDQykgfHwgQ09NUElMRVIoTVNW
QykKICNkZWZpbmUgSEFWRV9DT01QVVRFRF9HT1RPIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNjQ4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMi0yNyAgcGVhdm9Ab3V0bG9vay5jb20gIDxw
ZWF2b0BvdXRsb29rLmNvbT4KKworICAgICAgICBbV2luMzJdW0xMSU5UXSBDcmFzaCB3aGVuIHJ1
bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyOTQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
TC5jcHA6IEluY2x1ZGUgYSBXaW5DYWlybyBjb21waWxlIGZpeC4KKwogMjAxNC0wMi0yNyAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE2NDc4My4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCShyZXZp
c2lvbiAxNjQ3ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyOCwxMCArMTEyOCwxMiBA
QCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IFRleHR1cmVNYXBwZXJHCiAgICAgcmV0dXJuIGFk
b3B0UmVmKHRleHR1cmUpOwogfQogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogUGFzc093
blB0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJh
dGVkKCkKIHsKICAgICByZXR1cm4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoKTsKIH0KKyNlbmRp
ZgogCiB9OwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225383</attachid>
            <date>2014-02-27 09:40:01 -0800</date>
            <delta_ts>2014-03-03 09:04:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140227183942.patch</filename>
            <type>text/plain</type>
            <size>11293</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0ODA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE0LTAyLTI3ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gV2lu
ZG93cyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhl
IHN0YWNrIGd1YXJkIHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyAgICAgICAgSWYgc28sIHdlIG5lZWQgdG8g
cmVhZCBvciB3cml0ZSBzb21lIGRhdGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UKKyAg
ICAgICAgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisgICAgICAgIE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBs
YXRlciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3RhY2sgbWVtb3J5LgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2VtYmx5L2J1aWxkLUxMSW50QXNz
ZW1ibHkuc2g6IEVuYWJsZSBMTElOVC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjptb3ZlU3RhY2tHdWFyZFBhZ2UpOiBB
ZGRlZCBtZXRob2QgdG8gbW92ZSBzdGFjayBndWFyZCBwYWdlLgorICAgICAgICAqIGppdC9Bc3Nl
bWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjptb3ZlU3RhY2tQ
b2ludGVyKTogQWRkZWQgbWV0aG9kIHRvIG1vdmUgc3RhY2sgcG9pbnRlci4KKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6IFVzZSBtb3Zl
U3RhY2tQb2ludGVyIG1ldGhvZCwgd2hpY2ggd2lsbCBtb3ZlIHRoZSBndWFyZCBwYWdlLgorICAg
ICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVM
b2FkVmFyYXJncyk6IERpdHRvLgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KEpTQzo6d3JpdGVCYXJyaWVyKTogQ29tcGlsZSBmaXggd2hlbiBERkdfSklUIGlzIG5vdCBlbmFi
bGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZCBtYWNy
byB0byBtb3ZlIHN0YWNrIGd1YXJkIHBhZ2UuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6
IENvbXBpbGUgZml4LgorCiAyMDE0LTAyLTI3ICBHYWJvciBSYXBjc2FueWkgIDxyZ2Fib3JAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICByMTY0NzY0IGJyb2tlIHRoZSBBUk0gYnVpbGQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNz
ZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2VtYmx5L2J1aWxk
LUxMSW50QXNzZW1ibHkuc2gJKHJldmlzaW9uIDE2NDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJ
bnRBc3NlbWJseS5zaAkod29ya2luZyBjb3B5KQpAQCAtMjksNCArMjksNCBAQCBwcmludGYgIkVO
RCIgPiBMb3dMZXZlbEludGVycHJldGVyV2luLmFzCiAKICMgV2hlbiBlbmFibGluZyBMTElOVCBh
bmQgc3dpdGNoaW5nIHRvIHRoZSB4ODYgYmFja2VuZCwgdXNlICJMb3dMZXZlbEludGVycHJldGVy
V2luLmFzbSIgYXMgb3V0cHV0IGZpbGUgd2hlbiBydW5uaW5nIGFzbS5yYi4KIAotL3Vzci9iaW4v
ZW52IHJ1YnkgIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9hc20ucmIiICIke1NSQ1JPT1R9L2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci9MTEludE9mZnNldHNFeHRyYWN0b3IkezN9LmV4ZSIgIkxMSW50QXNzZW1i
bHkuaCIgfHwgZXhpdCAxCisvdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNt
L2FzbS5yYiIgIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciR7M30uZXhlIiAiTG93TGV2ZWxJbnRlcnByZXRlcldpbi5hc20iIHx8IGV4aXQgMQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2
aXNpb24gMTY0NzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwzNCBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6Y2xlYXJTYW1wbGluZ0ZsYWcoCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikK
Ky8vIE9uIFdpbmRvd3Mgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgc3RhY2sgcG9pbnRlciBtb3Zl
cyBvdmVyIHRoZSBzdGFjayBndWFyZCBwYWdlIG9mIHNpemUgNEsuCisvLyBJZiBzbywgd2UgbmVl
ZCB0byByZWFkIG9yIHdyaXRlIHNvbWUgZGF0YSBvbiBldmVyeSBmb2xsb3dpbmcgZ3VhcmQgcGFn
ZQorLy8gdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisvLyBPdGhlcndpc2Ugd2UgbWlnaHQgY3Jhc2ggbGF0ZXIg
aWYgd2UgYWNjZXNzIHVuY29tbWl0dGVkIHN0YWNrIG1lbW9yeS4KKy8vIFNlZSBodHRwIDovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjg2Nzc0JTI4VlMuODUlMjkuYXNweAor
Cit2b2lkIEFzc2VtYmx5SGVscGVyczo6bW92ZVN0YWNrR3VhcmRQYWdlKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCB0ZW1wKQoreworICAgIGNvbnN0IGludCB3aW5TdGFj
a0d1YXJkUGFnZVNpemUgPSA0MDk2OworICAgIGNvbnN0IFRydXN0ZWRJbW0zMiBkZWx0YSh3aW5T
dGFja0d1YXJkUGFnZVNpemUgLSAxNik7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMigtb2Zmc2V0
KSwgdGVtcCk7CisgICAgc3ViMzIoYmFzZSwgdGVtcCk7CisgICAgYWRkMzIoc3RhY2tQb2ludGVy
UmVnaXN0ZXIsIHRlbXApOworCisgICAgTGFiZWwgbW92ZUd1YXJkUGFnZUxvb3AodGhpcyk7Cisg
ICAgSnVtcCBqbXAgPSBicmFuY2gzMihMZXNzVGhhbiwgdGVtcCwgZGVsdGEpOworICAgIHN1YjMy
KGRlbHRhLCB0ZW1wKTsKKyAgICBzdWIzMihkZWx0YSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgIC8vIER1bW15IG9wZXJhdGlvbiB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSBjb21taXRzIG1l
bW9yeSwgYW5kIG1vdmVzIHRoZSBndWFyZCBwYWdlLgorICAgIHN1YjMyKFRydXN0ZWRJbW0zMigw
KSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlcikpOworICAgIGp1bXAobW92ZUd1YXJkUGFn
ZUxvb3ApOworICAgIExhYmVsIGRvbmVNb3ZpbmdHdWFyZFBhZ2UodGhpcyk7CisgICAgam1wLmxp
bmtUbyhkb25lTW92aW5nR3VhcmRQYWdlLCB0aGlzKTsKK30KKyNlbmRpZgorCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogI2lmIFVTRShKU1ZBTFVFNjQpCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjQ3ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
NywyMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBQTEFURk9STShXSU4pCisgICAg
dm9pZCBtb3ZlU3RhY2tHdWFyZFBhZ2UoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIHRlbXApOworI2VuZGlmCisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbW92ZVN0YWNr
UG9pbnRlcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgdGVtcCkKKyAg
ICB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICBtb3ZlU3RhY2tHdWFyZFBhZ2Uob2Zmc2V0
LCBiYXNlLCB0ZW1wKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wKTsKKyNlbmRp
ZgorICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG9mZnNldCksIGJhc2UsIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICB9CisKKwogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAg
c2l6ZV90IHByb2xvZ3VlU3RhY2tQb2ludGVyRGVsdGEoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDE2NDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIyLDcgKzUyMiw3IEBAIENvbXBp
bGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgc3RhY2tPdmVyZmxv
dyA9IGJyYW5jaFB0cihBYm92ZSwgQWJzb2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNr
TGltaXQoKSksIHJlZ1QxKTsKICAgICB9CiAKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNr
UG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZy
YW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBtb3ZlU3RhY2tQb2ludGVy
KHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpLCBj
YWxsRnJhbWVSZWdpc3RlciwgcmVnVDIpOwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50
KCk7CiAKICAgICBwcml2YXRlQ29tcGlsZU1haW5QYXNzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNjQ3ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OCw3ICsxODgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9u
CiAKICAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09mZnNldCk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMigt
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmV0dXJuVmFsdWVHUFIsIHN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICBtb3ZlU3RhY2tQb2ludGVyKC1zaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyks
IHJldHVyblZhbHVlR1BSLCByZWdUNCk7CiAgICAgZW1pdExvYWQodGhpc1ZhbHVlLCByZWdUMSwg
cmVnVDQpOwogICAgIGVtaXRMb2FkKGFyZ3VtZW50cywgcmVnVDMsIHJlZ1QyKTsKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRWYXJhcmdzLCByZXR1cm5WYWx1ZUdQUiwgcmVnVDEsIHJl
Z1Q0LCByZWdUMywgcmVnVDIsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTY0NzgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI0LDkgKzgyNCwx
MyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgd3JpdGVCYXJyaWVyCiAgICAgQVNTRVJU
KG93bmVyICE9IHNjcmF0Y2gxKTsKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDIpOwogCisj
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZGVmaW5pdGVseU5v
dE1hcmtlZCA9IERGRzo6U3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIoaml0LCBv
d25lcik7CisjZW5kaWYKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gc3RvcmVUb1dy
aXRlQmFycmllckJ1ZmZlcihqaXQsIG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGFsbG9jYXRv
cik7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZq
aXQpOworI2VuZGlmCiAgICAgcmV0dXJuIGNhbGw7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDE2NDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4
MywyOSBAQCBtYWNybyBjYWxsVG9KYXZhU2NyaXB0RXBpbG9ndWUoKQogICAgIGVuZAogZW5kCiAK
KyMgT24gV2luZG93cyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVz
IG92ZXIgdGhlIHN0YWNrIGd1YXJkIHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyMgSWYgc28sIHdlIG5lZWQg
dG8gcmVhZCBvciB3cml0ZSBzb21lIGRhdGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UK
KyMgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNvbW1p
dHRlZCBzdGFjayBtZW1vcnkuCisjIE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBsYXRlciBpZiB3
ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3RhY2sgbWVtb3J5LgorIyBTZWUgaHR0cDovL21zZG4ubWlj
cm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjg2Nzc0JTI4VlMuODUlMjkuYXNweAorCittYWNy
byBtb3ZlU3RhY2tQb2ludGVyQW5kR3VhcmRQYWdlKHJlZywgc2NyYXRjaCkKKyAgICBjb25zdCB3
aW5TdGFja0d1YXJkUGFnZVNpemUgPSA0MDk2CisgICAgY29uc3QgZGVsdGEgPSB3aW5TdGFja0d1
YXJkUGFnZVNpemUgLSAxNgorCisgICAgc3ViaSByZWcsIHNjcmF0Y2gKKyAgICBhZGRpIHNwLCBz
Y3JhdGNoCisudXBkYXRlU3BMb29wOgorICAgIGJpbHQgc2NyYXRjaCwgZGVsdGEsIC5hbG1vc3RE
b25lVXBkYXRlU3AKKyAgICBzdWJpIGRlbHRhLCBzY3JhdGNoCisgICAgc3ViaSBkZWx0YSwgc3AK
KyAgICAjIER1bW15IG9wZXJhdGlvbiB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSBjb21taXRzIG1l
bW9yeSwgYW5kIG1vdmVzIHRoZSBndWFyZCBwYWdlLgorICAgIHN1YmkgMCwgW3NwXQorICAgIGpt
cCAudXBkYXRlU3BMb29wCisuYWxtb3N0RG9uZVVwZGF0ZVNwOgorICAgIHN1Ymkgc2NyYXRjaCwg
c3AKK2VuZAorCiBtYWNybyBtb3ZlU3RhY2tQb2ludGVyRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywg
c2NyYXRjaCkKICAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVC
bG9ja10sIHNjcmF0Y2gKICAgICBsc2hpZnRwIDMsIHNjcmF0Y2gKQEAgLTM5MCw2ICs0MTMsOCBA
QCBtYWNybyBtb3ZlU3RhY2tQb2ludGVyRm9yQ29kZUJsb2NrKGNvZGVCCiAgICAgaWYgQVJNdjcK
ICAgICAgICAgc3VicCBjZnIsIHNjcmF0Y2gsIHNjcmF0Y2gKICAgICAgICAgbW92ZSBzY3JhdGNo
LCBzcAorICAgIGVsc2lmIFg4Nl9XSU4KKyAgICAgICAgbW92ZVN0YWNrUG9pbnRlckFuZEd1YXJk
UGFnZShjZnIsIHNjcmF0Y2gpCiAgICAgZWxzZQogICAgICAgICBzdWJwIGNmciwgc2NyYXRjaCwg
c3AKICAgICBlbmQKQEAgLTk5MSw2ICsxMDE2LDkgQEAgX2xsaW50X29wX2NhbGxfdmFyYXJnczoK
ICAgICAgICAgaWYgQVJNdjcKICAgICAgICAgICAgIHN1YnAgdDEsIENhbGxlckZyYW1lQW5kUENT
aXplLCB0MgogICAgICAgICAgICAgbW92ZSB0Miwgc3AKKyAgICAgICAgZWxzaWYgWDg2X1dJTgor
ICAgICAgICAgICAgbW92ZSBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgdDIKKyAgICAgICAgICAgIG1v
dmVTdGFja1BvaW50ZXJBbmRHdWFyZFBhZ2UodDEsIHQyKQogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBzdWJwIHQxLCBDYWxsZXJGcmFtZUFuZFBDU2l6ZSwgc3AKICAgICAgICAgZW5kCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAxNjQ3ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29w
eSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBjbGFzcyBCYXNlSW5kZXgKICAgICBlbmQKICAgICAKICAg
ICBkZWYgeDg2T3BlcmFuZChraW5kKQotICAgICAgICBpZiAhaXNJbnRlbFN5bnRheCB8fCBraW5k
ICE9IDpkb3VibGUKKyAgICAgICAgaWYgIWlzSW50ZWxTeW50YXgKICAgICAgICAgICAgIHg4NkFk
ZHJlc3NPcGVyYW5kKDpwdHIpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICIje2dldFNpemVT
dHJpbmcoa2luZCl9WyN7b2Zmc2V0LnZhbHVlfSArICN7YmFzZS54ODZPcGVyYW5kKDpwdHIpfSAr
ICN7aW5kZXgueDg2T3BlcmFuZCg6cHRyKX0gKiAje3NjYWxlfV0iCkluZGV4OiBTb3VyY2UvV1RG
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24g
MTY0ODA2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNC0wMi0yNyAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNv
bT4KKworICAgICAgICBbV2luMzJdW0xMSU5UXSBDcmFzaCB3aGVuIHJ1bm5pbmcgSlNDIHN0cmVz
cyB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyOTQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBMTElOVCBvbiBXaW4zMi4KKwogMjAxNC0wMi0yNiAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgRmFz
dE1hbGxvYyBzaG91bGQgdXNlIHZtX3BhZ2Vfc2hpZnQgaW50ZWFkIG9mIFBBR0VfU0hJRlQuCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE2NDc4MSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2NDAsNyBAQAogI2lmICFkZWZpbmVkKEVO
QUJMRV9KSVQpIFwKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkg
fHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpIFwKICAgICAmJiAhT1MoV0lOQ0UpIFwKLSAgICAm
JiAhT1MoV0lORE9XUykKKyAgICAmJiAhKE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpKQogI2Rl
ZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCkBAIC02OTMsOCArNjkzLDggQEAKICAgIGxvdy1s
ZXZlbCBpbnRlcnByZXRlci4gKi8KICNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpIFwKICAgICAm
JiBFTkFCTEUoSklUKSBcCi0gICAgJiYgKE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9TKEZS
RUVCU0QpKSBcCi0gICAgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9STShFRkwpKSB8fCBQTEFU
Rk9STShHVEspKSBcCisgICAgJiYgKE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVC
U0QpIHx8IE9TKFdJTkRPV1MpKSBcCisgICAgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9STShF
RkwpKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpIFwKICAgICAmJiAoQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk1fVFJBRElUSU9O
QUwpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQpKQogI2RlZmluZSBFTkFC
TEVfTExJTlQgMQogI2VuZGlmCkBAIC03ODMsNyArNzgzLDcgQEAKICNlbmRpZgogCiAvKiBDb25m
aWd1cmUgdGhlIGludGVycHJldGVyICovCi0jaWYgQ09NUElMRVIoR0NDKQorI2lmIENPTVBJTEVS
KEdDQykgfHwgQ09NUElMRVIoTVNWQykKICNkZWZpbmUgSEFWRV9DT01QVVRFRF9HT1RPIDEKICNl
bmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225659</attachid>
            <date>2014-03-03 09:04:19 -0800</date>
            <delta_ts>2014-03-03 09:55:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140303180410.patch</filename>
            <type>text/plain</type>
            <size>13819</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0OTg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE0LTAzLTAzICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gV2lu
ZG93cyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhl
IHN0YWNrIGd1YXJkIHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyAgICAgICAgSWYgc28sIHdlIG5lZWQgdG8g
cmVhZCBvciB3cml0ZSBzb21lIGRhdGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UKKyAg
ICAgICAgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisgICAgICAgIE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBs
YXRlciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3RhY2sgbWVtb3J5LgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6IEFkZGVkIHN1YlB0ciBtZXRob2QgZm9yIGRlc3Rp
bmF0aW9uIG9mIHR5cGUgQWRkcmVzcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaDogRW5hYmxlIExMSU5U
LgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6Om1vdmVTdGFja0d1YXJkUGFnZSk6IEFkZGVkIG1ldGhvZCB0byBtb3ZlIHN0
YWNrIGd1YXJkIHBhZ2UuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Om1vdmVTdGFja1BvaW50ZXIpOiBBZGRlZCBtZXRob2Qg
dG8gbW92ZSBzdGFjayBwb2ludGVyLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKTogVXNlIG1vdmVTdGFja1BvaW50ZXIgbWV0aG9kLCB3
aGljaCB3aWxsIG1vdmUgdGhlIGd1YXJkIHBhZ2UuCisgICAgICAgICogaml0L0pJVENhbGwzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKTogRGl0dG8uCisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp3cml0ZUJhcnJpZXIpOiBD
b21waWxlIGZpeCB3aGVuIERGR19KSVQgaXMgbm90IGVuYWJsZWQuCisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206IEFkZGVkIG1hY3JvIHRvIG1vdmUgc3RhY2sgZ3VhcmQg
cGFnZS4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQ29tcGlsZSBmaXgsIGFuZCBzbWFs
bCBzaW1wbGlmaWNhdGlvbi4KKwogMjAxNC0wMy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFBvbHltb3JwaGljUHV0QnlJZExpc3Qgc2hvdWxkIGhhdmUgYSBz
aW1wbGVyIGNvbnN0cnVjdGlvbiBBUEkgd2l0aCBiYXNpY2FsbHkgYSBzaW5nbGUgZW50cnlwb2lu
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovTExJ
bnQvTExJbnRBc3NlbWJseS9idWlsZC1MTEludEFzc2VtYmx5LnNoCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNz
ZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAkocmV2aXNpb24gMTY0OTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovTExJbnQvTExJbnRBc3NlbWJs
eS9idWlsZC1MTEludEFzc2VtYmx5LnNoCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0ICsyOSw0IEBA
IHByaW50ZiAiRU5EIiA+IExvd0xldmVsSW50ZXJwcmV0ZXJXaW4uYXMKIAogIyBXaGVuIGVuYWJs
aW5nIExMSU5UIGFuZCBzd2l0Y2hpbmcgdG8gdGhlIHg4NiBiYWNrZW5kLCB1c2UgIkxvd0xldmVs
SW50ZXJwcmV0ZXJXaW4uYXNtIiBhcyBvdXRwdXQgZmlsZSB3aGVuIHJ1bm5pbmcgYXNtLnJiLgog
Ci0vdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNtL2FzbS5yYiIgIiR7U1JD
Uk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJhY3RvciR7M30uZXhlIiAi
TExJbnRBc3NlbWJseS5oIiB8fCBleGl0IDEKKy91c3IvYmluL2VudiBydWJ5ICIke1NSQ1JPT1R9
L29mZmxpbmVhc20vYXNtLnJiIiAiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSIgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHNFeHRyYWN0b3IvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yJHszfS5leGUiICJMb3dMZXZlbEludGVycHJldGVyV2luLmFzbSIgfHwg
ZXhpdCAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw2ICs1MzMs
MTEgQEAgcHVibGljOgogICAgICAgICBzdWIzMihUcnVzdGVkSW1tMzIoaW1tKSwgZGVzdCk7CiAg
ICAgfQogCisgICAgdm9pZCBzdWJQdHIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQor
ICAgIHsKKyAgICAgICAgc3ViMzIoaW1tLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHhvclB0
cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgeG9yMzIo
c3JjLCBkZXN0KTsKQEAgLTgyMSw2ICs4MjYsMTEgQEAgcHVibGljOgogICAgICAgICBzdWI2NChU
cnVzdGVkSW1tNjQoaW1tKSwgZGVzdCk7CiAgICAgfQogCisgICAgdm9pZCBzdWJQdHIoVHJ1c3Rl
ZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgc3ViNjQoaW1tLCBkZXN0
KTsKKyAgICB9CisKICAgICB2b2lkIHhvclB0cihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgeG9yNjQoc3JjLCBkZXN0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDE2NDk3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNiArNzAsNjUgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNsZWFyU2Ft
cGxpbmdGbGFnKAogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShXSU4pCisgICAgLy8gT24gV2lu
ZG93cyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhl
IHN0YWNrIGd1YXJkIHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyAgICAvLyBJZiBzbywgd2UgbmVlZCB0byBy
ZWFkIG9yIHdyaXRlIHNvbWUgZGF0YSBvbiBldmVyeSBmb2xsb3dpbmcgZ3VhcmQgcGFnZQorICAg
IC8vIHRvIG1ha2Ugc3VyZSB0aGUgc3lzdGVtIGNvbW1pdHMgdGhlIHByZXZpb3VzbHkgdW5jb21t
aXR0ZWQgc3RhY2sgbWVtb3J5LgorICAgIC8vIE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBsYXRl
ciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3RhY2sgbWVtb3J5LgorICAgIC8vIFNlZSBodHRw
Oi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzEwMDc3NQorCitzdGF0aWMgaW50IGdldEd1YXJk
UGFnZVNpemUoKQoreworICAgIGNvbnN0IGludCBkZWZhdWx0UGFnZVNpemUgPSA0MDk2OworCisg
ICAgTUVNT1JZX0JBU0lDX0lORk9STUFUSU9OIHN0YWNrT3JpZ2luOworICAgIGlmICghVmlydHVh
bFF1ZXJ5KCZzdGFja09yaWdpbiwgJnN0YWNrT3JpZ2luLCBzaXplb2Yoc3RhY2tPcmlnaW4pKSkK
KyAgICAgICAgcmV0dXJuIGRlZmF1bHRQYWdlU2l6ZTsKKworICAgIE1FTU9SWV9CQVNJQ19JTkZP
Uk1BVElPTiB1bmNvbW1pdHRlZE1lbW9yeTsKKyAgICBpZiAoIVZpcnR1YWxRdWVyeShzdGFja09y
aWdpbi5BbGxvY2F0aW9uQmFzZSwgJnVuY29tbWl0dGVkTWVtb3J5LCBzaXplb2YodW5jb21taXR0
ZWRNZW1vcnkpKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRQYWdlU2l6ZTsKKworICAgIEFTU0VS
VCh1bmNvbW1pdHRlZE1lbW9yeS5TdGF0ZSA9PSBNRU1fUkVTRVJWRSk7CisKKyAgICBNRU1PUllf
QkFTSUNfSU5GT1JNQVRJT04gZ3VhcmRQYWdlOworICAgIGlmICghVmlydHVhbFF1ZXJ5KHN0YXRp
Y19jYXN0PGNoYXIqPih1bmNvbW1pdHRlZE1lbW9yeS5CYXNlQWRkcmVzcykgKyB1bmNvbW1pdHRl
ZE1lbW9yeS5SZWdpb25TaXplLCAmZ3VhcmRQYWdlLCBzaXplb2YoZ3VhcmRQYWdlKSkpCisgICAg
ICAgIHJldHVybiBkZWZhdWx0UGFnZVNpemU7CisKKyAgICBBU1NFUlQoZ3VhcmRQYWdlLlByb3Rl
Y3QgJiBQQUdFX0dVQVJEKTsKKworICAgIHJldHVybiBndWFyZFBhZ2UuUmVnaW9uU2l6ZTsKK30K
Kwordm9pZCBBc3NlbWJseUhlbHBlcnM6Om1vdmVTdGFja1BvaW50ZXJBbmRHdWFyZFBhZ2UoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIHNjcmF0Y2gpCit7CisgICAgc3Rh
dGljIGludCBndWFyZFBhZ2VTaXplID0gZ2V0R3VhcmRQYWdlU2l6ZSgpOworICAgIGNvbnN0IFRy
dXN0ZWRJbW0zMiBwYWdlU2l6ZShndWFyZFBhZ2VTaXplKTsKKworICAgIC8vIEFsaWduIHN0YWNr
cG9pbnRlciB0byBwYWdlIGJvdW5kYXJ5LgorICAgIGFuZFB0cihUcnVzdGVkSW1tMzIofihwYWdl
U2l6ZS5tX3ZhbHVlIC0gMSkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKKyAgICBtb3ZlKFRy
dXN0ZWRJbW0zMigtb2Zmc2V0KSwgc2NyYXRjaCk7CisKKyAgICAvLyBzY3JhdGNoIG5vdyBjb250
YWlucyB0aGUgb2Zmc2V0IGZyb20gYmFzZSByZWcKKworICAgIHN1YlB0cihiYXNlLCBzY3JhdGNo
KTsKKyAgICBhZGRQdHIoc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHNjcmF0Y2gpOworCisgICAgLy8g
Tm93LCBzY3JhdGNoIGNvbnRhaW5zIHRoZSBhbGxvY2F0aW9uIG9mZnNldCBmcm9tIHRoZSBjdXJy
ZW50IHN0YWNrcG9pbnRlci4KKworICAgIExhYmVsIHVwZGF0ZVNwTG9vcCh0aGlzKTsKKyAgICBK
dW1wIGFsbW9zdERvbmVVcGRhdGVTcCA9IGJyYW5jaDMyKExlc3NUaGFuLCBzY3JhdGNoLCBwYWdl
U2l6ZSk7CisgICAgc3ViUHRyKHBhZ2VTaXplLCBzY3JhdGNoKTsKKyAgICBzdWJQdHIocGFnZVNp
emUsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAvLyBEdW1teSBvcGVyYXRpb24gdG8gbWFr
ZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyBtZW1vcnksIGFuZCBtb3ZlcyB0aGUgZ3VhcmQgcGFn
ZS4KKyAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lz
dGVyKSk7CisgICAganVtcCh1cGRhdGVTcExvb3ApOworICAgIGFsbW9zdERvbmVVcGRhdGVTcC5s
aW5rKHRoaXMpOworICAgIHN1YlB0cihzY3JhdGNoLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cit9
CisjZW5kaWYKKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICNpZiBVU0UoSlNWQUxVRTY0KQogdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoR1BSUmVnIGdwcikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY0
OTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMjAgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisj
aWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQgbW92ZVN0YWNrUG9pbnRlckFuZEd1YXJkUGFnZShp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisjZW5kaWYK
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBtb3ZlU3RhY2tQb2ludGVyKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgIHsKKyNpZiBQTEFURk9STShX
SU4pCisgICAgICAgIG1vdmVTdGFja1BvaW50ZXJBbmRHdWFyZFBhZ2Uob2Zmc2V0LCBiYXNlLCBz
Y3JhdGNoKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKKyAgICAgICAg
YWRkUHRyKFRydXN0ZWRJbW0zMihvZmZzZXQpLCBiYXNlLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisjZW5kaWYKKyAgICB9CisKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgIHNpemVf
dCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMiw3ICs1MjIsNyBAQCBDb21waWxhdGlv
blJlc3VsdCBKSVQ6OnByaXZhdGVDb21waWxlKEpJCiAgICAgICAgIHN0YWNrT3ZlcmZsb3cgPSBi
cmFuY2hQdHIoQWJvdmUsIEFic29sdXRlQWRkcmVzcyhtX3ZtLT5hZGRyZXNzT2ZTdGFja0xpbWl0
KCkpLCByZWdUMSk7CiAgICAgfQogCi0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50
ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJl
Z2lzdGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgbW92ZVN0YWNrUG9pbnRlcihzdGFj
a1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6ZW9mKFJlZ2lzdGVyKSwgY2FsbEZy
YW1lUmVnaXN0ZXIsIHJlZ1QyKTsKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwog
CiAgICAgcHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTY0OTc4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQs
NyArMTk0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhJbnN0cnVjdGlvbgogCiAg
ICAgZW1pdExvYWQoYXJndW1lbnRzLCByZWdUMSwgcmVnVDApOwogICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgcmVnVDEsIHJlZ1QwLCBmaXJzdEZyZWVSZWdp
c3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXNpemVv
ZihDYWxsZXJGcmFtZUFuZFBDKSksIHJldHVyblZhbHVlR1BSLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgbW92ZVN0YWNrUG9pbnRlcigtc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCByZXR1
cm5WYWx1ZUdQUiwgcmVnVDQpOwogICAgIGVtaXRMb2FkKHRoaXNWYWx1ZSwgcmVnVDEsIHJlZ1Q0
KTsKICAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QzLCByZWdUMik7CiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgcmV0dXJuVmFsdWVHUFIsIHJlZ1QxLCByZWdUNCwg
cmVnVDMsIHJlZ1QyLCBmaXJzdFZhckFyZ09mZnNldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE2NDk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNCw5ICs4MjQsMTMgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyOjpDYWxsIHdyaXRlQmFycmllcgogICAgIEFTU0VSVChvd25l
ciAhPSBzY3JhdGNoMSk7CiAgICAgQVNTRVJUKG93bmVyICE9IHNjcmF0Y2gyKTsKIAorI2lmIEVO
QUJMRShERkdfSklUKQogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJr
ZWQgPSBERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmljV3JpdGVCYXJyaWVyKGppdCwgb3duZXIp
OworI2VuZGlmCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCA9IHN0b3JlVG9Xcml0ZUJh
cnJpZXJCdWZmZXIoaml0LCBvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBhbGxvY2F0b3IpOwor
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmaml0KTsK
KyNlbmRpZgogICAgIHJldHVybiBjYWxsOwogfQogI2VuZGlmIC8vIEVOQUJMRShHR0MpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsMzYg
QEAgbWFjcm8gY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3VlKCkKICAgICBlbmQKIGVuZAogCisjIE9u
IFdpbmRvd3Mgd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgc3RhY2sgcG9pbnRlciBtb3ZlcyBvdmVy
IHRoZSBzdGFjayBndWFyZCBwYWdlIG9mIHNpemUgNEsuCisjIElmIHNvLCB3ZSBuZWVkIHRvIHJl
YWQgb3Igd3JpdGUgc29tZSBkYXRhIG9uIGV2ZXJ5IGZvbGxvd2luZyBndWFyZCBwYWdlCisjIHRv
IG1ha2Ugc3VyZSB0aGUgc3lzdGVtIGNvbW1pdHMgdGhlIHByZXZpb3VzbHkgdW5jb21taXR0ZWQg
c3RhY2sgbWVtb3J5LgorIyBPdGhlcndpc2Ugd2UgbWlnaHQgY3Jhc2ggbGF0ZXIgaWYgd2UgYWNj
ZXNzIHVuY29tbWl0dGVkIHN0YWNrIG1lbW9yeS4KKyMgU2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jv
c29mdC5jb20va2IvMTAwNzc1CisKK21hY3JvIG1vdmVTdGFja1BvaW50ZXJBbmRHdWFyZFBhZ2Uo
YmFzZSwgc2NyYXRjaCkKKyAgICBjb25zdCBwYWdlU2l6ZSA9IDQwOTYKKworICAgICMgQWxpZ24g
c3RhY2twb2ludGVyIHRvIHBhZ2UgYm91bmRhcnkuCisgICAgYW5kcCB+KHBhZ2VTaXplIC0gMSks
IHNwCisKKyAgICAjIE9uIGVudHJ5LCBzY3JhdGNoIGNvbnRhaW5zIHRoZSBvZmZzZXQgZnJvbSBi
YXNlIHJlZworCisgICAgc3VicCBiYXNlLCBzY3JhdGNoCisgICAgYWRkcCBzcCwgc2NyYXRjaAor
CisgICAgIyBOb3csIHNjcmF0Y2ggY29udGFpbnMgdGhlIGFsbG9jYXRpb24gb2Zmc2V0IGZyb20g
dGhlIGN1cnJlbnQgc3RhY2twb2ludGVyLgorCisudXBkYXRlU3BMb29wOgorICAgIGJpbHQgc2Ny
YXRjaCwgcGFnZVNpemUsIC5hbG1vc3REb25lVXBkYXRlU3AKKyAgICBzdWJwIHBhZ2VTaXplLCBz
Y3JhdGNoCisgICAgc3VicCBwYWdlU2l6ZSwgc3AKKyAgICAjIER1bW15IG9wZXJhdGlvbiB0byBt
YWtlIHN1cmUgdGhlIHN5c3RlbSBjb21taXRzIG1lbW9yeSwgYW5kIG1vdmVzIHRoZSBndWFyZCBw
YWdlLgorICAgIHN1YnAgMCwgW3NwXQorICAgIGptcCAudXBkYXRlU3BMb29wCisuYWxtb3N0RG9u
ZVVwZGF0ZVNwOgorICAgIHN1YnAgc2NyYXRjaCwgc3AKK2VuZAorCiBtYWNybyBtb3ZlU3RhY2tQ
b2ludGVyRm9yQ29kZUJsb2NrKGNvZGVCbG9jaywgc2NyYXRjaCkKICAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW2NvZGVCbG9ja10sIHNjcmF0Y2gKICAgICBsc2hpZnRw
IDMsIHNjcmF0Y2gKQEAgLTM5MCw2ICs0MjAsOCBAQCBtYWNybyBtb3ZlU3RhY2tQb2ludGVyRm9y
Q29kZUJsb2NrKGNvZGVCCiAgICAgaWYgQVJNdjcKICAgICAgICAgc3VicCBjZnIsIHNjcmF0Y2gs
IHNjcmF0Y2gKICAgICAgICAgbW92ZSBzY3JhdGNoLCBzcAorICAgIGVsc2lmIFg4Nl9XSU4KKyAg
ICAgICAgbW92ZVN0YWNrUG9pbnRlckFuZEd1YXJkUGFnZShjZnIsIHNjcmF0Y2gpCiAgICAgZWxz
ZQogICAgICAgICBzdWJwIGNmciwgc2NyYXRjaCwgc3AKICAgICBlbmQKQEAgLTk5Miw2ICsxMDI0
LDkgQEAgX2xsaW50X29wX2NhbGxfdmFyYXJnczoKICAgICAgICAgaWYgQVJNdjcKICAgICAgICAg
ICAgIHN1YnAgdDEsIENhbGxlckZyYW1lQW5kUENTaXplLCB0MgogICAgICAgICAgICAgbW92ZSB0
Miwgc3AKKyAgICAgICAgZWxzaWYgWDg2X1dJTgorICAgICAgICAgICAgbW92ZSBDYWxsZXJGcmFt
ZUFuZFBDU2l6ZSwgdDIKKyAgICAgICAgICAgIG1vdmVTdGFja1BvaW50ZXJBbmRHdWFyZFBhZ2Uo
dDEsIHQyKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdWJwIHQxLCBDYWxsZXJGcmFtZUFu
ZFBDU2l6ZSwgc3AKICAgICAgICAgZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBjbGFz
cyBCYXNlSW5kZXgKICAgICBlbmQKICAgICAKICAgICBkZWYgeDg2T3BlcmFuZChraW5kKQotICAg
ICAgICBpZiAhaXNJbnRlbFN5bnRheCB8fCBraW5kICE9IDpkb3VibGUKKyAgICAgICAgaWYgIWlz
SW50ZWxTeW50YXgKICAgICAgICAgICAgIHg4NkFkZHJlc3NPcGVyYW5kKDpwdHIpCiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICIje2dldFNpemVTdHJpbmcoa2luZCl9WyN7b2Zmc2V0LnZhbHVl
fSArICN7YmFzZS54ODZPcGVyYW5kKDpwdHIpfSArICN7aW5kZXgueDg2T3BlcmFuZCg6cHRyKX0g
KiAje3NjYWxlfV0iCkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgb3AgPSBvcGVyYW5k
c1swXS54ODZDYWxsT3BlcmFuZCg6cHRyKQotICAgICAgICAgICAgaWYgaXNNU1ZDICYmICgvXEFs
bGludF8vLm1hdGNoKG9wKSB8fCAvXEFzbG93X3BhdGgvLm1hdGNoKG9wKSkKKyAgICAgICAgICAg
IGlmIGlzTVNWQyAmJiAob3BlcmFuZHNbMF0uaXNfYT8gTGFiZWxSZWZlcmVuY2UpCiAgICAgICAg
ICAgICAgICAgd3JpdGVTeW1ib2xUb0ZpbGUob3ApCiAgICAgICAgICAgICBlbmQKICAgICAgICAg
ICAgICRhc20ucHV0cyAiY2FsbCAje29wfSIKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0
LTAzLTAzICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAg
IFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3RzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDogRW5hYmxlIExMSU5UIG9uIFdpbjMyLgorCiAyMDE0LTAzLTAyICBKYWVodW4gTGltICA8
bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIG1faW5pdEVm
bCBmcm9tIFJ1bkxvb3AuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE2NDk3OCkKKysrIFNv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2NDAsNyBA
QAogI2lmICFkZWZpbmVkKEVOQUJMRV9KSVQpIFwKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpIFwKICAgICAmJiAh
T1MoV0lOQ0UpIFwKLSAgICAmJiAhT1MoV0lORE9XUykKKyAgICAmJiAhKE9TKFdJTkRPV1MpICYm
IENQVShYODZfNjQpKQogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCkBAIC02OTMsOCAr
NjkzLDggQEAKICAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KICNpZiAhZGVmaW5lZChFTkFC
TEVfTExJTlQpIFwKICAgICAmJiBFTkFCTEUoSklUKSBcCi0gICAgJiYgKE9TKERBUldJTikgfHwg
T1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSBcCi0gICAgJiYgKChPUyhEQVJXSU4pICYmICFQTEFU
Rk9STShFRkwpKSB8fCBQTEFURk9STShHVEspKSBcCisgICAgJiYgKE9TKERBUldJTikgfHwgT1Mo
TElOVVgpIHx8IE9TKEZSRUVCU0QpIHx8IE9TKFdJTkRPV1MpKSBcCisgICAgJiYgKChPUyhEQVJX
SU4pICYmICFQTEFURk9STShFRkwpKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikp
IFwKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8
IENQVShBUk1fVFJBRElUSU9OQUwpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShT
SDQpKQogI2RlZmluZSBFTkFCTEVfTExJTlQgMQogI2VuZGlmCkBAIC03ODMsNyArNzgzLDcgQEAK
ICNlbmRpZgogCiAvKiBDb25maWd1cmUgdGhlIGludGVycHJldGVyICovCi0jaWYgQ09NUElMRVIo
R0NDKQorI2lmIENPTVBJTEVSKEdDQykgfHwgQ09NUElMRVIoTVNWQykKICNkZWZpbmUgSEFWRV9D
T01QVVRFRF9HT1RPIDEKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225664</attachid>
            <date>2014-03-03 09:55:38 -0800</date>
            <delta_ts>2014-03-04 10:50:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140303185526.patch</filename>
            <type>text/plain</type>
            <size>13572</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0OTg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE0LTAzLTAzICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gV2lu
ZG93cyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhl
IHN0YWNrIGd1YXJkIHBhZ2Ugb2Ygc2l6ZSA0Sy4KKyAgICAgICAgSWYgc28sIHdlIG5lZWQgdG8g
cmVhZCBvciB3cml0ZSBzb21lIGRhdGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UKKyAg
ICAgICAgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisgICAgICAgIE90aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBs
YXRlciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3RhY2sgbWVtb3J5LgorCisgICAgICAgICog
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6IEFkZGVkIGFkZFB0ciBtZXRob2QgZm9yIGRlc3Rp
bmF0aW9uIG9mIHR5cGUgQWRkcmVzcy4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaDogRW5hYmxlIExMSU5U
LgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6Om1vdmVTdGFja0d1YXJkUGFnZSk6IEFkZGVkIG1ldGhvZCB0byBtb3ZlIHN0
YWNrIGd1YXJkIHBhZ2UuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Om1vdmVTdGFja1BvaW50ZXIpOiBBZGRlZCBtZXRob2Qg
dG8gbW92ZSBzdGFjayBwb2ludGVyLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKTogVXNlIG1vdmVTdGFja1BvaW50ZXIgbWV0aG9kLCB3
aGljaCB3aWxsIG1vdmUgdGhlIGd1YXJkIHBhZ2UuCisgICAgICAgICogaml0L0pJVENhbGwzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKTogRGl0dG8uCisg
ICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp3cml0ZUJhcnJpZXIpOiBD
b21waWxlIGZpeCB3aGVuIERGR19KSVQgaXMgbm90IGVuYWJsZWQuCisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206IEFkZGVkIG1hY3JvIHRvIG1vdmUgc3RhY2sgZ3VhcmQg
cGFnZS4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQ29tcGlsZSBmaXgsIGFuZCBzbWFs
bCBzaW1wbGlmaWNhdGlvbi4KKwogMjAxNC0wMy0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFBvbHltb3JwaGljUHV0QnlJZExpc3Qgc2hvdWxkIGhhdmUgYSBz
aW1wbGVyIGNvbnN0cnVjdGlvbiBBUEkgd2l0aCBiYXNpY2FsbHkgYSBzaW5nbGUgZW50cnlwb2lu
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovTExJ
bnQvTExJbnRBc3NlbWJseS9idWlsZC1MTEludEFzc2VtYmx5LnNoCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNz
ZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAkocmV2aXNpb24gMTY0OTc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovTExJbnQvTExJbnRBc3NlbWJs
eS9idWlsZC1MTEludEFzc2VtYmx5LnNoCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0ICsyOSw0IEBA
IHByaW50ZiAiRU5EIiA+IExvd0xldmVsSW50ZXJwcmV0ZXJXaW4uYXMKIAogIyBXaGVuIGVuYWJs
aW5nIExMSU5UIGFuZCBzd2l0Y2hpbmcgdG8gdGhlIHg4NiBiYWNrZW5kLCB1c2UgIkxvd0xldmVs
SW50ZXJwcmV0ZXJXaW4uYXNtIiBhcyBvdXRwdXQgZmlsZSB3aGVuIHJ1bm5pbmcgYXNtLnJiLgog
Ci0vdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNtL2FzbS5yYiIgIiR7U1JD
Uk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJhY3RvciR7M30uZXhlIiAi
TExJbnRBc3NlbWJseS5oIiB8fCBleGl0IDEKKy91c3IvYmluL2VudiBydWJ5ICIke1NSQ1JPT1R9
L29mZmxpbmVhc20vYXNtLnJiIiAiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSIgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHNFeHRyYWN0b3IvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yJHszfS5leGUiICJMb3dMZXZlbEludGVycHJldGVyV2luLmFzbSIgfHwg
ZXhpdCAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Miw3ICs0NzIs
MTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYWRkMzIoaW1tLCBhZGRyZXNzKTsKICAgICB9
Ci0gICAgCisKKyAgICB2b2lkIGFkZFB0cihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBhZGQzMihpbW0sIGFkZHJlc3MpOworICAgIH0KKwogICAgIHZv
aWQgYW5kUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBhbmQzMihzcmMsIGRlc3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTY0OTc4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3
MCw2NSBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2xlYXJTYW1wbGluZ0ZsYWcoCiB9CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAvLyBPbiBXaW5kb3dzIHdlIG5lZWQgdG8gY2hl
Y2sgaWYgdGhlIHN0YWNrIHBvaW50ZXIgbW92ZXMgb3ZlciB0aGUgc3RhY2sgZ3VhcmQgcGFnZSBv
ZiBzaXplIDRLLgorICAgIC8vIElmIHNvLCB3ZSBuZWVkIHRvIHJlYWQgb3Igd3JpdGUgc29tZSBk
YXRhIG9uIGV2ZXJ5IGZvbGxvd2luZyBndWFyZCBwYWdlCisgICAgLy8gdG8gbWFrZSBzdXJlIHRo
ZSBzeXN0ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNvbW1pdHRlZCBzdGFjayBtZW1vcnku
CisgICAgLy8gT3RoZXJ3aXNlIHdlIG1pZ2h0IGNyYXNoIGxhdGVyIGlmIHdlIGFjY2VzcyB1bmNv
bW1pdHRlZCBzdGFjayBtZW1vcnkuCisgICAgLy8gU2VlIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29m
dC5jb20va2IvMTAwNzc1CisKK3N0YXRpYyBpbnQgZ2V0R3VhcmRQYWdlU2l6ZSgpCit7CisgICAg
Y29uc3QgaW50IGRlZmF1bHRQYWdlU2l6ZSA9IDQwOTY7CisKKyAgICBNRU1PUllfQkFTSUNfSU5G
T1JNQVRJT04gc3RhY2tPcmlnaW47CisgICAgaWYgKCFWaXJ0dWFsUXVlcnkoJnN0YWNrT3JpZ2lu
LCAmc3RhY2tPcmlnaW4sIHNpemVvZihzdGFja09yaWdpbikpKQorICAgICAgICByZXR1cm4gZGVm
YXVsdFBhZ2VTaXplOworCisgICAgTUVNT1JZX0JBU0lDX0lORk9STUFUSU9OIHVuY29tbWl0dGVk
TWVtb3J5OworICAgIGlmICghVmlydHVhbFF1ZXJ5KHN0YWNrT3JpZ2luLkFsbG9jYXRpb25CYXNl
LCAmdW5jb21taXR0ZWRNZW1vcnksIHNpemVvZih1bmNvbW1pdHRlZE1lbW9yeSkpKQorICAgICAg
ICByZXR1cm4gZGVmYXVsdFBhZ2VTaXplOworCisgICAgQVNTRVJUKHVuY29tbWl0dGVkTWVtb3J5
LlN0YXRlID09IE1FTV9SRVNFUlZFKTsKKworICAgIE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiBn
dWFyZFBhZ2U7CisgICAgaWYgKCFWaXJ0dWFsUXVlcnkoc3RhdGljX2Nhc3Q8Y2hhcio+KHVuY29t
bWl0dGVkTWVtb3J5LkJhc2VBZGRyZXNzKSArIHVuY29tbWl0dGVkTWVtb3J5LlJlZ2lvblNpemUs
ICZndWFyZFBhZ2UsIHNpemVvZihndWFyZFBhZ2UpKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRQ
YWdlU2l6ZTsKKworICAgIEFTU0VSVChndWFyZFBhZ2UuUHJvdGVjdCAmIFBBR0VfR1VBUkQpOwor
CisgICAgcmV0dXJuIGd1YXJkUGFnZS5SZWdpb25TaXplOworfQorCit2b2lkIEFzc2VtYmx5SGVs
cGVyczo6bW92ZVN0YWNrUG9pbnRlckFuZEd1YXJkUGFnZShpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3sKKyAgICBzdGF0aWMgaW50IGd1YXJkUGFnZVNp
emUgPSBnZXRHdWFyZFBhZ2VTaXplKCk7CisgICAgY29uc3QgVHJ1c3RlZEltbTMyIHBhZ2VTaXpl
KGd1YXJkUGFnZVNpemUpOworCisgICAgLy8gQWxpZ24gc3RhY2twb2ludGVyIHRvIHBhZ2UgYm91
bmRhcnkuCisgICAgYW5kUHRyKFRydXN0ZWRJbW0zMih+KHBhZ2VTaXplLm1fdmFsdWUgLSAxKSks
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKworICAgIG1vdmUoVHJ1c3RlZEltbTMyKC1vZmZzZXQp
LCBzY3JhdGNoKTsKKworICAgIC8vIHNjcmF0Y2ggbm93IGNvbnRhaW5zIHRoZSBvZmZzZXQgZnJv
bSBiYXNlIHJlZworCisgICAgc3ViUHRyKGJhc2UsIHNjcmF0Y2gpOworICAgIGFkZFB0cihzdGFj
a1BvaW50ZXJSZWdpc3Rlciwgc2NyYXRjaCk7CisKKyAgICAvLyBOb3csIHNjcmF0Y2ggY29udGFp
bnMgdGhlIGFsbG9jYXRpb24gb2Zmc2V0IGZyb20gdGhlIGN1cnJlbnQgc3RhY2twb2ludGVyLgor
CisgICAgTGFiZWwgdXBkYXRlU3BMb29wKHRoaXMpOworICAgIEp1bXAgYWxtb3N0RG9uZVVwZGF0
ZVNwID0gYnJhbmNoMzIoTGVzc1RoYW4sIHNjcmF0Y2gsIHBhZ2VTaXplKTsKKyAgICBzdWJQdHIo
cGFnZVNpemUsIHNjcmF0Y2gpOworICAgIHN1YlB0cihwYWdlU2l6ZSwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgIC8vIER1bW15IG9wZXJhdGlvbiB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSBj
b21taXRzIG1lbW9yeSwgYW5kIG1vdmVzIHRoZSBndWFyZCBwYWdlLgorICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoMCksIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIpKTsKKyAgICBqdW1wKHVw
ZGF0ZVNwTG9vcCk7CisgICAgYWxtb3N0RG9uZVVwZGF0ZVNwLmxpbmsodGhpcyk7CisgICAgc3Vi
UHRyKHNjcmF0Y2gsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKK30KKyNlbmRpZgorCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogI2lmIFVTRShKU1ZBTFVFNjQpCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6
aml0QXNzZXJ0SXNJbnQzMihHUFJSZWcgZ3ByKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2
ICs2NywyMCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyNpZiBQTEFURk9STShXSU4pCisg
ICAgdm9pZCBtb3ZlU3RhY2tQb2ludGVyQW5kR3VhcmRQYWdlKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKyNlbmRpZgorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIG1vdmVTdGFja1BvaW50ZXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIHNjcmF0Y2gpCisgICAgeworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgbW92ZVN0
YWNrUG9pbnRlckFuZEd1YXJkUGFnZShvZmZzZXQsIGJhc2UsIHNjcmF0Y2gpOworI2Vsc2UKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMy
KG9mZnNldCksIGJhc2UsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyNlbmRpZgorICAgIH0KKwog
I2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgc2l6ZV90IHByb2xvZ3VlU3RhY2tQb2lu
dGVyRGVsdGEoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlz
aW9uIDE2NDk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIyLDcgKzUyMiw3IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0
ZUNvbXBpbGUoSkkKICAgICAgICAgc3RhY2tPdmVyZmxvdyA9IGJyYW5jaFB0cihBYm92ZSwgQWJz
b2x1dGVBZGRyZXNzKG1fdm0tPmFkZHJlc3NPZlN0YWNrTGltaXQoKSksIHJlZ1QxKTsKICAgICB9
CiAKLSAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVC
bG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICBtb3ZlU3RhY2tQb2ludGVyKHN0YWNrUG9pbnRlck9mZnNldEZvciht
X2NvZGVCbG9jaykgKiBzaXplb2YoUmVnaXN0ZXIpLCBjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIp
OwogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAKICAgICBwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwCShyZXZpc2lvbiAxNjQ5NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIEpJ
VDo6Y29tcGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uCiAKICAgICBlbWl0TG9hZChhcmd1bWVu
dHMsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVG
b3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIGZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09m
ZnNldCk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMp
KSwgcmV0dXJuVmFsdWVHUFIsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBtb3ZlU3RhY2tQ
b2ludGVyKC1zaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHJldHVyblZhbHVlR1BSLCByZWdUNCk7
CiAgICAgZW1pdExvYWQodGhpc1ZhbHVlLCByZWdUMSwgcmVnVDQpOwogICAgIGVtaXRMb2FkKGFy
Z3VtZW50cywgcmVnVDMsIHJlZ1QyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxvYWRW
YXJhcmdzLCByZXR1cm5WYWx1ZUdQUiwgcmVnVDEsIHJlZ1Q0LCByZWdUMywgcmVnVDIsIGZpcnN0
VmFyQXJnT2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAko
cmV2aXNpb24gMTY0OTc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODI0LDkgKzgyNCwxMyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgd3JpdGVCYXJyaWVyCiAgICAgQVNTRVJUKG93bmVyICE9IHNjcmF0Y2gxKTsKICAg
ICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDIpOwogCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IERGRzo6U3BlY3VsYXRp
dmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIoaml0LCBvd25lcik7CisjZW5kaWYKICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihqaXQsIG93
bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGFsbG9jYXRvcik7CisjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZqaXQpOworI2VuZGlmCiAgICAgcmV0dXJu
IGNhbGw7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE2
NDk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4MywzNiBAQCBtYWNybyBjYWxsVG9KYXZh
U2NyaXB0RXBpbG9ndWUoKQogICAgIGVuZAogZW5kCiAKKyMgT24gV2luZG93cyB3ZSBuZWVkIHRv
IGNoZWNrIGlmIHRoZSBzdGFjayBwb2ludGVyIG1vdmVzIG92ZXIgdGhlIHN0YWNrIGd1YXJkIHBh
Z2Ugb2Ygc2l6ZSA0Sy4KKyMgSWYgc28sIHdlIG5lZWQgdG8gcmVhZCBvciB3cml0ZSBzb21lIGRh
dGEgb24gZXZlcnkgZm9sbG93aW5nIGd1YXJkIHBhZ2UKKyMgdG8gbWFrZSBzdXJlIHRoZSBzeXN0
ZW0gY29tbWl0cyB0aGUgcHJldmlvdXNseSB1bmNvbW1pdHRlZCBzdGFjayBtZW1vcnkuCisjIE90
aGVyd2lzZSB3ZSBtaWdodCBjcmFzaCBsYXRlciBpZiB3ZSBhY2Nlc3MgdW5jb21taXR0ZWQgc3Rh
Y2sgbWVtb3J5LgorIyBTZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA3NzUK
KworbWFjcm8gbW92ZVN0YWNrUG9pbnRlckFuZEd1YXJkUGFnZShiYXNlLCBzY3JhdGNoKQorICAg
IGNvbnN0IHBhZ2VTaXplID0gNDA5NgorCisgICAgIyBBbGlnbiBzdGFja3BvaW50ZXIgdG8gcGFn
ZSBib3VuZGFyeS4KKyAgICBhbmRwIH4ocGFnZVNpemUgLSAxKSwgc3AKKworICAgICMgT24gZW50
cnksIHNjcmF0Y2ggY29udGFpbnMgdGhlIG9mZnNldCBmcm9tIGJhc2UgcmVnCisKKyAgICBzdWJw
IGJhc2UsIHNjcmF0Y2gKKyAgICBhZGRwIHNwLCBzY3JhdGNoCisKKyAgICAjIE5vdywgc2NyYXRj
aCBjb250YWlucyB0aGUgYWxsb2NhdGlvbiBvZmZzZXQgZnJvbSB0aGUgY3VycmVudCBzdGFja3Bv
aW50ZXIuCisKKy51cGRhdGVTcExvb3A6CisgICAgYmlsdCBzY3JhdGNoLCBwYWdlU2l6ZSwgLmFs
bW9zdERvbmVVcGRhdGVTcAorICAgIHN1YnAgcGFnZVNpemUsIHNjcmF0Y2gKKyAgICBzdWJwIHBh
Z2VTaXplLCBzcAorICAgICMgRHVtbXkgb3BlcmF0aW9uIHRvIG1ha2Ugc3VyZSB0aGUgc3lzdGVt
IGNvbW1pdHMgbWVtb3J5LCBhbmQgbW92ZXMgdGhlIGd1YXJkIHBhZ2UuCisgICAgc3VicCAwLCBb
c3BdCisgICAgam1wIC51cGRhdGVTcExvb3AKKy5hbG1vc3REb25lVXBkYXRlU3A6CisgICAgc3Vi
cCBzY3JhdGNoLCBzcAorZW5kCisKIG1hY3JvIG1vdmVTdGFja1BvaW50ZXJGb3JDb2RlQmxvY2so
Y29kZUJsb2NrLCBzY3JhdGNoKQogICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdp
c3RlcnNbY29kZUJsb2NrXSwgc2NyYXRjaAogICAgIGxzaGlmdHAgMywgc2NyYXRjaApAQCAtMzkw
LDYgKzQyMCw4IEBAIG1hY3JvIG1vdmVTdGFja1BvaW50ZXJGb3JDb2RlQmxvY2soY29kZUIKICAg
ICBpZiBBUk12NwogICAgICAgICBzdWJwIGNmciwgc2NyYXRjaCwgc2NyYXRjaAogICAgICAgICBt
b3ZlIHNjcmF0Y2gsIHNwCisgICAgZWxzaWYgWDg2X1dJTgorICAgICAgICBtb3ZlU3RhY2tQb2lu
dGVyQW5kR3VhcmRQYWdlKGNmciwgc2NyYXRjaCkKICAgICBlbHNlCiAgICAgICAgIHN1YnAgY2Zy
LCBzY3JhdGNoLCBzcAogICAgIGVuZApAQCAtOTkyLDYgKzEwMjQsOSBAQCBfbGxpbnRfb3BfY2Fs
bF92YXJhcmdzOgogICAgICAgICBpZiBBUk12NwogICAgICAgICAgICAgc3VicCB0MSwgQ2FsbGVy
RnJhbWVBbmRQQ1NpemUsIHQyCiAgICAgICAgICAgICBtb3ZlIHQyLCBzcAorICAgICAgICBlbHNp
ZiBYODZfV0lOCisgICAgICAgICAgICBtb3ZlIENhbGxlckZyYW1lQW5kUENTaXplLCB0MgorICAg
ICAgICAgICAgbW92ZVN0YWNrUG9pbnRlckFuZEd1YXJkUGFnZSh0MSwgdDIpCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHN1YnAgdDEsIENhbGxlckZyYW1lQW5kUENTaXplLCBzcAogICAgICAg
ICBlbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDE2NDk3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgko
d29ya2luZyBjb3B5KQpAQCAtNDE0LDcgKzQxNCw3IEBAIGNsYXNzIEJhc2VJbmRleAogICAgIGVu
ZAogICAgIAogICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCi0gICAgICAgIGlmICFpc0ludGVsU3lu
dGF4IHx8IGtpbmQgIT0gOmRvdWJsZQorICAgICAgICBpZiAhaXNJbnRlbFN5bnRheAogICAgICAg
ICAgICAgeDg2QWRkcmVzc09wZXJhbmQoOnB0cikKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
IiN7Z2V0U2l6ZVN0cmluZyhraW5kKX1bI3tvZmZzZXQudmFsdWV9ICsgI3tiYXNlLng4Nk9wZXJh
bmQoOnB0cil9ICsgI3tpbmRleC54ODZPcGVyYW5kKDpwdHIpfSAqICN7c2NhbGV9XSIKQEAgLTEz
MjYsNyArMTMyNiw3IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZW5kCiAgICAgICAgICAgICBvcCA9IG9wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5k
KDpwdHIpCi0gICAgICAgICAgICBpZiBpc01TVkMgJiYgKC9cQWxsaW50Xy8ubWF0Y2gob3ApIHx8
IC9cQXNsb3dfcGF0aC8ubWF0Y2gob3ApKQorICAgICAgICAgICAgaWYgaXNNU1ZDICYmIChvcGVy
YW5kc1swXS5pc19hPyBMYWJlbFJlZmVyZW5jZSkKICAgICAgICAgICAgICAgICB3cml0ZVN5bWJv
bFRvRmlsZShvcCkKICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgJGFzbS5wdXRzICJjYWxs
ICN7b3B9IgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDk3OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDMtMDMgIHBlYXZvQG91dGxv
b2suY29tICA8cGVhdm9Ab3V0bG9vay5jb20+CisKKyAgICAgICAgW1dpbjMyXVtMTElOVF0gQ3Jh
c2ggd2hlbiBydW5uaW5nIEpTQyBzdHJlc3MgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBFbmFibGUgTExJTlQg
b24gV2luMzIuCisKIDIwMTQtMDMtMDIgIEphZWh1biBMaW0gIDxsamFlaHVuLmxpbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXSBSZW1vdmUgbV9pbml0RWZsIGZyb20gUnVuTG9vcC4KSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTY0OTc4KQorKysgU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQwLDcgKzY0MCw3IEBACiAjaWYgIWRlZmluZWQoRU5B
QkxFX0pJVCkgXAogICAgICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8
fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkgXAogICAgICYmICFPUyhXSU5DRSkgXAotICAgICYm
ICFPUyhXSU5ET1dTKQorICAgICYmICEoT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkpCiAjZGVm
aW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKQEAgLTY5Myw4ICs2OTMsOCBAQAogICAgbG93LWxl
dmVsIGludGVycHJldGVyLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgXAogICAgICYm
IEVOQUJMRShKSVQpIFwKLSAgICAmJiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJF
RUJTRCkpIFwKLSAgICAmJiAoKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVGTCkpIHx8IFBMQVRG
T1JNKEdUSykpIFwKKyAgICAmJiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJFRUJT
RCkgfHwgT1MoV0lORE9XUykpIFwKKyAgICAmJiAoKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVG
TCkpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkgXAogICAgICYmIChDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05B
TCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNINCkpCiAjZGVmaW5lIEVOQUJM
RV9MTElOVCAxCiAjZW5kaWYKQEAgLTc4Myw3ICs3ODMsNyBAQAogI2VuZGlmCiAKIC8qIENvbmZp
Z3VyZSB0aGUgaW50ZXJwcmV0ZXIgKi8KLSNpZiBDT01QSUxFUihHQ0MpCisjaWYgQ09NUElMRVIo
R0NDKSB8fCBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE8gMQogI2Vu
ZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225791</attachid>
            <date>2014-03-04 10:51:05 -0800</date>
            <delta_ts>2014-03-04 12:25:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140304195055.patch</filename>
            <type>text/plain</type>
            <size>9020</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE0LTAzLTA0ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQgc3RhY2sgc3BhY2UgY29uc2lzdHMg
b2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBhbmQgdW5jb21taXR0ZWQgbWVtb3J5
LAorICAgICAgICB3aGVyZSB0aGUgZ3VhcmQgcGFnZSBpcyBhIGJhcnJpZXIgYmV0d2VlbiBjb21t
aXR0ZWQgYW5kIHVuY29tbWl0dGVkIG1lbW9yeS4KKyAgICAgICAgV2hlbiBkYXRhIGZyb20gdGhl
IGd1YXJkIHBhZ2UgaXMgcmVhZCBvciB3cml0dGVuLCB0aGUgZ3VhcmQgcGFnZSBpcyBtb3ZlZCwg
YW5kIG1lbW9yeSBpcyBjb21taXR0ZWQuCisgICAgICAgIFRoaXMgaXMgaG93IHRoZSBzeXN0ZW0g
Z3Jvd3MgdGhlIHN0YWNrLgorICAgICAgICBXaGVuIHVzaW5nIHRoZSBDIHN0YWNrIG9uIFdpbmRv
d3Mgd2UgbmVlZCB0byBwcmVjb21taXQgdGhlIG5lZWRlZCBzdGFjayBzcGFjZS4KKyAgICAgICAg
T3RoZXJ3aXNlIHdlIG1pZ2h0IGNyYXNoIGxhdGVyIGlmIHdlIGFjY2VzcyB1bmNvbW1pdHRlZCBz
dGFjayBtZW1vcnkuCisgICAgICAgIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFj
ayBzcGFjZSBsYXJnZXIgdGhhbiB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisgICAgICAgIFRo
ZSBzeXN0ZW0gZG9lcyBub3QgZ2V0IHRoZSBjaGFuY2UgdG8gbW92ZSB0aGUgZ3VhcmQgcGFnZSwg
YW5kIGNvbW1pdCBtb3JlIG1lbW9yeSwKKyAgICAgICAgYW5kIHdlIGNyYXNoIGlmIHVuY29tbWl0
dGVkIG1lbW9yeSBpcyBhY2Nlc3NlZC4KKyAgICAgICAgVGhlIE1TVkMgY29tcGlsZXIgZml4ZXMg
dGhpcyBieSBpbnNlcnRpbmcgYSBjYWxsIHRvIHRoZSBfY2hrc3RrKCkgZnVuY3Rpb24sCisgICAg
ICAgIHdoZW4gbmVlZGVkLCBzZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA3
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovTExJbnQvTExJbnRBc3NlbWJseS9idWlsZC1MTEludEFzc2Vt
Ymx5LnNoOiBFbmFibGUgTExJTlQuCisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjp3cml0ZUJhcnJpZXIpOiBDb21waWxlIGZpeCB3aGVuIERGR19KSVQgaXMgbm90IGVu
YWJsZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IENvbXBpbGUgZml4LCBhbmQgc21h
bGwgc2ltcGxpZmljYXRpb24uCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChK
U0M6OnByZUNvbW1pdFN0YWNrTWVtb3J5KTogQWRkZWQgZnVuY3Rpb24gdG8gcHJlY29tbWl0IHN0
YWNrIG1lbW9yeS4KKyAgICAgICAgKEpTQzo6Vk06OnVwZGF0ZVN0YWNrTGltaXQpOiBDYWxsIGZ1
bmN0aW9uIHRvIHByZWNvbW1pdCBzdGFjayBtZW1vcnkgd2hlbiBzdGFjayBsaW1pdCBpcyB1cGRh
dGVkLgorCiAyMDE0LTAzLTA0ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNaWNyby1vcHRpbWl6ZSBTdHJpbmdzIGluIEpTIGJpbmRpbmdzLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovTExJbnQvTExJbnRBc3Nl
bWJseS9idWlsZC1MTEludEFzc2VtYmx5LnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQt
TExJbnRBc3NlbWJseS5zaAkocmV2aXNpb24gMTY1MDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovTExJbnQvTExJbnRBc3NlbWJseS9idWlsZC1MTElu
dEFzc2VtYmx5LnNoCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw0ICsyOSw0IEBAIHByaW50ZiAiRU5E
IiA+IExvd0xldmVsSW50ZXJwcmV0ZXJXaW4uYXMKIAogIyBXaGVuIGVuYWJsaW5nIExMSU5UIGFu
ZCBzd2l0Y2hpbmcgdG8gdGhlIHg4NiBiYWNrZW5kLCB1c2UgIkxvd0xldmVsSW50ZXJwcmV0ZXJX
aW4uYXNtIiBhcyBvdXRwdXQgZmlsZSB3aGVuIHJ1bm5pbmcgYXNtLnJiLgogCi0vdXNyL2Jpbi9l
bnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNtL2FzbS5yYiIgIiR7U1JDUk9PVH0vbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZz
ZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJhY3RvciR7M30uZXhlIiAiTExJbnRBc3NlbWJs
eS5oIiB8fCBleGl0IDEKKy91c3IvYmluL2VudiBydWJ5ICIke1NSQ1JPT1R9L29mZmxpbmVhc20v
YXNtLnJiIiAiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSIgIiR7QlVJ
TFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHNFeHRyYWN0b3IvTExJbnRPZmZzZXRzRXh0cmFj
dG9yJHszfS5leGUiICJMb3dMZXZlbEludGVycHJldGVyV2luLmFzbSIgfHwgZXhpdCAxCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE2NTA0NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyNCw5ICs4MjQsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyOjpDYWxsIHdyaXRlQmFycmll
cgogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoMSk7CiAgICAgQVNTRVJUKG93bmVyICE9IHNj
cmF0Y2gyKTsKIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGRlZmluaXRlbHlOb3RNYXJrZWQgPSBERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmljV3JpdGVC
YXJyaWVyKGppdCwgb3duZXIpOworI2VuZGlmCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bCA9IHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIoaml0LCBvd25lciwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBhbGxvY2F0b3IpOworI2lmIEVOQUJMRShERkdfSklUKQogICAgIGRlZmluaXRlbHlOb3RN
YXJrZWQubGluaygmaml0KTsKKyNlbmRpZgogICAgIHJldHVybiBjYWxsOwogfQogI2VuZGlmIC8v
IEVOQUJMRShHR0MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJi
CShyZXZpc2lvbiAxNjUwNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94
ODYucmIJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBjbGFzcyBCYXNlSW5kZXgK
ICAgICBlbmQKICAgICAKICAgICBkZWYgeDg2T3BlcmFuZChraW5kKQotICAgICAgICBpZiAhaXNJ
bnRlbFN5bnRheCB8fCBraW5kICE9IDpkb3VibGUKKyAgICAgICAgaWYgIWlzSW50ZWxTeW50YXgK
ICAgICAgICAgICAgIHg4NkFkZHJlc3NPcGVyYW5kKDpwdHIpCiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICIje2dldFNpemVTdHJpbmcoa2luZCl9WyN7b2Zmc2V0LnZhbHVlfSArICN7YmFzZS54
ODZPcGVyYW5kKDpwdHIpfSArICN7aW5kZXgueDg2T3BlcmFuZCg6cHRyKX0gKiAje3NjYWxlfV0i
CkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgb3AgPSBvcGVyYW5kc1swXS54ODZDYWxs
T3BlcmFuZCg6cHRyKQotICAgICAgICAgICAgaWYgaXNNU1ZDICYmICgvXEFsbGludF8vLm1hdGNo
KG9wKSB8fCAvXEFzbG93X3BhdGgvLm1hdGNoKG9wKSkKKyAgICAgICAgICAgIGlmIGlzTVNWQyAm
JiAob3BlcmFuZHNbMF0uaXNfYT8gTGFiZWxSZWZlcmVuY2UpCiAgICAgICAgICAgICAgICAgd3Jp
dGVTeW1ib2xUb0ZpbGUob3ApCiAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICRhc20ucHV0
cyAiY2FsbCAje29wfSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJl
dmlzaW9uIDE2NTA0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQ5LDggKzc0OSwzNiBAQCBzaXplX3QgVk06OnVwZGF0ZVJlc2Vy
dmVkWm9uZVNpemUoc2l6ZV90CiAgICAgcmV0dXJuIG9sZFJlc2VydmVkWm9uZVNpemU7CiB9CiAK
KyNpZiBQTEFURk9STShXSU4pICYmIEVOQUJMRShMTElOVCkKKy8vIE9uIFdpbmRvd3MgdGhlIHJl
c2VydmVkIHN0YWNrIHNwYWNlIGNvbnNpc3RzIG9mIGNvbW1pdHRlZCBtZW1vcnksIGEgZ3VhcmQg
cGFnZSwgYW5kIHVuY29tbWl0dGVkIG1lbW9yeSwKKy8vIHdoZXJlIHRoZSBndWFyZCBwYWdlIGlz
IGEgYmFycmllciBiZXR3ZWVuIGNvbW1pdHRlZCBhbmQgdW5jb21taXR0ZWQgbWVtb3J5LgorLy8g
V2hlbiBkYXRhIGZyb20gdGhlIGd1YXJkIHBhZ2UgaXMgcmVhZCBvciB3cml0dGVuLCB0aGUgZ3Vh
cmQgcGFnZSBpcyBtb3ZlZCwgYW5kIG1lbW9yeSBpcyBjb21taXR0ZWQuCisvLyBUaGlzIGlzIGhv
dyB0aGUgc3lzdGVtIGdyb3dzIHRoZSBzdGFjay4KKy8vIFdoZW4gdXNpbmcgdGhlIEMgc3RhY2sg
b24gV2luZG93cyB3ZSBuZWVkIHRvIHByZWNvbW1pdCB0aGUgbmVlZGVkIHN0YWNrIHNwYWNlLgor
Ly8gT3RoZXJ3aXNlIHdlIG1pZ2h0IGNyYXNoIGxhdGVyIGlmIHdlIGFjY2VzcyB1bmNvbW1pdHRl
ZCBzdGFjayBtZW1vcnkuCisvLyBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgYWxsb2NhdGUgc3RhY2sg
c3BhY2UgbGFyZ2VyIHRoYW4gdGhlIHBhZ2UgZ3VhcmQgc2l6ZSAoNEspLgorLy8gVGhlIHN5c3Rl
bSBkb2VzIG5vdCBnZXQgdGhlIGNoYW5jZSB0byBtb3ZlIHRoZSBndWFyZCBwYWdlLCBhbmQgY29t
bWl0IG1vcmUgbWVtb3J5LAorLy8gYW5kIHdlIGNyYXNoIGlmIHVuY29tbWl0dGVkIG1lbW9yeSBp
cyBhY2Nlc3NlZC4KKy8vIFRoZSBNU1ZDIGNvbXBpbGVyIGZpeGVzIHRoaXMgYnkgaW5zZXJ0aW5n
IGEgY2FsbCB0byB0aGUgX2Noa3N0aygpIGZ1bmN0aW9uLAorLy8gd2hlbiBuZWVkZWQsIHNlZSBo
dHRwOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2tiLzEwMDc3NQorCitzdGF0aWMgdm9pZCBwcmVD
b21taXRTdGFja01lbW9yeSh2b2lkKiBzdGFja0xpbWl0KQoreworICAgIE1FTU9SWV9CQVNJQ19J
TkZPUk1BVElPTiB1bmNvbW1pdHRlZE1lbW9yeTsKKyAgICBpZiAoVmlydHVhbFF1ZXJ5KHN0YWNr
TGltaXQsICZ1bmNvbW1pdHRlZE1lbW9yeSwgc2l6ZW9mKHVuY29tbWl0dGVkTWVtb3J5KSkgPiAw
KQorICAgICAgICBpZiAodW5jb21taXR0ZWRNZW1vcnkuU3RhdGUgPT0gTUVNX1JFU0VSVkUpIHsK
KyAgICAgICAgICAgIGludCBzaXplID0gdW5jb21taXR0ZWRNZW1vcnkuUmVnaW9uU2l6ZTsKKyAg
ICAgICAgICAgIE9TQWxsb2NhdG9yOjpjb21taXQoc3RhY2tMaW1pdCwgc2l6ZSwgdHJ1ZSwgZmFs
c2UpOworICAgICAgICB9Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgVk06OnVwZGF0ZVN0YWNr
TGltaXQoKQogeworI2lmIFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKExMSU5UKQorICAgIHZvaWQq
IGxhc3RTdGFja0xpbWl0ID0gbV9zdGFja0xpbWl0OworI2VuZGlmCisKICAgICBpZiAobV9zdGFj
a1BvaW50ZXJBdFZNRW50cnkpIHsKICAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFj
aygpLmlzR3Jvd2luZ0Rvd253YXJkKCkpOwogICAgICAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSk7CkBAIC03Njks
NiArNzk3LDEwIEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0KCkKICNlbmRpZgog
ICAgIH0KIAorI2lmIFBMQVRGT1JNKFdJTikgJiYgRU5BQkxFKExMSU5UKQorICAgIGlmIChsYXN0
U3RhY2tMaW1pdCAhPSBtX3N0YWNrTGltaXQpCisgICAgICAgIHByZUNvbW1pdFN0YWNrTWVtb3J5
KG1fc3RhY2tMaW1pdCk7CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShGVExfSklUKQpJbmRleDog
U291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE2NTA1OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDMtMDQgIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9A
b3V0bG9vay5jb20+CisKKyAgICAgICAgW1dpbjMyXVtMTElOVF0gQ3Jhc2ggd2hlbiBydW5uaW5n
IEpTQyBzdHJlc3MgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjk0MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOiBFbmFibGUgTExJTlQgb24gV2luMzIuCisgICAg
ICAgICogd3RmL1dURlRocmVhZERhdGEuaDoKKyAgICAgICAgKFdURjo6V1RGVGhyZWFkRGF0YTo6
c3RhY2spOiBBdm9pZCBtYW55IGFzc2VydHMgaW4gU3RhY2tCb3VuZHM6OmluaXRpYWxpemUoKSwg
c2luY2Ugc3RhY2sgbWVtb3J5IGlzIHByZWNvbW1pdHRlZC4KKwogMjAxNC0wMy0wMiAgSmFlaHVu
IExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBt
X2luaXRFZmwgZnJvbSBSdW5Mb29wLgpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxNjUwNDYp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsNyAr
NjQwLDcgQEAKICNpZiAhZGVmaW5lZChFTkFCTEVfSklUKSBcCiAgICAgJiYgKENQVShYODYpIHx8
IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSBcCiAg
ICAgJiYgIU9TKFdJTkNFKSBcCi0gICAgJiYgIU9TKFdJTkRPV1MpCisgICAgJiYgIShPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KSkKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIApAQCAt
NjkzLDggKzY5Myw4IEBACiAgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX0xMSU5UKSBcCiAgICAgJiYgRU5BQkxFKEpJVCkgXAotICAgICYmIChPUyhEQVJX
SU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkgXAotICAgICYmICgoT1MoREFSV0lOKSAm
JiAhUExBVEZPUk0oRUZMKSkgfHwgUExBVEZPUk0oR1RLKSkgXAorICAgICYmIChPUyhEQVJXSU4p
IHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSB8fCBPUyhXSU5ET1dTKSkgXAorICAgICYmICgo
T1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZMKSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXSU4pKSBcCiAgICAgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8
fCBDUFUoU0g0KSkKICNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKICNlbmRpZgpAQCAtNzgzLDcgKzc4
Myw3IEBACiAjZW5kaWYKIAogLyogQ29uZmlndXJlIHRoZSBpbnRlcnByZXRlciAqLwotI2lmIENP
TVBJTEVSKEdDQykKKyNpZiBDT01QSUxFUihHQ0MpIHx8IENPTVBJTEVSKE1TVkMpCiAjZGVmaW5l
IEhBVkVfQ09NUFVURURfR09UTyAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dURi93dGYvV1RG
VGhyZWFkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURlRocmVhZERhdGEu
aAkocmV2aXNpb24gMTY1MDQ2KQorKysgU291cmNlL1dURi93dGYvV1RGVGhyZWFkRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8v
IFdlIG5lZWQgdG8gYWx3YXlzIGdldCBhIGZyZXNoIFN0YWNrQm91bmRzIGZyb20gdGhlIE9TIGR1
ZSB0byBob3cgZmliZXJzIHdvcmsuCiAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDExCi0jaWYgT1MoV0lORE9XUykKKyNpZiBPUyhXSU5E
T1dTKSAmJiAhRU5BQkxFKExMSU5UKQogICAgICAgICBtX3N0YWNrQm91bmRzID0gU3RhY2tCb3Vu
ZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBt
X3N0YWNrQm91bmRzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225804</attachid>
            <date>2014-03-04 12:25:49 -0800</date>
            <delta_ts>2014-03-04 14:55:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140304212536.patch</filename>
            <type>text/plain</type>
            <size>9014</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE0LTAzLTA0ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQgc3RhY2sgc3BhY2UgY29uc2lzdHMg
b2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBhbmQgdW5jb21taXR0ZWQgbWVtb3J5
LAorICAgICAgICB3aGVyZSB0aGUgZ3VhcmQgcGFnZSBpcyBhIGJhcnJpZXIgYmV0d2VlbiBjb21t
aXR0ZWQgYW5kIHVuY29tbWl0dGVkIG1lbW9yeS4KKyAgICAgICAgV2hlbiBkYXRhIGZyb20gdGhl
IGd1YXJkIHBhZ2UgaXMgcmVhZCBvciB3cml0dGVuLCB0aGUgZ3VhcmQgcGFnZSBpcyBtb3ZlZCwg
YW5kIG1lbW9yeSBpcyBjb21taXR0ZWQuCisgICAgICAgIFRoaXMgaXMgaG93IHRoZSBzeXN0ZW0g
Z3Jvd3MgdGhlIHN0YWNrLgorICAgICAgICBXaGVuIHVzaW5nIHRoZSBDIHN0YWNrIG9uIFdpbmRv
d3Mgd2UgbmVlZCB0byBwcmVjb21taXQgdGhlIG5lZWRlZCBzdGFjayBzcGFjZS4KKyAgICAgICAg
T3RoZXJ3aXNlIHdlIG1pZ2h0IGNyYXNoIGxhdGVyIGlmIHdlIGFjY2VzcyB1bmNvbW1pdHRlZCBz
dGFjayBtZW1vcnkuCisgICAgICAgIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFj
ayBzcGFjZSBsYXJnZXIgdGhhbiB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisgICAgICAgIFRo
ZSBzeXN0ZW0gZG9lcyBub3QgZ2V0IHRoZSBjaGFuY2UgdG8gbW92ZSB0aGUgZ3VhcmQgcGFnZSwg
YW5kIGNvbW1pdCBtb3JlIG1lbW9yeSwKKyAgICAgICAgYW5kIHdlIGNyYXNoIGlmIHVuY29tbWl0
dGVkIG1lbW9yeSBpcyBhY2Nlc3NlZC4KKyAgICAgICAgVGhlIE1TVkMgY29tcGlsZXIgZml4ZXMg
dGhpcyBieSBpbnNlcnRpbmcgYSBjYWxsIHRvIHRoZSBfY2hrc3RrKCkgZnVuY3Rpb24sCisgICAg
ICAgIHdoZW4gbmVlZGVkLCBzZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA3
NzUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJbnRBc3Nl
bWJseS5zaDogRW5hYmxlIExMSU5ULgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6d3JpdGVCYXJyaWVyKTogQ29tcGlsZSBmaXggd2hlbiBERkdfSklUIGlzIG5vdCBl
bmFibGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBDb21waWxlIGZpeCwgYW5kIHNt
YWxsIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpwcmVDb21taXRTdGFja01lbW9yeSk6IEFkZGVkIGZ1bmN0aW9uIHRvIHByZWNvbW1pdCBz
dGFjayBtZW1vcnkuCisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVTdGFja0xpbWl0KTogQ2FsbCBm
dW5jdGlvbiB0byBwcmVjb21taXQgc3RhY2sgbWVtb3J5IHdoZW4gc3RhY2sgbGltaXQgaXMgdXBk
YXRlZC4KKwogMjAxNC0wMy0wNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgTWljcm8tb3B0aW1pemUgU3RyaW5ncyBpbiBKUyBiaW5kaW5ncy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNz
ZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2VtYmx5L2J1aWxk
LUxMSW50QXNzZW1ibHkuc2gJKHJldmlzaW9uIDE2NTA0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJ
bnRBc3NlbWJseS5zaAkod29ya2luZyBjb3B5KQpAQCAtMjksNCArMjksNCBAQCBwcmludGYgIkVO
RCIgPiBMb3dMZXZlbEludGVycHJldGVyV2luLmFzCiAKICMgV2hlbiBlbmFibGluZyBMTElOVCBh
bmQgc3dpdGNoaW5nIHRvIHRoZSB4ODYgYmFja2VuZCwgdXNlICJMb3dMZXZlbEludGVycHJldGVy
V2luLmFzbSIgYXMgb3V0cHV0IGZpbGUgd2hlbiBydW5uaW5nIGFzbS5yYi4KIAotL3Vzci9iaW4v
ZW52IHJ1YnkgIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9hc20ucmIiICIke1NSQ1JPT1R9L2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci9MTEludE9mZnNldHNFeHRyYWN0b3IkezN9LmV4ZSIgIkxMSW50QXNzZW1i
bHkuaCIgfHwgZXhpdCAxCisvdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNt
L2FzbS5yYiIgIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciR7M30uZXhlIiAiTG93TGV2ZWxJbnRlcnByZXRlcldpbi5hc20iIHx8IGV4aXQgMQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjUwNDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MjQsOSArODI0LDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCB3cml0ZUJhcnJp
ZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDEpOwogICAgIEFTU0VSVChvd25lciAhPSBz
Y3JhdGNoMik7CiAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkZWZpbml0ZWx5Tm90TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRl
QmFycmllcihqaXQsIG93bmVyKTsKKyNlbmRpZgogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwgPSBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKGppdCwgb3duZXIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMiwgYWxsb2NhdG9yKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBkZWZpbml0ZWx5Tm90
TWFya2VkLmxpbmsoJmppdCk7CisjZW5kaWYKICAgICByZXR1cm4gY2FsbDsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoR0dDKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgkocmV2aXNpb24gMTY1MDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgY2xhc3MgQmFzZUluZGV4
CiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKLSAgICAgICAgaWYgIWlz
SW50ZWxTeW50YXggfHwga2luZCAhPSA6ZG91YmxlCisgICAgICAgIGlmICFpc0ludGVsU3ludGF4
CiAgICAgICAgICAgICB4ODZBZGRyZXNzT3BlcmFuZCg6cHRyKQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAiI3tnZXRTaXplU3RyaW5nKGtpbmQpfVsje29mZnNldC52YWx1ZX0gKyAje2Jhc2Uu
eDg2T3BlcmFuZCg6cHRyKX0gKyAje2luZGV4Lng4Nk9wZXJhbmQoOnB0cil9ICogI3tzY2FsZX1d
IgpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIG9wID0gb3BlcmFuZHNbMF0ueDg2Q2Fs
bE9wZXJhbmQoOnB0cikKLSAgICAgICAgICAgIGlmIGlzTVNWQyAmJiAoL1xBbGxpbnRfLy5tYXRj
aChvcCkgfHwgL1xBc2xvd19wYXRoLy5tYXRjaChvcCkpCisgICAgICAgICAgICBpZiBpc01TVkMg
JiYgKG9wZXJhbmRzWzBdLmlzX2E/IExhYmVsUmVmZXJlbmNlKQogICAgICAgICAgICAgICAgIHdy
aXRlU3ltYm9sVG9GaWxlKG9wKQogICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAkYXNtLnB1
dHMgImNhbGwgI3tvcH0iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShy
ZXZpc2lvbiAxNjUwNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0OSw4ICs3NDksMzYgQEAgc2l6ZV90IFZNOjp1cGRhdGVSZXNl
cnZlZFpvbmVTaXplKHNpemVfdAogICAgIHJldHVybiBvbGRSZXNlcnZlZFpvbmVTaXplOwogfQog
CisjaWYgUExBVEZPUk0oV0lOKQorLy8gT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQgc3RhY2sgc3Bh
Y2UgY29uc2lzdHMgb2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBhbmQgdW5jb21t
aXR0ZWQgbWVtb3J5LAorLy8gd2hlcmUgdGhlIGd1YXJkIHBhZ2UgaXMgYSBiYXJyaWVyIGJldHdl
ZW4gY29tbWl0dGVkIGFuZCB1bmNvbW1pdHRlZCBtZW1vcnkuCisvLyBXaGVuIGRhdGEgZnJvbSB0
aGUgZ3VhcmQgcGFnZSBpcyByZWFkIG9yIHdyaXR0ZW4sIHRoZSBndWFyZCBwYWdlIGlzIG1vdmVk
LCBhbmQgbWVtb3J5IGlzIGNvbW1pdHRlZC4KKy8vIFRoaXMgaXMgaG93IHRoZSBzeXN0ZW0gZ3Jv
d3MgdGhlIHN0YWNrLgorLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjayBvbiBXaW5kb3dzIHdlIG5l
ZWQgdG8gcHJlY29tbWl0IHRoZSBuZWVkZWQgc3RhY2sgc3BhY2UuCisvLyBPdGhlcndpc2Ugd2Ug
bWlnaHQgY3Jhc2ggbGF0ZXIgaWYgd2UgYWNjZXNzIHVuY29tbWl0dGVkIHN0YWNrIG1lbW9yeS4K
Ky8vIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBsYXJnZXIgdGhh
biB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisvLyBUaGUgc3lzdGVtIGRvZXMgbm90IGdldCB0
aGUgY2hhbmNlIHRvIG1vdmUgdGhlIGd1YXJkIHBhZ2UsIGFuZCBjb21taXQgbW9yZSBtZW1vcnks
CisvLyBhbmQgd2UgY3Jhc2ggaWYgdW5jb21taXR0ZWQgbWVtb3J5IGlzIGFjY2Vzc2VkLgorLy8g
VGhlIE1TVkMgY29tcGlsZXIgZml4ZXMgdGhpcyBieSBpbnNlcnRpbmcgYSBjYWxsIHRvIHRoZSBf
Y2hrc3RrKCkgZnVuY3Rpb24sCisvLyB3aGVuIG5lZWRlZCwgc2VlIGh0dHA6Ly9zdXBwb3J0Lm1p
Y3Jvc29mdC5jb20va2IvMTAwNzc1LgorCitzdGF0aWMgdm9pZCBwcmVDb21taXRTdGFja01lbW9y
eSh2b2lkKiBzdGFja0xpbWl0KQoreworICAgIE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiB1bmNv
bW1pdHRlZE1lbW9yeTsKKyAgICBpZiAoVmlydHVhbFF1ZXJ5KHN0YWNrTGltaXQsICZ1bmNvbW1p
dHRlZE1lbW9yeSwgc2l6ZW9mKHVuY29tbWl0dGVkTWVtb3J5KSkgPiAwKQorICAgICAgICBpZiAo
dW5jb21taXR0ZWRNZW1vcnkuU3RhdGUgPT0gTUVNX1JFU0VSVkUpIHsKKyAgICAgICAgICAgIGlu
dCBzaXplID0gdW5jb21taXR0ZWRNZW1vcnkuUmVnaW9uU2l6ZTsKKyAgICAgICAgICAgIE9TQWxs
b2NhdG9yOjpjb21taXQoc3RhY2tMaW1pdCwgc2l6ZSwgdHJ1ZSwgZmFsc2UpOworICAgICAgICB9
Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgVk06OnVwZGF0ZVN0YWNrTGltaXQoKQogeworI2lm
IFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBsYXN0U3RhY2tMaW1pdCA9IG1fc3RhY2tMaW1pdDsK
KyNlbmRpZgorCiAgICAgaWYgKG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KSB7CiAgICAgICAgIEFT
U0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgpKTsKICAgICAg
ICAgY2hhciogc3RhcnRPZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9zdGFja1Bv
aW50ZXJBdFZNRW50cnkpOwpAQCAtNzY5LDYgKzc5NywxMCBAQCBpbmxpbmUgdm9pZCBWTTo6dXBk
YXRlU3RhY2tMaW1pdCgpCiAjZW5kaWYKICAgICB9CiAKKyNpZiBQTEFURk9STShXSU4pCisgICAg
aWYgKGxhc3RTdGFja0xpbWl0ICE9IG1fc3RhY2tMaW1pdCkKKyAgICAgICAgcHJlQ29tbWl0U3Rh
Y2tNZW1vcnkobV9zdGFja0xpbWl0KTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKEZUTF9KSVQp
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMTY1MDU4KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wMy0wNCAgcGVhdm9Ab3V0bG9vay5jb20g
IDxwZWF2b0BvdXRsb29rLmNvbT4KKworICAgICAgICBbV2luMzJdW0xMSU5UXSBDcmFzaCB3aGVu
IHJ1bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyOTQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBMTElOVCBvbiBXaW4z
Mi4KKyAgICAgICAgKiB3dGYvU3RhY2tCb3VuZHMuY3BwOiBBdm9pZCBtYW55IGFzc2VydHMgaW4g
U3RhY2tCb3VuZHM6OmluaXRpYWxpemUoKSwgc2luY2Ugc3RhY2sgbWVtb3J5IGlzIHByZWNvbW1p
dHRlZC4KKwogMjAxNC0wMy0wMiAgSmFlaHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtFRkxdIFJlbW92ZSBtX2luaXRFZmwgZnJvbSBSdW5Mb29wLgpJbmRleDog
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCShyZXZpc2lvbiAxNjUwNDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NDAsNyArNjQwLDcgQEAKICNpZiAhZGVmaW5lZChFTkFCTEVf
SklUKSBcCiAgICAgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQ
VShBUk02NCkgfHwgQ1BVKE1JUFMpKSBcCiAgICAgJiYgIU9TKFdJTkNFKSBcCi0gICAgJiYgIU9T
KFdJTkRPV1MpCisgICAgJiYgIShPUyhXSU5ET1dTKSAmJiBDUFUoWDg2XzY0KSkKICNkZWZpbmUg
RU5BQkxFX0pJVCAxCiAjZW5kaWYKIApAQCAtNjkzLDggKzY5Myw4IEBACiAgICBsb3ctbGV2ZWwg
aW50ZXJwcmV0ZXIuICovCiAjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSBcCiAgICAgJiYgRU5B
QkxFKEpJVCkgXAotICAgICYmIChPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNE
KSkgXAotICAgICYmICgoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZMKSkgfHwgUExBVEZPUk0o
R1RLKSkgXAorICAgICYmIChPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSB8
fCBPUyhXSU5ET1dTKSkgXAorICAgICYmICgoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oRUZMKSkg
fHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKSBcCiAgICAgJiYgKENQVShYODYpIHx8
IENQVShYODZfNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNX1RSQURJVElPTkFMKSB8
fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSB8fCBDUFUoU0g0KSkKICNkZWZpbmUgRU5BQkxFX0xM
SU5UIDEKICNlbmRpZgpAQCAtNzgzLDcgKzc4Myw3IEBACiAjZW5kaWYKIAogLyogQ29uZmlndXJl
IHRoZSBpbnRlcnByZXRlciAqLwotI2lmIENPTVBJTEVSKEdDQykKKyNpZiBDT01QSUxFUihHQ0Mp
IHx8IENPTVBJTEVSKE1TVkMpCiAjZGVmaW5lIEhBVkVfQ09NUFVURURfR09UTyAxCiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmNwcAkocmV2aXNpb24gMTY1MDQ2KQorKysgU291cmNl
L1dURi93dGYvU3RhY2tCb3VuZHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDYg
QEAgdm9pZCBTdGFja0JvdW5kczo6aW5pdGlhbGl6ZSgpCiAKICAgICBNRU1PUllfQkFTSUNfSU5G
T1JNQVRJT04gdW5jb21taXR0ZWRNZW1vcnk7CiAgICAgVmlydHVhbFF1ZXJ5KHN0YWNrT3JpZ2lu
LkFsbG9jYXRpb25CYXNlLCAmdW5jb21taXR0ZWRNZW1vcnksIHNpemVvZih1bmNvbW1pdHRlZE1l
bW9yeSkpOwotICAgIEFTU0VSVCh1bmNvbW1pdHRlZE1lbW9yeS5TdGF0ZSA9PSBNRU1fUkVTRVJW
RSk7CiAKICAgICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gZ3VhcmRQYWdlOwogICAgIFZpcnR1
YWxRdWVyeShzdGF0aWNfY2FzdDxjaGFyKj4odW5jb21taXR0ZWRNZW1vcnkuQmFzZUFkZHJlc3Mp
ICsgdW5jb21taXR0ZWRNZW1vcnkuUmVnaW9uU2l6ZSwgJmd1YXJkUGFnZSwgc2l6ZW9mKGd1YXJk
UGFnZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225818</attachid>
            <date>2014-03-04 14:55:20 -0800</date>
            <delta_ts>2014-03-05 12:00:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140304235510.patch</filename>
            <type>text/plain</type>
            <size>9313</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MDU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE0LTAzLTA0ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQgc3RhY2sgc3BhY2UgY29uc2lzdHMg
b2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBhbmQgdW5jb21taXR0ZWQgbWVtb3J5
LAorICAgICAgICB3aGVyZSB0aGUgZ3VhcmQgcGFnZSBpcyBhIGJhcnJpZXIgYmV0d2VlbiBjb21t
aXR0ZWQgYW5kIHVuY29tbWl0dGVkIG1lbW9yeS4KKyAgICAgICAgV2hlbiBkYXRhIGZyb20gdGhl
IGd1YXJkIHBhZ2UgaXMgcmVhZCBvciB3cml0dGVuLCB0aGUgZ3VhcmQgcGFnZSBpcyBtb3ZlZCwg
YW5kIG1lbW9yeSBpcyBjb21taXR0ZWQuCisgICAgICAgIFRoaXMgaXMgaG93IHRoZSBzeXN0ZW0g
Z3Jvd3MgdGhlIHN0YWNrLgorICAgICAgICBXaGVuIHVzaW5nIHRoZSBDIHN0YWNrIG9uIFdpbmRv
d3Mgd2UgbmVlZCB0byBwcmVjb21taXQgdGhlIG5lZWRlZCBzdGFjayBzcGFjZS4KKyAgICAgICAg
T3RoZXJ3aXNlIHdlIG1pZ2h0IGNyYXNoIGxhdGVyIGlmIHdlIGFjY2VzcyB1bmNvbW1pdHRlZCBz
dGFjayBtZW1vcnkuCisgICAgICAgIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFj
ayBzcGFjZSBsYXJnZXIgdGhhbiB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisgICAgICAgIFRo
ZSBzeXN0ZW0gZG9lcyBub3QgZ2V0IHRoZSBjaGFuY2UgdG8gbW92ZSB0aGUgZ3VhcmQgcGFnZSwg
YW5kIGNvbW1pdCBtb3JlIG1lbW9yeSwKKyAgICAgICAgYW5kIHdlIGNyYXNoIGlmIHVuY29tbWl0
dGVkIG1lbW9yeSBpcyBhY2Nlc3NlZC4KKyAgICAgICAgVGhlIE1TVkMgY29tcGlsZXIgZml4ZXMg
dGhpcyBieSBpbnNlcnRpbmcgYSBjYWxsIHRvIHRoZSBfY2hrc3RrKCkgZnVuY3Rpb24sCisgICAg
ICAgIHdoZW4gbmVlZGVkLCBzZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA3
NzUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJbnRBc3Nl
bWJseS5zaDogRW5hYmxlIExMSU5ULgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6d3JpdGVCYXJyaWVyKTogQ29tcGlsZSBmaXggd2hlbiBERkdfSklUIGlzIG5vdCBl
bmFibGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBDb21waWxlIGZpeCwgYW5kIHNt
YWxsIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpwcmVDb21taXRTdGFja01lbW9yeSk6IEFkZGVkIGZ1bmN0aW9uIHRvIHByZWNvbW1pdCBz
dGFjayBtZW1vcnkuCisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVTdGFja0xpbWl0KTogQ2FsbCBm
dW5jdGlvbiB0byBwcmVjb21taXQgc3RhY2sgbWVtb3J5IHdoZW4gc3RhY2sgbGltaXQgaXMgdXBk
YXRlZC4KKwogMjAxNC0wMy0wNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgTWljcm8tb3B0aW1pemUgU3RyaW5ncyBpbiBKUyBiaW5kaW5ncy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNz
ZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2VtYmx5L2J1aWxk
LUxMSW50QXNzZW1ibHkuc2gJKHJldmlzaW9uIDE2NTA0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJ
bnRBc3NlbWJseS5zaAkod29ya2luZyBjb3B5KQpAQCAtMjksNCArMjksNCBAQCBwcmludGYgIkVO
RCIgPiBMb3dMZXZlbEludGVycHJldGVyV2luLmFzCiAKICMgV2hlbiBlbmFibGluZyBMTElOVCBh
bmQgc3dpdGNoaW5nIHRvIHRoZSB4ODYgYmFja2VuZCwgdXNlICJMb3dMZXZlbEludGVycHJldGVy
V2luLmFzbSIgYXMgb3V0cHV0IGZpbGUgd2hlbiBydW5uaW5nIGFzbS5yYi4KIAotL3Vzci9iaW4v
ZW52IHJ1YnkgIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9hc20ucmIiICIke1NSQ1JPT1R9L2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci9MTEludE9mZnNldHNFeHRyYWN0b3IkezN9LmV4ZSIgIkxMSW50QXNzZW1i
bHkuaCIgfHwgZXhpdCAxCisvdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9vZmZsaW5lYXNt
L2FzbS5yYiIgIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20iICIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciR7M30uZXhlIiAiTG93TGV2ZWxJbnRlcnByZXRlcldpbi5hc20iIHx8IGV4aXQgMQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNjUwNDYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MjQsOSArODI0LDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCB3cml0ZUJhcnJp
ZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDEpOwogICAgIEFTU0VSVChvd25lciAhPSBz
Y3JhdGNoMik7CiAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkZWZpbml0ZWx5Tm90TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRl
QmFycmllcihqaXQsIG93bmVyKTsKKyNlbmRpZgogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGwgPSBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKGppdCwgb3duZXIsIHNjcmF0Y2gxLCBzY3Jh
dGNoMiwgYWxsb2NhdG9yKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBkZWZpbml0ZWx5Tm90
TWFya2VkLmxpbmsoJmppdCk7CisjZW5kaWYKICAgICByZXR1cm4gY2FsbDsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoR0dDKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgkocmV2aXNpb24gMTY1MDQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgY2xhc3MgQmFzZUluZGV4
CiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKLSAgICAgICAgaWYgIWlz
SW50ZWxTeW50YXggfHwga2luZCAhPSA6ZG91YmxlCisgICAgICAgIGlmICFpc0ludGVsU3ludGF4
CiAgICAgICAgICAgICB4ODZBZGRyZXNzT3BlcmFuZCg6cHRyKQogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAiI3tnZXRTaXplU3RyaW5nKGtpbmQpfVsje29mZnNldC52YWx1ZX0gKyAje2Jhc2Uu
eDg2T3BlcmFuZCg6cHRyKX0gKyAje2luZGV4Lng4Nk9wZXJhbmQoOnB0cil9ICogI3tzY2FsZX1d
IgpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIG9wID0gb3BlcmFuZHNbMF0ueDg2Q2Fs
bE9wZXJhbmQoOnB0cikKLSAgICAgICAgICAgIGlmIGlzTVNWQyAmJiAoL1xBbGxpbnRfLy5tYXRj
aChvcCkgfHwgL1xBc2xvd19wYXRoLy5tYXRjaChvcCkpCisgICAgICAgICAgICBpZiBpc01TVkMg
JiYgKG9wZXJhbmRzWzBdLmlzX2E/IExhYmVsUmVmZXJlbmNlKQogICAgICAgICAgICAgICAgIHdy
aXRlU3ltYm9sVG9GaWxlKG9wKQogICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAkYXNtLnB1
dHMgImNhbGwgI3tvcH0iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShy
ZXZpc2lvbiAxNjUwNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc0OSw4ICs3NDksNTQgQEAgc2l6ZV90IFZNOjp1cGRhdGVSZXNl
cnZlZFpvbmVTaXplKHNpemVfdAogICAgIHJldHVybiBvbGRSZXNlcnZlZFpvbmVTaXplOwogfQog
CisjaWYgUExBVEZPUk0oV0lOKQorLy8gT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQgc3RhY2sgc3Bh
Y2UgY29uc2lzdHMgb2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBhbmQgdW5jb21t
aXR0ZWQgbWVtb3J5LAorLy8gd2hlcmUgdGhlIGd1YXJkIHBhZ2UgaXMgYSBiYXJyaWVyIGJldHdl
ZW4gY29tbWl0dGVkIGFuZCB1bmNvbW1pdHRlZCBtZW1vcnkuCisvLyBXaGVuIGRhdGEgZnJvbSB0
aGUgZ3VhcmQgcGFnZSBpcyByZWFkIG9yIHdyaXR0ZW4sIHRoZSBndWFyZCBwYWdlIGlzIG1vdmVk
LCBhbmQgbWVtb3J5IGlzIGNvbW1pdHRlZC4KKy8vIFRoaXMgaXMgaG93IHRoZSBzeXN0ZW0gZ3Jv
d3MgdGhlIHN0YWNrLgorLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjayBvbiBXaW5kb3dzIHdlIG5l
ZWQgdG8gcHJlY29tbWl0IHRoZSBuZWVkZWQgc3RhY2sgc3BhY2UuCisvLyBPdGhlcndpc2Ugd2Ug
bWlnaHQgY3Jhc2ggbGF0ZXIgaWYgd2UgYWNjZXNzIHVuY29tbWl0dGVkIHN0YWNrIG1lbW9yeS4K
Ky8vIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBsYXJnZXIgdGhh
biB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisvLyBUaGUgc3lzdGVtIGRvZXMgbm90IGdldCB0
aGUgY2hhbmNlIHRvIG1vdmUgdGhlIGd1YXJkIHBhZ2UsIGFuZCBjb21taXQgbW9yZSBtZW1vcnks
CisvLyBhbmQgd2UgY3Jhc2ggaWYgdW5jb21taXR0ZWQgbWVtb3J5IGlzIGFjY2Vzc2VkLgorLy8g
VGhlIE1TVkMgY29tcGlsZXIgZml4ZXMgdGhpcyBieSBpbnNlcnRpbmcgYSBjYWxsIHRvIHRoZSBf
Y2hrc3RrKCkgZnVuY3Rpb24sCisvLyB3aGVuIG5lZWRlZCwgc2VlIGh0dHA6Ly9zdXBwb3J0Lm1p
Y3Jvc29mdC5jb20va2IvMTAwNzc1LgorCitzdGF0aWMgdm9pZCBwcmVDb21taXRTdGFja01lbW9y
eSh2b2lkKiBzdGFja0xpbWl0KQoreworICAgIE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiB1bmNv
bW1pdHRlZE1lbW9yeTsKKyAgICBpZiAoVmlydHVhbFF1ZXJ5KHN0YWNrTGltaXQsICZ1bmNvbW1p
dHRlZE1lbW9yeSwgc2l6ZW9mKHVuY29tbWl0dGVkTWVtb3J5KSkgPiAwKQorICAgICAgICBpZiAo
dW5jb21taXR0ZWRNZW1vcnkuU3RhdGUgPT0gTUVNX1JFU0VSVkUpIHsKKyAgICAgICAgICAgIGlu
dCBzaXplID0gdW5jb21taXR0ZWRNZW1vcnkuUmVnaW9uU2l6ZTsKKyAgICAgICAgICAgIC8vIENv
bW1pdCBtZW1vcnkKKyAgICAgICAgICAgIE9TQWxsb2NhdG9yOjpjb21taXQoc3RhY2tMaW1pdCwg
c2l6ZSwgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgICAgICAvLyBNb3ZlIGd1YXJkIHBhZ2UKKyAg
ICAgICAgICAgIE1FTU9SWV9CQVNJQ19JTkZPUk1BVElPTiBndWFyZFBhZ2U7CisgICAgICAgICAg
ICBjaGFyKiBndWFyZFBhZ2VQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc3RhY2tM
aW1pdCkgKyBzaXplOworICAgICAgICAgICAgaWYgKFZpcnR1YWxRdWVyeShndWFyZFBhZ2VQb2lu
dGVyLCAmZ3VhcmRQYWdlLCBzaXplb2YoZ3VhcmRQYWdlKSkgPiAwKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKGd1YXJkUGFnZS5Qcm90ZWN0ICYgUEFHRV9HVUFSRCk7CisgICAgICAgICAgICAg
ICAgRFdPUkQgb2xkUHJvdGVjdDsKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgZ3VhcmQgZmxh
ZyBmcm9tIG9sZCBndWFyZCBwYWdlCisgICAgICAgICAgICAgICAgQk9PTCByZXR2YWwgPSBWaXJ0
dWFsUHJvdGVjdChndWFyZFBhZ2VQb2ludGVyLCBndWFyZFBhZ2UuUmVnaW9uU2l6ZSwgUEFHRV9S
RUFEV1JJVEUsICZvbGRQcm90ZWN0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmV0dmFsKTsK
KyAgICAgICAgICAgICAgICBjaGFyKiBuZXdHdWFyZFBhZ2VQb2ludGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oc3RhY2tMaW1pdCkgLSBndWFyZFBhZ2UuUmVnaW9uU2l6ZTsKKyAgICAgICAg
ICAgICAgICAvLyBDb21taXQgbmV3IGd1YXJkIHBhZ2UKKyAgICAgICAgICAgICAgICBPU0FsbG9j
YXRvcjo6Y29tbWl0KG5ld0d1YXJkUGFnZVBvaW50ZXIsIGd1YXJkUGFnZS5SZWdpb25TaXplLCB0
cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgLy8gU2V0IGd1YXJkIGZsYWcgb24gbmV3IGd1
YXJkIHBhZ2UKKyAgICAgICAgICAgICAgICByZXR2YWwgPSBWaXJ0dWFsUHJvdGVjdChuZXdHdWFy
ZFBhZ2VQb2ludGVyLCBndWFyZFBhZ2UuUmVnaW9uU2l6ZSwgUEFHRV9SRUFEV1JJVEUgfCBQQUdF
X0dVQVJELCAmb2xkUHJvdGVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJldHZhbCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KK30KKyNlbmRpZgorCiBpbmxpbmUgdm9pZCBWTTo6dXBk
YXRlU3RhY2tMaW1pdCgpCiB7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGxhc3RTdGFj
a0xpbWl0ID0gbV9zdGFja0xpbWl0OworI2VuZGlmCisKICAgICBpZiAobV9zdGFja1BvaW50ZXJB
dFZNRW50cnkpIHsKICAgICAgICAgQVNTRVJUKHd0ZlRocmVhZERhdGEoKS5zdGFjaygpLmlzR3Jv
d2luZ0Rvd253YXJkKCkpOwogICAgICAgICBjaGFyKiBzdGFydE9mU3RhY2sgPSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeSk7CkBAIC03NjksNiArODE1LDEw
IEBAIGlubGluZSB2b2lkIFZNOjp1cGRhdGVTdGFja0xpbWl0KCkKICNlbmRpZgogICAgIH0KIAor
I2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAobGFzdFN0YWNrTGltaXQgIT0gbV9zdGFja0xpbWl0
KQorICAgICAgICBwcmVDb21taXRTdGFja01lbW9yeShtX3N0YWNrTGltaXQpOworI2VuZGlmCiB9
CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjUwNTgpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAz
LTA0ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisgICAgICAgIFtX
aW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3RzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0u
aDogRW5hYmxlIExMSU5UIG9uIFdpbjMyLgorCiAyMDE0LTAzLTAyICBKYWVodW4gTGltICA8bGph
ZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlIG1faW5pdEVmbCBm
cm9tIFJ1bkxvb3AuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE2NTA0NikKKysrIFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0MCw3ICs2NDAsNyBAQAog
I2lmICFkZWZpbmVkKEVOQUJMRV9KSVQpIFwKICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpIFwKICAgICAmJiAhT1Mo
V0lOQ0UpIFwKLSAgICAmJiAhT1MoV0lORE9XUykKKyAgICAmJiAhKE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpKQogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCkBAIC02OTMsOCArNjkz
LDggQEAKICAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KICNpZiAhZGVmaW5lZChFTkFCTEVf
TExJTlQpIFwKICAgICAmJiBFTkFCTEUoSklUKSBcCi0gICAgJiYgKE9TKERBUldJTikgfHwgT1Mo
TElOVVgpIHx8IE9TKEZSRUVCU0QpKSBcCi0gICAgJiYgKChPUyhEQVJXSU4pICYmICFQTEFURk9S
TShFRkwpKSB8fCBQTEFURk9STShHVEspKSBcCisgICAgJiYgKE9TKERBUldJTikgfHwgT1MoTElO
VVgpIHx8IE9TKEZSRUVCU0QpIHx8IE9TKFdJTkRPV1MpKSBcCisgICAgJiYgKChPUyhEQVJXSU4p
ICYmICFQTEFURk9STShFRkwpKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikpIFwK
ICAgICAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQ
VShBUk1fVFJBRElUSU9OQUwpIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpIHx8IENQVShTSDQp
KQogI2RlZmluZSBFTkFCTEVfTExJTlQgMQogI2VuZGlmCkBAIC03ODMsNyArNzgzLDcgQEAKICNl
bmRpZgogCiAvKiBDb25maWd1cmUgdGhlIGludGVycHJldGVyICovCi0jaWYgQ09NUElMRVIoR0ND
KQorI2lmIENPTVBJTEVSKEdDQykgfHwgQ09NUElMRVIoTVNWQykKICNkZWZpbmUgSEFWRV9DT01Q
VVRFRF9HT1RPIDEKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225899</attachid>
            <date>2014-03-05 12:00:46 -0800</date>
            <delta_ts>2014-03-05 13:51:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129429-20140305210034.patch</filename>
            <type>text/plain</type>
            <size>8328</size>
            <attacher>peavo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MTA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE0LTAzLTA0ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgorCisg
ICAgICAgIFtXaW4zMl1bTExJTlRdIENyYXNoIHdoZW4gcnVubmluZyBKU0Mgc3RyZXNzIHRlc3Rz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDI5
CisKKyAgICAgICAgT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQgc3RhY2sgc3BhY2UgY29uc2lzdHMg
b2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBhbmQgdW5jb21taXR0ZWQgbWVtb3J5
LAorICAgICAgICB3aGVyZSB0aGUgZ3VhcmQgcGFnZSBpcyBhIGJhcnJpZXIgYmV0d2VlbiBjb21t
aXR0ZWQgYW5kIHVuY29tbWl0dGVkIG1lbW9yeS4KKyAgICAgICAgV2hlbiBkYXRhIGZyb20gdGhl
IGd1YXJkIHBhZ2UgaXMgcmVhZCBvciB3cml0dGVuLCB0aGUgZ3VhcmQgcGFnZSBpcyBtb3ZlZCwg
YW5kIG1lbW9yeSBpcyBjb21taXR0ZWQuCisgICAgICAgIFRoaXMgaXMgaG93IHRoZSBzeXN0ZW0g
Z3Jvd3MgdGhlIHN0YWNrLgorICAgICAgICBXaGVuIHVzaW5nIHRoZSBDIHN0YWNrIG9uIFdpbmRv
d3Mgd2UgbmVlZCB0byBwcmVjb21taXQgdGhlIG5lZWRlZCBzdGFjayBzcGFjZS4KKyAgICAgICAg
T3RoZXJ3aXNlIHdlIG1pZ2h0IGNyYXNoIGxhdGVyIGlmIHdlIGFjY2VzcyB1bmNvbW1pdHRlZCBz
dGFjayBtZW1vcnkuCisgICAgICAgIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFj
ayBzcGFjZSBsYXJnZXIgdGhhbiB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisgICAgICAgIFRo
ZSBzeXN0ZW0gZG9lcyBub3QgZ2V0IHRoZSBjaGFuY2UgdG8gbW92ZSB0aGUgZ3VhcmQgcGFnZSwg
YW5kIGNvbW1pdCBtb3JlIG1lbW9yeSwKKyAgICAgICAgYW5kIHdlIGNyYXNoIGlmIHVuY29tbWl0
dGVkIG1lbW9yeSBpcyBhY2Nlc3NlZC4KKyAgICAgICAgVGhlIE1TVkMgY29tcGlsZXIgZml4ZXMg
dGhpcyBieSBpbnNlcnRpbmcgYSBjYWxsIHRvIHRoZSBfY2hrc3RrKCkgZnVuY3Rpb24sCisgICAg
ICAgIHdoZW4gbmVlZGVkLCBzZWUgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA3
NzUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJbnRBc3Nl
bWJseS5zaDogRW5hYmxlIExMSU5ULgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKEpTQzo6d3JpdGVCYXJyaWVyKTogQ29tcGlsZSBmaXggd2hlbiBERkdfSklUIGlzIG5vdCBl
bmFibGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBDb21waWxlIGZpeCwgYW5kIHNt
YWxsIHNpbXBsaWZpY2F0aW9uLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpwcmVDb21taXRTdGFja01lbW9yeSk6IEFkZGVkIGZ1bmN0aW9uIHRvIHByZWNvbW1pdCBz
dGFjayBtZW1vcnkuCisgICAgICAgIChKU0M6OlZNOjp1cGRhdGVTdGFja0xpbWl0KTogQ2FsbCBm
dW5jdGlvbiB0byBwcmVjb21taXQgc3RhY2sgbWVtb3J5IHdoZW4gc3RhY2sgbGltaXQgaXMgdXBk
YXRlZC4KKwogMjAxNC0wMy0wNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIERGRyBhbmQgRlRMIHNob3VsZCBzcGVjaWFsaXplIGZvciBhbmQgc3VwcG9ydCBDb21w
YXJlU3RyaWN0RXEgb3ZlciBNaXNjIChpLmUuIGJvb2xlYW4sIHVuZGVmaW5lZCwgb3IgbnVsbCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50
L0xMSW50QXNzZW1ibHkvYnVpbGQtTExJbnRBc3NlbWJseS5zaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9MTEludC9MTEludEFzc2Vt
Ymx5L2J1aWxkLUxMSW50QXNzZW1ibHkuc2gJKHJldmlzaW9uIDE2NTEwNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0xMSW50L0xMSW50QXNzZW1ibHkv
YnVpbGQtTExJbnRBc3NlbWJseS5zaAkod29ya2luZyBjb3B5KQpAQCAtMjksNCArMjksNCBAQCBw
cmludGYgIkVORCIgPiBMb3dMZXZlbEludGVycHJldGVyV2luLmFzCiAKICMgV2hlbiBlbmFibGlu
ZyBMTElOVCBhbmQgc3dpdGNoaW5nIHRvIHRoZSB4ODYgYmFja2VuZCwgdXNlICJMb3dMZXZlbElu
dGVycHJldGVyV2luLmFzbSIgYXMgb3V0cHV0IGZpbGUgd2hlbiBydW5uaW5nIGFzbS5yYi4KIAot
L3Vzci9iaW4vZW52IHJ1YnkgIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9hc20ucmIiICIke1NSQ1JP
T1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIiAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci9MTEludE9mZnNldHNFeHRyYWN0b3IkezN9LmV4ZSIgIkxM
SW50QXNzZW1ibHkuaCIgfHwgZXhpdCAxCisvdXNyL2Jpbi9lbnYgcnVieSAiJHtTUkNST09UfS9v
ZmZsaW5lYXNtL2FzbS5yYiIgIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20iICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzRXh0cmFjdG9yL0xMSW50T2Zm
c2V0c0V4dHJhY3RvciR7M30uZXhlIiAiTG93TGV2ZWxJbnRlcnByZXRlcldpbi5hc20iIHx8IGV4
aXQgMQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAx
NjUxMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MjQsOSArODI0LDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCB3
cml0ZUJhcnJpZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDEpOwogICAgIEFTU0VSVChv
d25lciAhPSBzY3JhdGNoMik7CiAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2Vu
ZXJpY1dyaXRlQmFycmllcihqaXQsIG93bmVyKTsKKyNlbmRpZgogICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGwgPSBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKGppdCwgb3duZXIsIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgYWxsb2NhdG9yKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBkZWZp
bml0ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CisjZW5kaWYKICAgICByZXR1cm4gY2FsbDsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoR0dDKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3g4Ni5yYgkocmV2aXNpb24gMTY1MTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgY2xhc3Mg
QmFzZUluZGV4CiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKLSAgICAg
ICAgaWYgIWlzSW50ZWxTeW50YXggfHwga2luZCAhPSA6ZG91YmxlCisgICAgICAgIGlmICFpc0lu
dGVsU3ludGF4CiAgICAgICAgICAgICB4ODZBZGRyZXNzT3BlcmFuZCg6cHRyKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICAiI3tnZXRTaXplU3RyaW5nKGtpbmQpfVsje29mZnNldC52YWx1ZX0g
KyAje2Jhc2UueDg2T3BlcmFuZCg6cHRyKX0gKyAje2luZGV4Lng4Nk9wZXJhbmQoOnB0cil9ICog
I3tzY2FsZX1dIgpAQCAtMTMyNiw3ICsxMzI2LDcgQEAgY2xhc3MgSW5zdHJ1Y3Rpb24KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgIG9wID0gb3BlcmFuZHNb
MF0ueDg2Q2FsbE9wZXJhbmQoOnB0cikKLSAgICAgICAgICAgIGlmIGlzTVNWQyAmJiAoL1xBbGxp
bnRfLy5tYXRjaChvcCkgfHwgL1xBc2xvd19wYXRoLy5tYXRjaChvcCkpCisgICAgICAgICAgICBp
ZiBpc01TVkMgJiYgKG9wZXJhbmRzWzBdLmlzX2E/IExhYmVsUmVmZXJlbmNlKQogICAgICAgICAg
ICAgICAgIHdyaXRlU3ltYm9sVG9GaWxlKG9wKQogICAgICAgICAgICAgZW5kCiAgICAgICAgICAg
ICAkYXNtLnB1dHMgImNhbGwgI3tvcH0iCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCShyZXZpc2lvbiAxNjUxMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0OSw4ICs3NDksMzcgQEAgc2l6ZV90IFZNOjp1
cGRhdGVSZXNlcnZlZFpvbmVTaXplKHNpemVfdAogICAgIHJldHVybiBvbGRSZXNlcnZlZFpvbmVT
aXplOwogfQogCisjaWYgUExBVEZPUk0oV0lOKQorLy8gT24gV2luZG93cyB0aGUgcmVzZXJ2ZWQg
c3RhY2sgc3BhY2UgY29uc2lzdHMgb2YgY29tbWl0dGVkIG1lbW9yeSwgYSBndWFyZCBwYWdlLCBh
bmQgdW5jb21taXR0ZWQgbWVtb3J5LAorLy8gd2hlcmUgdGhlIGd1YXJkIHBhZ2UgaXMgYSBiYXJy
aWVyIGJldHdlZW4gY29tbWl0dGVkIGFuZCB1bmNvbW1pdHRlZCBtZW1vcnkuCisvLyBXaGVuIGRh
dGEgZnJvbSB0aGUgZ3VhcmQgcGFnZSBpcyByZWFkIG9yIHdyaXR0ZW4sIHRoZSBndWFyZCBwYWdl
IGlzIG1vdmVkLCBhbmQgbWVtb3J5IGlzIGNvbW1pdHRlZC4KKy8vIFRoaXMgaXMgaG93IHRoZSBz
eXN0ZW0gZ3Jvd3MgdGhlIHN0YWNrLgorLy8gV2hlbiB1c2luZyB0aGUgQyBzdGFjayBvbiBXaW5k
b3dzIHdlIG5lZWQgdG8gcHJlY29tbWl0IHRoZSBuZWVkZWQgc3RhY2sgc3BhY2UuCisvLyBPdGhl
cndpc2Ugd2UgbWlnaHQgY3Jhc2ggbGF0ZXIgaWYgd2UgYWNjZXNzIHVuY29tbWl0dGVkIHN0YWNr
IG1lbW9yeS4KKy8vIFRoaXMgY2FuIGhhcHBlbiBpZiB3ZSBhbGxvY2F0ZSBzdGFjayBzcGFjZSBs
YXJnZXIgdGhhbiB0aGUgcGFnZSBndWFyZCBzaXplICg0SykuCisvLyBUaGUgc3lzdGVtIGRvZXMg
bm90IGdldCB0aGUgY2hhbmNlIHRvIG1vdmUgdGhlIGd1YXJkIHBhZ2UsIGFuZCBjb21taXQgbW9y
ZSBtZW1vcnksCisvLyBhbmQgd2UgY3Jhc2ggaWYgdW5jb21taXR0ZWQgbWVtb3J5IGlzIGFjY2Vz
c2VkLgorLy8gVGhlIE1TVkMgY29tcGlsZXIgZml4ZXMgdGhpcyBieSBpbnNlcnRpbmcgYSBjYWxs
IHRvIHRoZSBfY2hrc3RrKCkgZnVuY3Rpb24sCisvLyB3aGVuIG5lZWRlZCwgc2VlIGh0dHA6Ly9z
dXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTAwNzc1LgorLy8gQnkgdG91Y2hpbmcgZXZlcnkgcGFn
ZSB1cCB0byB0aGUgc3RhY2sgbGltaXQgd2l0aCBhIGR1bW15IG9wZXJhdGlvbiwKKy8vIHdlIGZv
cmNlIHRoZSBzeXN0ZW0gdG8gbW92ZSB0aGUgZ3VhcmQgcGFnZSwgYW5kIGNvbW1pdCBtZW1vcnku
CisKK3N0YXRpYyB2b2lkIHByZUNvbW1pdFN0YWNrTWVtb3J5KHZvaWQqIHN0YWNrTGltaXQpCit7
CisgICAgY29uc3QgaW50IHBhZ2VTaXplID0gNDA5NjsKKyAgICBmb3IgKHZvbGF0aWxlIGNoYXIq
IHAgPSByZWludGVycHJldF9jYXN0PGNoYXIqPigmc3RhY2tMaW1pdCk7IHAgPiBzdGFja0xpbWl0
OyBwIC09IHBhZ2VTaXplKSB7CisgICAgICAgIGNoYXIgY2ggPSAqcDsKKyAgICAgICAgKnAgPSBj
aDsKKyAgICB9Cit9CisjZW5kaWYKKwogaW5saW5lIHZvaWQgVk06OnVwZGF0ZVN0YWNrTGltaXQo
KQogeworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBsYXN0U3RhY2tMaW1pdCA9IG1fc3Rh
Y2tMaW1pdDsKKyNlbmRpZgorCiAgICAgaWYgKG1fc3RhY2tQb2ludGVyQXRWTUVudHJ5KSB7CiAg
ICAgICAgIEFTU0VSVCh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5pc0dyb3dpbmdEb3dud2FyZCgp
KTsKICAgICAgICAgY2hhciogc3RhcnRPZlN0YWNrID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
bV9zdGFja1BvaW50ZXJBdFZNRW50cnkpOwpAQCAtNzY5LDYgKzc5OCwxMCBAQCBpbmxpbmUgdm9p
ZCBWTTo6dXBkYXRlU3RhY2tMaW1pdCgpCiAjZW5kaWYKICAgICB9CiAKKyNpZiBQTEFURk9STShX
SU4pCisgICAgaWYgKGxhc3RTdGFja0xpbWl0ICE9IG1fc3RhY2tMaW1pdCkKKyAgICAgICAgcHJl
Q29tbWl0U3RhY2tNZW1vcnkobV9zdGFja0xpbWl0KTsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxF
KEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MTA2KQorKysgU291cmNlL1dURi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0wNCAgcGVhdm9Ab3V0
bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4KKworICAgICAgICBbV2luMzJdW0xMSU5UXSBD
cmFzaCB3aGVuIHJ1bm5pbmcgSlNDIHN0cmVzcyB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQyOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBMTElO
VCBvbiBXaW4zMi4KKwogMjAxNC0wMy0wNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgdGhlIFVkaXM4NiBkaXNhc3NlbWJsZXIKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTY1MTA2KQorKysgU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjQwLDcgKzY0MCw3IEBACiAjaWYgIWRlZmluZWQoRU5B
QkxFX0pJVCkgXAogICAgICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8
fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkgXAogICAgICYmICFPUyhXSU5DRSkgXAotICAgICYm
ICFPUyhXSU5ET1dTKQorICAgICYmICEoT1MoV0lORE9XUykgJiYgQ1BVKFg4Nl82NCkpCiAjZGVm
aW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKQEAgLTY5Myw4ICs2OTMsOCBAQAogICAgbG93LWxl
dmVsIGludGVycHJldGVyLiAqLwogI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgXAogICAgICYm
IEVOQUJMRShKSVQpIFwKLSAgICAmJiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJF
RUJTRCkpIFwKLSAgICAmJiAoKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVGTCkpIHx8IFBMQVRG
T1JNKEdUSykpIFwKKyAgICAmJiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJFRUJT
RCkgfHwgT1MoV0lORE9XUykpIFwKKyAgICAmJiAoKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEVG
TCkpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkgXAogICAgICYmIChDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTV9UUkFESVRJT05B
TCkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykgfHwgQ1BVKFNINCkpCiAjZGVmaW5lIEVOQUJM
RV9MTElOVCAxCiAjZW5kaWYKQEAgLTc4Myw3ICs3ODMsNyBAQAogI2VuZGlmCiAKIC8qIENvbmZp
Z3VyZSB0aGUgaW50ZXJwcmV0ZXIgKi8KLSNpZiBDT01QSUxFUihHQ0MpCisjaWYgQ09NUElMRVIo
R0NDKSB8fCBDT01QSUxFUihNU1ZDKQogI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE8gMQogI2Vu
ZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>