<?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>125719</bug_id>
          
          <creation_ts>2013-12-13 18:09:03 -0800</creation_ts>
          <short_desc>CStack Branch: Need an implementation of sanitizeStack for C stack</short_desc>
          <delta_ts>2013-12-16 22:06:40 -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>All</rep_platform>
          <op_sys>All</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 name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959725</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-13 18:09:03 -0800</bug_when>
    <thetext>We need  an equivalent to JSStack::sanitizeStack() for running on the C stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959726</commentid>
    <comment_count>1</comment_count>
      <attachid>219215</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-13 18:10:58 -0800</bug_when>
    <thetext>Created attachment 219215
Work in progress

This implementation works, but only zeros on pointer size per loop iteration.  Also, this doesn&apos;t include the necessary GC changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959727</commentid>
    <comment_count>2</comment_count>
      <attachid>219216</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-13 18:12:50 -0800</bug_when>
    <thetext>Created attachment 219216
work in progress

Here it is with other work in progress removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960161</commentid>
    <comment_count>3</comment_count>
      <attachid>219338</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-16 11:54:28 -0800</bug_when>
    <thetext>Created attachment 219338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960176</commentid>
    <comment_count>4</comment_count>
      <attachid>219338</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 12:27:33 -0800</bug_when>
    <thetext>Comment on attachment 219338
Patch

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

This doesn&apos;t look right.

&gt; Source/JavaScriptCore/heap/Heap.cpp:462
&gt; +#if ENABLE(JIT)
&gt; +        sanitizeStackForVM(m_vm);
&gt; +#endif

It&apos;s a bad idiom to conditionalize callers to sanitizeStack. Callers don&apos;t know anything about how sanitizeStack is implemented -- they just know that they are a good place to sanitize the stack -- so callers should not be responsible for deciding which kind of sanitization should happen. Instead, any #ifdef- or platform-specific sanitize decisions should happen inside the function implementation.

As it stands, this idiom caused you to introduce a bug: CLoop builds do not sanitize the stack anymore during GC.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:480
&gt; +_sanitizeStackForVM:

Why does this function need to be written in assembly? It&apos;s just a loop. I think it would be better to write a shorter function that just returned sp, and to call that function from C++. Then you could write the actual loop in C++, and even use memset.

&gt; Source/JavaScriptCore/runtime/VM.cpp:229
&gt; +    setLastStackTop(stack.origin());

It is bad when one thing becomes two. Is this value a &quot;stack top&quot; or a &quot;stack origin&quot;?

Let&apos;s call this function setLastStackOrigin, and the data member m_lastStackOrigin, to match the existing name.

Why is it OK to set this value only when constructing the VM? Are you assuming that a given VM will only ever run on the thread on which it&apos;s constructed? That assumption is false.

&gt; Source/JavaScriptCore/runtime/VM.h:381
&gt; +        void setLastStackTop(void *lastStackTop) { m_lastStackTop = lastStackTop; }

Should be &quot;void*&quot;.

&gt; Source/JavaScriptCore/runtime/VM.h:510
&gt; +        void *m_lastStackTop;

Should be &quot;void*&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960196</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-16 13:12:56 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 219338 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219338&amp;action=review
&gt; 
&gt; This doesn&apos;t look right.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:462
&gt; &gt; +#if ENABLE(JIT)
&gt; &gt; +        sanitizeStackForVM(m_vm);
&gt; &gt; +#endif
&gt; 
&gt; It&apos;s a bad idiom to conditionalize callers to sanitizeStack. Callers don&apos;t know anything about how sanitizeStack is implemented -- they just know that they are a good place to sanitize the stack -- so callers should not be responsible for deciding which kind of sanitization should happen. Instead, any #ifdef- or platform-specific sanitize decisions should happen inside the function implementation.

It actually should be #if !ENABLE(LLINT_CLOOP).  It is only needed when we are on the C stack.  I will move the #ifdefs to the implementation and remove it here.

&gt; As it stands, this idiom caused you to introduce a bug: CLoop builds do not sanitize the stack anymore during GC.

The CLoop sanitizeStack call using the JSStackis a few lines below in the same function in a section of code that is protected by #if ENABLE(LLINT_CLOOP).  In that case we need to call JSStack::sanitizeStack() a different function.

&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:480
&gt; &gt; +_sanitizeStackForVM:
&gt; 
&gt; Why does this function need to be written in assembly? It&apos;s just a loop. I think it would be better to write a shorter function that just returned sp, and to call that function from C++. Then you could write the actual loop in C++, and even use memset.

If sanitizeStack is written in C++ it will be using the same stack that it wants to clear.  Although we could get things working as a C++ leaf function, any calls out to memset or possible future changes would be problematic as we don&apos;t know how much stack is required.  Writing a simple leaf function in the LLInt eliminated these kinds of problems.  I already checked with Phil that a simple loop implementation was sufficient.

&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:229
&gt; &gt; +    setLastStackTop(stack.origin());
&gt; 
&gt; It is bad when one thing becomes two. Is this value a &quot;stack top&quot; or a &quot;stack origin&quot;?
&gt; 
&gt; Let&apos;s call this function setLastStackOrigin, and the data member m_lastStackOrigin, to match the existing name.

It is the last stack top.  It needs an initial value.  The logical initial value is the base of the stack which is stack.origin().
 
&gt; Why is it OK to set this value only when constructing the VM? Are you assuming that a given VM will only ever run on the thread on which it&apos;s constructed? That assumption is false.

I&apos;ll add code to VMEntryScope() to set it and restore it similar to setStackLimit().

&gt; &gt; Source/JavaScriptCore/runtime/VM.h:381
&gt; &gt; +        void setLastStackTop(void *lastStackTop) { m_lastStackTop = lastStackTop; }
&gt; 
&gt; Should be &quot;void*&quot;.

Fixed.

&gt; &gt; Source/JavaScriptCore/runtime/VM.h:510
&gt; &gt; +        void *m_lastStackTop;
&gt; 
&gt; Should be &quot;void*&quot;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960218</commentid>
    <comment_count>6</comment_count>
      <attachid>219351</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-16 14:10:26 -0800</bug_when>
    <thetext>Created attachment 219351
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960270</commentid>
    <comment_count>7</comment_count>
      <attachid>219351</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 15:46:27 -0800</bug_when>
    <thetext>Comment on attachment 219351
Updated patch

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

&gt; Source/JavaScriptCore/llint/LLIntThunks.h:52
&gt; +    void sanitizeStackForVM(VM*) { }

Please change this function to call vm-&gt;stack().sanitizeStack(), and remove the explicit call to stack().sanitizeStack() from Heap.cpp.

&gt; Source/JavaScriptCore/runtime/VM.cpp:229
&gt; +    setLastStackTop(stack.origin());

Please rename lastStackTop to lastStackOrigin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960284</commentid>
    <comment_count>8</comment_count>
      <attachid>219351</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 16:05:37 -0800</bug_when>
    <thetext>Comment on attachment 219351
Updated patch

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

&gt;&gt; Source/JavaScriptCore/runtime/VM.cpp:229
&gt;&gt; +    setLastStackTop(stack.origin());
&gt; 
&gt; Please rename lastStackTop to lastStackOrigin.

OK, I understand what you&apos;re saying now: we initialize to origin, but the value is not the same as origin -- our assembly code updates it as we go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960290</commentid>
    <comment_count>9</comment_count>
      <attachid>219351</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 16:21:22 -0800</bug_when>
    <thetext>Comment on attachment 219351
Updated patch

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:479
&gt; +# void sanitizeStackForVM(VM *vm)

This should be &quot;VM*&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960389</commentid>
    <comment_count>10</comment_count>
      <attachid>219394</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-16 21:30:37 -0800</bug_when>
    <thetext>Created attachment 219394
Patch with changes suggested by Geoff

This has the &quot;VM*&quot; typo fix and sanitizeStackForVM() is now declared in VM.h and the C Loop version is defined in VM.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960390</commentid>
    <comment_count>11</comment_count>
      <attachid>219394</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-12-16 21:37:32 -0800</bug_when>
    <thetext>Comment on attachment 219394
Patch with changes suggested by Geoff

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

r=me

&gt; Source/JavaScriptCore/runtime/VM.cpp:737
&gt; +void sanitizeStackForVM(VM *vm)

Should be &quot;VM*&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960402</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-16 22:06:40 -0800</bug_when>
    <thetext>Committed r160694: &lt;http://trac.webkit.org/changeset/160694&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219215</attachid>
            <date>2013-12-13 18:10:58 -0800</date>
            <delta_ts>2013-12-13 18:12:50 -0800</delta_ts>
            <desc>Work in progress</desc>
            <filename>sanitize-stack-wip4.patch</filename>
            <type>text/plain</type>
            <size>5831</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lv
biAxNjA1NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgorI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CkBAIC00NSw4ICs0NiwxMCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnko
RXhlY1N0YXRlKiBleGVjLCBDCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+
aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoIWNvZGVCbG9j
ay0+aml0Q29kZU1hcCgpKTsKIAorI2lmIDAgLy8gJiYmJgogICAgIGlmICghT3B0aW9uczo6ZW5h
YmxlT1NSRW50cnlUb0RGRygpKQogICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgogCiAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKApAQCAtNTUsOSArNTgs
MTQgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIH0KICAg
ICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICAKLSAgICB2bS0+aW50ZXJwcmV0ZXIt
PnN0YWNrKCkuc2FuaXRpemVTdGFjaygpOwotICAgIAorCisgICAgc2FuaXRpemVTdGFja0ZvclZN
KHZtKTsKKworI2lmIDEgLy8gJiYmJgorICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlU
b0RGRygpKQorICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgorCiAgICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpGVExKSVQpOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlz
aW9uIDE2MDU2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHZvaWQgSlNTdGFjazo6Z2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ28KIAogdm9pZCBKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKCkK
IHsKLSNpZiAwIC8vIEZJWE1FOiBDU3RhY2sgLSBUbyBiZSBhZGRyZXNzZWQgbGF0ZXIKICAgICBB
U1NFUlQoZ2V0VG9wT2ZTdGFjaygpIDw9IGdldEJhc2VPZlN0YWNrKCkpOwogICAgIAogICAgIGlm
IChtX2xhc3RTdGFja1RvcCA8IGdldFRvcE9mU3RhY2soKSkgewpAQCAtMTE1LDcgKzExNCw2IEBA
IHZvaWQgSlNTdGFjazo6c2FuaXRpemVTdGFjaygpCiAgICAgfQogICAgIAogICAgIG1fbGFzdFN0
YWNrVG9wID0gZ2V0VG9wT2ZTdGFjaygpOwotI2VuZGlmCiB9CiAKIHZvaWQgSlNTdGFjazo6cmVs
ZWFzZUV4Y2Vzc0NhcGFjaXR5KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCShyZXZpc2lvbiAxNjA1NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBleHRl
cm4gIkMiIHsKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgaGFuZGxlVW5jYXVnaHRFeGNlcHRp
b24oKTsKICNlbmRpZgorICAgIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKik7CiB9CiAKIG5h
bWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTYwNTYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTkxLDExICs5MSwxMyBAQCBtYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEs
IGFyZzIsIGFyZzMsCiBlbmQKIAogbWFjcm8gY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQodGVt
cFJlZywgbG9jYXRpb24pCi0gICAgYW5kcCBzcCwgMHhmLCB0ZW1wUmVnCi0gICAgYnRweiB0ZW1w
UmVnLCAuc3RhY2tQb2ludGVyT2theQotICAgIG1vdmUgbG9jYXRpb24sIHRlbXBSZWcKLSAgICBi
cmVhaworICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFuZHAgc3AsIDB4ZiwgdGVtcFJl
ZworICAgICAgICBidHB6IHRlbXBSZWcsIC5zdGFja1BvaW50ZXJPa2F5CisgICAgICAgIG1vdmUg
bG9jYXRpb24sIHRlbXBSZWcKKyAgICAgICAgYnJlYWsKIC5zdGFja1BvaW50ZXJPa2F5OgorICAg
IGVuZAogZW5kCiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTYwNTYwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC00NzEsOCArNDcxLDQzIEBAIGVsc2UKIF9jYWxsVG9KYXZhU2NyaXB0OgogICAgIGRvQ2Fs
bFRvSmF2YVNjcmlwdChtYWtlSmF2YVNjcmlwdENhbGwpCiAKKwogX2NhbGxUb05hdGl2ZUZ1bmN0
aW9uOgogICAgIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlSG9zdEZ1bmN0aW9uQ2FsbCkKKworCisj
IHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNICp2bSkKK19zYW5pdGl6ZVN0YWNrRm9yVk06Cisg
ICAgaWYgWDg2XzY0CisgICAgICAgIGNvbnN0IHZtID0gdDUKKyAgICAgICAgY29uc3QgYWRkcmVz
cyA9IHQxCisgICAgICAgIGNvbnN0IHplcm9WYWx1ZSA9IHQwCisgICAgZWxzaWYgWDg2CisgICAg
ICAgIGNvbnN0IHZtID0gdDUKKyAgICAgICAgY29uc3QgYWRkcmVzcyA9IHQxCisgICAgICAgIGNv
bnN0IHplcm9WYWx1ZSA9IHQwCisgICAgZWxzZQorICAgICAgICBjb25zdCB2bSA9IGEwCisgICAg
ICAgIGNvbnN0IGFkZHJlc3MgPSB0MQorICAgICAgICBjb25zdCB6ZXJvVmFsdWUgPSB0MgorICAg
IGVuZAorCisgICAgaWYgWDg2CisgICAgICAgIGxvYWRwIDRbc3BdLCB2bQorICAgIGVuZAorCisg
ICAgbG9hZHAgVk06Om1fbGFzdFN0YWNrVG9wW3ZtXSwgYWRkcmVzcworICAgIGJwYWVxIGFkZHJl
c3MsIHNwLCAuemVyb0ZpbGxEb25lCisKKyAgICBtb3ZlIDAsIHplcm9WYWx1ZQorLnplcm9GaWxs
TG9vcDoKKyAgICBzdG9yZXAgemVyb1ZhbHVlLCBbYWRkcmVzc10KKyAgICBhZGRwIFB0clNpemUs
IGFkZHJlc3MKKyAgICBicGIgYWRkcmVzcywgc3AsIC56ZXJvRmlsbExvb3AKKworLnplcm9GaWxs
RG9uZToKKyAgICBzdG9yZXAgc3AsIFZNOjptX2xhc3RTdGFja1RvcFt2bV0KKyAgICByZXQKIGVu
ZAogCiAjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNjA1NjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYsNyBA
QCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW50ZXJwcmV0
ZXIgPSBuZXcgSW50ZXJwcmV0ZXIoKnRoaXMpOwogICAgIFN0YWNrQm91bmRzIHN0YWNrID0gd3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCk7CiAgICAgc2V0U3RhY2tMaW1pdChzdGFjay5yZWN1cnNpb25M
aW1pdCgpKTsKKyAgICBzZXRMYXN0U3RhY2tUb3Aoc3RhY2sub3JpZ2luKCkpOwogCiAgICAgLy8g
TmVlZCB0byBiZSBjYXJlZnVsIHRvIGtlZXAgZXZlcnl0aGluZyBjb25zaXN0ZW50IGhlcmUKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkocmV2aXNpb24gMTYwNTYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDYgKzM3OCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIGN1cnIgPj0gbGltaXQgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
dXJyIC0gbGltaXQpID49IG5lZWRlZFN0YWNrSW5CeXRlczsKICAgICAgICAgfQogCisgICAgICAg
IHZvaWQgc2V0TGFzdFN0YWNrVG9wKHZvaWQgKmxhc3RTdGFja1RvcCkgeyBtX2xhc3RTdGFja1Rv
cCA9IGxhc3RTdGFja1RvcDsgfQorCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNB
cnJheUNsYXNzSW5mbzsKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2Jq
ZWN0Q2xhc3NJbmZvOwogCkBAIC01MDUsNiArNTA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICB2b2lkKiBtX2pzU3RhY2tMaW1pdDsKICAgICAgICAgfTsKICNlbmRpZgorICAgICAg
ICB2b2lkICptX2xhc3RTdGFja1RvcDsKICAgICAgICAgSlNWYWx1ZSBtX2V4Y2VwdGlvbjsKICAg
ICAgICAgYm9vbCBtX2luRGVmaW5lT3duUHJvcGVydHk7CiAgICAgICAgIE93blB0cjxDb2RlQ2Fj
aGU+IG1fY29kZUNhY2hlOwpJbmRleDogU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJKHJldmlzaW9uIDE2MDU2MCkKKysr
IFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBACiAjZW5kaWYKICNlbmRpZgogCi0jZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMAorI2RlZmlu
ZSBEQVRBX0xPR19UT19GSUxFIDEKIAogLy8gVW5jb21tZW50IHRvIGZvcmNlIGxvZ2dpbmcgdG8g
dGhlIGdpdmVuIGZpbGUgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBzYXlzLiBOb3RlIHRoYXQKIC8vIHdlIHdpbGwgYXBwZW5kICIuPHBpZD4udHh0IiB3aGVyZSA8
cGlkPiBpcyB0aGUgUElELgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219216</attachid>
            <date>2013-12-13 18:12:50 -0800</date>
            <delta_ts>2013-12-16 11:54:28 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>sanitize-stack-wip4.patch</filename>
            <type>text/plain</type>
            <size>4693</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lv
biAxNjA1NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgorI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CkBAIC00NSw4ICs0NiwxMCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnko
RXhlY1N0YXRlKiBleGVjLCBDCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKS0+
aml0VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBBU1NFUlQoIWNvZGVCbG9j
ay0+aml0Q29kZU1hcCgpKTsKIAorI2lmIDAgLy8gJiYmJgogICAgIGlmICghT3B0aW9uczo6ZW5h
YmxlT1NSRW50cnlUb0RGRygpKQogICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgogCiAgICAgaWYg
KE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKApAQCAtNTUsOSArNTgs
MTQgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIH0KICAg
ICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICAKLSAgICB2bS0+aW50ZXJwcmV0ZXIt
PnN0YWNrKCkuc2FuaXRpemVTdGFjaygpOwotICAgIAorCisgICAgc2FuaXRpemVTdGFja0ZvclZN
KHZtKTsKKworI2lmIDEgLy8gJiYmJgorICAgIGlmICghT3B0aW9uczo6ZW5hYmxlT1NSRW50cnlU
b0RGRygpKQorICAgICAgICByZXR1cm4gMDsKKyNlbmRpZgorCiAgICAgaWYgKGNvZGVCbG9jay0+
aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpGVExKSVQpOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlz
aW9uIDE2MDU2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIHZvaWQgSlNTdGFjazo6Z2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ28KIAogdm9pZCBKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKCkK
IHsKLSNpZiAwIC8vIEZJWE1FOiBDU3RhY2sgLSBUbyBiZSBhZGRyZXNzZWQgbGF0ZXIKICAgICBB
U1NFUlQoZ2V0VG9wT2ZTdGFjaygpIDw9IGdldEJhc2VPZlN0YWNrKCkpOwogICAgIAogICAgIGlm
IChtX2xhc3RTdGFja1RvcCA8IGdldFRvcE9mU3RhY2soKSkgewpAQCAtMTE1LDcgKzExNCw2IEBA
IHZvaWQgSlNTdGFjazo6c2FuaXRpemVTdGFjaygpCiAgICAgfQogICAgIAogICAgIG1fbGFzdFN0
YWNrVG9wID0gZ2V0VG9wT2ZTdGFjaygpOwotI2VuZGlmCiB9CiAKIHZvaWQgSlNTdGFjazo6cmVs
ZWFzZUV4Y2Vzc0NhcGFjaXR5KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCShyZXZpc2lvbiAxNjA1NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBleHRl
cm4gIkMiIHsKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgaGFuZGxlVW5jYXVnaHRFeGNlcHRp
b24oKTsKICNlbmRpZgorICAgIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKik7CiB9CiAKIG5h
bWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjA1NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTQ3MSw4ICs0NzEsNDMgQEAgZWxzZQogX2NhbGxUb0phdmFTY3JpcHQ6CiAgICAgZG9D
YWxsVG9KYXZhU2NyaXB0KG1ha2VKYXZhU2NyaXB0Q2FsbCkKIAorCiBfY2FsbFRvTmF0aXZlRnVu
Y3Rpb246CiAgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VIb3N0RnVuY3Rpb25DYWxsKQorCisK
KyMgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0gKnZtKQorX3Nhbml0aXplU3RhY2tGb3JWTToK
KyAgICBpZiBYODZfNjQKKyAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAgICBjb25zdCBhZGRy
ZXNzID0gdDEKKyAgICAgICAgY29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBlbHNpZiBYODYKKyAg
ICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAgICBjb25zdCBhZGRyZXNzID0gdDEKKyAgICAgICAg
Y29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBlbHNlCisgICAgICAgIGNvbnN0IHZtID0gYTAKKyAg
ICAgICAgY29uc3QgYWRkcmVzcyA9IHQxCisgICAgICAgIGNvbnN0IHplcm9WYWx1ZSA9IHQyCisg
ICAgZW5kCisKKyAgICBpZiBYODYKKyAgICAgICAgbG9hZHAgNFtzcF0sIHZtCisgICAgZW5kCisK
KyAgICBsb2FkcCBWTTo6bV9sYXN0U3RhY2tUb3Bbdm1dLCBhZGRyZXNzCisgICAgYnBhZXEgYWRk
cmVzcywgc3AsIC56ZXJvRmlsbERvbmUKKworICAgIG1vdmUgMCwgemVyb1ZhbHVlCisuemVyb0Zp
bGxMb29wOgorICAgIHN0b3JlcCB6ZXJvVmFsdWUsIFthZGRyZXNzXQorICAgIGFkZHAgUHRyU2l6
ZSwgYWRkcmVzcworICAgIGJwYiBhZGRyZXNzLCBzcCwgLnplcm9GaWxsTG9vcAorCisuemVyb0Zp
bGxEb25lOgorICAgIHN0b3JlcCBzcCwgVk06Om1fbGFzdFN0YWNrVG9wW3ZtXQorICAgIHJldAog
ZW5kCiAKICMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2MDU2MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDYgKzIyNiw3
IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbnRlcnBy
ZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3
dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKICAgICBzZXRTdGFja0xpbWl0KHN0YWNrLnJlY3Vyc2lv
bkxpbWl0KCkpOworICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CiAKICAgICAv
LyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQgaGVyZQog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCShyZXZpc2lvbiAxNjA1NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNiArMzc4LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+
KGN1cnIgLSBsaW1pdCkgPj0gbmVlZGVkU3RhY2tJbkJ5dGVzOwogICAgICAgICB9CiAKKyAgICAg
ICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCAqbGFzdFN0YWNrVG9wKSB7IG1fbGFzdFN0YWNr
VG9wID0gbGFzdFN0YWNrVG9wOyB9CisKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBq
c0FycmF5Q2xhc3NJbmZvOwogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxP
YmplY3RDbGFzc0luZm87CiAKQEAgLTUwNSw2ICs1MDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHZvaWQqIG1fanNTdGFja0xpbWl0OwogICAgICAgICB9OwogI2VuZGlmCisgICAg
ICAgIHZvaWQgKm1fbGFzdFN0YWNrVG9wOwogICAgICAgICBKU1ZhbHVlIG1fZXhjZXB0aW9uOwog
ICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsKICAgICAgICAgT3duUHRyPENvZGVD
YWNoZT4gbV9jb2RlQ2FjaGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219338</attachid>
            <date>2013-12-16 11:54:28 -0800</date>
            <delta_ts>2013-12-16 14:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>125719.patch</filename>
            <type>text/plain</type>
            <size>5911</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNjUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEzLTEyLTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENTdGFjayBCcmFuY2g6IE5lZWQgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2FuaXRpemVTdGFj
ayBmb3IgQyBzdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50ZWQgc2FuaXRpemVTdGFja0ZvclZNKCkgYXMgYSBMTEludCBzdHViLiAg
SXQgY2xlYXJzIG1lbW9yeSBiZXlvbmQKKyAgICAgICAgdGhlIHRvcCBvZiBzdGFjayB0aHJvdWdo
IHRoZSBsYXN0IHN0YWNrIHRvcCwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBWTS4KKworICAgICAg
ICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVu
dHJ5KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
Um9vdHMpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suY3BwOgorICAgICAgICAoSlND
OjpKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5o
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OnNldExhc3RTdGFja1RvcCk6CisKIDIwMTMtMTItMTQg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgc2hvdWxkICpy
ZWFsbHkqIGtub3cgd2hlbiB0aGluZ3MgYXJlIGZsdXNoZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAxNjA2NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKU1N0YWNrSW5saW5lcy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBAIC01
NSw4ICs1Niw4IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAg
ICB9CiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgCi0gICAgdm0tPmludGVy
cHJldGVyLT5zdGFjaygpLnNhbml0aXplU3RhY2soKTsKKworICAgIHNhbml0aXplU3RhY2tGb3JW
TSh2bSk7CiAgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRG
R0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBK
SVRDb2RlOjpGVExKSVQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJl
dmlzaW9uIDE2MDY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCisjaW5jbHVk
ZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiVHJh
Y2luZy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCkBAIC00NTYsNiArNDU3LDkg
QEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgIHsKICAgICAgICAgR0NQSEFTRShHYXRoZXJD
b25zZXJ2YXRpdmVSb290cyk7CiAgICAgICAgIG1fbWFjaGluZVRocmVhZHMuZ2F0aGVyQ29uc2Vy
dmF0aXZlUm9vdHMobWFjaGluZVRocmVhZFJvb3RzLCAmZHVtbXkpOworI2lmIEVOQUJMRShKSVQp
CisgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTShtX3ZtKTsKKyNlbmRpZgogICAgIH0KIAogI2lm
IEVOQUJMRShMTElOVF9DTE9PUCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlzaW9uIDE2MDY1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgSlNTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMoQ28KIAogdm9p
ZCBKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKCkKIHsKLSNpZiAwIC8vIEZJWE1FOiBDU3RhY2sgLSBU
byBiZSBhZGRyZXNzZWQgbGF0ZXIKKyNpZiBFTkFCTEUoTExJTlRfQ0xPT1ApCiAgICAgQVNTRVJU
KGdldFRvcE9mU3RhY2soKSA8PSBnZXRCYXNlT2ZTdGFjaygpKTsKICAgICAKICAgICBpZiAobV9s
YXN0U3RhY2tUb3AgPCBnZXRUb3BPZlN0YWNrKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAxNjA2NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQCBleHRlcm4gIkMiIHsKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgaGFuZGxlVW5j
YXVnaHRFeGNlcHRpb24oKTsKICNlbmRpZgorICAgIHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZN
Kik7CiB9CiAKIG5hbWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjA2NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTQ3MSw4ICs0NzEsMzkgQEAgZWxzZQogX2NhbGxUb0phdmFTY3Jp
cHQ6CiAgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VKYXZhU2NyaXB0Q2FsbCkKIAorCiBfY2Fs
bFRvTmF0aXZlRnVuY3Rpb246CiAgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VIb3N0RnVuY3Rp
b25DYWxsKQorCisKKyMgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0gKnZtKQorX3Nhbml0aXpl
U3RhY2tGb3JWTToKKyAgICBpZiBYODZfNjQKKyAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAg
ICBjb25zdCBhZGRyZXNzID0gdDEKKyAgICAgICAgY29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBl
bHNpZiBYODYKKyAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAgICBjb25zdCBhZGRyZXNzID0g
dDEKKyAgICAgICAgY29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBlbHNlCisgICAgICAgIGNvbnN0
IHZtID0gYTAKKyAgICAgICAgY29uc3QgYWRkcmVzcyA9IHQxCisgICAgICAgIGNvbnN0IHplcm9W
YWx1ZSA9IHQyCisgICAgZW5kCisKKyAgICBsb2FkcCBWTTo6bV9sYXN0U3RhY2tUb3Bbdm1dLCBh
ZGRyZXNzCisgICAgYnBhZXEgYWRkcmVzcywgc3AsIC56ZXJvRmlsbERvbmUKKworICAgIG1vdmUg
MCwgemVyb1ZhbHVlCisuemVyb0ZpbGxMb29wOgorICAgIHN0b3JlcCB6ZXJvVmFsdWUsIFthZGRy
ZXNzXQorICAgIHN1YnAgUHRyU2l6ZSwgYWRkcmVzcworICAgIGJwYiBhZGRyZXNzLCBzcCwgLnpl
cm9GaWxsRG9uZQorCisuemVyb0ZpbGxEb25lOgorICAgIHN0b3JlcCBzcCwgVk06Om1fbGFzdFN0
YWNrVG9wW3ZtXQorICAgIHJldAogZW5kCiAKICMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBM
TEludC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2
MDY1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI2LDYgKzIyNiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAg
U3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKICAgICBzZXRTdGFj
a0xpbWl0KHN0YWNrLnJlY3Vyc2lvbkxpbWl0KCkpOworICAgIHNldExhc3RTdGFja1RvcChzdGFj
ay5vcmlnaW4oKSk7CiAKICAgICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRo
aW5nIGNvbnNpc3RlbnQgaGVyZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNjA2NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNiArMzc4
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdCAm
JiBzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnIgLSBsaW1pdCkgPj0gbmVlZGVkU3RhY2tJbkJ5dGVz
OwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCAqbGFzdFN0
YWNrVG9wKSB7IG1fbGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOyB9CisKICAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOwogICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CiAKQEAgLTUwNSw2ICs1MDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHZvaWQqIG1fanNTdGFja0xpbWl0OwogICAg
ICAgICB9OwogI2VuZGlmCisgICAgICAgIHZvaWQgKm1fbGFzdFN0YWNrVG9wOwogICAgICAgICBK
U1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsK
ICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2RlQ2FjaGU7Cg==
</data>
<flag name="review"
          id="242948"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219351</attachid>
            <date>2013-12-16 14:10:26 -0800</date>
            <delta_ts>2013-12-16 21:30:37 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>125719-2.patch</filename>
            <type>text/plain</type>
            <size>7929</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNjYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDEzLTEyLTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENTdGFjayBCcmFuY2g6IE5lZWQgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2FuaXRpemVTdGFj
ayBmb3IgQyBzdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50ZWQgc2FuaXRpemVTdGFja0ZvclZNKCkgYXMgYSBMTEludCBzdHViLiAg
SXQgY2xlYXJzIG1lbW9yeSBiZXlvbmQKKyAgICAgICAgdGhlIHRvcCBvZiBzdGFjayB0aHJvdWdo
IHRoZSBsYXN0IHN0YWNrIHRvcCwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBWTS4KKworICAgICAg
ICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVu
dHJ5KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
Um9vdHMpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suY3BwOgorICAgICAgICAoSlND
OjpKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5o
OgorICAgICAgICAoSlNDOjpzYW5pdGl6ZVN0YWNrRm9yVk0pOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAg
ICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6
Vk06Omxhc3RTdGFja1RvcCk6CisgICAgICAgIChKU0M6OlZNOjpzZXRMYXN0U3RhY2tUb3ApOgor
ICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6Vk1FbnRy
eVNjb3BlOjpWTUVudHJ5U2NvcGUpOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6On5WTUVu
dHJ5U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvVk1FbnRyeVNjb3BlLmg6CisKIDIwMTMtMTIt
MTYgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQ1N0YWNr
IEJyYW5jaDogRWxpbWluYXRlIHRvcE9mU3RhY2sgcGFyYW1ldGVyIGZyb20gY2FsbFRvSmF2YVNj
cmlwdCgpIGFuZCBjYWxsVG9OYXRpdmVGdW5jdGlvbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMTYwNjYwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJERkdOb2RlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNTdGFja0lubGluZXMuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtNTUs
OCArNTYsOCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAg
fQogICAgIAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIAotICAgIHZtLT5pbnRlcnBy
ZXRlci0+c3RhY2soKS5zYW5pdGl6ZVN0YWNrKCk7CisKKyAgICBzYW5pdGl6ZVN0YWNrRm9yVk0o
dm0pOwogICAgIAogICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdK
SVQpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklU
Q29kZTo6RlRMSklUKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZp
c2lvbiAxNjA2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgorI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlRyYWNp
bmcuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgpAQCAtNDU2LDYgKzQ1Nyw3IEBA
IHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICB7CiAgICAgICAgIEdDUEhBU0UoR2F0aGVyQ29u
c2VydmF0aXZlUm9vdHMpOwogICAgICAgICBtX21hY2hpbmVUaHJlYWRzLmdhdGhlckNvbnNlcnZh
dGl2ZVJvb3RzKG1hY2hpbmVUaHJlYWRSb290cywgJmR1bW15KTsKKyAgICAgICAgc2FuaXRpemVT
dGFja0ZvclZNKG1fdm0pOwogICAgIH0KIAogI2lmIEVOQUJMRShMTElOVF9DTE9PUCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJKHJldmlz
aW9uIDE2MDY2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSlNTdGFjazo6Z2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMoQ28KIAogdm9pZCBKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKCkK
IHsKLSNpZiAwIC8vIEZJWE1FOiBDU3RhY2sgLSBUbyBiZSBhZGRyZXNzZWQgbGF0ZXIKKyNpZiBF
TkFCTEUoTExJTlRfQ0xPT1ApCiAgICAgQVNTRVJUKGdldFRvcE9mU3RhY2soKSA8PSBnZXRCYXNl
T2ZTdGFjaygpKTsKICAgICAKICAgICBpZiAobV9sYXN0U3RhY2tUb3AgPCBnZXRUb3BPZlN0YWNr
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShy
ZXZpc2lvbiAxNjA2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsMTMgQEAgZXh0ZXJuICJDIiB7CiAjaWYg
RU5BQkxFKEpJVCkKICAgICB2b2lkIGhhbmRsZVVuY2F1Z2h0RXhjZXB0aW9uKCk7CiAjZW5kaWYK
KyAgICB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSopOwogfQogCisjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKKyAgICB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSopIHsgfQorI2VuZGlmCisK
IG5hbWVzcGFjZSBMTEludCB7CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNh
bGxFbnRyeVRodW5rR2VuZXJhdG9yKFZNKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjA2NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTQ3MSw4ICs0NzEsMzkgQEAgZWxzZQogX2NhbGxUb0phdmFTY3Jp
cHQ6CiAgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VKYXZhU2NyaXB0Q2FsbCkKIAorCiBfY2Fs
bFRvTmF0aXZlRnVuY3Rpb246CiAgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VIb3N0RnVuY3Rp
b25DYWxsKQorCisKKyMgdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0gKnZtKQorX3Nhbml0aXpl
U3RhY2tGb3JWTToKKyAgICBpZiBYODZfNjQKKyAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAg
ICBjb25zdCBhZGRyZXNzID0gdDEKKyAgICAgICAgY29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBl
bHNpZiBYODYKKyAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAgICBjb25zdCBhZGRyZXNzID0g
dDEKKyAgICAgICAgY29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBlbHNlCisgICAgICAgIGNvbnN0
IHZtID0gYTAKKyAgICAgICAgY29uc3QgYWRkcmVzcyA9IHQxCisgICAgICAgIGNvbnN0IHplcm9W
YWx1ZSA9IHQyCisgICAgZW5kCisKKyAgICBsb2FkcCBWTTo6bV9sYXN0U3RhY2tUb3Bbdm1dLCBh
ZGRyZXNzCisgICAgYnBhZXEgYWRkcmVzcywgc3AsIC56ZXJvRmlsbERvbmUKKworICAgIG1vdmUg
MCwgemVyb1ZhbHVlCisuemVyb0ZpbGxMb29wOgorICAgIHN0b3JlcCB6ZXJvVmFsdWUsIFthZGRy
ZXNzXQorICAgIHN1YnAgUHRyU2l6ZSwgYWRkcmVzcworICAgIGJwYiBhZGRyZXNzLCBzcCwgLnpl
cm9GaWxsRG9uZQorCisuemVyb0ZpbGxEb25lOgorICAgIHN0b3JlcCBzcCwgVk06Om1fbGFzdFN0
YWNrVG9wW3ZtXQorICAgIHJldAogZW5kCiAKICMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBM
TEludC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2
MDY2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI2LDYgKzIyNiw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBpbnRlcnByZXRlciA9IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAg
U3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3RhY2soKTsKICAgICBzZXRTdGFj
a0xpbWl0KHN0YWNrLnJlY3Vyc2lvbkxpbWl0KCkpOworICAgIHNldExhc3RTdGFja1RvcChzdGFj
ay5vcmlnaW4oKSk7CiAKICAgICAvLyBOZWVkIHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRo
aW5nIGNvbnNpc3RlbnQgaGVyZQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNjA2NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNiArMzc4
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gY3VyciA+PSBsaW1pdCAm
JiBzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnIgLSBsaW1pdCkgPj0gbmVlZGVkU3RhY2tJbkJ5dGVz
OwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCogbGFzdFN0YWNrVG9wKCkgeyByZXR1cm4gbV9s
YXN0U3RhY2tUb3A7IH0KKyAgICAgICAgdm9pZCBzZXRMYXN0U3RhY2tUb3Aodm9pZCogbGFzdFN0
YWNrVG9wKSB7IG1fbGFzdFN0YWNrVG9wID0gbGFzdFN0YWNrVG9wOyB9CisKICAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOwogICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CiAKQEAgLTUwNCw2ICs1MDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHZvaWQqIG1fanNTdGFja0xpbWl0OwogICAg
ICAgICB9OwogI2VuZGlmCisgICAgICAgIHZvaWQqIG1fbGFzdFN0YWNrVG9wOwogICAgICAgICBK
U1ZhbHVlIG1fZXhjZXB0aW9uOwogICAgICAgICBib29sIG1faW5EZWZpbmVPd25Qcm9wZXJ0eTsK
ICAgICAgICAgT3duUHRyPENvZGVDYWNoZT4gbV9jb2RlQ2FjaGU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHJldmlzaW9uIDE2MDY2
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgVk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUo
Vk0mIHZtLCBKU0dsbwogICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICwg
bV9wcmV2KHZtLmVudHJ5U2NvcGUpCiAgICAgLCBtX3ByZXZTdGFja0xpbWl0KHZtLnN0YWNrTGlt
aXQoKSkKKyAgICAsIG1fcHJldkxhc3RTdGFja1RvcCh2bS5sYXN0U3RhY2tUb3AoKSkKIHsKICAg
ICBpZiAoIXZtLmVudHJ5U2NvcGUpIHsKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQpAQCAtNTQsMTIg
KzU1LDE0IEBAIFZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKFZNJiB2bSwgSlNHbG8KIAogICAg
IHZvaWQqIGxpbWl0ID0gbV9zdGFjay5yZWN1cnNpb25MaW1pdChyZXF1aXJlZENhcGFjaXR5KCkp
OwogICAgIHZtLnNldFN0YWNrTGltaXQobGltaXQpOworICAgIHZtLnNldExhc3RTdGFja1RvcCht
X3N0YWNrLm9yaWdpbigpKTsKIH0KIAogVk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKCkKIHsK
ICAgICBtX3ZtLmVudHJ5U2NvcGUgPSBtX3ByZXY7CiAgICAgbV92bS5zZXRTdGFja0xpbWl0KG1f
cHJldlN0YWNrTGltaXQpOworICAgIG1fdm0uc2V0TGFzdFN0YWNrVG9wKG1fcHJldkxhc3RTdGFj
a1RvcCk7CiB9CiAKIHNpemVfdCBWTUVudHJ5U2NvcGU6OnJlcXVpcmVkQ2FwYWNpdHkoKSBjb25z
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJ
KHJldmlzaW9uIDE2MDY2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50
cnlTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw5ICs1MCwxMCBAQCBwcml2YXRlOgogICAg
IFN0YWNrQm91bmRzIG1fc3RhY2s7CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0
OwogCi0gICAgLy8gbV9wcmV2IGFuZCBtX3ByZXZTdGFja0xpbWl0IG1heSBiZWxvbmcgdG8gYSBk
aWZmZXJlbnQgdGhyZWFkJ3Mgc3RhY2suCisgICAgLy8gbV9wcmV2LCBtX3ByZXZTdGFja0xpbWl0
ICYgbV9wcmV2TGFzdFN0YWNrVG9wIG1heSBiZWxvbmcgdG8gYSBkaWZmZXJlbnQgdGhyZWFkJ3Mg
c3RhY2suCiAgICAgVk1FbnRyeVNjb3BlKiBtX3ByZXY7CiAgICAgdm9pZCogbV9wcmV2U3RhY2tM
aW1pdDsKKyAgICB2b2lkKiBtX3ByZXZMYXN0U3RhY2tUb3A7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219394</attachid>
            <date>2013-12-16 21:30:37 -0800</date>
            <delta_ts>2013-12-16 21:37:32 -0800</delta_ts>
            <desc>Patch with changes suggested by Geoff</desc>
            <filename>125719-3.patch</filename>
            <type>text/plain</type>
            <size>7577</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwNjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEzLTEyLTE2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENTdGFjayBCcmFuY2g6IE5lZWQgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2FuaXRpemVTdGFj
ayBmb3IgQyBzdGFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI1NzE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50ZWQgc2FuaXRpemVTdGFja0ZvclZNKCkgYXMgYSBMTEludCBzdHViLiAg
SXQgY2xlYXJzIG1lbW9yeSBiZXlvbmQKKyAgICAgICAgdGhlIHRvcCBvZiBzdGFjayB0aHJvdWdo
IHRoZSBsYXN0IHN0YWNrIHRvcCwgd2hpY2ggaXMgc3RvcmVkIGluIHRoZSBWTS4KKworICAgICAg
ICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cHJlcGFyZU9TUkVu
dHJ5KToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
Um9vdHMpOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2suY3BwOgorICAgICAgICAoSlND
OjpKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgKEpTQzo6c2FuaXRpemVTdGFja0ZvclZNKToKKyAgICAgICAgKiBydW50
aW1lL1ZNLmg6CisgICAgICAgIChKU0M6OlZNOjpsYXN0U3RhY2tUb3ApOgorICAgICAgICAoSlND
OjpWTTo6c2V0TGFzdFN0YWNrVG9wKToKKyAgICAgICAgKiBydW50aW1lL1ZNRW50cnlTY29wZS5j
cHA6CisgICAgICAgIChKU0M6OlZNRW50cnlTY29wZTo6Vk1FbnRyeVNjb3BlKToKKyAgICAgICAg
KEpTQzo6Vk1FbnRyeVNjb3BlOjp+Vk1FbnRyeVNjb3BlKToKKyAgICAgICAgKiBydW50aW1lL1ZN
RW50cnlTY29wZS5oOgorCiAyMDEzLTEyLTE2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBNZXJnZWQgcjE2MDY2NSBmcm9tIHRydW5rLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDE2MDY5MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw4ICs1NSw4IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMK
ICAgICB9CiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgCi0gICAgdm0tPmlu
dGVycHJldGVyLT5zdGFjaygpLnNhbml0aXplU3RhY2soKTsKKworICAgIHNhbml0aXplU3RhY2tG
b3JWTSh2bSk7CiAgICAgCiAgICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6
OkRGR0pJVCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9
PSBKSVRDb2RlOjpGVExKSVQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDE2MDY5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NjQsMTAgKzQ2NCwxMSBAQCB2b2lkIEhlYXA6Om1hcmtSb290
cygpCiAgICAgewogICAgICAgICBHQ1BIQVNFKEdhdGhlclN0YWNrUm9vdHMpOwogICAgICAgICBz
dGFjaygpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHN0YWNrUm9vdHMsIG1faml0U3R1YlJvdXRp
bmVzLCBtX2NvZGVCbG9ja3MpOwotICAgICAgICBzdGFjaygpLnNhbml0aXplU3RhY2soKTsKICAg
ICB9CiAjZW5kaWYKIAorICAgIHNhbml0aXplU3RhY2tGb3JWTShtX3ZtKTsKKwogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIENvbnNlcnZhdGl2ZVJvb3RzIHNjcmF0Y2hCdWZmZXJSb290cygmbV9v
YmplY3RTcGFjZS5ibG9ja3MoKSwgJm1fc3RvcmFnZVNwYWNlKTsKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCShyZXZpc2lvbiAx
NjA2OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEpTU3RhY2s6OmdhdGhlckNv
bnNlcnZhdGl2ZVJvb3RzKENvCiAKIHZvaWQgSlNTdGFjazo6c2FuaXRpemVTdGFjaygpCiB7Ci0j
aWYgMCAvLyBGSVhNRTogQ1N0YWNrIC0gVG8gYmUgYWRkcmVzc2VkIGxhdGVyCisjaWYgRU5BQkxF
KExMSU5UX0NMT09QKQogICAgIEFTU0VSVChnZXRUb3BPZlN0YWNrKCkgPD0gZ2V0QmFzZU9mU3Rh
Y2soKSk7CiAgICAgCiAgICAgaWYgKG1fbGFzdFN0YWNrVG9wIDwgZ2V0VG9wT2ZTdGFjaygpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAxNjA2OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw4ICs0
NzEsMzkgQEAgZWxzZQogX2NhbGxUb0phdmFTY3JpcHQ6CiAgICAgZG9DYWxsVG9KYXZhU2NyaXB0
KG1ha2VKYXZhU2NyaXB0Q2FsbCkKIAorCiBfY2FsbFRvTmF0aXZlRnVuY3Rpb246CiAgICAgZG9D
YWxsVG9KYXZhU2NyaXB0KG1ha2VIb3N0RnVuY3Rpb25DYWxsKQorCisKKyMgdm9pZCBzYW5pdGl6
ZVN0YWNrRm9yVk0oVk0qIHZtKQorX3Nhbml0aXplU3RhY2tGb3JWTToKKyAgICBpZiBYODZfNjQK
KyAgICAgICAgY29uc3Qgdm0gPSB0NQorICAgICAgICBjb25zdCBhZGRyZXNzID0gdDEKKyAgICAg
ICAgY29uc3QgemVyb1ZhbHVlID0gdDAKKyAgICBlbHNpZiBYODYKKyAgICAgICAgY29uc3Qgdm0g
PSB0NQorICAgICAgICBjb25zdCBhZGRyZXNzID0gdDEKKyAgICAgICAgY29uc3QgemVyb1ZhbHVl
ID0gdDAKKyAgICBlbHNlCisgICAgICAgIGNvbnN0IHZtID0gYTAKKyAgICAgICAgY29uc3QgYWRk
cmVzcyA9IHQxCisgICAgICAgIGNvbnN0IHplcm9WYWx1ZSA9IHQyCisgICAgZW5kCisKKyAgICBs
b2FkcCBWTTo6bV9sYXN0U3RhY2tUb3Bbdm1dLCBhZGRyZXNzCisgICAgYnBhZXEgYWRkcmVzcywg
c3AsIC56ZXJvRmlsbERvbmUKKworICAgIG1vdmUgMCwgemVyb1ZhbHVlCisuemVyb0ZpbGxMb29w
OgorICAgIHN0b3JlcCB6ZXJvVmFsdWUsIFthZGRyZXNzXQorICAgIHN1YnAgUHRyU2l6ZSwgYWRk
cmVzcworICAgIGJwYiBhZGRyZXNzLCBzcCwgLnplcm9GaWxsRG9uZQorCisuemVyb0ZpbGxEb25l
OgorICAgIHN0b3JlcCBzcCwgVk06Om1fbGFzdFN0YWNrVG9wW3ZtXQorICAgIHJldAogZW5kCiAK
ICMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2MDY5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDYgKzIyNiw3IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbnRlcnByZXRlciA9
IG5ldyBJbnRlcnByZXRlcigqdGhpcyk7CiAgICAgU3RhY2tCb3VuZHMgc3RhY2sgPSB3dGZUaHJl
YWREYXRhKCkuc3RhY2soKTsKICAgICBzZXRTdGFja0xpbWl0KHN0YWNrLnJlY3Vyc2lvbkxpbWl0
KCkpOworICAgIHNldExhc3RTdGFja1RvcChzdGFjay5vcmlnaW4oKSk7CiAKICAgICAvLyBOZWVk
IHRvIGJlIGNhcmVmdWwgdG8ga2VlcCBldmVyeXRoaW5nIGNvbnNpc3RlbnQgaGVyZQogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHRoaXMpOwpAQCAtNzMyLDYgKzczMywxMyBAQCBERkc6OldvcmtsaXN0
KiBWTTo6ZW5zdXJlV29ya2xpc3QoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQordm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0gKnZtKQoreworICAgIHZtLT5pbnRlcnBy
ZXRlci0+c3RhY2soKS5zYW5pdGl6ZVN0YWNrKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShS
RUdFWFBfVFJBQ0lORykKIHZvaWQgVk06OmFkZFJlZ0V4cFRvVHJhY2UoUmVnRXhwKiByZWdFeHAp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2MDY5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3OCw2ICszNzgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBjdXJy
ID49IGxpbWl0ICYmIHN0YXRpY19jYXN0PHNpemVfdD4oY3VyciAtIGxpbWl0KSA+PSBuZWVkZWRT
dGFja0luQnl0ZXM7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkKiBsYXN0U3RhY2tUb3AoKSB7
IHJldHVybiBtX2xhc3RTdGFja1RvcDsgfQorICAgICAgICB2b2lkIHNldExhc3RTdGFja1RvcCh2
b2lkKiBsYXN0U3RhY2tUb3ApIHsgbV9sYXN0U3RhY2tUb3AgPSBsYXN0U3RhY2tUb3A7IH0KKwog
ICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CiAgICAgICAg
IGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKIApAQCAtNTA0
LDYgKzUwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgdm9pZCogbV9qc1N0YWNr
TGltaXQ7CiAgICAgICAgIH07CiAjZW5kaWYKKyAgICAgICAgdm9pZCogbV9sYXN0U3RhY2tUb3A7
CiAgICAgICAgIEpTVmFsdWUgbV9leGNlcHRpb247CiAgICAgICAgIGJvb2wgbV9pbkRlZmluZU93
blByb3BlcnR5OwogICAgICAgICBPd25QdHI8Q29kZUNhY2hlPiBtX2NvZGVDYWNoZTsKQEAgLTUy
Nyw2ICs1MzEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiAmbV92bS0+aGVh
cDsKICAgICB9CiAKKyNpZiBFTkFCTEUoTExJTlQpCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
KyAgICB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSopOworI2Vsc2UKKyAgICBleHRlcm4gIkMi
IHZvaWQgc2FuaXRpemVTdGFja0ZvclZNKFZNKik7CisjZW5kaWYKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFZNX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNRW50cnlTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAkocmV2aXNpb24gMTYwNjkyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNiArMzcsNyBAQCBWTUVudHJ5U2NvcGU6OlZNRW50cnlTY29wZShWTSYgdm0sIEpT
R2xvCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX3ByZXYodm0u
ZW50cnlTY29wZSkKICAgICAsIG1fcHJldlN0YWNrTGltaXQodm0uc3RhY2tMaW1pdCgpKQorICAg
ICwgbV9wcmV2TGFzdFN0YWNrVG9wKHZtLmxhc3RTdGFja1RvcCgpKQogewogICAgIGlmICghdm0u
ZW50cnlTY29wZSkgewogI2lmIEVOQUJMRShBU1NFTUJMRVIpCkBAIC01NCwxMiArNTUsMTQgQEAg
Vk1FbnRyeVNjb3BlOjpWTUVudHJ5U2NvcGUoVk0mIHZtLCBKU0dsbwogCiAgICAgdm9pZCogbGlt
aXQgPSBtX3N0YWNrLnJlY3Vyc2lvbkxpbWl0KHJlcXVpcmVkQ2FwYWNpdHkoKSk7CiAgICAgdm0u
c2V0U3RhY2tMaW1pdChsaW1pdCk7CisgICAgdm0uc2V0TGFzdFN0YWNrVG9wKG1fc3RhY2sub3Jp
Z2luKCkpOwogfQogCiBWTUVudHJ5U2NvcGU6On5WTUVudHJ5U2NvcGUoKQogewogICAgIG1fdm0u
ZW50cnlTY29wZSA9IG1fcHJldjsKICAgICBtX3ZtLnNldFN0YWNrTGltaXQobV9wcmV2U3RhY2tM
aW1pdCk7CisgICAgbV92bS5zZXRMYXN0U3RhY2tUb3AobV9wcmV2TGFzdFN0YWNrVG9wKTsKIH0K
IAogc2l6ZV90IFZNRW50cnlTY29wZTo6cmVxdWlyZWRDYXBhY2l0eSgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkocmV2aXNpb24g
MTYwNjkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDEwIEBAIHByaXZhdGU6CiAgICAgU3RhY2tCb3Vu
ZHMgbV9zdGFjazsKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAKLSAgICAv
LyBtX3ByZXYgYW5kIG1fcHJldlN0YWNrTGltaXQgbWF5IGJlbG9uZyB0byBhIGRpZmZlcmVudCB0
aHJlYWQncyBzdGFjay4KKyAgICAvLyBtX3ByZXYsIG1fcHJldlN0YWNrTGltaXQgJiBtX3ByZXZM
YXN0U3RhY2tUb3AgbWF5IGJlbG9uZyB0byBhIGRpZmZlcmVudCB0aHJlYWQncyBzdGFjay4KICAg
ICBWTUVudHJ5U2NvcGUqIG1fcHJldjsKICAgICB2b2lkKiBtX3ByZXZTdGFja0xpbWl0OworICAg
IHZvaWQqIG1fcHJldkxhc3RTdGFja1RvcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="243011"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>