<?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>99310</bug_id>
          
          <creation_ts>2012-10-15 05:15:51 -0700</creation_ts>
          <short_desc>[JSC] Indexeddb unable to deserialize the string record</short_desc>
          <delta_ts>2013-03-25 23:42:25 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Charles Wei">charles.wei</reporter>
          <assigned_to name="Charles Wei">charles.wei</assigned_to>
          <cc>alecflett</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>jsbell</cc>
    
    <cc>michael</cc>
    
    <cc>oliver</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741959</commentid>
    <comment_count>0</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-15 05:15:51 -0700</bug_when>
    <thetext>The indexeddb for jsc binding failed to work (tested with BlackBerry porting), with the log:

Type error: unable to deserialize data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741960</commentid>
    <comment_count>1</comment_count>
      <attachid>168683</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-15 05:16:35 -0700</bug_when>
    <thetext>Created attachment 168683
indexeddb test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741982</commentid>
    <comment_count>2</comment_count>
      <attachid>168694</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-15 05:59:34 -0700</bug_when>
    <thetext>Created attachment 168694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742013</commentid>
    <comment_count>3</comment_count>
      <attachid>168694</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-10-15 06:47:33 -0700</bug_when>
    <thetext>Comment on attachment 168694
Patch

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

I think someone with more knowledge about IndexDB should review.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Indexeddb doesn&apos;t wrong with the attached test case and &quot;Unable to deserialize data&quot;

Title seems odd?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742025</commentid>
    <comment_count>4</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-10-15 07:07:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 168694 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168694&amp;action=review
&gt; 
&gt; I think someone with more knowledge about IndexDB should review.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Indexeddb doesn&apos;t wrong with the attached test case and &quot;Unable to deserialize data&quot;
&gt; 
&gt; Title seems odd?

Sorry, that comes from the wrong title of the bug,which has been fixed. Will resubmit the patch with the correct title by s/wrong/work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742195</commentid>
    <comment_count>5</comment_count>
      <attachid>168694</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-15 11:08:26 -0700</bug_when>
    <thetext>Comment on attachment 168694
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        The test case is attached at: https://bugs.webkit.org/show_bug.cgi?id=99310

Please convert the test case to a LayoutTest in storage/indexeddb so regressions will be caught automatically when JSC ports enable IDB.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1008
&gt; +        // If the value contains odd number of content, append UndefinedTag at the end

Just to clarify what&apos;s going on:

&quot;content&quot; =&gt; &quot;bytes&quot;

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1010
&gt; +        // String is UChar (2 types) internal and takes even number of value.

&quot;types&quot; =&gt; &quot;bytes&quot;
&quot;value&quot; =&gt; &quot;bytes&quot;

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1012
&gt; +            writeLittleEndian&lt;uint8_t&gt;(const_cast&lt;Vector&lt;uint8_t&gt;&amp; &gt;(value), UndefinedTag);

This is violating the &quot;const&quot; constraint and modifying the vector that is passed in, which is bad.

Can you find another way to do this?

I haven&apos;t traced through to see if adding an extra UndefinedTag at the end of the data is safe; the JSC toWireString(Vector&lt;char&gt;)/create(String) code is much more complicated than it seems like it needs to be, so there&apos;s stuff going on I&apos;m not familiar with.

Why doesn&apos;t this issue affect non-IDB use of SerializedScriptValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765212</commentid>
    <comment_count>6</comment_count>
      <attachid>168694</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-12 21:41:56 -0800</bug_when>
    <thetext>Comment on attachment 168694
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        The test case is attached at: https://bugs.webkit.org/show_bug.cgi?id=99310
&gt; 
&gt; Please convert the test case to a LayoutTest in storage/indexeddb so regressions will be caught automatically when JSC ports enable IDB.

Actually the existing test cases cover this case.  This happens when IndexedDB.put(&apos;string&apos;, &apos;key&apos;);  The following existing test cases fail without the patch and succeed with the fix.

LayoutTests/storage/indexeddb/cursor_delete.html
LayoutTests/storage/indexeddb/cursor_inconsistency.html
LayoutTests/storage/indexeddb/cursor_prev_no_duplicate.html 

because the internal of the SerializedScriptValue for String is:

&lt;version,2 bytes&gt; &lt;StringTag, 1 byte&gt; &lt;Length 2 bytes&gt; &lt;UChar 2*n bytes&gt;

That is an odd bytes.  While when persist the value, we call String SerializedScriptValue::toWireString() to make it a String for persistence. if we don&apos;t pad with one byte, we lose the last byte of the SerializedScriptValue and can&apos;t convert it back with SerializedScriptValue::createFromWire() and SerializedScriptValue::deserialize().

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1008
&gt;&gt; +        // If the value contains odd number of content, append UndefinedTag at the end
&gt; 
&gt; Just to clarify what&apos;s going on:
&gt; 
&gt; &quot;content&quot; =&gt; &quot;bytes&quot;

ok.

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1010
&gt;&gt; +        // String is UChar (2 types) internal and takes even number of value.
&gt; 
&gt; &quot;types&quot; =&gt; &quot;bytes&quot;
&gt; &quot;value&quot; =&gt; &quot;bytes&quot;

Ok.

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1012
&gt;&gt; +            writeLittleEndian&lt;uint8_t&gt;(const_cast&lt;Vector&lt;uint8_t&gt;&amp; &gt;(value), UndefinedTag);
&gt; 
&gt; This is violating the &quot;const&quot; constraint and modifying the vector that is passed in, which is bad.
&gt; 
&gt; Can you find another way to do this?
&gt; 
&gt; I haven&apos;t traced through to see if adding an extra UndefinedTag at the end of the data is safe; the JSC toWireString(Vector&lt;char&gt;)/create(String) code is much more complicated than it seems like it needs to be, so there&apos;s stuff going on I&apos;m not familiar with.
&gt; 
&gt; Why doesn&apos;t this issue affect non-IDB use of SerializedScriptValue?

There&apos;s no other better way to cast away the const, another way is to remove the const from the argument. 

why doesn&apos;t this issue affect non-IDB use ? Because there&apos;s no others are using this except IDB. toWireString and createFromWire are inside INDEXEDDB macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765248</commentid>
    <comment_count>7</comment_count>
      <attachid>173823</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-12 22:19:08 -0800</bug_when>
    <thetext>Created attachment 173823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765561</commentid>
    <comment_count>8</comment_count>
      <attachid>173823</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-13 07:10:55 -0800</bug_when>
    <thetext>Comment on attachment 173823
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1011
&gt; +        if (value.size() % sizeof(UChar))

I remember Darin told me before UChar could be 4 bytes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765565</commentid>
    <comment_count>9</comment_count>
      <attachid>173823</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-13 07:14:10 -0800</bug_when>
    <thetext>Comment on attachment 173823
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1012
&gt; +            writeLittleEndian&lt;uint8_t&gt;(const_cast&lt;Vector&lt;uint8_t&gt;&amp; &gt;(value), NullTag);

I don&apos;t like this const_cast, nor the unneeded null in String. Why don&apos;t we change &quot;length&quot; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765585</commentid>
    <comment_count>10</comment_count>
      <attachid>173823</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-13 07:38:54 -0800</bug_when>
    <thetext>Comment on attachment 173823
Patch

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

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1012
&gt;&gt; +            writeLittleEndian&lt;uint8_t&gt;(const_cast&lt;Vector&lt;uint8_t&gt;&amp; &gt;(value), NullTag);
&gt; 
&gt; I don&apos;t like this const_cast, nor the unneeded null in String. Why don&apos;t we change &quot;length&quot; instead?

I was wrong about &quot;length&quot;. But still, don&apos;t like the const_cast here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765628</commentid>
    <comment_count>11</comment_count>
      <attachid>173823</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-13 08:24:18 -0800</bug_when>
    <thetext>Comment on attachment 173823
Patch

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

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1011
&gt;&gt; +        if (value.size() % sizeof(UChar))
&gt; 
&gt; I remember Darin told me before UChar could be 4 bytes?

In what scenario that Uchar is 4 bytes?

&gt;&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1012
&gt;&gt;&gt; +            writeLittleEndian&lt;uint8_t&gt;(const_cast&lt;Vector&lt;uint8_t&gt;&amp; &gt;(value), NullTag);
&gt;&gt; 
&gt;&gt; I don&apos;t like this const_cast, nor the unneeded null in String. Why don&apos;t we change &quot;length&quot; instead?
&gt; 
&gt; I was wrong about &quot;length&quot;. But still, don&apos;t like the const_cast here.

Just changing the length will leave an arbitrary byte at the end which might be interpreted differently. we intentionally put a NullTag at the end to make it even bytes, otherwise we will lose one bytes. The padding NullTag won&apos;t be interpreted to anything meaningful.

I also don&apos;t like the const_cast,but if we don&apos;t use it, we have to make a copy of the data and operate on the copy which is an even worse solution I think. We have to use if if we have no other better solutions. Or what do you suggest, yong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765659</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-13 08:55:40 -0800</bug_when>
    <thetext>Note that webkit.org/b/45110 has a fix for the same problem and doesn&apos;t do a const_cast - it does a data copy. While that&apos;s unfortunate I don&apos;t think a const_cast is acceptable because it breaks the API contract and could affect unrelated functions. Either doing a copy or changing the function signature is a better approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765666</commentid>
    <comment_count>13</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-13 09:01:30 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Note that webkit.org/b/45110 has a fix for the same problem and doesn&apos;t do a const_cast - it does a data copy. While that&apos;s unfortunate I don&apos;t think a const_cast is acceptable because it breaks the API contract and could affect unrelated functions. Either doing a copy or changing the function signature is a better approach.

Or CloneDeserializer::readString(start, end, str, length - 1), and then make up an 1-char buffer for the last char?

Also I&apos;m not sure adding NullTag is safe. Charles, could we just ignore the last char? Or use &quot;?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766324</commentid>
    <comment_count>14</comment_count>
      <attachid>174052</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-13 19:30:40 -0800</bug_when>
    <thetext>Created attachment 174052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766326</commentid>
    <comment_count>15</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-13 19:32:11 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Note that webkit.org/b/45110 has a fix for the same problem and doesn&apos;t do a const_cast - it does a data copy. While that&apos;s unfortunate I don&apos;t think a const_cast is acceptable because it breaks the API contract and could affect unrelated functions. Either doing a copy or changing the function signature is a better approach.

Ok, the new patch just does a copy and operates on the copy instead of the original data, even though I don&apos;t like this solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766328</commentid>
    <comment_count>16</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-13 19:33:35 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Note that webkit.org/b/45110 has a fix for the same problem and doesn&apos;t do a const_cast - it does a data copy. While that&apos;s unfortunate I don&apos;t think a const_cast is acceptable because it breaks the API contract and could affect unrelated functions. Either doing a copy or changing the function signature is a better approach.
&gt; 
&gt; Or CloneDeserializer::readString(start, end, str, length - 1), and then make up an 1-char buffer for the last char?
&gt; 
&gt; Also I&apos;m not sure adding NullTag is safe. Charles, could we just ignore the last char? Or use &quot;?&quot;

Adding NullTag is safer than anything else, I think.  we can&apos;t just ignore the last char, otherwise, it will be an arbitrary byte and unpredictable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766978</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-11-14 09:43:44 -0800</bug_when>
    <thetext>Let me have a look at this, I need to work out what&apos;s going on, and the serialization code shouldn&apos;t be having any IDB specific issues.  For reference can you tell me what architecture and byte order blackberry uses?

Also UChar are only 2 bytes, a character may be four bytes (two UChar&apos;s), this is one of those great character vs. code point things.  We also like to try and store strings using a byte characters where possible.

Oh, and all changes to serialization should bump the version number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766983</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 09:49:20 -0800</bug_when>
    <thetext>SerializedScriptValue serializes to a Vector&lt;char&gt; - an opaque binary blob - then tries to store that result in a String (in toWireString). If the length of the Vector&lt;char&gt; is odd the data is truncated by one byte.

Nothing to do with code points vs. characters. It&apos;s purely about storing an opaque blob of binary data in a String and an issue with odd lengths. 

There&apos;s nothing IDB specific about this, but perhaps IDB is the only thing exercising the toWireString() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766986</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 09:54:19 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Nothing to do with code points vs. characters.

(er, code units vs. code points; sorry, caffeine is still kicking in.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767000</commentid>
    <comment_count>20</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-11-14 10:09:47 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Nothing to do with code points vs. characters.
&gt; 
&gt; (er, code units vs. code points; sorry, caffeine is still kicking in.)

I was responding to the &quot;UChar could be four bytes&quot; comment.

Bigger question: wtf is idb using Strings as its storage format?  It&apos;s storing a binary blob, not a string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767014</commentid>
    <comment_count>21</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 10:20:46 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Bigger question: wtf is idb using Strings as its storage format?  It&apos;s storing a binary blob, not a string.

Now that&apos;s a good question... the code around that hasn&apos;t been touched in the time I&apos;ve been working on IDB. It doesn&apos;t look like there&apos;s a good reason; it&apos;s just being used as a length + bytes mechanism for serialization. Would be easy to change, apart from back-compat (we still need to be able to read old data that&apos;s already on disk).

From an IDB perspective it would make sense to remove the toWireString/createFromWire(String) methods in favor of producing/consuming Vector&lt;char&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767386</commentid>
    <comment_count>22</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-14 15:42:48 -0800</bug_when>
    <thetext>*** Bug 102293 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767569</commentid>
    <comment_count>23</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-14 18:30:45 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Bigger question: wtf is idb using Strings as its storage format?  It&apos;s storing a binary blob, not a string.
&gt; 
&gt; Now that&apos;s a good question... the code around that hasn&apos;t been touched in the time I&apos;ve been working on IDB. It doesn&apos;t look like there&apos;s a good reason; it&apos;s just being used as a length + bytes mechanism for serialization. Would be easy to change, apart from back-compat (we still need to be able to read old data that&apos;s already on disk).
&gt; 
&gt; From an IDB perspective it would make sense to remove the toWireString/createFromWire(String) methods in favor of producing/consuming Vector&lt;char&gt;.

yes,  agree.  toWireString actually goes to a String and createFromWire&apos;s input is String,  that&apos;s what it is now , for both JSC and V8 bindings,  even though I don&apos;t think it&apos;s reasonable and what&apos;s the background of that design.  What this patch is about is to make it work with this mechanism,  refactor of this is out of the scope of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771487</commentid>
    <comment_count>24</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-11-19 21:43:06 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; Bigger question: wtf is idb using Strings as its storage format?  It&apos;s storing a binary blob, not a string.
&gt; &gt; 
&gt; &gt; Now that&apos;s a good question... the code around that hasn&apos;t been touched in the time I&apos;ve been working on IDB. It doesn&apos;t look like there&apos;s a good reason; it&apos;s just being used as a length + bytes mechanism for serialization. Would be easy to change, apart from back-compat (we still need to be able to read old data that&apos;s already on disk).
&gt; &gt; 
&gt; &gt; From an IDB perspective it would make sense to remove the toWireString/createFromWire(String) methods in favor of producing/consuming Vector&lt;char&gt;.
&gt; 
&gt; yes,  agree.  toWireString actually goes to a String and createFromWire&apos;s input is String,  that&apos;s what it is now , for both JSC and V8 bindings,  even though I don&apos;t think it&apos;s reasonable and what&apos;s the background of that design.  What this patch is about is to make it work with this mechanism,  refactor of this is out of the scope of this patch.

I think Charles is right.  This patch looks like it fixes the bug, but we all seem to agree that it should move away from String at some point.  Any objections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771502</commentid>
    <comment_count>25</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-11-19 22:02:54 -0800</bug_when>
    <thetext>Just ran the test on Mac , with and without this patch. The result shows that with the patch,  no regressions found, instead, some failed test cases succeeded now.

details:

Tests that failed text/pixel/audio diff (13)  :  same as without the patch.
Tests that had stderr output (1):  It was 8 without the patch.
Flaky tests (failed the first run and passed on retry) (13):  it was 17 without the patch.
Tests expected to fail but passed (5):  same as without the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855937</commentid>
    <comment_count>26</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2013-03-15 06:19:50 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I think Charles is right.  This patch looks like it fixes the bug, but we all seem to agree that it should move away from String at some point.  Any objections?

Seems to me that if this fixes the bug it should be committed ASAP and we should file a followup bug to convert away from String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856063</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Pruett">michael</who>
    <bug_when>2013-03-15 10:04:42 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Seems to me that if this fixes the bug it should be committed ASAP and we should file a followup bug to convert away from String.

As of the changes made in bug 104354, IndexedDB serialization no longer uses strings. This bug is no longer relevant and should be closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863404</commentid>
    <comment_count>28</comment_count>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2013-03-25 23:40:55 -0700</bug_when>
    <thetext>This patch doesn&apos;t seem to apply anymore with the change upstream.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>168683</attachid>
            <date>2012-10-15 05:16:35 -0700</date>
            <delta_ts>2012-10-15 05:16:35 -0700</delta_ts>
            <desc>indexeddb test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>15939</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPGhlYWQ+CiAgICAgICAgPHRpdGxlPkluZGV4REIg
RGVtbyAtIFZlcnNpb24gMS4xPC90aXRsZT4KICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgogICAgICAgIDxt
ZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iSWRvIEdyZWVuIi8+CiAgICA8L2hlYWQ+CiAgICA8
c3R5bGU+CiAgICAgICAgI2Zvb3RlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHll
bGxvd2dyZWVuOwogICAgICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgICAgIG1hcmdpbjog
NnB4OwogICAgICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIC13
ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICB9CiAgICAgICAgI2Zvb3RlciBwIHsK
ICAgICAgICAgICAgZm9udC1zaXplOiA5MCU7CiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKICAgICAgICB9CiAgICAgICAgcHJlIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
bGlnaHRjeWFuOwogICAgICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgICAgIG1hcmdpbjog
NnB4OwogICAgICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIC13
ZWJraXQtYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4Owog
ICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgI291ckxpc3QgewogICAgICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBsaWdodGdvbGRlbnJvZHllbGxvdzsKICAgICAgICAgICAgcGFkZGluZzog
OHB4OwogICAgICAgICAgICBtYXJnaW46IDZweDsKICAgICAgICAgICAgLW1vei1ib3JkZXItcmFk
aXVzOiAxNXB4OwogICAgICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAg
ICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8Ym9keT4KCiAgICAgICAgPCEtLQogICAgICAgICAq
ICBNREMgLSBmaXhpdCBkYXkKICAgICAgICAgKiBJZG8gR3JlZW4KICAgICAgICAgKiBEYXRlOiA2
LzI0LzIwMTEKICAgICAgICAgKgogICAgICAgIC0tPiAKCiAgICAgICAgPGgxPkluZGV4ZWQgREI6
IERlbW88L2gxPiAKICAgICAgICA8YXNpZGUgY2xhc3M9Im5vdGUiPiAKICAgICAgICAgICAgPHNl
Y3Rpb24+IAogICAgICAgICAgICAgICAgVGhpcyBkZW1vIHJlcXVpcmVzIEZGNCBvciBHb29nbGUg
Q2hyb21lIDEyIG9yIGdyZWF0ZXIuCiAgICAgICAgICAgIDwvc2VjdGlvbj4gCiAgICAgICAgPC9h
c2lkZT4gCgogICAgICAgIDxzZWN0aW9uPiAKICAgICAgICAgICAgPHByZT4KICAgICAgICAgICAg
VGVzdCBPYmplY3RpdmUKICAgICAgICAgICAgPC9wcmU+IAoKCiAgICAgICAgICAgIDxkaXYgY2xh
c3M9ImhjZW50ZXIiIGlkPSJpbmRleGVkZGItZXhhbXBsZSI+IAogICAgICAgICAgICAgICAgPHA+
IAogICAgICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iaW5kZXhlZERiVXRpbC5pZGJD
cmVhdGUoKSI+Q3JlYXRlIG9iamVjdCBTdG9yZTwvYnV0dG9uPiAKICAgICAgICAgICAgICAgICAg
ICA8YnV0dG9uIG9uY2xpY2s9ImluZGV4ZWREYlV0aWwuaWRiUmVtb3ZlKCkiPlJlbW92ZSBvYmpl
Y3QgU3RvcmU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9Imlu
ZGV4ZWREYlV0aWwuc2hvd0FsbCgpIj5TaG93IEFsbCBvYmplY3RzPC9idXR0b24+CiAgICAgICAg
ICAgICAgICA8L3A+IAogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHBsYWNlaG9s
ZGVyPSJrZXkiIGlkPSJpZGIta2V5IiBzaXplPSIxMCIgLz4gPGlucHV0IHR5cGU9InRleHQiIHBs
YWNlaG9sZGVyPSJ2YWx1ZSIgaWQ9ImlkYi12YWx1ZSIgc2l6ZT0iMTAiIC8+IAogICAgICAgICAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJpbmRleGVkRGJVdGlsLmlkYlNldCgpIj5zZXQ8L2J1dHRv
bj4gCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZGItbG9nIj48L2Rpdj4gCiAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJyZWNvcmQtbGlzdCIgaWQ9ImlkYi1yZXN1bHRzLXdyYXBwZXIiPjwv
ZGl2PiAKCiAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9J291ckxp
c3QnPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAg
ICAgIDwvZGl2PiAKICAgICAgICAgICAgPHNjcmlwdD4gCiAgICAgICAgICAgICAgICAvLyBGb3Ig
b3VyIGRlbW8gLSBsZXQncyBwdXQgYWxsIHRoZSBjb2RlIHVuZGVyIGluZGV4REJVdGkKICAgICAg
ICAgICAgICAgIHZhciBpbmRleGVkRGJVdGlsID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgIHZhciBpZGJfOyAgICAgICAgICAgLy8gT3VyIGxvY2FsIERCCiAgICAgICAgICAgICAg
ICAgICAgdmFyIGlkYlJlcXVlc3RfOyAgICAvLyBPdXIgREIgcmVxdWVzdCBvYmoKICAgICAgICAg
ICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgYSBzaW1wbGUgd2F5IHRv
IHNob3cgd2hhdCB3ZSBhcmUgZG9pbmcgb24gdGhlIHBhZ2UKICAgICAgICAgICAgICAgICAgICB2
YXIgaWRiTG9nXyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZGItbG9nJyk7ICAgCiAgICAg
ICAgICAgICAgICAgICAgdmFyIGlkUmVzdWx0c1dyYXBwZXJfID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2lkYi1yZXN1bHRzLXdyYXBwZXInKTsKIAogICAgICAgICAgICAgICAgICAgIC8vIElu
ZGV4ZWREQiBzcGVjIGlzIHN0aWxsIGV2b2x2aW5nIC0gc2VlOiBodHRwOi8vd3d3LnczLm9yZy9U
Ui9JbmRleGVkREIvCiAgICAgICAgICAgICAgICAgICAgLy8gdmFyaW91cyBicm93c2VycyBrZWVw
IGl0CiAgICAgICAgICAgICAgICAgICAgLy8gYmVoaW5kIHZhcmlvdXMgZmxhZ3MgYW5kIGltcGxl
bWVudGF0aW9uIHZhcmllcy4KICAgICAgICAgICAgICAgICAgICBpZiAoJ3dlYmtpdEluZGV4ZWRE
QicgaW4gd2luZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5pbmRleGVkREIg
PSB3aW5kb3cud2Via2l0SW5kZXhlZERCOwogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cu
SURCVHJhbnNhY3Rpb24gPSB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb247CiAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICgnbW96SW5kZXhlZERCJyBpbiB3aW5kb3cpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgd2luZG93LmluZGV4ZWREQiA9IHdpbmRvdy5tb3pJbmRleGVkREI7CiAg
ICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgLy8gT3BlbiBvdXIgSW5k
ZXhlZERCIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIGl0LgogICAgICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cuaW5kZXhlZERCKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkYlJlcXVlc3Rf
ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJUZXN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlkYlJlcXVlc3RfLm9uZXJyb3IgPSBpZGJFcnJvcl87CiAgICAgICAgICAgICAgICAgICAgICAg
IGlkYlJlcXVlc3RfLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBmdW5jdGlvbihlKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGRjQgcmVxdWlyZXMgZS5yZXN1bHQuIElEQlJl
cXVlc3QucmVxdWVzdCBpc24ndCBzZXQgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
RjUvQ2hyb21lIHdvcmtzIGZpbmUuIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRiXyA9
IGlkYlJlcXVlc3RfLnJlc3VsdCB8fCBlLnJlc3VsdDsgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWRiU2hvd18oZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZhbHNlKTsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgLy8gb24gZXJyb3JzIC0gc2hvdyB1cyB3aGF0IGlzIGdvaW5nIHdyb25nCiAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gaWRiRXJyb3JfKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
aWRiTG9nXy5pbm5lckhUTUwgKz0gJzxwIGNsYXNzPSJlcnJvciI+RXJyb3I6ICcgKwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZS5tZXNzYWdlICsgJyAoJyArIGUuY29kZSArICcpPC9wPic7
CiAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgLy8gSW4gY2FzZXMg
d2UgYWRkL3JlbW92ZSBvYmplY3RzIC0gc2hvdyB0aGUgdXNlciB3aGF0IGlzIGNoYW5naW5nIGlu
IHRoZSBEQgogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGlkYlNob3dfKGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpZGJfLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ215
T2JqZWN0U3RvcmUnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRiTG9nXy5pbm5l
ckhUTUwgPSAiPHA+T2JqZWN0IHN0b3JlIG5vdCB5ZXQgY3JlYXRlZC48L3A+IjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBtc2dCb2FyZCA9IFtdOwogICAgICAgICAgICAgICAg
ICAgICAgICAvLyBSZWFkeSBpcyBkZWZhdWx0LgogICAgICAgICAgICAgICAgICAgICAgICB2YXIg
dHJhbnNhY3Rpb24gPSBpZGJfLnRyYW5zYWN0aW9uKGlkYl8ub2JqZWN0U3RvcmVOYW1lcywgJ3Jl
YWRvbmx5Jyk7IAogICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgYWxsIHJlc3VsdHMuCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoIm15T2JqZWN0U3RvcmUiKS5vcGVuQ3Vyc29yKCk7IAogICAgICAgICAgICAgICAgICAgICAg
ICAvLwogICAgICAgICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGNhbGxiYWNrIHdpbGwgY29udGludWUgdG8gYmUgY2FsbGVkIHVudGlsIHdlIGhhdmUg
bm8gbW9yZSByZXN1bHRzLgogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZGNCByZXF1
aXJlcyBlLnJlc3VsdC4gSURCUmVxdWVzdC5yZXF1ZXN0IGlzbid0IHNldAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRkY1L0Nocm9tZSB3b3JrcyBmaW5lLgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGN1cnNvciA9IHJlcXVlc3QucmVzdWx0IHx8IGUucmVzdWx0OyAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlkUmVzdWx0c1dyYXBwZXJfLmlubmVySFRNTCA9ICc8dWwgY2xhc3M9
InJlY29yZC1saXN0IiBpZD0iaWRiLXJlc3VsdHMiPicgKyBtc2dCb2FyZC5qb2luKCcnKSArICc8
L3VsPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnQm9hcmQu
cHVzaCgnPGxpPjxzcGFuIGNsYXNzPSJrZXl2YWwiIGNvbnRlbnRlZGl0YWJsZSBvbmJsdXI9Imlu
ZGV4ZWREYlV0aWwudXBkYXRlS2V5KFwnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1
cnNvci5rZXksICdcJywgdGhpcykiPicsIGN1cnNvci5rZXksICc8L3NwYW4+ICcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnPT4gPHNwYW4gY2xhc3M9ImtleXZhbCIgY29udGVudGVkaXRh
YmxlIG9uYmx1cj0iaW5kZXhlZERiVXRpbC51cGRhdGVWYWx1ZShcJycsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJzb3Iua2V5LCAnXCcsIHRoaXMpIj4nLCBjdXJzb3IudmFsdWUsICc8
L3NwYW4+Jm5ic3A7ICcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGEgaHJlZj0iamF2
YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJpbmRleGVkRGJVdGlsLmRlbGV0ZUtleShcJycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3Iua2V5LCAnXCcpIj5bRGVsZXRlXTwvYT48
L2xpPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yLmNvbnRpbnVlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bmVycm9yID0gaWRiRXJyb3JfOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBTaW1wbGUgZXhhbXBsZSB0byBzaG93IGFsbCBv
dXIgcmVjb3JkcyBpbiB0aGUgREIKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzaG93QWxs
XygpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91
ckxpc3QiKS5pbm5lckhUTUwgPSAiIiA7ICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBy
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJUZXN0Iik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEVudW1lcmF0ZSB0aGUgZW50aXJlIG9iamVjdCBzdG9yZS4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVlc3QgPSBldmVudC5jdXJyZW50VGFyZ2V0
LnJlc3VsdC5vYmplY3RTdG9yZU5hbWVzKCJteU9iamVjdFN0b3JlIikub3BlbkN1cnNvcigpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zYWN0aW9uID0gaWRiXy50cmFuc2Fj
dGlvbihpZGJfLm9iamVjdFN0b3JlTmFtZXMsICdyZWFkb25seScpOyAvLyBSZWFkeSBpcyBkZWZh
dWx0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgibXlPYmplY3RTdG9yZSIpLm9wZW5DdXJzb3IoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQg
fHwgZXZlbnQucmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGN1
cnNvciBpcyBudWxsIHRoZW4gd2UndmUgY29tcGxldGVkIHRoZSBlbnVtZXJhdGlvbi4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbWVudC50ZXh0Q29udGVudCA9ICJrZXk6ICIgKyBjdXJzb3Iua2V5ICsgIj0+ICBWYWx1ZTog
IiArIGN1cnNvci52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3VyTGlzdCIpLmFwcGVuZENoaWxkKGVsZW1lbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvci4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUgKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgICAgICAgICAgICB9OyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGlkYkNyZWF0ZV8oKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghaWRiXykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkYlJl
cXVlc3RfKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgaW5kZXhlZERC
IGlzIHN0aWxsIG9wZW5pbmcsIGp1c3QgcXVldWUgdGhpcyB1cC4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZGJSZXF1ZXN0Xy5hZGRFdmVudExpc3RlbmVyKCdzdWNjZXNzJywgaWRi
Xy5yZW1vdmVPYmplY3RTdG9yZSwgZmFsc2UpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gaWRiXy5zZXRW
ZXJzaW9uKCd0aGUgbmV3IHZlcnNpb24gc3RyaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpZGJfLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ215T2JqZWN0U3RvcmUn
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEZGIGlzIHJlcXVpcmluZyB0aGUgMm5kIGtleVBhdGgg
YXJnLiBJdCBjYW4gYmUgb3B0aW9uYWwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBvYmplY3RTdG9yZSA9IGlkYl8uY3JlYXRlT2JqZWN0U3RvcmUoJ215T2JqZWN0U3Rv
cmUnLCBudWxsKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkYkxvZ18u
aW5uZXJIVE1MID0gIjxwPk9iamVjdCBzdG9yZSBjcmVhdGVkLjwvcD4iOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZGJMb2dfLmlubmVySFRNTCA9ICc8cCBjbGFzcz0iZXJyb3IiPicgKyBl
cnIudG9TdHJpbmcoKSArICc8L3A+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkYkxvZ18uaW5uZXJIVE1MID0gJzxwIGNsYXNzPSJlcnJvciI+T2JqZWN0
IHN0b3JlIGFscmVhZHkgZXhpc3RzLjwvcD4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gaWRiU2V0XygpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFpZGJfKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWRiUmVxdWVz
dF8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBpbmRleGVkREIgaXMg
c3RpbGwgb3BlbmluZywganVzdCBxdWV1ZSB0aGlzIHVwLgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlkYlJlcXVlc3RfLmFkZEV2ZW50TGlzdGVuZXIoJ3N1Y2Nlc3MnLCBpZGJfLnJl
bW92ZU9iamVjdFN0b3JlLCBmYWxzZSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpZGJfLm9iamVjdFN0b3JlTmFtZXMu
Y29udGFpbnMoJ215T2JqZWN0U3RvcmUnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWRiTG9nXy5pbm5lckhUTUwgPSAiPHAgY2xhc3M9XCJlcnJvclwiPk9iamVjdCBzdG9yZSBkb2Vz
bid0IGV4aXN0LjwvcD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRl
IGEgdHJhbnNhY3Rpb24gdGhhdCBsb2NrcyB0aGUgd29ybGQuCiAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBvYmplY3RTdG9yZSA9IGlkYl8udHJhbnNhY3Rpb24oaWRiXy5vYmplY3RTdG9yZU5h
bWVzLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoIm15T2JqZWN0U3RvcmUiKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5wdXQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lkYi12YWx1ZScpLnZhbHVlLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
ZGIta2V5JykudmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBpZGJFcnJvcl87CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
aWRiU2hvd187CiAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gdXBkYXRlS2V5XyhrZXksIGVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG5ld0tleSA9IGVsZW1lbnQudGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENyZWF0ZSBhIHRyYW5zYWN0aW9uIHRoYXQgbG9ja3MgdGhlIHdvcmxkLgogICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgdHJhbnNhY3Rpb24gPSBpZGJfLnRyYW5zYWN0aW9uKGlkYl8ub2Jq
ZWN0U3RvcmVOYW1lcywgJ3JlYWR3cml0ZScpOyAKICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIm15T2JqZWN0U3RvcmUiKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5nZXQoa2V5
KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gaWRiRXJyb3JfOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZGNCByZXF1aXJlcyBlLnJlc3VsdC4gSURC
UmVxdWVzdC5yZXF1ZXN0IGlzbid0IHNldC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEZGNS9DaHJvbWUgd29ya3MgZmluZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2
YWx1ZSA9IGUucmVzdWx0IHx8IHRoaXMucmVzdWx0OyAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAob2JqZWN0U3RvcmUuZGVsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5kZWxldGUoa2V5KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRkY0IG5vdCB1cCB0byBzcGVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciByZXF1ZXN0ID0gb2JqZWN0U3RvcmUucmVtb3ZlKGtleSk7IAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
aWRiRXJyb3JfOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVl
c3QgPSBvYmplY3RTdG9yZS5hZGQodmFsdWUsIG5ld0tleSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gaWRiRXJyb3JfOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaWRiU2hvd187CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVZhbHVlXyhr
ZXksIGVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdHJhbnNh
Y3Rpb24gdGhhdCBsb2NrcyB0aGUgd29ybGQuCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0
cmFuc2FjdGlvbiA9IGlkYl8udHJhbnNhY3Rpb24oaWRiXy5vYmplY3RTdG9yZU5hbWVzLCAncmVh
ZHdyaXRlJyk7IAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFu
c2FjdGlvbi5vYmplY3RTdG9yZSgibXlPYmplY3RTdG9yZSIpOwogICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLnB1dChlbGVtZW50LnRleHRDb250ZW50LCBr
ZXkpOwogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBpZGJFcnJvcl87
CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaWRiU2hvd187CiAg
ICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZGVsZXRl
S2V5XyhrZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdHJhbnNhY3Rp
b24gdGhhdCBsb2NrcyB0aGUgd29ybGQuCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmFu
c2FjdGlvbiA9IGlkYl8udHJhbnNhY3Rpb24oaWRiXy5vYmplY3RTdG9yZU5hbWVzLCAncmVhZHdy
aXRlJyk7IAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgibXlPYmplY3RTdG9yZSIpOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAob2JqZWN0U3RvcmUuZGVsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmRlbGV0ZShrZXkpOwogICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRkY0IG5vdCB1cCB0
byBzcGVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRkY1IGFuZCBDaHJvbWUgLSBh
cmUgYnkgdGhlIGJvb2sgOikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0
ID0gb2JqZWN0U3RvcmUucmVtb3ZlKGtleSk7ICAKICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBpZGJFcnJvcl87CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gaWRiU2hvd187CiAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaWRiUmVtb3ZlXygp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpZGJfKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaWRiUmVxdWVzdF8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJZiBpbmRleGVkREIgaXMgc3RpbGwgb3BlbmluZywganVzdCBxdWV1ZSB0aGlzIHVw
LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkYlJlcXVlc3RfLmFkZEV2ZW50TGlz
dGVuZXIoJ3N1Y2Nlc3MnLCBpZGJfLnJlbW92ZU9iamVjdFN0b3JlLCBmYWxzZSk7IAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHJlcXVlc3QgPSBpZGJfLnNldFZlcnNpb24oInRoZSBuZXcgdmVyc2lvbiBzdHJpbmciKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gaWRiRXJyb3JfOwogICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkYl8ub2JqZWN0U3RvcmVOYW1lcy5jb250YWlu
cygnbXlPYmplY3RTdG9yZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BlYyBoYXMgYmVlbiB1
cGRhdGVkIHRvIGRlbGV0ZU9iamVjdFN0b3JlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaWRiXy5kZWxldGVPYmplY3RTdG9yZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWRiXy5kZWxldGVPYmplY3RTdG9yZSgnbXlPYmplY3RTdG9y
ZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRiXy5yZW1vdmVPYmplY3RTdG9yZSgn
bXlPYmplY3RTdG9yZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkUmVzdWx0c1dyYXBwZXJfLmlubmVy
SFRNTCA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGJMb2dfLmlu
bmVySFRNTCA9ICI8cD5PYmplY3Qgc3RvcmUgcmVtb3ZlZC48L3A+IjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWRiTG9nXy5pbm5lckhUTUwgPSAnPHAgY2xhc3M9ImVycm9yIj4nICsgZXJy
LnRvU3RyaW5nKCkgKyAnPC9wPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZGJMb2dfLmlubmVySFRNTCA9ICI8cCBjbGFzcz1cImVycm9yXCI+T2JqZWN0
IHN0b3JlIGRvZXNuJ3QgZXhpc3QuPC9wPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWRiU2V0OiBp
ZGJTZXRfLAogICAgICAgICAgICAgICAgICAgICAgICBpZGJDcmVhdGU6IGlkYkNyZWF0ZV8sCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlkYlJlbW92ZTogaWRiUmVtb3ZlXywKICAgICAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlS2V5OiB1cGRhdGVLZXlfLAogICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVWYWx1ZTogdXBkYXRlVmFsdWVfLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxl
dGVLZXk6IGRlbGV0ZUtleV8sCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbGw6IHNob3dB
bGxfCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkoKTsKICAgICAgICAg
ICAgPC9zY3JpcHQ+IAogICAgICAgIDwvc2VjdGlvbj4gCgogICAgICAgIDxkaXYgaWQ9J2Zvb3Rl
cic+CiAgICAgICAgICAgIDxoMz5UaXBzPC9oMz4KICAgICAgICAgICAgPHVsPgogICAgICAgICAg
ICAgICAgPGxpPklmIHlvdSBjYW4ndCBldmVuIG9wZW4gdGhlIERCIGFuZCB5b3Ugc29tZXRoaW5n
IGxpa2UgdGhpcyBlcnJvcjoKICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAg
ICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlsZWQgZm9yIHJlYXNvbnMgdW5yZWxhdGVkIHRvIHRo
ZSBkYXRhYmFzZSBpdHNlbGYgYW5kIG5vdCBjb3ZlcmVkIGJ5IGFueSBvdGhlciBlcnJvciBjb2Rl
LiIgY29kZTogIjE8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICBbQnJlYWsgT24gVGhpcyBF
cnJvcl0gaWRiUmVxdWVzdF8gPSAuLi4sICJPdXIgQW1hemluZyB0ZXN0IG9iamVjdCBJbmRleERC
Iik7IAogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICB5b3UgbmVl
ZCB0byBydW4geW91ciBwYWdlIGZyb20gYSB3ZWIgc2VydmVyIGFuZCBOT1QgZmV0Y2ggaXQgYXMg
bG9jYWwgZmlsZS4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+ICAgIAoK
ICAgICAgICA8L2Rpdj4KICAgIDwvYm9keT4KPC9odG1sPgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168694</attachid>
            <date>2012-10-15 05:59:34 -0700</date>
            <delta_ts>2012-11-12 22:19:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99310-20121015205824.patch</filename>
            <type>text/plain</type>
            <size>2411</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyN2MzNWI4NTgxYTlh
MWFkZmFhOGRmOTU1YTE4ZDc1YWRkY2QzYS4uYjhlZTdjOTQzZjk3MWIxNzVjYjVlZGFhNzdiYzEy
NjM0ZjdkMjdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEwLTE1ICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBJbmRl
eGVkZGIgZG9lc24ndCB3cm9uZyB3aXRoIHRoZSBhdHRhY2hlZCB0ZXN0IGNhc2UgYW5kICJVbmFi
bGUgdG8gZGVzZXJpYWxpemUgZGF0YSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk5MzEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2l0aCBKU0MgYmluZGluZyBvZiBTZXJpYWxpemVkU2NyaXB0VmFsdWUs
IHRvV2lyZVN0cmluZyhWZWN0b3I8dW5zaWduZWQgY2hhcj4mIHZhbHVlKQorICAgICAgICB0cmll
cyB0byBjb252ZXJ0IGEgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHRvIGEgU3RyaW5nIGZvciBwZXJz
aXN0ZW5jZS4gVGhlIFN0cmluZyBpcworICAgICAgICBVQ2hhciBpbnRlcm5hbCBhbmQgbmVlZHMg
ZXZlbiBudW1iZXIgb2YgdmFsdWU7IElmIHZhbHVlIGlzIG9kZCBudW1iZXIsIHdlIG5lZWQgdG8K
KyAgICAgICAgYXBwZW5kIGFuIFVuZGVmaW5lZFRhZyBhdCB0aGUgZW5kIG9mIHZhbHVlIHRvIG1h
a2UgaXQgZXZlbiBudW1iZXJlZDsgT3RoZXJ3aXNlLCB3ZSB3aWxsCisgICAgICAgIGxvc2UgdGhl
IGxhc3QgYnl0ZSBpbiB2YWx1ZSBhbmQgd2hlbiByZWFkIGl0IGJhY2sgZnJvbSBwZXJzaXN0ZW5j
ZSBzdG9yYWdlIChsZXZlbGRiKSBhbmQKKyAgICAgICAgdHJ5IHRvIGNvbnZlcnQgaXQgYmFjayB0
byBKU1ZhbHVlLCBpdCB3aWxsIGZhaWwuCisKKyAgICAgICAgVGhlIHRlc3QgY2FzZSBpcyBhdHRh
Y2hlZCBhdDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MzEwCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnRvV2lyZVN0cmluZyk6CisKIDIwMTItMTAt
MTIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE5NSSByZW1vdmUgaGFuZCBtYWRlIG9iamVjdCBidWlsZGVycyB3aXRoIGF1
dG9tYXRpYyBidWlsZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNTIwODE0ZWEzMzgzYmI5NzAzZDBkYjBkMzk2
ZGM3NGY3MDJmMmY4MS4uZjBiOGE2YmVjYzY3NTZhNGMzNjc4YmQ2YTBmMTY0NTgxZGU4MDQ2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0xMDA1LDYgKzEwMDUsMTIgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIg
OiBDbG9uZUJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgdG9XaXJlU3RyaW5nKGNv
bnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgdmFsdWUpCiAgICAgeworICAgICAgICAvLyBJZiB0
aGUgdmFsdWUgY29udGFpbnMgb2RkIG51bWJlciBvZiBjb250ZW50LCBhcHBlbmQgVW5kZWZpbmVk
VGFnIGF0IHRoZSBlbmQKKyAgICAgICAgLy8gdG8gbWFrZSBpdCBldmVuLCBvdGhlcndpc2UsIHdl
IHdpbGwgbG9zZSB0aGUgbGFzdCBieXRlIGluIHRoZSB2YWx1ZSBiZWNhdXNlCisgICAgICAgIC8v
IFN0cmluZyBpcyBVQ2hhciAoMiB0eXBlcykgaW50ZXJuYWwgYW5kIHRha2VzIGV2ZW4gbnVtYmVy
IG9mIHZhbHVlLgorICAgICAgICBpZiAodmFsdWUuc2l6ZSgpICUgc2l6ZW9mKFVDaGFyKSkKKyAg
ICAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuPHVpbnQ4X3Q+KGNvbnN0X2Nhc3Q8VmVjdG9yPHVp
bnQ4X3Q+JiA+KHZhbHVlKSwgVW5kZWZpbmVkVGFnKTsKKwogICAgICAgICBjb25zdCB1aW50OF90
KiBzdGFydCA9IHZhbHVlLmJlZ2luKCk7CiAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGVuZCA9IHZh
bHVlLmVuZCgpOwogICAgICAgICBjb25zdCB1aW50MzJfdCBsZW5ndGggPSB2YWx1ZS5zaXplKCkg
LyBzaXplb2YoVUNoYXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173823</attachid>
            <date>2012-11-12 22:19:08 -0800</date>
            <delta_ts>2012-11-13 19:30:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99310-20121113141708.patch</filename>
            <type>text/plain</type>
            <size>2654</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E2NTk0MTQyMzliNGRk
N2ZmZmRhOTc3YjgxNTA4ZTk3YjFiYTgyZi4uZDMzNTdjODMxYTFjMGUxYThlYTJiNTJhZGE2MWI3
ZjMzMWI4MGVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTEyICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBKU0Mg
YmluZGluZyBvZiBJbmRleGVkZGIgZmFpbHMgdG8gcHV0IGEgc3RyaW5nIHR5cGUgcmVjb3JkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzMTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIEpTQyBi
aW5kaW5nIG9mIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdG9XaXJlU3RyaW5nKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYgdmFsdWUpCisgICAgICAgIHRyaWVzIHRvIGNvbnZlcnQgYSBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgdG8gYSBTdHJpbmcgZm9yIHBlcnNpc3RlbmNlLiBUaGUgU3RyaW5nIGlzCisg
ICAgICAgIFVDaGFyIGludGVybmFsIGFuZCBuZWVkcyBldmVuIG51bWJlciBvZiBieXRlczsgSWYg
bnVtYmVyIG9mIGJ5dGVzIGlzIG9kZCBudW1iZXIsIHdlIG5lZWQgdG8KKyAgICAgICAgYXBwZW5k
IGFuIFVuZGVmaW5lZFRhZyBhdCB0aGUgZW5kIG9mIHZhbHVlIHRvIG1ha2UgaXQgZXZlbiBudW1i
ZXJlZDsgT3RoZXJ3aXNlLCB3ZSB3aWxsCisgICAgICAgIGxvc2UgdGhlIGxhc3QgYnl0ZSBpbiB2
YWx1ZSBhbmQgd2hlbiByZWFkIGl0IGJhY2sgZnJvbSBwZXJzaXN0ZW5jZSBzdG9yYWdlIGFuZCBj
b252ZXJ0CisgICAgICAgIGl0IHRvIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBieSBjcmVhdGVGcm9t
V2lyZSgpIGFuZCBjb252ZXJ0IGl0IHRvIEpTVmFsdWUgYnkgZGVzZXJpYWxpemUoKSwKKyAgICAg
ICAgaXQgZmFpbHMuCisKKyAgICAgICAgTWFueSBvZiBleGlzdGluZyB0ZXN0IGNhc2VzIGNvdmVy
IHRoaXMgc2NlbmFyaW8sIGFsbCB0aG9zZSB0ZXN0IGNhc2VzIGNvbnRhaW5pbmc6CisgICAgICAg
IElEQkRhdGFiYXNlOjphZGQoSlNTdHJpbmcsIGtleSksIElEQkRhdGFiYXNlOjpwdXQoSlNTdHJp
bmcsIGtleSksIGxpa2U6CisgICAgICAgIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvcl9kZWxldGUuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3JfdXBkYXRlLmh0bWwKKyAgICAgICAgYW5kIG1vcmUuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OnRvV2lyZVN0cmluZyk6CisKIDIwMTItMTEtMTIgIEt5dW5nVGFlIEtpbSAg
PGt0Zi5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgU29tZSBDU1MgcHJvcGVydGllcyBhcmUg
bm90IGhhbmRsZWQgb24gU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
NDU4MTJiYjIxMWZkYzEzNThmY2Y2OTJlNzY1OTZlNDAxYzkxNTY0Yy4uZTJkNjdlODg3ZDU4YmU3
Nzk5YjJiY2NkMzA3ZTc5YjdiNmEzNmVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDA1LDYgKzEwMDUsMTIg
QEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBDbG9uZUJhc2UgewogcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgdG9XaXJlU3RyaW5nKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgdmFs
dWUpCiAgICAgeworICAgICAgICAvLyBJZiB0aGUgdmFsdWUgY29udGFpbnMgb2RkIG51bWJlciBv
ZiBieXRlcywgYXBwZW5kIE51bGxUYWcgYXQgdGhlIGVuZCB0bworICAgICAgICAvLyBtYWtlIGl0
IGV2ZW4sIG90aGVyd2lzZSwgd2Ugd2lsbCBsb3NlIHRoZSBsYXN0IGJ5dGUgaW4gdGhlIHZhbHVl
IGJlY2F1c2UKKyAgICAgICAgLy8gU3RyaW5nIGlzIFVDaGFyICgyIGJ5dGVzKSBpbnRlcm5hbCBh
bmQgdGFrZXMgZXZlbiBudW1iZXIgb2YgYnl0ZXMuCisgICAgICAgIGlmICh2YWx1ZS5zaXplKCkg
JSBzaXplb2YoVUNoYXIpKQorICAgICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4o
Y29uc3RfY2FzdDxWZWN0b3I8dWludDhfdD4mID4odmFsdWUpLCBOdWxsVGFnKTsKKwogICAgICAg
ICBjb25zdCB1aW50OF90KiBzdGFydCA9IHZhbHVlLmJlZ2luKCk7CiAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGVuZCA9IHZhbHVlLmVuZCgpOwogICAgICAgICBjb25zdCB1aW50MzJfdCBsZW5ndGgg
PSB2YWx1ZS5zaXplKCkgLyBzaXplb2YoVUNoYXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174052</attachid>
            <date>2012-11-13 19:30:40 -0800</date>
            <delta_ts>2013-03-25 23:42:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99310-20121114112838.patch</filename>
            <type>text/plain</type>
            <size>3002</size>
            <attacher name="Charles Wei">charles.wei</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzE1NTQ1MzNmMTEzOWIz
NWJkYWFhZDIzMGE1YzljNTZmYWFiMzBjMS4uMDY1ZmYzZmEzZTA4ZTIwMzkyNzllMzczYWI3MzJh
NzY0ZWYzOGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTExLTEzICBDaGFy
bGVzIFdlaSAgPGNoYXJsZXMud2VpQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAgICAgICBKU0Mg
YmluZGluZyBvZiBJbmRleGVkZGIgZmFpbHMgdG8gcHV0IGEgc3RyaW5nIHR5cGUgcmVjb3JkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkzMTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIEpTQyBi
aW5kaW5nIG9mIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdG9XaXJlU3RyaW5nKFZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiYgdmFsdWUpCisgICAgICAgIHRyaWVzIHRvIGNvbnZlcnQgYSBTZXJpYWxpemVk
U2NyaXB0VmFsdWUgdG8gYSBTdHJpbmcgZm9yIHBlcnNpc3RlbmNlLiBUaGUgU3RyaW5nIGlzCisg
ICAgICAgIFVDaGFyIGludGVybmFsIGFuZCBuZWVkcyBldmVuIG51bWJlciBvZiBieXRlczsgSWYg
bnVtYmVyIG9mIGJ5dGVzIGlzIG9kZCBudW1iZXIsIHdlIG5lZWQgdG8KKyAgICAgICAgYXBwZW5k
IGFuIFVuZGVmaW5lZFRhZyBhdCB0aGUgZW5kIG9mIHZhbHVlIHRvIG1ha2UgaXQgZXZlbiBudW1i
ZXJlZDsgT3RoZXJ3aXNlLCB3ZSB3aWxsCisgICAgICAgIGxvc2UgdGhlIGxhc3QgYnl0ZSBpbiB2
YWx1ZSBhbmQgd2hlbiByZWFkIGl0IGJhY2sgZnJvbSBwZXJzaXN0ZW5jZSBzdG9yYWdlIGFuZCBj
b252ZXJ0CisgICAgICAgIGl0IHRvIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBieSBjcmVhdGVGcm9t
V2lyZSgpIGFuZCBjb252ZXJ0IGl0IHRvIEpTVmFsdWUgYnkgZGVzZXJpYWxpemUoKSwKKyAgICAg
ICAgaXQgZmFpbHMuCisKKyAgICAgICAgTWFueSBvZiBleGlzdGluZyB0ZXN0IGNhc2VzIGNvdmVy
IHRoaXMgc2NlbmFyaW8sIGFsbCB0aG9zZSB0ZXN0IGNhc2VzIGNvbnRhaW5pbmc6CisgICAgICAg
IElEQkRhdGFiYXNlOjphZGQoSlNTdHJpbmcsIGtleSksIElEQkRhdGFiYXNlOjpwdXQoSlNTdHJp
bmcsIGtleSksIGxpa2U6CisgICAgICAgIExheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2N1
cnNvcl9kZWxldGUuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3JfdXBkYXRlLmh0bWwKKyAgICAgICAgYW5kIG1vcmUuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OnRvV2lyZVN0cmluZyk6CisKIDIwMTItMTEtMTMgIFJvYmVydCBTZXNlayAg
PHJzZXNla0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2V2ZXIgQ2hyb21pdW0ncyBkZXBlbmRl
bmNlIG9uIFdlYktpdFN5c3RlbUludGVyZmFjZSBtZWRpYSBjb250cm9sIGRyYXdpbmcgZnVuY3Rp
b25zIGluIFJlbmRlclRoZW1lTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0NTgxMmJiMjExZmRjMTM1OGZjZjY5
MmU3NjU5NmU0MDFjOTE1NjRjLi41OTRiZDM5MzdkZjA5OGRjMmRiODgzZTNjOTZkZjBiMGY1ODRm
YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTEwMDUsOSArMTAwNSwxNiBAQCBjbGFzcyBDbG9uZURlc2VyaWFs
aXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB0b1dpcmVTdHJp
bmcoY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGNv
bnN0IHVpbnQ4X3QqIHN0YXJ0ID0gdmFsdWUuYmVnaW4oKTsKLSAgICAgICAgY29uc3QgdWludDhf
dCogZW5kID0gdmFsdWUuZW5kKCk7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGxlbmd0aCA9IHZh
bHVlLnNpemUoKSAvIHNpemVvZihVQ2hhcik7CisgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiB0ZW1wVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgLy8gSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG9k
ZCBudW1iZXIgb2YgYnl0ZXMsIGFwcGVuZCBOdWxsVGFnIGF0IHRoZSBlbmQgdG8KKyAgICAgICAg
Ly8gbWFrZSBpdCBldmVuLCBvdGhlcndpc2UsIHdlIHdpbGwgbG9zZSB0aGUgbGFzdCBieXRlIGlu
IHRoZSB2YWx1ZSBiZWNhdXNlCisgICAgICAgIC8vIFN0cmluZyBpcyBVQ2hhciAoMiBieXRlcykg
aW50ZXJuYWwgYW5kIHRha2VzIGV2ZW4gbnVtYmVyIG9mIGJ5dGVzLgorICAgICAgICBpZiAodGVt
cFZhbHVlLnNpemUoKSAlIHNpemVvZihVQ2hhcikpCisgICAgICAgICAgICB3cml0ZUxpdHRsZUVu
ZGlhbjx1aW50OF90Pih0ZW1wVmFsdWUsIE51bGxUYWcpOworCisgICAgICAgIGNvbnN0IHVpbnQ4
X3QqIHN0YXJ0ID0gdGVtcFZhbHVlLmJlZ2luKCk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGVu
ZCA9IHRlbXBWYWx1ZS5lbmQoKTsKKyAgICAgICAgY29uc3QgdWludDMyX3QgbGVuZ3RoID0gdGVt
cFZhbHVlLnNpemUoKSAvIHNpemVvZihVQ2hhcik7CiAgICAgICAgIFN0cmluZyBzdHI7CiAgICAg
ICAgIGlmICghQ2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRTdHJpbmcoc3RhcnQsIGVuZCwgc3RyLCBs
ZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>