<?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>88528</bug_id>
          
          <creation_ts>2012-06-07 05:51:38 -0700</creation_ts>
          <short_desc>Reduce Node object size from 72 byte to 64 byte</short_desc>
          <delta_ts>2012-07-25 17:22:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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>
          
          <blocked>88653</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>naginenis</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>643457</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 05:51:38 -0700</bug_when>
    <thetext>By removing all virtual methods from TreeShared.h, we can remove a virtual method table (8 byte) from each Node object. Consequently, we can reduce each Node object size from 72 byte to 64 byte.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643465</commentid>
    <comment_count>1</comment_count>
      <attachid>146267</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 05:56:21 -0700</bug_when>
    <thetext>Created attachment 146267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643517</commentid>
    <comment_count>2</comment_count>
      <attachid>146267</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-07 07:03:11 -0700</bug_when>
    <thetext>Comment on attachment 146267
Patch

Attachment 146267 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12919165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643636</commentid>
    <comment_count>3</comment_count>
      <attachid>146267</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-07 09:50:12 -0700</bug_when>
    <thetext>Comment on attachment 146267
Patch

Attachment 146267 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12923053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643805</commentid>
    <comment_count>4</comment_count>
      <attachid>146267</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 12:42:34 -0700</bug_when>
    <thetext>Comment on attachment 146267
Patch

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

I don&apos;t think this patch buy us any real memory saving.

&gt; Source/WebCore/ChangeLog:14
&gt; +        e.g. The HTML spec (http://www.whatwg.org/specs/web-apps/current-work/)
&gt; +        contains 325640 Nodes. Thus this patch saves 325640 * 8 byte = 2.6 MB.

I don&apos;t think this is true. Most of these nodes are Element and CharacterData and they have virtual functions.
So you will have a vtable pointer in those objects anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643895</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-07 14:16:07 -0700</bug_when>
    <thetext>&gt; By removing all virtual methods from TreeShared.h, we can remove a virtual method table (8 byte) from each Node object.

Why are you saying that the table [pointer] would be removed? Node would still have virtual functions of its own. The size taken in each object does not depend on the number of classes with virtual method tables in inheritance chain (ignoring virtual inheritance for simplicity).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643955</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 15:05:44 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; By removing all virtual methods from TreeShared.h, we can remove a virtual method table (8 byte) from each Node object.
&gt; 
&gt; Why are you saying that the table [pointer] would be removed? Node would still have virtual functions of its own. The size taken in each object does not depend on the number of classes with virtual method tables in inheritance chain (ignoring virtual inheritance for simplicity).

Oops... that&apos;s correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644104</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 17:18:23 -0700</bug_when>
    <thetext>ap, rniwa: The change saves memory. I confirmed that the patch reduces sizeof(Element) from 104 byte to 96 byte.

&gt; Why are you saying that the table [pointer] would be removed? Node would still have virtual functions of its own. The size taken in each object does not depend on the number of classes with virtual method tables in inheritance chain (ignoring virtual inheritance for simplicity).

It is not true for multiple inheritance. Assuming &apos;class A : public B, C {};&apos; where B and C have virtual methods, two virtual method table pointers are allocated for each A object. 

Simplified example:

#include &lt;iostream&gt;
using namespace std;

class EventTarget {
  virtual int f1() { }
};

template&lt;typename T&gt;
class TreeShared {
  // Comment out f2(), then sizeof(Element) is reduced from 16 byte to 8 byte.
  virtual int f2() { }
};

class Node : public EventTarget, TreeShared&lt;Node&gt; {
  virtual int f3() { }
};

class Element : public Node {
  virtual int f4() { }
};

int main(void)
{
  Element e;
  cout &lt;&lt; sizeof(Element) &lt;&lt; endl;
  cout &lt;&lt; sizeof(e) &lt;&lt; endl;
  return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644115</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 17:29:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; ap, rniwa: The change saves memory. I confirmed that the patch reduces sizeof(Element) from 104 byte to 96 byte.
&gt; 
&gt; &gt; Why are you saying that the table [pointer] would be removed? Node would still have virtual functions of its own. The size taken in each object does not depend on the number of classes with virtual method tables in inheritance chain (ignoring virtual inheritance for simplicity).
&gt; 
&gt; It is not true for multiple inheritance. Assuming &apos;class A : public B, C {};&apos; where B and C have virtual methods, two virtual method table pointers are allocated for each A object. 

Ah,that&apos;s a good point. Thanks for the clarification. It might be worth noting that in th change log given that both ap and I didn&apos;t realize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644145</commentid>
    <comment_count>9</comment_count>
      <attachid>146433</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 17:50:57 -0700</bug_when>
    <thetext>Created attachment 146433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644147</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 17:52:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ah,that&apos;s a good point. Thanks for the clarification. It might be worth noting that in th change log given that both ap and I didn&apos;t realize it.

Done.

Also added missing symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644149</commentid>
    <comment_count>11</comment_count>
      <attachid>146436</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 17:53:31 -0700</bug_when>
    <thetext>Created attachment 146436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644151</commentid>
    <comment_count>12</comment_count>
      <attachid>146436</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 17:58:31 -0700</bug_when>
    <thetext>Comment on attachment 146436
Patch

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

&gt; Source/WebCore/ChangeLog:26
&gt; +        - Node and SVGElementInstance are the only classes that inherit TreeShared.

Can we add an assertion or make it impossible to inherit in other classses?
I think we can ensure that T has removeLastRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644154</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 18:01:18 -0700</bug_when>
    <thetext>Namely, you can add a private function in TreeShared that calls removeLastRef, which we never call.

+our clang guru.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644159</commentid>
    <comment_count>14</comment_count>
      <attachid>146439</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 18:07:54 -0700</bug_when>
    <thetext>Created attachment 146439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644160</commentid>
    <comment_count>15</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 18:08:16 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Namely, you can add a private function in TreeShared that calls removeLastRef, which we never call.

Good idea. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644167</commentid>
    <comment_count>16</comment_count>
      <attachid>146439</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 18:20:11 -0700</bug_when>
    <thetext>Comment on attachment 146439
Patch

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

&gt; Source/WebCore/platform/TreeShared.h:44
&gt; +void callRemovedLastRef(TreeShared&lt;SVGElementInstance&gt;*);

This isn&apos;t what I had in my mind. You can just add a dummy function that&apos;s never called.
And in that dummy function, you call removeLastRef.
Come to think of it, we don&apos;t even have to remove this function.
We can just devirtualize &amp; rename it to something else.

Maybe darin or andersca have a better idea. Basically we need some sort of traits-like construction here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644170</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 18:25:44 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; +void callRemovedLastRef(TreeShared&lt;SVGElementInstance&gt;*);
&gt; 
&gt; This isn&apos;t what I had in my mind. You can just add a dummy function that&apos;s never called.
&gt; And in that dummy function, you call removeLastRef.
&gt; Come to think of it, we don&apos;t even have to remove this function.
&gt; We can just devirtualize &amp; rename it to something else.

What do you mean specifically?

Nit: removedLastRef() might be renamed to lastRefRemoved().

&gt; Basically we need some sort of traits-like construction here.

Plausible. But it might make the code a bit unreadable:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644174</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 18:30:13 -0700</bug_when>
    <thetext>Let me get back to you wih a piece of code in an hour or two. My MBP died yesterday, and I just get it replaced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644197</commentid>
    <comment_count>19</comment_count>
      <attachid>146439</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-07 18:48:25 -0700</bug_when>
    <thetext>Comment on attachment 146439
Patch

Attachment 146439 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12913395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644227</commentid>
    <comment_count>20</comment_count>
      <attachid>146455</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-07 19:27:20 -0700</bug_when>
    <thetext>Created attachment 146455
Fixed mac build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644304</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 21:37:56 -0700</bug_when>
    <thetext>So the problem comes down to the fact Node inherits from TreeShared&lt;ContainerNode&gt;. Because of this, we can&apos;t do static_cast&lt;T*&gt;(this) in TreeShared&lt;T&gt;::deref.

Does anyone know why we do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644340</commentid>
    <comment_count>22</comment_count>
      <attachid>146455</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-07 22:32:51 -0700</bug_when>
    <thetext>Comment on attachment 146455
Fixed mac build failure

We had a length discussion with andersca &amp; hareken about this but we concluded that it&apos;s probably okay to land the patch as is. We can always do a follow up cleanup when someone more familiar with C++ (andersca, darin, eseidel, othermaciej, etc...) comes up with a better solution. For now, let us enjoy 4/8-byte memory savings on all DOM nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644375</commentid>
    <comment_count>23</comment_count>
      <attachid>146455</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 23:28:37 -0700</bug_when>
    <thetext>Comment on attachment 146455
Fixed mac build failure

Clearing flags on attachment: 146455

Committed r119802: &lt;http://trac.webkit.org/changeset/119802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644377</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 23:29:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644398</commentid>
    <comment_count>25</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-07 23:57:53 -0700</bug_when>
    <thetext>FYI, looks like this hits an assert in debug: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Linux%20%28dbg%29/builds/7753/steps/webkit_tests/logs/stdio

STDERR: 	base::debug::StackTrace::StackTrace() [0x877fda]
STDERR: 	base::(anonymous namespace)::StackDumpSignalHandler() [0x838091]
STDERR: 	0x7f756d040af0
STDERR: 	WebCore::Document::removedLastRef() [0x6dce7c]
STDERR: 	WebCore::callRemovedLastRef() [0x6c67ce]
STDERR: 	WebCore::TreeShared&lt;&gt;::deref() [0x49b14b]
STDERR: 	WebCore::DOMDataStore::weakNodeCallback() [0x17c41a1]
STDERR: 	v8::internal::GlobalHandles::Node::PostGarbageCollectionProcessing() [0xbb637c]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644406</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-08 00:05:40 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; FYI, looks like this hits an assert in debug: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Linux%20%28dbg%29/builds/7753/steps/webkit_tests/logs/stdio
&gt; 
&gt; STDERR:     base::debug::StackTrace::StackTrace() [0x877fda]
&gt; STDERR:     base::(anonymous namespace)::StackDumpSignalHandler() [0x838091]
&gt; STDERR:     0x7f756d040af0
&gt; STDERR:     WebCore::Document::removedLastRef() [0x6dce7c]
&gt; STDERR:     WebCore::callRemovedLastRef() [0x6c67ce]
&gt; STDERR:     WebCore::TreeShared&lt;&gt;::deref() [0x49b14b]
&gt; STDERR:     WebCore::DOMDataStore::weakNodeCallback() [0x17c41a1]
&gt; STDERR:     v8::internal::GlobalHandles::Node::PostGarbageCollectionProcessing() [0xbb637c]

Thanks for letting us know. Fixed in http://trac.webkit.org/changeset/119803.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644478</commentid>
    <comment_count>27</comment_count>
    <who name="Sudarsana Nagineni (babu)">naginenis</who>
    <bug_when>2012-06-08 01:50:14 -0700</bug_when>
    <thetext>This still hits an assert on debug build.

#0  0x00007f73a38b5600 in WebCore::Document::guardRef (this=0x22f00f0) at /build/WebKit/Source/WebCore/dom/Document.h:250
250	        ASSERT(!m_deletionHasBegun);
(gdb) bt
#0  0x00007f73a38b5600 in WebCore::Document::guardRef (this=0x22f00f0) at /build/WebKit/Source/WebCore/dom/Document.h:250
#1  0x00007f73a38de59a in WebCore::Document::removedLastRef (this=0x22f00f0) at /build/WebKit/Source/WebCore/dom/Document.cpp:649
#2  0x00007f73a38c7c4c in WebCore::callRemovedLastRef (self=0x22f0100) at /build/WebKit/Source/WebCore/dom/ContainerNode.cpp:91
#3  0x000000000048fe51 in WebCore::TreeShared&lt;WebCore::ContainerNode&gt;::deref (this=0x22f0100) at /build/WebKit/Source/WebCore/platform/TreeShared.h:94
#4  0x000000000049f9fb in WTF::derefIfNotNull&lt;WebCore::Document&gt; (ptr=0x22f00f0) at /build/WebKit/Source/WTF/wtf/PassRefPtr.h:52
#5  0x00007f73a3935934 in WTF::RefPtr&lt;WebCore::Document&gt;::operator= (this=0x22bdd60, o=...) at /build/WebKit/Source/WTF/wtf/RefPtr.h:134
#6  0x00007f73a3d60e60 in WebCore::Frame::setDocument (this=0x22bd880, newDoc=...) at /build/WebKit/Source/WebCore/page/Frame.cpp:299
#7  0x00007f73a3c82c2f in WebCore::FrameLoader::clear (this=0x22bd918, clearWindowProperties=false, clearScriptObjects=false, clearFrameView=true)
    at /build/WebKit/Source/WebCore/loader/FrameLoader.cpp:536
#8  0x00007f73a3c75df5 in WebCore::DocumentWriter::begin (this=0x23d8ca0, urlReference=..., dispatch=false, ownerDocument=0x0) at /build/WebKit/Source/WebCore/loader/DocumentWriter.cpp:129
#9  0x00007f73a3c688e3 in WebCore::DocumentLoader::commitData (this=0x23d8be0, bytes=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681) at /build/WebKit/Source/WebCore/loader/DocumentLoader.cpp:328
#10 0x00007f73a0b2a4e1 in WebCore::FrameLoaderClientEfl::committedLoad (this=0x22bd620, loader=0x23d8be0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681) at /build/WebKit/Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:131
#11 0x00007f73a3c68852 in WebCore::DocumentLoader::commitLoad (this=0x23d8be0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681) at /build/WebKit/Source/WebCore/loader/DocumentLoader.cpp:321
#12 0x00007f73a3c68ab7 in WebCore::DocumentLoader::receivedData (this=0x23d8be0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681) at /build/WebKit/Source/WebCore/loader/DocumentLoader.cpp:364
#13 0x00007f73a3c9d69b in WebCore::MainResourceLoader::addData (this=0x23d27c0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681, allAtOnce=false) at /build/WebKit/Source/WebCore/loader/MainResourceLoader.cpp:192
#14 0x00007f73a3cb02e2 in WebCore::ResourceLoader::didReceiveData (this=0x23d27c0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681, encodedDataLength=681, allAtOnce=false) at /build/WebKit/Source/WebCore/loader/ResourceLoader.cpp:272
#15 0x00007f73a3c9eb15 in WebCore::MainResourceLoader::didReceiveData (this=0x23d27c0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681, encodedDataLength=681, allAtOnce=false) at /build/WebKit/Source/WebCore/loader/MainResourceLoader.cpp:498
#16 0x00007f73a3cb0bd9 in WebCore::ResourceLoader::didReceiveData (this=0x23d27c0, data=
    0x23bcb70 &quot;&lt;!DOCTYPE&gt;\n\n&lt;html&gt;\n&lt;head&gt;\n  &lt;title&gt;Simple composited reflections&lt;/title&gt;\n  &lt;style type=\&quot;text/css\&quot; media=\&quot;screen\&quot;&gt;\n\n      img {\n        margin: 20px;\n      }\n\n      .compositing {\n        -webkit-trans&quot;..., length=681, encodedDataLength=681) at /build/WebKit/Source/WebCore/loader/ResourceLoader.cpp:429
#17 0x00007f73a47e8d76 in WebCore::readCallback (source=0x22a2d80, asyncResult=0x229d840, data=0x23af030) at /build/WebKit/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:875
#18 0x00007f739e02da99 in async_ready_callback_wrapper (source_object=0x22a2d80, res=0x229d840, user_data=0x23af030) at ginputstream.c:470
#19 0x00007f739e0400e7 in g_simple_async_result_complete (simple=0x229d840) at gsimpleasyncresult.c:767
#20 0x00007f739e040168 in complete_in_idle_cb_for_thread (_data=0x22a4bd0) at gsimpleasyncresult.c:835
#21 0x00007f739f68c623 in g_main_dispatch (context=0x23084f0) at gmain.c:2539
#22 g_main_context_dispatch (context=0x23084f0) at gmain.c:3075
#23 0x00007f73a83715e1 in _ecore_glib_select__locked (ecore_timeout=0x7fff0777ff40, efds=&lt;optimized out&gt;, wfds=&lt;optimized out&gt;, rfds=&lt;optimized out&gt;, ecore_fds=7, ctx=&lt;optimized out&gt;) at ecore_glib.c:171
#24 _ecore_glib_select (ecore_fds=7, rfds=&lt;optimized out&gt;, wfds=&lt;optimized out&gt;, efds=&lt;optimized out&gt;, ecore_timeout=0x7fff0777ff40) at ecore_glib.c:205
#25 0x00007f73a836b9ad in _ecore_main_select (timeout=&lt;optimized out&gt;) at ecore_main.c:1419
#26 0x00007f73a836c445 in _ecore_main_loop_iterate_internal (once_only=0) at ecore_main.c:1835
#27 0x00007f73a836c727 in ecore_main_loop_begin () at ecore_main.c:906
#28 0x00000000004636bb in runTest (cTestPathOrURL=0x7fff07780430 &quot;/build/WebKit/LayoutTests/compositing/masks/direct-image-mask.html&quot;)
    at /build/WebKit/Tools/DumpRenderTree/efl/DumpRenderTree.cpp:257
#29 0x0000000000463834 in runTestingServerLoop () at /build/WebKit/Tools/DumpRenderTree/efl/DumpRenderTree.cpp:283
#30 0x0000000000463e84 in main (argc=2, argv=0x7fff07781588) at /build/WebKit/Tools/DumpRenderTree/efl/DumpRenderTree.cpp:419</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644480</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 01:50:47 -0700</bug_when>
    <thetext>I am fixing it. Ten mins please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644488</commentid>
    <comment_count>29</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 01:59:32 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644489</commentid>
    <comment_count>30</comment_count>
      <attachid>146509</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 01:59:38 -0700</bug_when>
    <thetext>Created attachment 146509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644502</commentid>
    <comment_count>31</comment_count>
      <attachid>146517</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 02:16:25 -0700</bug_when>
    <thetext>Created attachment 146517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644503</commentid>
    <comment_count>32</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 02:20:28 -0700</bug_when>
    <thetext>Committed r119814: &lt;http://trac.webkit.org/changeset/119814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644620</commentid>
    <comment_count>33</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-08 06:22:57 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; So the problem comes down to the fact Node inherits from TreeShared&lt;ContainerNode&gt;. Because of this, we can&apos;t do static_cast&lt;T*&gt;(this) in TreeShared&lt;T&gt;::deref.
&gt; 
&gt; Does anyone know why we do this?

Filed bug 88653 and uploaded a patch to fix TreeShared&lt;ContainerNode&gt; to TreeShared&lt;Node&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645508</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:34:41 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; So the problem comes down to the fact Node inherits from TreeShared&lt;ContainerNode&gt;. Because of this, we can&apos;t do static_cast&lt;T*&gt;(this) in TreeShared&lt;T&gt;::deref.
&gt; 
&gt; Does anyone know why we do this?

We do this because the correct type for the parent of a Node is ContainerNode*, not Node*.

The right way to do this is to add a second type argument to TreeShared for the type of the element itself. The type currently passed in is the type of the parent. There’s no reason we can’t pass two types to the TreeShared template.

Please remove the messy callRemovedLastRef workaround and just change TreeShared so that it takes two types. Since TreeShared is only used for Node and SVGElementInstance that should be an easy change to make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645509</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:36:06 -0700</bug_when>
    <thetext>I wish this change hadn’t been made in such a hurry; it could have waited another day or two. That messy callRemovedLastRef thing is completely unnecessary and there was no need to ever land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645514</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 07:53:00 -0700</bug_when>
    <thetext>I’m going to fix the problems here. Patch coming soon. There were other minor mistakes in this patch:

There was a bad cast to ContainerNode* in callRemovedLastRef, which can be called on nodes that are not derived from ContainerNode.

There was no reason for SVGElementInstance&apos;s removedLastRef function to be a virtual function.

Adding new public removedLastRef functions was not good. I suggest using friend instead so these can be private.

The patch modified order files, which is not necessary or helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645522</commentid>
    <comment_count>37</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:10:25 -0700</bug_when>
    <thetext>Please, next time, wait until someone with experience with the class is available for review. The way this patch got the assertions in removedLastRef wrong caused churn, too, and indicates this was landed without sufficient testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645524</commentid>
    <comment_count>38</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 08:13:46 -0700</bug_when>
    <thetext>I believe that this regression, an increase in Node size, was *not* caused by TreeShared. It was caused when the EventTarget was created, causing Node to have multiple inheritance with virtual functions. TreeShared predated EventTarget by many years.

So this patch is a fix to a problem, increase in size of all nodes, caused by whoever added EventTarget. Someone should track down who that was and talk to them!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645577</commentid>
    <comment_count>39</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-10 10:28:47 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; I believe that this regression, an increase in Node size, was *not* caused by TreeShared. It was caused when the EventTarget was created, causing Node to have multiple inheritance with virtual functions. TreeShared predated EventTarget by many years.
&gt; 
&gt; So this patch is a fix to a problem, increase in size of all nodes, caused by whoever added EventTarget. Someone should track down who that was and talk to them!

Looks like you reviewed it. :) http://trac.webkit.org/changeset/18238

IMO, I don&apos;t think we gain anything from multiple inheritance here. If you rename TreeShared to NodeBase or something like that and have that inherit from EventTarget. Then you have a clean simple single-inheritance structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645586</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 11:22:16 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; If you rename TreeShared to NodeBase or something like that and have that inherit from EventTarget. Then you have a clean simple single-inheritance structure.

Yes, that’s a good plan.

TreeShared does not need to be a general purpose class. It can just be the class for what’s shared between SVGElementInstance and Node.

If we had done that we would not have had to do this work to devirtualize TreeShared.

We could consider rolling out all of this work and just doing that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645594</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-10 11:45:55 -0700</bug_when>
    <thetext>For anyone who wants to make improvements to TreeShared, I can think of a few changes that might be improvements:

1) We can make the type of the parent be a typedef in the node class rather than a template argument. It would work like this: a) We&apos;d remove the ParentNodeType argument from the template. b) We&apos;d add a ParentNodeType typedef to the template class itself that would default to NodeType. c) In Node, we’d do a typedef ContainerNode ParentNodeType. d) In the two places in the template where we use the parent type, we’d use &quot;typename NodeType::ParentNodeType&quot;, which would resolve to ContainerNode.

2) We can change the template&apos;s name to NodeBase and then feel free to move other code that Node wants to share with SVGElementInstance there. That does mean that the reference counting code might not be isolated from other concerns so it’s not entirely clear this is the right way to go.

3) Longer term, we can investigate doing the reference counting itself with RefCountedBase rather than repeating so much of what RefCountedBase does. We have talked about designs where we would find a different way for a parent to keep child nodes alive, perhaps by making firstChild and nextSibling be RefPtr, but it could be challenging to do that without creating a slowdown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645610</commentid>
    <comment_count>42</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-10 13:05:37 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; I wish this change hadn’t been made in such a hurry; it could have waited another day or two. That messy callRemovedLastRef thing is completely unnecessary and there was no need to ever land it.

(In reply to comment #35)
&gt; I wish this change hadn’t been made in such a hurry; it could have waited another day or two. That messy callRemovedLastRef thing is completely unnecessary and there was no need to ever land it.

Sorry, it&apos;s my fault :( I should have waited &apos;til you or Sam could take a look. Adding another type in the template is a brilliant idea indeed. Not sure why none of us involved in the initial discussion could think of that. Anyway, I&apos;m glad we got rid of the mess at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646156</commentid>
    <comment_count>43</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-11 11:57:32 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; 2) We can change the template&apos;s name to NodeBase and then feel free to move other code that Node wants to share with SVGElementInstance there. That does mean that the reference counting code might not be isolated from other concerns so it’s not entirely clear this is the right way to go.

I think we should do this even though you&apos;ve addressed the specific issue in this bug. I don&apos;t think there is much code to be shared between SVGElementInstance and Node other than what&apos;s already in TreeShared. So, renaming is more about making the code more understandable and making it so EventTarget can semantically be the super-class of TreeShared.

In my experience, TreeShared confuses everyone who first encounters it in a way that NodeBase wouldn&apos;t because it sounds like it needs to be something much more generic (a general tree data structure) than what it actually is (a common base class for Node and SVGElementInstance).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146267</attachid>
            <date>2012-06-07 05:56:21 -0700</date>
            <delta_ts>2012-06-07 17:50:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88528-20120607215620.patch</filename>
            <type>text/plain</type>
            <size>6310</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFmYzZkMWQ0MDcxM2E1
ZWE2ZmZhNTMzMmZmNDBjODY2OTljOGIxMi4uNmZmNDU0ZGNjODU0Mjk5NTIwZjVkYTdlMWJkZTMw
YWQ0OTc5MDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA2LTA3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBv
YmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIHZpcnR1YWwg
bWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQuaCwKKyAgICAgICAgYnkgd2hpY2ggd2UgY2FuIHJlbW92
ZSBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlICg4IGJ5dGUgaW4gYSA2NGJpdAorICAgICAgICBhcmNo
aXRlY2h0dXJlKSBmcm9tIGVhY2ggTm9kZS4gQ29uc2VxdWVudGx5LCB0aGlzIHBhdGNoIHJlZHVj
ZXMKKyAgICAgICAgTm9kZSBvYmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZS4KKwor
ICAgICAgICBlLmcuIFRoZSBIVE1MIHNwZWMgKGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvKQorICAgICAgICBjb250YWlucyAzMjU2NDAgTm9kZXMuIFRo
dXMgdGhpcyBwYXRjaCBzYXZlcyAzMjU2NDAgKiA4IGJ5dGUgPSAyLjYgTUIuCisKKyAgICAgICAg
LSBOb2RlIGFuZCBTVkdFbGVtZW50SW5zdGFuY2UgYXJlIHRoZSBvbmx5IGNsYXNzZXMgdGhhdCBp
bmhlcml0IFRyZWVTaGFyZWQuCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92ZXMgdmlydHVh
bCBkZXN0cnVjdG9yIGZyb20gVHJlZVNoYXJlZC4gVGhpcyByZW1vdmFsIGlzIHNhZmUKKyAgICAg
ICAgYmVjYXVzZSAoMSkgbm8gb25lIGNhbGxzICdkZWxldGUgdGhpcycgZm9yICd0aGlzJyBvZiB0
eXBlIFRyZWVTaGFyZWQqLAorICAgICAgICBhbmQgKDIpIGJvdGggTm9kZSBhbmQgU1ZHRWxlbWVu
dEluc3RhbmNlIGhhdmUgdmlydHVhbCBkZXN0cnVjdG9yLgorCisgICAgICAgIC0gVGhpcyBwYXRj
aCByZW1vdmVzIHZpcnR1YWwgVHJlZVNoYXJlZDo6cmVtb3ZlTGFzdFJlZigpIGFuZCBpbXBsZW1l
bnRzCisgICAgICAgIHZpcnR1YWwgTm9kZTo6cmVtb3ZlTGFzdFJlZigpIGFuZCB2aXJ0dWFsIFNW
R0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlTGFzdFJlZigpLgorICAgICAgICBOb2RlOjpyZW1vdmVM
YXN0UmVmKCkgY2FsbHMgJ2RlbGV0ZSB0aGlzJyBmb3IgJ3RoaXMnIG9mIHR5cGUgTm9kZSosCisg
ICAgICAgIGFuZCBTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZUxhc3RSZWYoKSBjYWxscyAnZGVs
ZXRlIHRoaXMnIGZvciAndGhpcycgb2YgdHlwZQorICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2Uq
LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gQ29uZmlybSBubyByZWdyZXNzaW9u
IGluIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FsbFJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVk
TGFzdFJlZik6CisgICAgICAgICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChUcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFy
ZWQ6OmRlcmVmKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGxSZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKToKKwogMjAxMi0wNi0wNyAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV2luXSBVc2UgT1Mo
V0lORE9XUykgaW5zdGVhZCBvZiBRX1dTX1dJTiBpbiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXgg
YzIzYTBiOWU5MGQwMGIyZGE0OWQ5NmEzOTg1MmI3N2RjMzY0M2I3ZC4uY2U4YTE1ZjJiODU1MWEy
NzM4MGRiOTJhOGYzODJkNzk0MmIzZTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcApAQCAtODYsNiArODYsMTEgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGls
ZHJlbigpCiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJO
b2RlPih0aGlzKTsKIH0KIAordm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPiogc2VsZikKK3sKKyAgICBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4oc2Vs
ZiktPnJlbW92ZWRMYXN0UmVmKCk7Cit9CisKIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENo
aWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAgTm9kZVZlY3RvciBj
aGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNhYWQ4M2Y2NTJiMzdmMjY0ODk1MmVkYjMyZTE3MzVi
ZGFmMmE2MDEuLjI5ZWZmZTNmOGI3NTJlYjRjMGZhN2VlNDYyZjU3ZjJmYzY2ZWNjZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3R5bGVDaGFu
Z2UgZGlmZihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKiwgRG9jdW1lbnQq
KTsKIAogICAgIHZpcnR1YWwgfk5vZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RS
ZWYoKSB7IGRlbGV0ZSB0aGlzOyB9CiAKICAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMg
Zm9yIE5vZGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJl
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDgwODUyNGNk
Yjc0N2MzYjZiZThlMTQzYWQzZmM0OTBhMWRkNzU5ZmMuLmZmZDRkNWZjMTNhYmFlYmU5NGUwYzc4
MjRjOWEzNDk2YWIxODE0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ry
ZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAg
LTMyLDYgKzMyLDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxUPiopOwogI2VuZGlm
CiAKK2NsYXNzIENvbnRhaW5lck5vZGU7CitjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkOworCisvLyBBbGwgY2xhc3NlcyB0aGF0
IGluaGVyaXQgVHJlZVNoYXJlZCBuZWVkIHRvIGRlZmluZQorLy8gY2FsbFJlbW92ZWRMYXN0UmVm
KFRyZWVTaGFyZWQ8VD4qKS4gVGhpcyBpcyBuZWNlc3NhcnkKKy8vIHRvIGtpbGwgYWxsIHZpcnR1
YWwgbWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQsIGJ5IHdoaWNoCisvLyB3ZSBjYW4gc2F2ZSA4IGJ5
dGUgZm9yIHRoZSB2aXJ0dWFsIG1ldGhvZCB0YWJsZS4KK3ZvaWQgY2FsbFJlbW92ZWRMYXN0UmVm
KFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4qKTsKK3ZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRy
ZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiopOworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBj
bGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmVlU2hhcmVkKTsK
IHB1YmxpYzoKQEAgLTQ4LDYgKzU5LDggQEAgcHVibGljOgogICAgICAgICBtX2luUmVtb3ZlZExh
c3RSZWZGdW5jdGlvbiA9IGZhbHNlOwogI2VuZGlmCiAgICAgfQorCisjaWZuZGVmIE5ERUJVRwog
ICAgIHZpcnR1YWwgflRyZWVTaGFyZWQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKQEAgLTU1LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9kZWxl
dGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAg
ICAgfQorI2VuZGlmCiAKICAgICB2b2lkIHJlZigpCiAgICAgewpAQCAtNzUsOCArODksOSBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9wYXJlbnQpIHsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRy
dWU7CisgICAgICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCi0gICAg
ICAgICAgICByZW1vdmVkTGFzdFJlZigpOworICAgICAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVm
KHRoaXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDksMTUgKzEyNCw2IEBAIHB1YmxpYzoK
ICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwogI2VuZGlmCiAKLXByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYoKQotICAgIHsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAg
ZGVsZXRlIHRoaXM7Ci0gICAgfQotCiBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBmcmll
bmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxUPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudEluc3RhbmNlLmNwcAppbmRleCA1MWIxN2U2ZjNlMGFkNzQyMjkxYTcwNjhlYzQ3M2Nh
MTc0NjRhNzk3Li5jM2Q2ZjA4OGUwYjczYmQ2YmEwZjVkODEzMzY3NTliNzQ0ZWYyZDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcApAQCAtNzIsNiArNzIsMTEg
QEAgU1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudEluc3RhbmNlKCkKICAgICBtX2VsZW1l
bnQgPSAwOwogfQogCit2b2lkIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hhcmVkPFNWR0VsZW1l
bnRJbnN0YW5jZT4qIHNlbGYpCit7CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudEluc3RhbmNl
Kj4oc2VsZiktPnJlbW92ZWRMYXN0UmVmKCk7Cit9CisKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNl
OjpkZXRhY2goKQogewogICAgIC8vIENsZWFyIGFsbCBwb2ludGVycy4gV2hlbiB0aGUgbm9kZSBp
cyBkZXRhY2hlZCBmcm9tIHRoZSBzaGFkb3cgRE9NIGl0IHNob3VsZCBiZSByZW1vdmVkIGJ1dCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCAzMTliOWVkZjhlYjIy
OTMxZjYxYTdhZjRjMjJmYzlhNjhlMzFiY2ZkLi5kZjE0MjA5MzAxYTI0M2Y5MTFmZDI3Nzc1OWJi
NjEzMDBlNWUxNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElu
c3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBA
IC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50
SW5zdGFuY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYoKSB7IGRlbGV0ZSB0
aGlzOyB9OwogCiAgICAgdm9pZCBzZXRQYXJlbnRPckhvc3ROb2RlKFNWR0VsZW1lbnRJbnN0YW5j
ZSogaW5zdGFuY2UpIHsgc2V0UGFyZW50KGluc3RhbmNlKTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146433</attachid>
            <date>2012-06-07 17:50:57 -0700</date>
            <delta_ts>2012-06-07 17:53:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88528-20120608095056.patch</filename>
            <type>text/plain</type>
            <size>13489</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFmYzZkMWQ0MDcxM2E1
ZWE2ZmZhNTMzMmZmNDBjODY2OTljOGIxMi4uNDVlYzM1ZDIyNWE2MDY1ODQyZDYzMDc0YzA1YjIw
ZWFmNmJhZmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA2LTA3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBv
YmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIHZpcnR1YWwg
bWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQuaCwKKyAgICAgICAgYnkgd2hpY2ggd2UgY2FuIHJlbW92
ZSBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgKDggYnl0ZQorICAgICAgICBpbiBhIDY0
Yml0IGFyY2hpdGVjaHR1cmUpIGZyb20gZWFjaCBOb2RlIG9iamVjdC4gQ29uc2VxdWVudGx5LAor
ICAgICAgICB0aGlzIHBhdGNoIHJlZHVjZXMgdGhlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBi
eXRlIHRvIDY0IGJ5dGUuCisKKyAgICAgICAgZS5nLiBUaGUgSFRNTCBzcGVjIChodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLykKKyAgICAgICAgY29udGFp
bnMgMzI1NjQwIE5vZGUgb2JqZWN0cy4gVGh1cyB0aGlzIHBhdGNoIHNhdmVzIDMyNTY0MCAqIDgg
Ynl0ZSA9IDIuNiBNQi4KKworICAgICAgICBlLmcuIHNpemVvZihFbGVtZW50KSBpcyByZWR1Y2Vk
IGZyb20gMTA0IGJ5dGUgdG8gOTYgYnl0ZS4KKworICAgICAgICAtIEluIG11bHRpcGxlIGluaGVy
aXRhbmNlLCBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgaXMgYWxsb2NhdGVkCisgICAg
ICAgIGZvciBlYWNoIGJhc2UgY2xhc3MgdGhhdCBoYXMgdmlydHVhbCBtZXRob2RzLiBGb3IgZXhh
bXBsZSwgZm9yCisgICAgICAgICdjbGFzcyBBIDogcHVibGljIEIsIEMge307JyB3aGVyZSBCIGFu
ZCBDIGhhdmUgdmlydHVhbCBtZXRob2RzLAorICAgICAgICB0d28gdmlydHVhbCBtZXRob2QgdGFi
bGUgcG9pbnRlcnMgYXJlIGFsbG9jYXRlZCBmb3IgZWFjaCBBIG9iamVjdC4KKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgQSA9IE5vZGUsIEIgPSBFdmVudFRhcmdldCwgYW5kIEMgPSBUcmVlU2hhcmVk
LgorICAgICAgICBCeSByZW1vdmluZyB0aGUgdmlydHVhbCBtZXRob2RzIGZyb20gVHJlZVNoYXJl
ZCwgd2UgY2FuIHNhdmUgdGhlIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kIHRhYmxlIHBvaW50ZXIg
Zm9yIFRyZWVTaGFyZWQuIDggYnl0ZSBzYXZpbmcuCisKKyAgICAgICAgLSBOb2RlIGFuZCBTVkdF
bGVtZW50SW5zdGFuY2UgYXJlIHRoZSBvbmx5IGNsYXNzZXMgdGhhdCBpbmhlcml0IFRyZWVTaGFy
ZWQuCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92ZXMgdmlydHVhbCBUcmVlU2hhcmVkOjpy
ZW1vdmVMYXN0UmVmKCkgYW5kIGltcGxlbWVudHMKKyAgICAgICAgdmlydHVhbCBOb2RlOjpyZW1v
dmVMYXN0UmVmKCkgYW5kIHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVMYXN0UmVm
KCkuCisgICAgICAgIE5vZGU6OnJlbW92ZUxhc3RSZWYoKSBjYWxscyAnZGVsZXRlIHRoaXMnIGZv
ciAndGhpcycgb2YgdHlwZSBOb2RlKiwKKyAgICAgICAgYW5kIFNWR0VsZW1lbnRJbnN0YW5jZTo6
cmVtb3ZlTGFzdFJlZigpIGNhbGxzICdkZWxldGUgdGhpcycgZm9yICd0aGlzJyBvZiB0eXBlCisg
ICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSouCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92
ZXMgdGhlIHZpcnR1YWwgZGVzdHJ1Y3RvciBvZiBUcmVlU2hhcmVkLiBUaGlzIHJlbW92YWwgaXMg
c2FmZQorICAgICAgICBiZWNhdXNlICgxKSBubyBvbmUgY2FsbHMgJ2RlbGV0ZSB0aGlzJyBmb3Ig
J3RoaXMnIG9mIHR5cGUgVHJlZVNoYXJlZCosCisgICAgICAgIGFuZCAoMikgYm90aCBOb2RlIGFu
ZCBTVkdFbGVtZW50SW5zdGFuY2UgaGF2ZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLiBDb25maXJtIG5vIHJlZ3Jlc3Npb24gaW4gZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsUmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRMYXN0UmVmKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYpOgorCisyMDEyLTA2LTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNhbGxSZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlZExhc3RS
ZWYpOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoVHJlZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpk
ZXJlZik6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjYWxsUmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZik6CisKIDIwMTItMDYtMDcgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dpbl0gVXNlIE9TKFdJTkRP
V1MpIGluc3RlYWQgb2YgUV9XU19XSU4gaW4gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRkOWU4ZjcyYmNjNTEzOTRkNDAxZWYy
MjdlZTE1ODVhZGVhNWViNWEuLmU3Y2JkODE1NjIzZjg2M2YwYjI4OWNjNDA2NDAwNmIxMzc2ZTE0
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNyAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVkdWNlIE5vZGUgb2Jq
ZWN0IHNpemUgZnJvbSA3MiBieXRlIHRvIDY0IGJ5dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzeW1ib2wgZm9yIGNhbGxSZW1vdmVkTGFz
dFJlZigpLgorCisgICAgICAgICogV2ViS2l0Lm9yZGVyOgorCiAyMDEyLTA2LTA2ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBXcmFwIHVwcGVyY2FzZVdvcmQsIGxv
d2VyY2FzZVdvcmQsIGFuZCBjYXBpdGFsaXplV29yZCB3aXRoIFVTRShBUFBLSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggN2MwZDkyMWFlNmIyZGQzYWM2ZDMwM2MxMzM2MGU4M2NmMzQ0MTMyZS4uMjJkNTIzODcx
MGZiZTBiMDIxZmZmZTFlZWI3ZTc5OWE4NDc5OTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEyLTA2LTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZWR1Y2UgTm9kZSBvYmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHN5
bWJvbCBmb3IgY2FsbFJlbW92ZWRMYXN0UmVmKCkuCisKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5v
cmRlcjoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJD
RkxpdGUuZGVmOgorCiAyMDEyLTA2LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgQVBJIHRvIHJlZ2lzdGVyIGN1c3RvbSBV
Ukkgc2NoZW1lcyB0byBXZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKaW5kZXggYzIzYTBiOWU5MGQwMGIyZGE0OWQ5NmEzOTg1MmI3N2RjMzY0M2I3ZC4uY2U4
YTE1ZjJiODU1MWEyNzM4MGRiOTJhOGYzODJkNzk0MmIzZTI2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcApAQCAtODYsNiArODYsMTEgQEAgdm9pZCBDb250YWluZXJOb2RlOjpy
ZW1vdmVBbGxDaGlsZHJlbigpCiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2Rl
LCBDb250YWluZXJOb2RlPih0aGlzKTsKIH0KIAordm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJl
ZVNoYXJlZDxDb250YWluZXJOb2RlPiogc2VsZikKK3sKKyAgICBzdGF0aWNfY2FzdDxDb250YWlu
ZXJOb2RlKj4oc2VsZiktPnJlbW92ZWRMYXN0UmVmKCk7Cit9CisKIHZvaWQgQ29udGFpbmVyTm9k
ZTo6dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiB7CiAgICAg
Tm9kZVZlY3RvciBjaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNhYWQ4M2Y2NTJiMzdmMjY0ODk1
MmVkYjMyZTE3MzViZGFmMmE2MDEuLjI5ZWZmZTNmOGI3NTJlYjRjMGZhN2VlNDYyZjU3ZjJmYzY2
ZWNjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU3R5bGVDaGFuZ2UgZGlmZihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxl
KiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgfk5vZGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZExhc3RSZWYoKSB7IGRlbGV0ZSB0aGlzOyB9CiAKICAgICAvLyBET00gbWV0aG9kcyAm
IGF0dHJpYnV0ZXMgZm9yIE5vZGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVHJlZVNoYXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmlu
ZGV4IDgwODUyNGNkYjc0N2MzYjZiZThlMTQzYWQzZmM0OTBhMWRkNzU5ZmMuLmZmZDRkNWZjMTNh
YmFlYmU5NGUwYzc4MjRjOWEzNDk2YWIxODE0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVl
U2hhcmVkLmgKQEAgLTMyLDYgKzMyLDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFRy
ZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxU
PiopOwogI2VuZGlmCiAKK2NsYXNzIENvbnRhaW5lck5vZGU7CitjbGFzcyBTVkdFbGVtZW50SW5z
dGFuY2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkOworCisvLyBBbGwg
Y2xhc3NlcyB0aGF0IGluaGVyaXQgVHJlZVNoYXJlZCBuZWVkIHRvIGRlZmluZQorLy8gY2FsbFJl
bW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8VD4qKS4gVGhpcyBpcyBuZWNlc3NhcnkKKy8vIHRvIGtp
bGwgYWxsIHZpcnR1YWwgbWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQsIGJ5IHdoaWNoCisvLyB3ZSBj
YW4gc2F2ZSA4IGJ5dGUgZm9yIHRoZSB2aXJ0dWFsIG1ldGhvZCB0YWJsZS4KK3ZvaWQgY2FsbFJl
bW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4qKTsKK3ZvaWQgY2FsbFJlbW92
ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiopOworCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
cmVlU2hhcmVkKTsKIHB1YmxpYzoKQEAgLTQ4LDYgKzU5LDggQEAgcHVibGljOgogICAgICAgICBt
X2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwogI2VuZGlmCiAgICAgfQorCisjaWZu
ZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgflRyZWVTaGFyZWQoKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTU1LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNS
ZXF1aXJlZCk7CiAgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIHJlZigpCiAgICAgewpAQCAtNzUs
OCArODksOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9w
YXJlbnQpIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbiA9IHRydWU7CisgICAgICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwog
I2VuZGlmCi0gICAgICAgICAgICByZW1vdmVkTGFzdFJlZigpOworICAgICAgICAgICAgY2FsbFJl
bW92ZWRMYXN0UmVmKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMDksMTUgKzEyNCw2
IEBAIHB1YmxpYzoKICAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwogI2VuZGlm
CiAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYoKQotICAgIHsK
LSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5k
aWYKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCiBwcml2YXRlOgogI2lmbmRlZiBOREVC
VUcKICAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxUPiopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAppbmRleCA1MWIxN2U2ZjNlMGFkNzQyMjkx
YTcwNjhlYzQ3M2NhMTc0NjRhNzk3Li5jM2Q2ZjA4OGUwYjczYmQ2YmEwZjVkODEzMzY3NTliNzQ0
ZWYyZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcApAQCAt
NzIsNiArNzIsMTEgQEAgU1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudEluc3RhbmNlKCkK
ICAgICBtX2VsZW1lbnQgPSAwOwogfQogCit2b2lkIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hh
cmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4qIHNlbGYpCit7CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudEluc3RhbmNlKj4oc2VsZiktPnJlbW92ZWRMYXN0UmVmKCk7Cit9CisKIHZvaWQgU1ZHRWxl
bWVudEluc3RhbmNlOjpkZXRhY2goKQogewogICAgIC8vIENsZWFyIGFsbCBwb2ludGVycy4gV2hl
biB0aGUgbm9kZSBpcyBkZXRhY2hlZCBmcm9tIHRoZSBzaGFkb3cgRE9NIGl0IHNob3VsZCBiZSBy
ZW1vdmVkIGJ1dCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCAz
MTliOWVkZjhlYjIyOTMxZjYxYTdhZjRjMjJmYzlhNjhlMzFiY2ZkLi5kZjE0MjA5MzAxYTI0M2Y5
MTFmZDI3Nzc1OWJiNjEzMDBlNWUxNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5TVkdFbGVtZW50SW5zdGFuY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYo
KSB7IGRlbGV0ZSB0aGlzOyB9OwogCiAgICAgdm9pZCBzZXRQYXJlbnRPckhvc3ROb2RlKFNWR0Vs
ZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpIHsgc2V0UGFyZW50KGluc3RhbmNlKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJLaXQub3JkZXIKaW5kZXggMjdlOTQxZWU3YzY3OTE0MzEyMDhlODBkMmVlYWEwNjYwZTUx
NGU2Yy4uNDNhZDE5YTgzMDI4MjJjNWMwODU0ZjhhMjIwN2RlMDIzYzZiZWU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYktpdC5vcmRlcgpAQCAtMTM0OSw2ICsxMzQ5LDcgQEAgX19aTjNXVEY2VmVjdG9ySU43V2Vi
Q29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFMTVyZXNlcnZlQ2FwYWNpdHlFbQogX19aTjNX
VEYxMVZlY3Rvck1vdmVySUxiMEVON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVFNG1vdmVF
UEtTMl9TNV9QUzJfCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxt
MEVFQzJFUktTM18KIF9fWk43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RDFFdgorX19aTjdX
ZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5l
ck5vZGVFRUUKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxM0dyYW1tYXJEZXRhaWxFTG0wRUVE
MUV2CiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUUx
NHNocmlua0NhcGFjaXR5RW0KIF9fWk4xNVdlYkVkaXRvckNsaWVudDI1c2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZUVQTjdXZWJDb3JlMTFIVE1MRWxlbWVudEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3Jk
ZXIKaW5kZXggMDQxZjg5ZWZiMTFlYjRjZmUyZDU1NDllMTdkMDNhMmQ4OTRmYTA4ZC4uMjFjYTJm
ZjZjZTNhYmJlN2NlNzE0NjE0NTNkYzYzNWUyOWUzNmVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvbWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIu
b3JkZXIKQEAgLTI0OTEsNiArMjQ5MSw3IEBAIF9fWk4zV1RGMTFWZWN0b3JNb3ZlcklMYjBFTjdX
ZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFRTRtb3ZlRVBLUzJfUzVfUFMyXwogX19aTjdXZWJD
b3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRDMkVSS1MwXwogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29y
ZTEzR3JhbW1hckRldGFpbEVMbTBFRUMyRVJLUzNfCiBfX1pON1dlYkNvcmUxOFRleHRDaGVja2lu
Z1Jlc3VsdEQyRXYKK19fWk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVmRVBOU18xMFRyZWVT
aGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMTNH
cmFtbWFyRGV0YWlsRUxtMEVFRDJFdgogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4VGV4dENo
ZWNraW5nUmVzdWx0RUxtMEVFMTRzaHJpbmtDYXBhY2l0eUVtCiBfX1pOM1dURjZWZWN0b3JJTjdX
ZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUU2c2hyaW5rRW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgppbmRleCAwYmFmNjRhZDk5NjgwZDI3Njc3OGY4OGVjMDkxYmU2ZDFmMTE3ODNiLi4yYTNk
MzJmYmVjMzE2ZjY0MGNiMjk2ZWU0ZWQzMGJkMDcyNTUxYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCkBAIC0xNjEsNiArMTYxLDcgQEAgRVhQT1JUUwogICAgICAgICA/YWRkQEF0b21pY1N0cmlu
Z0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJFQFoKICAgICAg
ICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJp
bmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVj
dHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFA
UEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKKyAgICAgICAgP2NhbGxSZW1vdmVkTGFzdFJlZkBXZWJD
b3JlQEBZQVhQQVY/JFRyZWVTaGFyZWRAVkNvbnRhaW5lck5vZGVAV2ViQ29yZUBAQDFAQFoKICAg
ICAgICAgP2NyZWF0ZUBIVE1MQ29udGVudEVsZW1lbnRAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQ
dHJAVkhUTUxDb250ZW50RWxlbWVudEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEBaCiAg
ICAgICAgID9jcmVhdGVAUmFuZ2VAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdl
YkNvcmVAQEBXVEZAQFY/JFBhc3NSZWZQdHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NS
ZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFoKICAgICAgICAgP2NyZWF0ZUBTaGFkb3dSb290
QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTaGFkb3dSb290QFdlYkNvcmVAQEBXVEZAQFBB
VkVsZW1lbnRAMkBBQUhAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDc1
NzQ4Mjg0ZWEwOWRmMDA1OWQ0ZmJjN2M3ZDA4NDMwZDNhMmY4YmMuLjNkZmRhOGU5NmMxMTYyZDQx
NTFjM2U4NGE3YzkxMWMyYjljMWE4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYKQEAgLTEwOCw2ICsxMDgsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MVRocmVhZENvbmRpdGlv
bkBXVEZAQFFBRUBYWgogICAgICAgICA/YnJvYWRjYXN0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFB
RVhYWgogICAgICAgICA/Y2FsbE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgorICAg
ICAgICA/Y2FsbFJlbW92ZWRMYXN0UmVmQFdlYkNvcmVAQFlBWFBBVj8kVHJlZVNoYXJlZEBWQ29u
dGFpbmVyTm9kZUBXZWJDb3JlQEBAMUBAWgogICAgICAgICA/Y29uc29sZU1lc3NhZ2VBcmd1bWVu
dENvdW50c0BJbnNwZWN0b3JDb25zb2xlQWdlbnRAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JASSQw
QUBAV1RGQEBYWgogICAgICAgICA/Y291bnRlclZhbHVlQEluc3BlY3RvckNvdW50ZXJzQFdlYkNv
cmVAQFNBSFc0Q291bnRlclR5cGVAMTJAQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlB
SVA2QVBBWFBBWEBaMFBCREBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBjNTkwMjgwYTgx
MjYyMzBjNWM0MzQ4YjkwODhmMzdmNzI3MTIzN2QwLi5lOTdkYmY0YjY2ZTk4MzZkMTNlYWFkNDA1
YTk1N2IyOTE4MmJlMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTYzLDYgKzYzLDcg
QEAgX1pON1dlYkNvcmUxNnNjcmlwdE5hbWVUb0NvZGVFUktOM1dURjZTdHJpbmdFOwogX1pON1dl
YkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlT
dHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTE3SW5zcGVjdG9yQ291bnRl
cnMxMmNvdW50ZXJWYWx1ZUVOUzBfMTFDb3VudGVyVHlwZUU7CiBfWk43V2ViQ29yZTE4SFRNTENv
bnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKK19aTjdXZWJDb3JlMThjYWxsUmVt
b3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRUU7CiBfWk43
V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNG
cm9tSW50ZXJuYWxzRWlpOwogX1pON1dlYkNvcmUyMUluc3BlY3RvckNvbnNvbGVBZ2VudDI4Y29u
c29sZU1lc3NhZ2VBcmd1bWVudENvdW50c0V2OwogX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlv
bkZvclBhZ2VFUE5TXzRQYWdlRTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCA0YjQ1MThmY2Y4ZDA1MTJiZTRhNzMyYjEzMDkwYzI0YmI4Y2M3YzAxLi5iY2ViYjA3NmZl
NzA3M2E2NjdiODZkYmIyYjc2OTM1YWE4OGE1MDVlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDYtMDcgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZHVjZSBOb2RlIG9iamVjdCBzaXpl
IGZyb20gNzIgYnl0ZSB0byA2NCBieXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04ODUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgc3ltYm9sIGZvciBjYWxsUmVtb3ZlZExhc3RSZWYoKS4K
KworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDYt
MDYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBn
aXQgYWJvdXQgbG9jYWxpemFibGUgKi5zdHJpbmdzIGZpbGVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146436</attachid>
            <date>2012-06-07 17:53:31 -0700</date>
            <delta_ts>2012-06-07 18:07:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88528-20120608095330.patch</filename>
            <type>text/plain</type>
            <size>12968</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFmYzZkMWQ0MDcxM2E1
ZWE2ZmZhNTMzMmZmNDBjODY2OTljOGIxMi4uZTRlNTNjZDJmNGUxZGNmOWNmYjkwM2YwMjQ3Mzg4
NzYwOGU2OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTA3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBv
YmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIHZpcnR1YWwg
bWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQuaCwKKyAgICAgICAgYnkgd2hpY2ggd2UgY2FuIHJlbW92
ZSBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgKDggYnl0ZQorICAgICAgICBpbiBhIDY0
Yml0IGFyY2hpdGVjaHR1cmUpIGZyb20gZWFjaCBOb2RlIG9iamVjdC4gQ29uc2VxdWVudGx5LAor
ICAgICAgICB0aGlzIHBhdGNoIHJlZHVjZXMgdGhlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBi
eXRlIHRvIDY0IGJ5dGUuCisKKyAgICAgICAgZS5nLiBUaGUgSFRNTCBzcGVjIChodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLykKKyAgICAgICAgY29udGFp
bnMgMzI1NjQwIE5vZGUgb2JqZWN0cy4gVGh1cyB0aGlzIHBhdGNoIHNhdmVzIDMyNTY0MCAqIDgg
Ynl0ZSA9IDIuNiBNQi4KKworICAgICAgICBlLmcuIHNpemVvZihFbGVtZW50KSBpcyByZWR1Y2Vk
IGZyb20gMTA0IGJ5dGUgdG8gOTYgYnl0ZS4KKworICAgICAgICAtIEluIG11bHRpcGxlIGluaGVy
aXRhbmNlLCBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgaXMgYWxsb2NhdGVkCisgICAg
ICAgIGZvciBlYWNoIGJhc2UgY2xhc3MgdGhhdCBoYXMgdmlydHVhbCBtZXRob2RzLiBGb3IgZXhh
bXBsZSwgZm9yCisgICAgICAgICdjbGFzcyBBIDogcHVibGljIEIsIEMge307JyB3aGVyZSBCIGFu
ZCBDIGhhdmUgdmlydHVhbCBtZXRob2RzLAorICAgICAgICB0d28gdmlydHVhbCBtZXRob2QgdGFi
bGUgcG9pbnRlcnMgYXJlIGFsbG9jYXRlZCBmb3IgZWFjaCBBIG9iamVjdC4KKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgQSA9IE5vZGUsIEIgPSBFdmVudFRhcmdldCwgYW5kIEMgPSBUcmVlU2hhcmVk
LgorICAgICAgICBCeSByZW1vdmluZyB0aGUgdmlydHVhbCBtZXRob2RzIGZyb20gVHJlZVNoYXJl
ZCwgd2UgY2FuIHNhdmUgdGhlIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kIHRhYmxlIHBvaW50ZXIg
Zm9yIFRyZWVTaGFyZWQuIDggYnl0ZSBzYXZpbmcuCisKKyAgICAgICAgLSBOb2RlIGFuZCBTVkdF
bGVtZW50SW5zdGFuY2UgYXJlIHRoZSBvbmx5IGNsYXNzZXMgdGhhdCBpbmhlcml0IFRyZWVTaGFy
ZWQuCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92ZXMgdmlydHVhbCBUcmVlU2hhcmVkOjpy
ZW1vdmVMYXN0UmVmKCkgYW5kIGltcGxlbWVudHMKKyAgICAgICAgdmlydHVhbCBOb2RlOjpyZW1v
dmVMYXN0UmVmKCkgYW5kIHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVMYXN0UmVm
KCkuCisgICAgICAgIE5vZGU6OnJlbW92ZUxhc3RSZWYoKSBjYWxscyAnZGVsZXRlIHRoaXMnIGZv
ciAndGhpcycgb2YgdHlwZSBOb2RlKiwKKyAgICAgICAgYW5kIFNWR0VsZW1lbnRJbnN0YW5jZTo6
cmVtb3ZlTGFzdFJlZigpIGNhbGxzICdkZWxldGUgdGhpcycgZm9yICd0aGlzJyBvZiB0eXBlCisg
ICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSouCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92
ZXMgdGhlIHZpcnR1YWwgZGVzdHJ1Y3RvciBvZiBUcmVlU2hhcmVkLiBUaGlzIHJlbW92YWwgaXMg
c2FmZQorICAgICAgICBiZWNhdXNlICgxKSBubyBvbmUgY2FsbHMgJ2RlbGV0ZSB0aGlzJyBmb3Ig
J3RoaXMnIG9mIHR5cGUgVHJlZVNoYXJlZCosCisgICAgICAgIGFuZCAoMikgYm90aCBOb2RlIGFu
ZCBTVkdFbGVtZW50SW5zdGFuY2UgaGF2ZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLiBDb25maXJtIG5vIHJlZ3Jlc3Npb24gaW4gZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsUmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRMYXN0UmVmKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYpOgorCiAyMDEyLTA2LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXaW5dIFVzZSBPUyhXSU5ET1dTKSBpbnN0
ZWFkIG9mIFFfV1NfV0lOIGluIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZDllOGY3MmJjYzUxMzk0ZDQwMWVmMjI3ZWUxNTg1
YWRlYTVlYjVhLi5lN2NiZDgxNTYyM2Y4NjNmMGIyODljYzQwNjQwMDZiMTM3NmUxNDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDYtMDcgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZHVjZSBOb2RlIG9iamVjdCBzaXpl
IGZyb20gNzIgYnl0ZSB0byA2NCBieXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04ODUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgc3ltYm9sIGZvciBjYWxsUmVtb3ZlZExhc3RSZWYoKS4K
KworICAgICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxMi0wNi0wNiAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgV3JhcCB1cHBlcmNhc2VXb3JkLCBsb3dlcmNhc2VX
b3JkLCBhbmQgY2FwaXRhbGl6ZVdvcmQgd2l0aCBVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdj
MGQ5MjFhZTZiMmRkM2FjNmQzMDNjMTMzNjBlODNjZjM0NDEzMmUuLjIyZDUyMzg3MTBmYmUwYjAy
MWZmZmUxZWViN2U3OTlhODQ3OTk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
Mi0wNi0wNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmVkdWNlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBieXRlIHRvIDY0IGJ5dGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzeW1ib2wgZm9y
IGNhbGxSZW1vdmVkTGFzdFJlZigpLgorCisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6Cisg
ICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZjoKKwogMjAxMi0wNi0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIEFQSSB0byByZWdpc3RlciBjdXN0b20gVVJJIHNjaGVt
ZXMgdG8gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IGMyM2EwYjllOTBkMDBiMmRhNDlkOTZhMzk4NTJiNzdkYzM2NDNiN2QuLmNlOGExNWYyYjg1
NTFhMjczODBkYjkyYThmMzgyZDc5NDJiM2UyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTg2LDYgKzg2LDExIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxs
Q2hpbGRyZW4oKQogICAgIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwgQ29udGFp
bmVyTm9kZT4odGhpcyk7CiB9CiAKK3ZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8
Q29udGFpbmVyTm9kZT4qIHNlbGYpCit7CisgICAgc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+
KHNlbGYpLT5yZW1vdmVkTGFzdFJlZigpOworfQorCiB2b2lkIENvbnRhaW5lck5vZGU6OnRha2VB
bGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogewogICAgIE5vZGVWZWN0
b3IgY2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzYWFkODNmNjUyYjM3ZjI2NDg5NTJlZGIzMmUx
NzM1YmRhZjJhNjAxLi4yOWVmZmUzZjhiNzUyZWI0YzBmYTdlZTQ2MmY1N2YyZmM2NmVjY2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0eWxl
Q2hhbmdlIGRpZmYoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJTdHlsZSosIERvY3Vt
ZW50Kik7CiAKICAgICB2aXJ0dWFsIH5Ob2RlKCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRM
YXN0UmVmKCkgeyBkZWxldGUgdGhpczsgfQogCiAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1
dGVzIGZvciBOb2RlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVT
aGFyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCA4MDg1
MjRjZGI3NDdjM2I2YmU4ZTE0M2FkM2ZjNDkwYTFkZDc1OWZjLi5mZmQ0ZDVmYzEzYWJhZWJlOTRl
MGM3ODI0YzlhMzQ5NmFiMTgxNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UcmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5o
CkBAIC0zMiw2ICszMiwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8VD4qKTsKICNl
bmRpZgogCitjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVHJlZVNoYXJlZDsKKworLy8gQWxsIGNsYXNzZXMg
dGhhdCBpbmhlcml0IFRyZWVTaGFyZWQgbmVlZCB0byBkZWZpbmUKKy8vIGNhbGxSZW1vdmVkTGFz
dFJlZihUcmVlU2hhcmVkPFQ+KikuIFRoaXMgaXMgbmVjZXNzYXJ5CisvLyB0byBraWxsIGFsbCB2
aXJ0dWFsIG1ldGhvZHMgZnJvbSBUcmVlU2hhcmVkLCBieSB3aGljaAorLy8gd2UgY2FuIHNhdmUg
OCBieXRlIGZvciB0aGUgdmlydHVhbCBtZXRob2QgdGFibGUuCit2b2lkIGNhbGxSZW1vdmVkTGFz
dFJlZihUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+Kik7Cit2b2lkIGNhbGxSZW1vdmVkTGFzdFJl
ZihUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4qKTsKKwogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgVHJlZVNoYXJlZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJlZVNoYXJl
ZCk7CiBwdWJsaWM6CkBAIC00OCw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKICNlbmRpZgogICAgIH0KKworI2lmbmRlZiBOREVC
VUcKICAgICB2aXJ0dWFsIH5UcmVlU2hhcmVkKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC01NSw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
ZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQp
OwogICAgIH0KKyNlbmRpZgogCiAgICAgdm9pZCByZWYoKQogICAgIHsKQEAgLTc1LDggKzg5LDkg
QEAgcHVibGljOgogICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYgIW1fcGFyZW50KSB7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24g
PSB0cnVlOworICAgICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgot
ICAgICAgICAgICAgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAgICAgIGNhbGxSZW1vdmVkTGFz
dFJlZih0aGlzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA5LDE1ICsxMjQsNiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCi1wcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCkKLSAgICB7Ci0jaWZuZGVm
IE5ERUJVRwotICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlmCi0gICAg
ICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQogcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAg
ZnJpZW5kIHZvaWQgYWRvcHRlZDw+KFRyZWVTaGFyZWQ8VD4qKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKaW5kZXggNTFiMTdlNmYzZTBhZDc0MjI5MWE3MDY4ZWM0
NzNjYTE3NDY0YTc5Ny4uYzNkNmYwODhlMGI3M2JkNmJhMGY1ZDgxMzM2NzU5Yjc0NGVmMmQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKQEAgLTcyLDYgKzcy
LDExIEBAIFNWR0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSgpCiAgICAgbV9l
bGVtZW50ID0gMDsKIH0KIAordm9pZCBjYWxsUmVtb3ZlZExhc3RSZWYoVHJlZVNoYXJlZDxTVkdF
bGVtZW50SW5zdGFuY2U+KiBzZWxmKQoreworICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0
YW5jZSo+KHNlbGYpLT5yZW1vdmVkTGFzdFJlZigpOworfQorCiB2b2lkIFNWR0VsZW1lbnRJbnN0
YW5jZTo6ZGV0YWNoKCkKIHsKICAgICAvLyBDbGVhciBhbGwgcG9pbnRlcnMuIFdoZW4gdGhlIG5v
ZGUgaXMgZGV0YWNoZWQgZnJvbSB0aGUgc2hhZG93IERPTSBpdCBzaG91bGQgYmUgcmVtb3ZlZCBi
dXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5kZXggMzE5YjllZGY4
ZWIyMjkzMWY2MWE3YWY0YzIyZmM5YTY4ZTMxYmNmZC4uZGYxNDIwOTMwMWEyNDNmOTExZmQyNzc3
NTliYjYxMzAwZTVlMTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
aApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB+U1ZHRWxl
bWVudEluc3RhbmNlKCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCkgeyBkZWxl
dGUgdGhpczsgfTsKIAogICAgIHZvaWQgc2V0UGFyZW50T3JIb3N0Tm9kZShTVkdFbGVtZW50SW5z
dGFuY2UqIGluc3RhbmNlKSB7IHNldFBhcmVudChpbnN0YW5jZSk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViS2l0Lm9yZGVyIGIvU291cmNlL1dlYktpdC9tYWMvV2ViS2l0
Lm9yZGVyCmluZGV4IDI3ZTk0MWVlN2M2NzkxNDMxMjA4ZTgwZDJlZWFhMDY2MGU1MTRlNmMuLjQz
YWQxOWE4MzAyODIyYzVjMDg1NGY4YTIyMDdkZTAyM2M2YmVlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQu
b3JkZXIKQEAgLTEzNDksNiArMTM0OSw3IEBAIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxOFRl
eHRDaGVja2luZ1Jlc3VsdEVMbTBFRTE1cmVzZXJ2ZUNhcGFjaXR5RW0KIF9fWk4zV1RGMTFWZWN0
b3JNb3ZlcklMYjBFTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFRTRtb3ZlRVBLUzJfUzVf
UFMyXwogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRldGFpbEVMbTBFRUMyRVJL
UzNfCiBfX1pON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEQxRXYKK19fWk43V2ViQ29yZTE4
Y2FsbFJlbW92ZWRMYXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVF
CiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxtMEVFRDFFdgogX19a
TjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFMTRzaHJpbmtD
YXBhY2l0eUVtCiBfX1pOMTVXZWJFZGl0b3JDbGllbnQyNXNob3VsZFNob3dEZWxldGVJbnRlcmZh
Y2VFUE43V2ViQ29yZTExSFRNTEVsZW1lbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9t
YWMvV2ViS2l0Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCmluZGV4
IDA0MWY4OWVmYjExZWI0Y2ZlMmQ1NTQ5ZTE3ZDAzYTJkODk0ZmEwOGQuLjIxY2EyZmY2Y2UzYWJi
ZTdjZTcxNDYxNDUzZGM2MzVlMjllMzZlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL21h
Yy9XZWJLaXQyLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCkBA
IC0yNDkxLDYgKzI0OTEsNyBAQCBfX1pOM1dURjExVmVjdG9yTW92ZXJJTGIwRU43V2ViQ29yZTE4
VGV4dENoZWNraW5nUmVzdWx0RUU0bW92ZUVQS1MyX1M1X1BTMl8KIF9fWk43V2ViQ29yZTE4VGV4
dENoZWNraW5nUmVzdWx0QzJFUktTMF8KIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxM0dyYW1t
YXJEZXRhaWxFTG0wRUVDMkVSS1MzXwogX19aTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRE
MkV2CitfX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVkSU5T
XzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRl
dGFpbEVMbTBFRUQyRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jl
c3VsdEVMbTBFRTE0c2hyaW5rQ2FwYWNpdHlFbQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4
VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFNnNocmlua0VtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5k
ZXggMGJhZjY0YWQ5OTY4MGQyNzY3NzhmODhlYzA5MWJlNmQxZjExNzgzYi4uMmEzZDMyZmJlYzMx
NmY2NDBjYjI5NmVlNGVkMzBiZDA3MjU1MWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAt
MTYxLDYgKzE2MSw3IEBAIEVYUE9SVFMKICAgICAgICAgP2FkZEBBdG9taWNTdHJpbmdAV1RGQEBD
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAyQFBCRUBaCiAgICAgICAgID9hZGRT
bG93Q2FzZUBBdG9taWNTdHJpbmdAV1RGQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEAyQFBBVlN0cmluZ0ltcGxAMkBAWgogICAgICAgICA/Y2FjaGVET01TdHJ1Y3R1cmVAV2Vi
Q29yZUBAWUFQQVZTdHJ1Y3R1cmVASlNDQEBQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVjIzQFBC
VUNsYXNzSW5mb0AzQEBaCisgICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZAV2ViQ29yZUBAWUFY
UEFWPyRUcmVlU2hhcmVkQFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBaCiAgICAgICAgID9j
cmVhdGVASFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZIVE1M
Q29udGVudEVsZW1lbnRAV2ViQ29yZUBAQFdURkBAUEFWRG9jdW1lbnRAMkBAWgogICAgICAgICA/
Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBA
V1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNzUmVmUHRyQFZO
b2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93Um9vdEBXZWJDb3Jl
QEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50
QDJAQUFIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCA3NTc0ODI4NGVh
MDlkZjAwNTlkNGZiYzdjN2QwODQzMGQzYTJmOGJjLi4zZGZkYThlOTZjMTE2MmQ0MTUxYzNlODRh
N2M5MTFjMmI5YzFhOGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNG
TGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0x
MDgsNiArMTA4LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVAWFoKICAgICAgICAgP2Jyb2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAg
ICAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKKyAgICAgICAgP2Nh
bGxSZW1vdmVkTGFzdFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRyZWVTaGFyZWRAVkNvbnRhaW5lck5v
ZGVAV2ViQ29yZUBAQDFAQFoKICAgICAgICAgP2NvbnNvbGVNZXNzYWdlQXJndW1lbnRDb3VudHNA
SW5zcGVjdG9yQ29uc29sZUFnZW50QFdlYkNvcmVAQFFBRT9BVj8kVmVjdG9yQEkkMEFAQFdURkBA
WFoKICAgICAgICAgP2NvdW50ZXJWYWx1ZUBJbnNwZWN0b3JDb3VudGVyc0BXZWJDb3JlQEBTQUhX
NENvdW50ZXJUeXBlQDEyQEBaCiAgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQ
QVhAWjBQQkRAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBi
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggYzU5MDI4MGE4MTI2MjMwYzVj
NDM0OGI5MDg4ZjM3ZjcyNzEyMzdkMC4uZTk3ZGJmNGI2NmU5ODM2ZDEzZWFhZDQwNWE5NTdiMjkx
ODJiZTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysg
Yi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC02Myw2ICs2Myw3IEBAIF9aTjdX
ZWJDb3JlMTZzY3JpcHROYW1lVG9Db2RlRVJLTjNXVEY2U3RyaW5nRTsKIF9aTjdXZWJDb3JlMTdj
YWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJl
RVBLTlMyXzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUxN0luc3BlY3RvckNvdW50ZXJzMTJjb3Vu
dGVyVmFsdWVFTlMwXzExQ291bnRlclR5cGVFOwogX1pON1dlYkNvcmUxOEhUTUxDb250ZW50RWxl
bWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEU7CitfWk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0
UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFOwogX1pON1dlYkNvcmUx
OUluc3BlY3RvckNvbnRyb2xsZXIzOXNldFJlc291cmNlc0RhdGFTaXplTGltaXRzRnJvbUludGVy
bmFsc0VpaTsKIF9aTjdXZWJDb3JlMjFJbnNwZWN0b3JDb25zb2xlQWdlbnQyOGNvbnNvbGVNZXNz
YWdlQXJndW1lbnRDb3VudHNFdjsKIF9aTjdXZWJDb3JlMjJpbnN0cnVtZW50YXRpb25Gb3JQYWdl
RVBOU180UGFnZUU7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNGI0
NTE4ZmNmOGQwNTEyYmU0YTczMmIxMzA5MGMyNGJiOGNjN2MwMS4uYmNlYmIwNzZmZTcwNzNhNjY3
Yjg2ZGJiMmI3NjkzNWFhODhhNTA1ZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTA3ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBvYmplY3Qgc2l6ZSBmcm9tIDcy
IGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIHN5bWJvbCBmb3IgY2FsbFJlbW92ZWRMYXN0UmVmKCkuCisKKyAgICAg
ICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA2LTA2ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgVGVhY2ggZ2l0IGFib3V0
IGxvY2FsaXphYmxlICouc3RyaW5ncyBmaWxlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146439</attachid>
            <date>2012-06-07 18:07:54 -0700</date>
            <delta_ts>2012-06-07 19:27:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88528-20120608100753.patch</filename>
            <type>text/plain</type>
            <size>13132</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFmYzZkMWQ0MDcxM2E1
ZWE2ZmZhNTMzMmZmNDBjODY2OTljOGIxMi4uZTRlNTNjZDJmNGUxZGNmOWNmYjkwM2YwMjQ3Mzg4
NzYwOGU2OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTA3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBv
YmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIHZpcnR1YWwg
bWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQuaCwKKyAgICAgICAgYnkgd2hpY2ggd2UgY2FuIHJlbW92
ZSBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgKDggYnl0ZQorICAgICAgICBpbiBhIDY0
Yml0IGFyY2hpdGVjaHR1cmUpIGZyb20gZWFjaCBOb2RlIG9iamVjdC4gQ29uc2VxdWVudGx5LAor
ICAgICAgICB0aGlzIHBhdGNoIHJlZHVjZXMgdGhlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBi
eXRlIHRvIDY0IGJ5dGUuCisKKyAgICAgICAgZS5nLiBUaGUgSFRNTCBzcGVjIChodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLykKKyAgICAgICAgY29udGFp
bnMgMzI1NjQwIE5vZGUgb2JqZWN0cy4gVGh1cyB0aGlzIHBhdGNoIHNhdmVzIDMyNTY0MCAqIDgg
Ynl0ZSA9IDIuNiBNQi4KKworICAgICAgICBlLmcuIHNpemVvZihFbGVtZW50KSBpcyByZWR1Y2Vk
IGZyb20gMTA0IGJ5dGUgdG8gOTYgYnl0ZS4KKworICAgICAgICAtIEluIG11bHRpcGxlIGluaGVy
aXRhbmNlLCBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgaXMgYWxsb2NhdGVkCisgICAg
ICAgIGZvciBlYWNoIGJhc2UgY2xhc3MgdGhhdCBoYXMgdmlydHVhbCBtZXRob2RzLiBGb3IgZXhh
bXBsZSwgZm9yCisgICAgICAgICdjbGFzcyBBIDogcHVibGljIEIsIEMge307JyB3aGVyZSBCIGFu
ZCBDIGhhdmUgdmlydHVhbCBtZXRob2RzLAorICAgICAgICB0d28gdmlydHVhbCBtZXRob2QgdGFi
bGUgcG9pbnRlcnMgYXJlIGFsbG9jYXRlZCBmb3IgZWFjaCBBIG9iamVjdC4KKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgQSA9IE5vZGUsIEIgPSBFdmVudFRhcmdldCwgYW5kIEMgPSBUcmVlU2hhcmVk
LgorICAgICAgICBCeSByZW1vdmluZyB0aGUgdmlydHVhbCBtZXRob2RzIGZyb20gVHJlZVNoYXJl
ZCwgd2UgY2FuIHNhdmUgdGhlIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kIHRhYmxlIHBvaW50ZXIg
Zm9yIFRyZWVTaGFyZWQuIDggYnl0ZSBzYXZpbmcuCisKKyAgICAgICAgLSBOb2RlIGFuZCBTVkdF
bGVtZW50SW5zdGFuY2UgYXJlIHRoZSBvbmx5IGNsYXNzZXMgdGhhdCBpbmhlcml0IFRyZWVTaGFy
ZWQuCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92ZXMgdmlydHVhbCBUcmVlU2hhcmVkOjpy
ZW1vdmVMYXN0UmVmKCkgYW5kIGltcGxlbWVudHMKKyAgICAgICAgdmlydHVhbCBOb2RlOjpyZW1v
dmVMYXN0UmVmKCkgYW5kIHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVMYXN0UmVm
KCkuCisgICAgICAgIE5vZGU6OnJlbW92ZUxhc3RSZWYoKSBjYWxscyAnZGVsZXRlIHRoaXMnIGZv
ciAndGhpcycgb2YgdHlwZSBOb2RlKiwKKyAgICAgICAgYW5kIFNWR0VsZW1lbnRJbnN0YW5jZTo6
cmVtb3ZlTGFzdFJlZigpIGNhbGxzICdkZWxldGUgdGhpcycgZm9yICd0aGlzJyBvZiB0eXBlCisg
ICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSouCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92
ZXMgdGhlIHZpcnR1YWwgZGVzdHJ1Y3RvciBvZiBUcmVlU2hhcmVkLiBUaGlzIHJlbW92YWwgaXMg
c2FmZQorICAgICAgICBiZWNhdXNlICgxKSBubyBvbmUgY2FsbHMgJ2RlbGV0ZSB0aGlzJyBmb3Ig
J3RoaXMnIG9mIHR5cGUgVHJlZVNoYXJlZCosCisgICAgICAgIGFuZCAoMikgYm90aCBOb2RlIGFu
ZCBTVkdFbGVtZW50SW5zdGFuY2UgaGF2ZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLiBDb25maXJtIG5vIHJlZ3Jlc3Npb24gaW4gZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsUmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRMYXN0UmVmKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYpOgorCiAyMDEyLTA2LTA3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxv
c3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXaW5dIFVzZSBPUyhXSU5ET1dTKSBpbnN0
ZWFkIG9mIFFfV1NfV0lOIGluIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBkZDllOGY3MmJjYzUxMzk0ZDQwMWVmMjI3ZWUxNTg1
YWRlYTVlYjVhLi5lN2NiZDgxNTYyM2Y4NjNmMGIyODljYzQwNjQwMDZiMTM3NmUxNDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDYtMDcgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlZHVjZSBOb2RlIG9iamVjdCBzaXpl
IGZyb20gNzIgYnl0ZSB0byA2NCBieXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04ODUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgc3ltYm9sIGZvciBjYWxsUmVtb3ZlZExhc3RSZWYoKS4K
KworICAgICAgICAqIFdlYktpdC5vcmRlcjoKKwogMjAxMi0wNi0wNiAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgV3JhcCB1cHBlcmNhc2VXb3JkLCBsb3dlcmNhc2VX
b3JkLCBhbmQgY2FwaXRhbGl6ZVdvcmQgd2l0aCBVU0UoQVBQS0lUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdj
MGQ5MjFhZTZiMmRkM2FjNmQzMDNjMTMzNjBlODNjZjM0NDEzMmUuLjIyZDUyMzg3MTBmYmUwYjAy
MWZmZmUxZWViN2U3OTlhODQ3OTk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
Mi0wNi0wNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmVkdWNlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBieXRlIHRvIDY0IGJ5dGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzeW1ib2wgZm9y
IGNhbGxSZW1vdmVkTGFzdFJlZigpLgorCisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6Cisg
ICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZjoKKwogMjAxMi0wNi0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gQWRkIEFQSSB0byByZWdpc3RlciBjdXN0b20gVVJJIHNjaGVt
ZXMgdG8gV2ViS2l0MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IGMyM2EwYjllOTBkMDBiMmRhNDlkOTZhMzk4NTJiNzdkYzM2NDNiN2QuLmNlOGExNWYyYjg1
NTFhMjczODBkYjkyYThmMzgyZDc5NDJiM2UyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTg2LDYgKzg2LDExIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxs
Q2hpbGRyZW4oKQogICAgIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwgQ29udGFp
bmVyTm9kZT4odGhpcyk7CiB9CiAKK3ZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8
Q29udGFpbmVyTm9kZT4qIHNlbGYpCit7CisgICAgc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+
KHNlbGYpLT5yZW1vdmVkTGFzdFJlZigpOworfQorCiB2b2lkIENvbnRhaW5lck5vZGU6OnRha2VB
bGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogewogICAgIE5vZGVWZWN0
b3IgY2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzYWFkODNmNjUyYjM3ZjI2NDg5NTJlZGIzMmUx
NzM1YmRhZjJhNjAxLi4yOWVmZmUzZjhiNzUyZWI0YzBmYTdlZTQ2MmY1N2YyZmM2NmVjY2RmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTE0Niw2ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0eWxl
Q2hhbmdlIGRpZmYoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJTdHlsZSosIERvY3Vt
ZW50Kik7CiAKICAgICB2aXJ0dWFsIH5Ob2RlKCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRM
YXN0UmVmKCkgeyBkZWxldGUgdGhpczsgfQogCiAgICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1
dGVzIGZvciBOb2RlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVT
aGFyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRleCA4MDg1
MjRjZGI3NDdjM2I2YmU4ZTE0M2FkM2ZjNDkwYTFkZDc1OWZjLi4zYzk4OWQyNjZmZDk4MzJjMWE5
M2ViMjdlYzE2NWUzYTBjMjdmOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UcmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5o
CkBAIC0zMiw2ICszMiwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8VD4qKTsKICNl
bmRpZgogCitjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVHJlZVNoYXJlZDsKKworLy8gQWxsIGNsYXNzZXMg
dGhhdCBpbmhlcml0IFRyZWVTaGFyZWQgbmVlZCB0byBkZWZpbmUKKy8vIGNhbGxSZW1vdmVkTGFz
dFJlZihUcmVlU2hhcmVkPFQ+KikuIFRoaXMgaXMgbmVjZXNzYXJ5CisvLyB0byBraWxsIGFsbCB2
aXJ0dWFsIG1ldGhvZHMgZnJvbSBUcmVlU2hhcmVkLCBieSB3aGljaAorLy8gd2UgY2FuIHNhdmUg
OCBieXRlIGZvciB0aGUgdmlydHVhbCBtZXRob2QgdGFibGUuCit2b2lkIGNhbGxSZW1vdmVkTGFz
dFJlZihUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+Kik7Cit2b2lkIGNhbGxSZW1vdmVkTGFzdFJl
ZihUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4qKTsKKwogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgVHJlZVNoYXJlZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJlZVNoYXJl
ZCk7CiBwdWJsaWM6CkBAIC00OCw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKICNlbmRpZgogICAgIH0KKworI2lmbmRlZiBOREVC
VUcKICAgICB2aXJ0dWFsIH5UcmVlU2hhcmVkKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC01NSw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1f
ZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQp
OwogICAgIH0KKyNlbmRpZgogCiAgICAgdm9pZCByZWYoKQogICAgIHsKQEAgLTc1LDggKzg5LDkg
QEAgcHVibGljOgogICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYgIW1fcGFyZW50KSB7
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24g
PSB0cnVlOworICAgICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgot
ICAgICAgICAgICAgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAgICAgIGNhbGxSZW1vdmVkTGFz
dFJlZih0aGlzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA5LDE2ICsxMjQsMTEgQEAgcHVi
bGljOgogICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb247CiAjZW5kaWYKIAotcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkTGFzdFJlZigpCi0gICAgewotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKLSNlbmRpZgotICAg
ICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KIHByaXZhdGU6CisgICAgLy8gTmV2ZXIgY2FsbGVk
LiByZW1vdmVkTGFzdFJlZigpIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gYWxsIHRoZSBjbGFzc2Vz
CisgICAgLy8gdGhhdCBpbmhlcml0IFRyZWVTaGFyZWQuCisgICAgdm9pZCByZW1vdmVkTGFzdFJl
ZigpIHsgQVNTRVJUKDApOyB9CisKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJpZW5kIHZvaWQgYWRv
cHRlZDw+KFRyZWVTaGFyZWQ8VD4qKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudEluc3RhbmNlLmNwcAppbmRleCA1MWIxN2U2ZjNlMGFkNzQyMjkxYTcwNjhlYzQ3M2NhMTc0
NjRhNzk3Li5jM2Q2ZjA4OGUwYjczYmQ2YmEwZjVkODEzMzY3NTliNzQ0ZWYyZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcApAQCAtNzIsNiArNzIsMTEgQEAg
U1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudEluc3RhbmNlKCkKICAgICBtX2VsZW1lbnQg
PSAwOwogfQogCit2b2lkIGNhbGxSZW1vdmVkTGFzdFJlZihUcmVlU2hhcmVkPFNWR0VsZW1lbnRJ
bnN0YW5jZT4qIHNlbGYpCit7CisgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudEluc3RhbmNlKj4o
c2VsZiktPnJlbW92ZWRMYXN0UmVmKCk7Cit9CisKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpk
ZXRhY2goKQogewogICAgIC8vIENsZWFyIGFsbCBwb2ludGVycy4gV2hlbiB0aGUgbm9kZSBpcyBk
ZXRhY2hlZCBmcm9tIHRoZSBzaGFkb3cgRE9NIGl0IHNob3VsZCBiZSByZW1vdmVkIGJ1dCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCAzMTliOWVkZjhlYjIyOTMx
ZjYxYTdhZjRjMjJmYzlhNjhlMzFiY2ZkLi5kZjE0MjA5MzAxYTI0M2Y5MTFmZDI3Nzc1OWJiNjEz
MDBlNWUxNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC00
Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIH5TVkdFbGVtZW50SW5z
dGFuY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYoKSB7IGRlbGV0ZSB0aGlz
OyB9OwogCiAgICAgdm9pZCBzZXRQYXJlbnRPckhvc3ROb2RlKFNWR0VsZW1lbnRJbnN0YW5jZSog
aW5zdGFuY2UpIHsgc2V0UGFyZW50KGluc3RhbmNlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJLaXQub3JkZXIgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIK
aW5kZXggMjdlOTQxZWU3YzY3OTE0MzEyMDhlODBkMmVlYWEwNjYwZTUxNGU2Yy4uNDNhZDE5YTgz
MDI4MjJjNWMwODU0ZjhhMjIwN2RlMDIzYzZiZWU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlcgpA
QCAtMTM0OSw2ICsxMzQ5LDcgQEAgX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4VGV4dENoZWNr
aW5nUmVzdWx0RUxtMEVFMTVyZXNlcnZlQ2FwYWNpdHlFbQogX19aTjNXVEYxMVZlY3Rvck1vdmVy
SUxiMEVON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVFNG1vdmVFUEtTMl9TNV9QUzJfCiBf
X1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxtMEVFQzJFUktTM18KIF9f
Wk43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RDFFdgorX19aTjdXZWJDb3JlMThjYWxsUmVt
b3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRUUKIF9fWk4z
V1RGNlZlY3RvcklON1dlYkNvcmUxM0dyYW1tYXJEZXRhaWxFTG0wRUVEMUV2CiBfX1pOM1dURjZW
ZWN0b3JJTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUUxNHNocmlua0NhcGFjaXR5
RW0KIF9fWk4xNVdlYkVkaXRvckNsaWVudDI1c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZUVQTjdX
ZWJDb3JlMTFIVE1MRWxlbWVudEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJL
aXQyLm9yZGVyIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggMDQxZjg5
ZWZiMTFlYjRjZmUyZDU1NDllMTdkMDNhMmQ4OTRmYTA4ZC4uMjFjYTJmZjZjZTNhYmJlN2NlNzE0
NjE0NTNkYzYzNWUyOWUzNmVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktp
dDIub3JkZXIKKysrIGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTI0OTEs
NiArMjQ5MSw3IEBAIF9fWk4zV1RGMTFWZWN0b3JNb3ZlcklMYjBFTjdXZWJDb3JlMThUZXh0Q2hl
Y2tpbmdSZXN1bHRFRTRtb3ZlRVBLUzJfUzVfUFMyXwogX19aTjdXZWJDb3JlMThUZXh0Q2hlY2tp
bmdSZXN1bHRDMkVSS1MwXwogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRldGFp
bEVMbTBFRUMyRVJLUzNfCiBfX1pON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEQyRXYKK19f
Wk43V2ViQ29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250
YWluZXJOb2RlRUVFCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxt
MEVFRDJFdgogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUxt
MEVFMTRzaHJpbmtDYXBhY2l0eUVtCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMThUZXh0Q2hl
Y2tpbmdSZXN1bHRFTG0wRUU2c2hyaW5rRW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCAwYmFm
NjRhZDk5NjgwZDI3Njc3OGY4OGVjMDkxYmU2ZDFmMTE3ODNiLi4yYTNkMzJmYmVjMzE2ZjY0MGNi
Mjk2ZWU0ZWQzMGJkMDcyNTUxYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNjEsNiAr
MTYxLDcgQEAgRVhQT1JUUwogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQ
YXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEJFQFoKICAgICAgICAgP2FkZFNsb3dDYXNl
QEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJA
UEFWU3RyaW5nSW1wbEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZ
QVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJ
bmZvQDNAQFoKKyAgICAgICAgP2NhbGxSZW1vdmVkTGFzdFJlZkBXZWJDb3JlQEBZQVhQQVY/JFRy
ZWVTaGFyZWRAVkNvbnRhaW5lck5vZGVAV2ViQ29yZUBAQDFAQFoKICAgICAgICAgP2NyZWF0ZUBI
VE1MQ29udGVudEVsZW1lbnRAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVkhUTUxDb250ZW50
RWxlbWVudEBXZWJDb3JlQEBAV1RGQEBQQVZEb2N1bWVudEAyQEBaCiAgICAgICAgID9jcmVhdGVA
UmFuZ2VAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/
JFBhc3NSZWZQdHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2Vi
Q29yZUBAQDRASDFIQFoKICAgICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FW
PyRQYXNzUmVmUHRyQFZTaGFkb3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhA
WgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDc1NzQ4Mjg0ZWEwOWRmMDA1
OWQ0ZmJjN2M3ZDA4NDMwZDNhMmY4YmMuLjNkZmRhOGU5NmMxMTYyZDQxNTFjM2U4NGE3YzkxMWMy
YjljMWE4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTEwOCw2ICsx
MDgsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MVRocmVhZENvbmRpdGlvbkBXVEZAQFFBRUBYWgog
ICAgICAgICA/YnJvYWRjYXN0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAgICAgICA/
Y2FsbE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgorICAgICAgICA/Y2FsbFJlbW92
ZWRMYXN0UmVmQFdlYkNvcmVAQFlBWFBBVj8kVHJlZVNoYXJlZEBWQ29udGFpbmVyTm9kZUBXZWJD
b3JlQEBAMUBAWgogICAgICAgICA/Y29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50c0BJbnNwZWN0
b3JDb25zb2xlQWdlbnRAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JASSQwQUBAV1RGQEBYWgogICAg
ICAgICA/Y291bnRlclZhbHVlQEluc3BlY3RvckNvdW50ZXJzQFdlYkNvcmVAQFNBSFc0Q291bnRl
clR5cGVAMTJAQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMFBC
REBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBjNTkwMjgwYTgxMjYyMzBjNWM0MzQ4Yjkw
ODhmMzdmNzI3MTIzN2QwLi5lOTdkYmY0YjY2ZTk4MzZkMTNlYWFkNDA1YTk1N2IyOTE4MmJlMTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTYzLDYgKzYzLDcgQEAgX1pON1dlYkNvcmUx
NnNjcmlwdE5hbWVUb0NvZGVFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUxN2NhY2hlRE9N
U3RydWN0dXJlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJf
OUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTE3SW5zcGVjdG9yQ291bnRlcnMxMmNvdW50ZXJWYWx1
ZUVOUzBfMTFDb3VudGVyVHlwZUU7CiBfWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNy
ZWF0ZUVQTlNfOERvY3VtZW50RTsKK19aTjdXZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZFUE5T
XzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRUU7CiBfWk43V2ViQ29yZTE5SW5zcGVj
dG9yQ29udHJvbGxlcjM5c2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzRWlp
OwogX1pON1dlYkNvcmUyMUluc3BlY3RvckNvbnNvbGVBZ2VudDI4Y29uc29sZU1lc3NhZ2VBcmd1
bWVudENvdW50c0V2OwogX1pON1dlYkNvcmUyMmluc3RydW1lbnRhdGlvbkZvclBhZ2VFUE5TXzRQ
YWdlRTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0YjQ1MThmY2Y4
ZDA1MTJiZTRhNzMyYjEzMDkwYzI0YmI4Y2M3YzAxLi5iY2ViYjA3NmZlNzA3M2E2NjdiODZkYmIy
Yjc2OTM1YWE4OGE1MDVlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTItMDYtMDcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJlZHVjZSBOb2RlIG9iamVjdCBzaXplIGZyb20gNzIgYnl0ZSB0
byA2NCBieXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIGEgc3ltYm9sIGZvciBjYWxsUmVtb3ZlZExhc3RSZWYoKS4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDYtMDYgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBUZWFjaCBnaXQgYWJvdXQgbG9jYWxp
emFibGUgKi5zdHJpbmdzIGZpbGVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146455</attachid>
            <date>2012-06-07 19:27:20 -0700</date>
            <delta_ts>2012-06-08 01:59:11 -0700</delta_ts>
            <desc>Fixed mac build failure</desc>
            <filename>bug-88528-20120608112718.patch</filename>
            <type>text/plain</type>
            <size>14743</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQyMTZhNWVmMzBkNGI1
ZDNlMmY3ZmQ3MWQ2NGZiYWFjNGZmOTdjMS4uYTg1MjJlODVmNDMzNGRjYzhmNjg3YWI0YjMzMGUy
NjE5YWFiN2E3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTA2LTA3ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBv
YmplY3Qgc2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIHZpcnR1YWwg
bWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQuaCwKKyAgICAgICAgYnkgd2hpY2ggd2UgY2FuIHJlbW92
ZSBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgKDggYnl0ZQorICAgICAgICBpbiBhIDY0
Yml0IGFyY2hpdGVjaHR1cmUpIGZyb20gZWFjaCBOb2RlIG9iamVjdC4gQ29uc2VxdWVudGx5LAor
ICAgICAgICB0aGlzIHBhdGNoIHJlZHVjZXMgdGhlIE5vZGUgb2JqZWN0IHNpemUgZnJvbSA3MiBi
eXRlIHRvIDY0IGJ5dGUuCisKKyAgICAgICAgZS5nLiBUaGUgSFRNTCBzcGVjIChodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLykKKyAgICAgICAgY29udGFp
bnMgMzI1NjQwIE5vZGUgb2JqZWN0cy4gVGh1cyB0aGlzIHBhdGNoIHNhdmVzIDMyNTY0MCAqIDgg
Ynl0ZSA9IDIuNiBNQi4KKworICAgICAgICBlLmcuIHNpemVvZihFbGVtZW50KSBpcyByZWR1Y2Vk
IGZyb20gMTA0IGJ5dGUgdG8gOTYgYnl0ZS4KKworICAgICAgICAtIEluIG11bHRpcGxlIGluaGVy
aXRhbmNlLCBhIHZpcnR1YWwgbWV0aG9kIHRhYmxlIHBvaW50ZXIgaXMgYWxsb2NhdGVkCisgICAg
ICAgIGZvciBlYWNoIGJhc2UgY2xhc3MgdGhhdCBoYXMgdmlydHVhbCBtZXRob2RzLiBGb3IgZXhh
bXBsZSwgZm9yCisgICAgICAgICdjbGFzcyBBIDogcHVibGljIEIsIEMge307JyB3aGVyZSBCIGFu
ZCBDIGhhdmUgdmlydHVhbCBtZXRob2RzLAorICAgICAgICB0d28gdmlydHVhbCBtZXRob2QgdGFi
bGUgcG9pbnRlcnMgYXJlIGFsbG9jYXRlZCBmb3IgZWFjaCBBIG9iamVjdC4KKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgQSA9IE5vZGUsIEIgPSBFdmVudFRhcmdldCwgYW5kIEMgPSBUcmVlU2hhcmVk
LgorICAgICAgICBCeSByZW1vdmluZyB0aGUgdmlydHVhbCBtZXRob2RzIGZyb20gVHJlZVNoYXJl
ZCwgd2UgY2FuIHNhdmUgdGhlIHZpcnR1YWwKKyAgICAgICAgbWV0aG9kIHRhYmxlIHBvaW50ZXIg
Zm9yIFRyZWVTaGFyZWQuIDggYnl0ZSBzYXZpbmcuCisKKyAgICAgICAgLSBOb2RlIGFuZCBTVkdF
bGVtZW50SW5zdGFuY2UgYXJlIHRoZSBvbmx5IGNsYXNzZXMgdGhhdCBpbmhlcml0IFRyZWVTaGFy
ZWQuCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92ZXMgdmlydHVhbCBUcmVlU2hhcmVkOjpy
ZW1vdmVMYXN0UmVmKCkgYW5kIGltcGxlbWVudHMKKyAgICAgICAgdmlydHVhbCBOb2RlOjpyZW1v
dmVMYXN0UmVmKCkgYW5kIHZpcnR1YWwgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVMYXN0UmVm
KCkuCisgICAgICAgIE5vZGU6OnJlbW92ZUxhc3RSZWYoKSBjYWxscyAnZGVsZXRlIHRoaXMnIGZv
ciAndGhpcycgb2YgdHlwZSBOb2RlKiwKKyAgICAgICAgYW5kIFNWR0VsZW1lbnRJbnN0YW5jZTo6
cmVtb3ZlTGFzdFJlZigpIGNhbGxzICdkZWxldGUgdGhpcycgZm9yICd0aGlzJyBvZiB0eXBlCisg
ICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSouCisKKyAgICAgICAgLSBUaGlzIHBhdGNoIHJlbW92
ZXMgdGhlIHZpcnR1YWwgZGVzdHJ1Y3RvciBvZiBUcmVlU2hhcmVkLiBUaGlzIHJlbW92YWwgaXMg
c2FmZQorICAgICAgICBiZWNhdXNlICgxKSBubyBvbmUgY2FsbHMgJ2RlbGV0ZSB0aGlzJyBmb3Ig
J3RoaXMnIG9mIHR5cGUgVHJlZVNoYXJlZCosCisgICAgICAgIGFuZCAoMikgYm90aCBOb2RlIGFu
ZCBTVkdFbGVtZW50SW5zdGFuY2UgaGF2ZSB2aXJ0dWFsIGRlc3RydWN0b3IuCisKKyAgICAgICAg
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLiBDb25maXJtIG5vIHJlZ3Jlc3Npb24gaW4gZXhpc3Rpbmcg
dGVzdHMuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWxsUmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRMYXN0UmVmKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYpOgorCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogQWRkZWQgYSBz
eW1ib2wgZm9yIGNhbGxSZW1vdmVkTGFzdFJlZigpLgorICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OiBEaXR0by4KKwogMjAxMi0wNi0wNyAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIGRpZFN0YXJ0V29ya2VyUnVuTG9vcCB0byBQ
bGF0Zm9ybS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZGQ5ZThmNzJiY2M1MTM5NGQ0MDFlZjIyN2Vl
MTU4NWFkZWE1ZWI1YS4uZTdjYmQ4MTU2MjNmODYzZjBiMjg5Y2M0MDY0MDA2YjEzNzZlMTQ4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA2LTA3ICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWR1Y2UgTm9kZSBvYmplY3Qg
c2l6ZSBmcm9tIDcyIGJ5dGUgdG8gNjQgYnl0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHN5bWJvbCBmb3IgY2FsbFJlbW92ZWRMYXN0UmVm
KCkuCisKKyAgICAgICAgKiBXZWJLaXQub3JkZXI6CisKIDIwMTItMDYtMDYgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFdyYXAgdXBwZXJjYXNlV29yZCwgbG93ZXJj
YXNlV29yZCwgYW5kIGNhcGl0YWxpemVXb3JkIHdpdGggVVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBkNTc1M2E3NTIwYjdkNTNiYjQ3YjAwODNkMDI0MTAwMTg5Y2VhNGY5Li40NmY4MzBiZTM1YmM3
ZTliNmY3ZDA2MDI2ZDliYjZkZjA4NDdkNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDYtMDcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJlZHVjZSBOb2RlIG9iamVjdCBzaXplIGZyb20gNzIgYnl0ZSB0byA2NCBieXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODUyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgc3ltYm9s
IGZvciBjYWxsUmVtb3ZlZExhc3RSZWYoKS4KKworICAgICAgICAqIG1hYy9XZWJLaXQyLm9yZGVy
OgorICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0
ZS5kZWY6CisKIDIwMTItMDYtMDcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNv
bT4KIAogICAgICAgICBTZWFyY2ggaGlnaGxpZ2h0IGRvZXMgbm90IHNjcm9sbCB3aXRoIHRoZSBj
b250ZW50IG9mIHRoZSBwYWdlLCBhbmQgZmluZCBvdmVybGF5IGRvZXNuJ3Qgd29yaywgb24gbGFy
Z2UtZW5vdWdoIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4NTZmNDBiYzE2MmI2M2Uz
YjE1MzJjZWRmNjkxNzA2NzNjM2ZiZGIwLi5kZjM3ZTM3YzkyODA1MGFiMzMzMGY5ZGRlYjdkNWZj
OTUzMWVlOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNTY2LDYgKzU2Niw3IEBAIF9fWk43
V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKIF9fWk5LN1dlYkNvcmUx
OFBsYXRmb3JtUGFzdGVib2FyZDExY2hhbmdlQ291bnRFdgogX19aTjdXZWJDb3JlMThQbGF0Zm9y
bVBhc3RlYm9hcmQ1Y29sb3JFdgogX19aTjdXZWJDb3JlMThTZWFyY2hQb3B1cE1lbnVNYWNDMUVQ
TlNfMTVQb3B1cE1lbnVDbGllbnRFCitfX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQ
TlNfMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjdXZWJDb3JlMThpc1N0
YXJ0T2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFy
eUNyb3NzaW5nUnVsZUUKIF9fWk43V2ViQ29yZTE4cGx1Z2luU2NyaXB0T2JqZWN0RVBOM0pTQzlF
eGVjU3RhdGVFUE5TXzEzSlNIVE1MRWxlbWVudEUKIF9fWk43V2ViQ29yZTE4cHJveHlTZXJ2ZXJz
Rm9yVVJMRVJLTlNfNEtVUkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIKaW5kZXggY2EyYjc4MmQ4ZjY0ODE3MDMyYTE1NGQ4MWJlMmQ5ZTg2NTBhMTY5YS4uYmJmNmEz
ZGQzZDdjZGE4NmJjZGE4MDgwMjNiNWEyMGJjOGNkMzRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBA
IC0xOTIzLDYgKzE5MjMsNyBAQCBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMTFwYWludEZsb2F0
c0VSTlNfOVBhaW50SW5mb0VpaWIKIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxMHBhaW50Q2Fy
ZXRFUk5TXzlQYWludEluZm9FaWlOU185Q2FyZXRUeXBlRQogX19aTks3V2ViQ29yZTE0RnJhbWVT
ZWxlY3Rpb24xM2NhcmV0UmVuZGVyZXJFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlv
bjE3aXNDb250ZW50RWRpdGFibGVFdgorX19aTjdXZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZF
UE5TXzEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRUUKIF9fWk43V2ViQ29yZTE4aXNF
ZGl0YWJsZVBvc2l0aW9uRVJLTlNfOFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTE5RHJhZ0NhcmV0
Q29udHJvbGxlcjEzY2FyZXRSZW5kZXJlckV2CiBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMjVw
YWludENvbnRpbnVhdGlvbk91dGxpbmVzRVJOU185UGFpbnRJbmZvRWlpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggYzIzYTBiOWU5MGQwMGIyZGE0OWQ5NmEzOTg1MmI3N2Rj
MzY0M2I3ZC4uY2U4YTE1ZjJiODU1MWEyNzM4MGRiOTJhOGYzODJkNzk0MmIzZTI2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtODYsNiArODYsMTEgQEAgdm9pZCBDb250
YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNv
bnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsKIH0KIAordm9pZCBjYWxsUmVtb3Zl
ZExhc3RSZWYoVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiogc2VsZikKK3sKKyAgICBzdGF0aWNf
Y2FzdDxDb250YWluZXJOb2RlKj4oc2VsZiktPnJlbW92ZWRMYXN0UmVmKCk7Cit9CisKIHZvaWQg
Q29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJl
bnQpCiB7CiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDNhYWQ4M2Y2
NTJiMzdmMjY0ODk1MmVkYjMyZTE3MzViZGFmMmE2MDEuLjI5ZWZmZTNmOGI3NTJlYjRjMGZhN2Vl
NDYyZjU3ZjJmYzY2ZWNjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3R5bGVDaGFuZ2UgZGlmZihjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0
IFJlbmRlclN0eWxlKiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgfk5vZGUoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYoKSB7IGRlbGV0ZSB0aGlzOyB9CiAKICAgICAvLyBE
T00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE5vZGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oCmluZGV4IDgwODUyNGNkYjc0N2MzYjZiZThlMTQzYWQzZmM0OTBhMWRkNzU5ZmMu
LjNjOTg5ZDI2NmZkOTgzMmMxYTkzZWIyN2VjMTY1ZTNhMGMyN2Y5ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTMyLDYgKzMyLDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkb3B0ZWQo
VHJlZVNoYXJlZDxUPiopOwogI2VuZGlmCiAKK2NsYXNzIENvbnRhaW5lck5vZGU7CitjbGFzcyBT
VkdFbGVtZW50SW5zdGFuY2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVk
OworCisvLyBBbGwgY2xhc3NlcyB0aGF0IGluaGVyaXQgVHJlZVNoYXJlZCBuZWVkIHRvIGRlZmlu
ZQorLy8gY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8VD4qKS4gVGhpcyBpcyBuZWNlc3Nh
cnkKKy8vIHRvIGtpbGwgYWxsIHZpcnR1YWwgbWV0aG9kcyBmcm9tIFRyZWVTaGFyZWQsIGJ5IHdo
aWNoCisvLyB3ZSBjYW4gc2F2ZSA4IGJ5dGUgZm9yIHRoZSB2aXJ0dWFsIG1ldGhvZCB0YWJsZS4K
K3ZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT4qKTsKK3Zv
aWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiopOwor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShUcmVlU2hhcmVkKTsKIHB1YmxpYzoKQEAgLTQ4LDYgKzU5LDggQEAgcHVibGlj
OgogICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwogI2VuZGlmCiAg
ICAgfQorCisjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgflRyZWVTaGFyZWQoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTU1LDYgKzY4LDcgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFt
X2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgfQorI2VuZGlmCiAKICAgICB2b2lkIHJlZigpCiAg
ICAgewpAQCAtNzUsOCArODksOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgtLW1fcmVmQ291bnQg
PD0gMCAmJiAhbV9wYXJlbnQpIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBtX2luUmVt
b3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7CisgICAgICAgICAgICBtX2RlbGV0aW9uSGFzQmVn
dW4gPSB0cnVlOwogI2VuZGlmCi0gICAgICAgICAgICByZW1vdmVkTGFzdFJlZigpOworICAgICAg
ICAgICAgY2FsbFJlbW92ZWRMYXN0UmVmKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
MDksMTYgKzEyNCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbjsKICNlbmRpZgogCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0
UmVmKCkKLSAgICB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4g
PSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQogcHJpdmF0ZToK
KyAgICAvLyBOZXZlciBjYWxsZWQuIHJlbW92ZWRMYXN0UmVmKCkgbXVzdCBiZSBpbXBsZW1lbnRl
ZCBpbiBhbGwgdGhlIGNsYXNzZXMKKyAgICAvLyB0aGF0IGluaGVyaXQgVHJlZVNoYXJlZC4KKyAg
ICB2b2lkIHJlbW92ZWRMYXN0UmVmKCkgeyBBU1NFUlQoMCk7IH0KKwogI2lmbmRlZiBOREVCVUcK
ICAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxUPiopOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwCmluZGV4IDUxYjE3ZTZmM2UwYWQ3
NDIyOTFhNzA2OGVjNDczY2ExNzQ2NGE3OTcuLmMzZDZmMDg4ZTBiNzNiZDZiYTBmNWQ4MTMzNjc1
OWI3NDRlZjJkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3Bw
CkBAIC03Miw2ICs3MiwxMSBAQCBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFu
Y2UoKQogICAgIG1fZWxlbWVudCA9IDA7CiB9CiAKK3ZvaWQgY2FsbFJlbW92ZWRMYXN0UmVmKFRy
ZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlPiogc2VsZikKK3sKKyAgICBzdGF0aWNfY2FzdDxT
VkdFbGVtZW50SW5zdGFuY2UqPihzZWxmKS0+cmVtb3ZlZExhc3RSZWYoKTsKK30KKwogdm9pZCBT
VkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCgpCiB7CiAgICAgLy8gQ2xlYXIgYWxsIHBvaW50ZXJz
LiBXaGVuIHRoZSBub2RlIGlzIGRldGFjaGVkIGZyb20gdGhlIHNoYWRvdyBET00gaXQgc2hvdWxk
IGJlIHJlbW92ZWQgYnV0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCmlu
ZGV4IDMxOWI5ZWRmOGViMjI5MzFmNjFhN2FmNGMyMmZjOWE2OGUzMWJjZmQuLmRmMTQyMDkzMDFh
MjQzZjkxMWZkMjc3NzU5YmI2MTMwMGU1ZTE0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudEluc3RhbmNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZp
cnR1YWwgflNWR0VsZW1lbnRJbnN0YW5jZSgpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkTGFz
dFJlZigpIHsgZGVsZXRlIHRoaXM7IH07CiAKICAgICB2b2lkIHNldFBhcmVudE9ySG9zdE5vZGUo
U1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkgeyBzZXRQYXJlbnQoaW5zdGFuY2UpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYktpdC5vcmRlciBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYktpdC5vcmRlcgppbmRleCAyN2U5NDFlZTdjNjc5MTQzMTIwOGU4MGQyZWVhYTA2
NjBlNTE0ZTZjLi40M2FkMTlhODMwMjgyMmM1YzA4NTRmOGEyMjA3ZGUwMjNjNmJlZTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJLaXQub3JkZXIKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViS2l0Lm9yZGVyCkBAIC0xMzQ5LDYgKzEzNDksNyBAQCBfX1pOM1dURjZWZWN0b3JJ
TjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUUxNXJlc2VydmVDYXBhY2l0eUVtCiBf
X1pOM1dURjExVmVjdG9yTW92ZXJJTGIwRU43V2ViQ29yZTE4VGV4dENoZWNraW5nUmVzdWx0RUU0
bW92ZUVQS1MyX1M1X1BTMl8KIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxM0dyYW1tYXJEZXRh
aWxFTG0wRUVDMkVSS1MzXwogX19aTjdXZWJDb3JlMThUZXh0Q2hlY2tpbmdSZXN1bHREMUV2Citf
X1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVkSU5TXzEzQ29u
dGFpbmVyTm9kZUVFRQogX19aTjNXVEY2VmVjdG9ySU43V2ViQ29yZTEzR3JhbW1hckRldGFpbEVM
bTBFRUQxRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVM
bTBFRTE0c2hyaW5rQ2FwYWNpdHlFbQogX19aTjE1V2ViRWRpdG9yQ2xpZW50MjVzaG91bGRTaG93
RGVsZXRlSW50ZXJmYWNlRVBON1dlYkNvcmUxMUhUTUxFbGVtZW50RQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0
Mi5vcmRlcgppbmRleCAwNDFmODllZmIxMWViNGNmZTJkNTU0OWUxN2QwM2EyZDg5NGZhMDhkLi4y
MWNhMmZmNmNlM2FiYmU3Y2U3MTQ2MTQ1M2RjNjM1ZTI5ZTM2ZWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2Vi
S2l0Mi5vcmRlcgpAQCAtMjQ5MSw2ICsyNDkxLDcgQEAgX19aTjNXVEYxMVZlY3Rvck1vdmVySUxi
MEVON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVFNG1vdmVFUEtTMl9TNV9QUzJfCiBfX1pO
N1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEMyRVJLUzBfCiBfX1pOM1dURjZWZWN0b3JJTjdX
ZWJDb3JlMTNHcmFtbWFyRGV0YWlsRUxtMEVFQzJFUktTM18KIF9fWk43V2ViQ29yZTE4VGV4dENo
ZWNraW5nUmVzdWx0RDJFdgorX19aTjdXZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZFUE5TXzEw
VHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRUUKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNv
cmUxM0dyYW1tYXJEZXRhaWxFTG0wRUVEMkV2CiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMThU
ZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUUxNHNocmlua0NhcGFjaXR5RW0KIF9fWk4zV1RGNlZlY3Rv
cklON1dlYkNvcmUxOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRTZzaHJpbmtFbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCmluZGV4IGU5MDE5OTdhYjFiODg2ZTZhNGU5NzBiOTk1YjkxNjRlODYyYTRlYmIu
LjU2MTM5NjkzY2ZjNmI2MDY0YzFhNWIyYThiMDZkZDNiZDllYzVhZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0Mi5kZWYKQEAgLTE2MSw2ICsxNjEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9hZGRAQXRvbWlj
U3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQkVAWgog
ICAgICAgICA/YWRkU2xvd0Nhc2VAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJA
VlN0cmluZ0ltcGxAV1RGQEBAMkBQQVZTdHJpbmdJbXBsQDJAQFoKICAgICAgICAgP2NhY2hlRE9N
U3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJlQEpTQ0BAUEFWSlNET01HbG9iYWxPYmpl
Y3RAMUBQQVYyM0BQQlVDbGFzc0luZm9AM0BAWgorICAgICAgICA/Y2FsbFJlbW92ZWRMYXN0UmVm
QFdlYkNvcmVAQFlBWFBBVj8kVHJlZVNoYXJlZEBWQ29udGFpbmVyTm9kZUBXZWJDb3JlQEBAMUBA
WgogICAgICAgICA/Y3JlYXRlQEhUTUxDb250ZW50RWxlbWVudEBXZWJDb3JlQEBTQT9BVj8kUGFz
c1JlZlB0ckBWSFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQEBXVEZAQFBBVkRvY3VtZW50QDJA
QFoKICAgICAgICAgP2NyZWF0ZUBSYW5nZUBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFu
Z2VAV2ViQ29yZUBAQFdURkBAVj8kUGFzc1JlZlB0ckBWRG9jdW1lbnRAV2ViQ29yZUBAQDRAVj8k
UGFzc1JlZlB0ckBWTm9kZUBXZWJDb3JlQEBANEBIMUhAWgogICAgICAgICA/Y3JlYXRlQFNoYWRv
d1Jvb3RAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNoYWRvd1Jvb3RAV2ViQ29yZUBAQFdU
RkBAUEFWRWxlbWVudEAyQEFBSEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5k
ZXggYjVlZTlhY2FhMjQ0MTAyYTc2OWI4YTcxMWQyMTE0MzNlNjg4ZmVlNS4uYTM5OTEzYWJmNmE3
M2Q4ZjAyYjc0ZTdkYzAwYmEzODlhNzBmNzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgpAQCAtMTA4LDYgKzEwOCw3IEBAIEVYUE9SVFMKICAgICAgICAgPz8xVGhyZWFkQ29u
ZGl0aW9uQFdURkBAUUFFQFhaCiAgICAgICAgID9icm9hZGNhc3RAVGhyZWFkQ29uZGl0aW9uQFdU
RkBAUUFFWFhaCiAgICAgICAgID9jYWxsT25NYWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBa
CisgICAgICAgID9jYWxsUmVtb3ZlZExhc3RSZWZAV2ViQ29yZUBAWUFYUEFWPyRUcmVlU2hhcmVk
QFZDb250YWluZXJOb2RlQFdlYkNvcmVAQEAxQEBaCiAgICAgICAgID9jb25zb2xlTWVzc2FnZUFy
Z3VtZW50Q291bnRzQEluc3BlY3RvckNvbnNvbGVBZ2VudEBXZWJDb3JlQEBRQUU/QVY/JFZlY3Rv
ckBJJDBBQEBXVEZAQFhaCiAgICAgICAgID9jb3VudGVyVmFsdWVASW5zcGVjdG9yQ291bnRlcnNA
V2ViQ29yZUBAU0FIVzRDb3VudGVyVHlwZUAxMkBAWgogICAgICAgICA/Y3JlYXRlVGhyZWFkQFdU
RkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDkwOWRl
ZWZmODVmOWUwOWJmYmI4MzVkMGRjNDA2MDIwNWU4OWZhOTUuLjJlMjM1NjQwMDYwOTkwMGQyNTky
NTMyYmU0YmU2MzNiOTM0YTdmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtNjMsNiAr
NjMsNyBAQCBfWk43V2ViQ29yZTE2c2NyaXB0TmFtZVRvQ29kZUVSS04zV1RGNlN0cmluZ0U7CiBf
Wk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4z
SlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRTsKIF9aTjdXZWJDb3JlMTdJbnNwZWN0b3JD
b3VudGVyczEyY291bnRlclZhbHVlRU5TMF8xMUNvdW50ZXJUeXBlRTsKIF9aTjdXZWJDb3JlMThI
VE1MQ29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOworX1pON1dlYkNvcmUxOGNh
bGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFRTsK
IF9aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMzlzZXRSZXNvdXJjZXNEYXRhU2l6ZUxp
bWl0c0Zyb21JbnRlcm5hbHNFaWk7CiBfWk43V2ViQ29yZTIxSW5zcGVjdG9yQ29uc29sZUFnZW50
Mjhjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzRXY7CiBfWk43V2ViQ29yZTIyaW5zdHJ1bWVu
dGF0aW9uRm9yUGFnZUVQTlNfNFBhZ2VFOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdl
TG9nCmluZGV4IGFjN2JmY2Y0NDU0ZTUwYjM3NmRjY2YxMmYwODliZjM5NWVmMTBkNjkuLjM0N2Q0
MzA5N2NhYzQ3Zjk2YTM0Y2IwNmJlMDZiOGY2MzA1ZjFlZDMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxv
ZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNyAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVkdWNlIE5vZGUgb2JqZWN0
IHNpemUgZnJvbSA3MiBieXRlIHRvIDY0IGJ5dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBzeW1ib2wgZm9yIGNhbGxSZW1vdmVkTGFzdFJl
ZigpLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAx
Mi0wNi0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBCdWlsZCBmaXggZm9yIFdpbkNFIGFmdGVyIHIxMTM1NzAuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146509</attachid>
            <date>2012-06-08 01:59:38 -0700</date>
            <delta_ts>2012-06-08 02:16:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88528-20120608175937.patch</filename>
            <type>text/plain</type>
            <size>1644</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZlZTJhNDZmZWI2NzZi
N2U4MTQ4NzI1MzAzMzM1ZmIyZmZhZTM1Yy4uNzlhNzBiZWQ5MWEyOGIyNTVlZmViMzM1ZjllMjk5
YTQyYzVlNGJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTA4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgdW5uZWNl
c3NhcnkgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pIGZyb20gRG9jdW1lbnQuaAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1MjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSByMTE5ODAyLCBt
X2RlbGV0aW9uSGFzQmVndW4gaXMgdHJ1ZSBpbiByZW1vdmVkTGFzdFJlZigpLgorICAgICAgICBy
MTE5ODAzIHJlbW92ZWQgc29tZSBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bikgZnJvbSBEb2N1
bWVudC5jcHAKKyAgICAgICAgYnV0IGl0IHdhcyBub3QgZW5vdWdoLiBUaGlzIHBhdGNoIHJlbW92
ZXMgdGhlIHJlc3Qgb2YgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pCisgICAgICAgIGZyb20g
RG9jdW1lbnQuaC4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgor
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Z3VhcmRSZWYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omd1YXJkRGVyZWYpOgorCiAy
MDEyLTA2LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSFRU
UCAyMDQgTm8gQ29udGVudCByZXNwb25zZXMgc2hvdWxkbid0IHRyaWdnZXIgTUlNRSB0eXBlIHdh
cm5pbmdzIGluIHRoZSB3ZWIgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGUxOWM1
OTNjNmZiYTdlYzBkNTZmMzM4ZmUwOTZkNDNlMDU5ZDQ5MWMuLmE2YmZiYjljOWM3NDY4ZGU3ODhi
Y2E4NzU1NWRhYjhlMmMxMmMxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yNDcsMTMgKzI0
NywxMSBAQCBwdWJsaWM6CiAgICAgLy8gcG9pbnRlciB3aXRob3V0IGludHJvZHVjaW5nIHJlZmVy
ZW5jZSBjeWNsZXMuCiAgICAgdm9pZCBndWFyZFJlZigpCiAgICAgewotICAgICAgICBBU1NFUlQo
IW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgICsrbV9ndWFyZFJlZkNvdW50OwogICAgIH0K
IAogICAgIHZvaWQgZ3VhcmREZXJlZigpCiAgICAgewotICAgICAgICBBU1NFUlQoIW1fZGVsZXRp
b25IYXNCZWd1bik7CiAgICAgICAgIC0tbV9ndWFyZFJlZkNvdW50OwogICAgICAgICBpZiAoIW1f
Z3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkgewogI2lmbmRlZiBOREVCVUcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146517</attachid>
            <date>2012-06-08 02:16:25 -0700</date>
            <delta_ts>2012-06-08 06:00:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88528-20120608181624.patch</filename>
            <type>text/plain</type>
            <size>3315</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmZlZTJhNDZmZWI2NzZi
N2U4MTQ4NzI1MzAzMzM1ZmIyZmZhZTM1Yy4uZDA2ZDYxZTM2MjdlNWExNmJjZjEwM2YzNjFjYTM0
NmNjZmJmZjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA2LTA4ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OIHIx
MTk4MDI6IFJlbW92ZSB1bm5lY2Vzc2FyeSBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bikgZnJv
bSBEb2N1bWVudC5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODUyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWShPT1BTISkuCisKKyAgICAg
ICAgbV9kZWxldGlvbkhhc0JlZ3VuIHNob3VsZCBiZWNvbWUgdHJ1ZSBqdXN0IGJlZm9yZSAnZGVs
ZXRlIHRoaXMnLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpn
dWFyZFJlZik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z3VhcmREZXJlZik6CisKIDIw
MTItMDYtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBIVFRQ
IDIwNCBObyBDb250ZW50IHJlc3BvbnNlcyBzaG91bGRuJ3QgdHJpZ2dlciBNSU1FIHR5cGUgd2Fy
bmluZ3MgaW4gdGhlIHdlYiBpbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDEy
OTI4YzBlMDBlZmJmZjkzMDVlNGMwMGUxZGNlN2JkZDRhOTI3YzMuLjQyMjhkNjMxNmNkNDU2Yzgy
MjQ5MTBmNzM0ZDNkM2U4NzBjZTg4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjQx
LDYgKzY0MSw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiB2b2lkIERvY3VtZW50OjpyZW1v
dmVkTGFzdFJlZigpCiB7CisgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIGlm
IChtX2d1YXJkUmVmQ291bnQpIHsKICAgICAgICAgLy8gSWYgcmVtb3ZpbmcgYSBjaGlsZCByZW1v
dmVzIHRoZSBsYXN0IHNlbGYtb25seSByZWYsIHdlIGRvbid0CiAgICAgICAgIC8vIHdhbnQgdGhl
IHNjb3BlIHRvIGJlIGRlc3RydWN0ZWQgdW50aWwgYWZ0ZXIKQEAgLTY4NSw2ICs2ODYsOSBAQCB2
b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAKICAgICAgICAgZ3VhcmREZXJlZigpOwog
ICAgIH0gZWxzZSB7CisjaWZuZGVmIE5ERUJVRyAKKyAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3Vu
ID0gdHJ1ZTsgCisjZW5kaWYgCiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDI5ZWZmZTNmOGI3NTJlYjRjMGZhN2VlNDYyZjU3ZjJmYzY2ZWNjZGYuLmUzYzdh
ZGVhYjJlNzA0MDY3MTZiNGQ2YjNmNDUyM2M0YjE4NWI2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTQ2
LDcgKzE0NiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0eWxlQ2hhbmdlIGRpZmYoY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJTdHlsZSosIERvY3VtZW50Kik7CiAKICAgICB2aXJ0
dWFsIH5Ob2RlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCkgeyBkZWxldGUg
dGhpczsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkTGFzdFJlZigpCisgICAgeworI2lmbmRl
ZiBOREVCVUcKKyAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAg
ICAgICBkZWxldGUgdGhpczsKKyAgICB9CiAKICAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0
ZXMgZm9yIE5vZGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNo
YXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDdhOTFj
ZWRmMDYzZTk1MTZiMDU2NjMxOGZiYWJjN2Q5ZWYxNzI1MDYuLjk3MWE3ZTM2YTk3YWMyYjM2Yzll
MmZhOGRlMDRiOTE5YWY3Njc5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgK
QEAgLTg5LDcgKzg5LDYgQEAgcHVibGljOgogICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9IDAg
JiYgIW1fcGFyZW50KSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9pblJlbW92ZWRM
YXN0UmVmRnVuY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0g
dHJ1ZTsKICNlbmRpZgogICAgICAgICAgICAgY2FsbFJlbW92ZWRMYXN0UmVmKHRoaXMpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5kZXggZGYxNDIw
OTMwMWEyNDNmOTExZmQyNzc3NTliYjYxMzAwZTVlMTQ2MC4uZTRjYzUxOTllMmFiNDBlYmZlNGM2
MjE2YjkzZjBhNDFkNWYwMjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2UuaApAQCAtNDcsNyArNDcsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgflNW
R0VsZW1lbnRJbnN0YW5jZSgpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkTGFzdFJlZigpIHsg
ZGVsZXRlIHRoaXM7IH07CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRMYXN0UmVmKCkKKyAgICB7
CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2Vu
ZGlmCisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH07CiAKICAgICB2b2lkIHNldFBhcmVudE9y
SG9zdE5vZGUoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkgeyBzZXRQYXJlbnQoaW5zdGFu
Y2UpOyB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>